Commit Graph

5653 Commits

Author SHA1 Message Date
MrGadget1024
c35b43bb2e WebSocketServer - syntax 2023-03-12 14:21:23 -04:00
MrGadget1024
bfcef5563b ClientHandshake -added log 2023-03-12 14:21:06 -04:00
MrGadget1024
4a82c46355 Merged master 2023-03-12 14:16:44 -04:00
MrGadget1024
8d348a75f6 WebSocketServer - Improved logging 2023-03-12 14:11:07 -04:00
MrGadget1024
8638ab96eb SimpleWebServer - log ProcessMessageQueue overflow 2023-03-12 14:05:38 -04:00
MrGadget1024
d7315be32e ServerSslHelper - added logging 2023-03-12 14:04:26 -04:00
MrGadget1024
cc6f4aa120 ClientHandshake - log Unexpected Handshake Response 2023-03-12 14:02:18 -04:00
MrGadget1024
46b30aafe0 SimpleWebClient - log ProcessMessageQueue overflow 2023-03-12 13:59:54 -04:00
MrGadget1024
6be3907a7d indentions 2023-03-12 13:53:16 -04:00
MrGadget1024
05d75e60fd Revert Room example changes 2023-03-12 13:52:15 -04:00
MrGadget1024
6006be1291 Revert Room example changes 2023-03-12 13:51:12 -04:00
MrGadget1024
6268e7a519 SnapshotInterpolation - reverted log changes 2023-03-12 13:41:03 -04:00
MrGadget1024
c5693d62b3 indentions 2023-03-12 13:38:47 -04:00
MrGadget1024
724be4ffd1 RemoteStatistics - syntax 2023-03-12 13:36:54 -04:00
MrGadget1024
8ce8dfb554 RemoteStatistics - removed log 2023-03-12 13:35:57 -04:00
MrGadget1024
3832ccca3b Merged master 2023-03-12 13:33:17 -04:00
MrGadget1024
c7ddae1bc3 NetworkStatistics - move UI down 2023-03-12 13:32:42 -04:00
MrGadget1024
07fa088db5 indention 2023-03-12 13:29:27 -04:00
MrGadget1024
f62ac4d4e6 indentions 2023-03-12 13:27:01 -04:00
MrGadget1024
b8dba8d99d Merged master 2023-03-12 12:20:10 -04:00
MrGadget1024
84cd689268 Merged master 2023-03-12 12:19:03 -04:00
mischa
7137ace5fd
fix: NetworkTransformReliable fix jitter (fixes: #3368) (#3410)
* ninja nt

* remove unused

* unused

* comments
2023-03-12 16:12:27 +01:00
vis2k
25ebb0620b fix: NetworkTransformReliable Reset() now resets 'last' too 2023-03-12 23:08:49 +08:00
vis2k
844fe69e11 fix: SnapshotInterpolation.TimelineClamp uses Mathd.Clamp for Unity 2020 support 2023-03-12 22:50:43 +08:00
vis2k
cae12a43fc Mathd.Clamp for Unity 2020 support 2023-03-12 22:50:13 +08:00
MrGadget1024
9cfd680c77 Clamp fix 2023-03-12 09:49:28 -04:00
MrGadget1024
93dcc24ebe Fix prefabs and PlayerBuffers 2023-03-12 08:46:49 -04:00
MrGadget1024
1ccc53e500 resolved conflict 2023-03-12 07:31:24 -04:00
MrGadget1024
008118a9d7 Merged master 2023-03-12 07:27:50 -04:00
vis2k
53658a5886 fix: kcp2k V1.32 KcpPeer RawInput now doesn't disconnect in case of random internet noise 2023-03-12 11:07:26 +08:00
vis2k
8762167a13 Snapshot Interpolation demo: reuse SnapshotInterpolationSettings 2023-03-12 10:31:19 +08:00
mischa
2f68666683
breaking: expose NetworkClient's Snapshot Interpolation settings in NetworkManager (#3411) 2023-03-12 03:25:43 +01:00
vis2k
5d324d35f1 SnapshotInterpolation: better explain timeline clamp 2023-03-11 13:24:07 +08:00
vis2k
5a0c8269c8 remove unused code 2023-03-11 11:57:21 +08:00
vis2k
313c7a18cd fix(SnapshotInterpolation): Added TimelineClamp (#3402) 2023-03-11 10:46:00 +08:00
vis2k
67aa480fdd Snapshot Interpolation tests: check local timeline and fail early to prepare for clamping 2023-03-11 10:03:37 +08:00
MrGadget1024
0ee6753ef0 Removed bufferTimeMultiplierForClamping 2023-03-10 07:57:50 -05:00
MrGadget1024
5e45bcc57c removed bufferTimeMultiplierForClamping 2023-03-10 07:57:02 -05:00
MrGadget1024
c6d349d0a0 removed if (buffer.Count > 1) 2023-03-10 07:54:38 -05:00
MrGadget1024
3418028dcc Removed bufferTimeMultiplierForClamping / clampMultiplier 2023-03-10 06:57:17 -05:00
MrGadget1024
d96a9354ee Updated PlayerMove 2023-03-10 06:28:19 -05:00
MrGadget1024
66dbf5d9ec Merged master 2023-03-10 04:39:56 -05:00
MrGadget1024
712032a0aa Formatting 2023-03-10 04:37:01 -05:00
vis2k
80b23f029d feature: ExpontentialMovingAverage.Reset() 2023-03-10 17:33:25 +08:00
MrGadget1024
b4b9b3a36a Merged master 2023-03-10 04:22:24 -05:00
MrGadget1024
de14ce4aa6 Bots init ninja false 2023-03-10 04:17:16 -05:00
vis2k
b1e62cfac3 SnapshotInterpolation.Timescale: rename threshold parameters to absolute and update comment. because that's what they are. 2023-03-10 16:13:15 +08:00
vis2k
f62d68dbf3 comment 2023-03-10 16:05:47 +08:00
vis2k
fd63333563 SnapshotInterpolation: add explanation why timescale is calculated when inserting 2023-03-10 16:03:40 +08:00
MrGadget1024
bb57b2f787 Merged master 2023-03-10 02:50:40 -05:00
MrGadget1024
c826b1f219 Revert "Moved example out of Mirror"
This reverts commit d2c93ee45a.
2023-03-10 02:44:01 -05:00
vis2k
86505af92d Snapshot Interpolation Demo: simulate moving timeline ahead 2023-03-10 14:52:31 +08:00
vis2k
20c2899e3d Snapshot Interpolation Demo: simulate moving timeline behind 2023-03-10 14:52:29 +08:00
vis2k
60f021e543 Snapshot Interpolation Demo: simulate 1 fps 2023-03-10 14:51:13 +08:00
MrGadget1024
d2c93ee45a Moved example out of Mirror 2023-03-08 08:23:29 -05:00
vis2k
da6c7180bb CCU demo: readme added 2023-03-08 15:29:51 +08:00
vis2k
733e663d11 syntax 2023-03-08 14:22:58 +08:00
vis2k
0d471af61c script icon 2023-03-08 10:31:40 +08:00
MrGadget1024
0cd06db1f2 NetworkTransform - formatting 2023-03-06 14:36:00 -05:00
MrGadget1024
4b34dc2fe8 breaking(NetworkManager): Removed obsolete OnServerError / OnClientError
BREAKING CHANGE: Removed obsolete OnServerError / OnClientError
2023-03-06 11:52:41 -05:00
MrGadget1024
788fd4df91 Revert "breaking(NetworkManager)!: Removed obsolete OnServerError / OnClientError"
This reverts commit 3f7c1af819.
2023-03-06 11:50:37 -05:00
MrGadget1024
3f7c1af819 breaking(NetworkManager)!: Removed obsolete OnServerError / OnClientError 2023-03-06 09:16:49 -05:00
MrGadget1024
a74f8f9ea2 Revert "breaking!(NetworkManager): Removed obsolete OnServerError / OnClientError"
This reverts commit d45bd661ef.
2023-03-06 09:13:48 -05:00
MrGadget1024
d45bd661ef breaking!(NetworkManager): Removed obsolete OnServerError / OnClientError 2023-03-06 08:49:37 -05:00
MrGadget1024
60b3547165 Merged master 2023-03-06 08:43:25 -05:00
MrGadget1024
9f50722906 TestNTNetworkManager - clientUseWss switches 2023-03-06 08:42:46 -05:00
MrGadget1024
b76a9e2634 Updated CameraMove 2023-03-06 08:41:47 -05:00
vis2k
a0605ae651 kcp V1.31 [2023-03-05]
- KcpClient: Tick/Incoming/Outgoing can now be overwritten (virtual)
- breaking: KcpClient now takes KcpConfig in constructor instead of in Connect.
  cleaner, and prepares for KcpConfig.MTU setting.
- KcpConfig now includes MTU; KcpPeer now works with KcpConfig's MTU, KcpServer/Client
  buffers are now created with config's MTU.
2023-03-05 14:10:17 +08:00
vis2k
31b6f195ce KcpTransport: config, server, client protected so inheriting classes can access them 2023-03-04 22:26:24 +08:00
vis2k
582a02eec8 KcpTransport: OnGUIStatistics helper function for easier OnGUI overwrites 2023-03-04 22:23:10 +08:00
vis2k
7b1d6fd412 KcpTransport: virtual Awake/OnValidate/OnGUI to allow inheritance more easily 2023-03-04 22:20:54 +08:00
vis2k
def24f8510 fix: NetworkLoop now only runs in play mode, not in edit mode 2023-03-04 19:33:19 +08:00
vis2k
8f66bd68ca fix: #3392 NetworkLoop now checks if the function was already added before. fixes functions being added twice with Domain Reload disabled. 2023-03-04 19:29:39 +08:00
MrGadget
91014bd614
breaking: Remove NetworkClient.serverIP (#3394)
* breaking: Remove NetworkClient.serverIP
- If we're never going to set it to anything, no reason to have it.
- Transport has no mechanism to return anything for it

Host client hardcodes `address` to "localhost" in both LocalConnectionToServer and LocalConnetionToClient, so obsolete the former telling users to use the latter if they aren't already.

Users can get the endpoint from NetworkManager or Discovery, as they must be doing now since those work and serverIp does not.

* Update main.yml

* fix: kcp2p V1.30 (#3391)

- fix: set send/recv buffer sizes directly instead of iterating to find the limit.
  fixes: https://github.com/MirrorNetworking/Mirror/issues/3390
- fix: server & client sockets are now always non-blocking to ensure main thread never
  blocks on socket.recv/send. Send() now also handles WouldBlock.
- fix: socket.Receive/From directly with non-blocking sockets and handle WouldBlock,
  instead of socket.Poll. faster, more obvious, and fixes Poll() looping forever while
  socket is in error state. fixes: https://github.com/MirrorNetworking/Mirror/issues/2733

* Shortened PingWindowSize to get a faster more accurate result. (#3395)

* Shortened PingWindowSize to get a faster more accurate result.

Shortened PingWindowSize to get a faster more accurate result.
It taking too long to calculate the average may look bad to users

* Revert "Shortened PingWindowSize to get a faster more accurate result."

This reverts commit 0a5916b4dc.

* Revert "Shortened PingWindowSize to get a faster more accurate result."

This reverts commit 0a5916b4dc.

* Shortened PingWindowSize to get a faster more accurate result.

Shortened PingWindowSize to get a faster more accurate result.
It taking too long to calculate the average may look bad to users

* Shortened PingWindowSize to get a faster more accurate result.

Shortened PingWindowSize to get a faster more accurate result.
It taking too long to calculate the average may look bad to users, choosing 6 gives us an average of 3 results, where as the previous 10, would wait for 5, it should be a slight visual improvement.

* fix: Use PingWindowSize instead of hardcoded value (#3396)

fix: Use PingWindowSize instead of hardcoded value

* KcpClient: Tick/Incoming/Outgoing can now be overwritten (virtual)

* RunUnityTests - Updated unityVersion

* fix: Write for non-spawned NB only writes 0 netId (fixes: #3399) (#3400)

* Failing test for non-spawned NB writer/reader

* fix: Write for non-spawned NB only writes 0 netId

Instead of writing 0 and component index which does not match what the reader expects (it will stop reading netId is 0)
Fixes #3399

* breaking: Removed old Unity 2018 / 2019_3 compiler defines (#3397)

- we only suppport Unity 2019.4.40 and later LTS releases.
BREAKING: Removed old 2018 / 2019 compiler defines

* RunUnityTests - try different test reporter

* RunUnityTests commented out Archive and Publish temporarily

* RunUnityTests - disable game-ci built-in test reporter

* RunUnityTests - cleanup

---------

Co-authored-by: mischa <16416509+vis2k@users.noreply.github.com>
Co-authored-by: JesusLuvsYooh <57072365+JesusLuvsYooh@users.noreply.github.com>
Co-authored-by: vis2k <info@noobtuts.com>
Co-authored-by: Robin Rolf <imer@imer.cc>
2023-03-04 06:39:30 +01:00
MrGadget1024
e6029c6e41 Merged master 2023-03-02 22:09:24 -05:00
MrGadget1024
30ff64c75a CameraMove - Addeed PhysicsRaycaster 2023-03-02 22:08:56 -05:00
MrGadget
bb2e7b2308
breaking: Removed old Unity 2018 / 2019_3 compiler defines (#3397)
- we only suppport Unity 2019.4.40 and later LTS releases.
BREAKING: Removed old 2018 / 2019 compiler defines
2023-02-28 16:11:40 +01:00
Robin Rolf
74f5339b09
fix: Write for non-spawned NB only writes 0 netId (fixes: #3399) (#3400)
* Failing test for non-spawned NB writer/reader

* fix: Write for non-spawned NB only writes 0 netId

Instead of writing 0 and component index which does not match what the reader expects (it will stop reading netId is 0)
Fixes #3399
2023-02-28 16:10:49 +01:00
vis2k
eaea01caa6 KcpClient: Tick/Incoming/Outgoing can now be overwritten (virtual) 2023-02-26 14:29:15 +08:00
MrGadget1024
a5270e9cec Dummy model and animations 2023-02-25 23:37:58 -05:00
MrGadget1024
bf4bc6cc68 Offline Scene - use PlayerDummy 2023-02-25 21:31:07 -05:00
MrGadget1024
df8b280a6d PlayerDummy - Animation 2023-02-25 21:30:53 -05:00
MrGadget1024
214dc43750 PlayerMove - Animation 2023-02-25 21:30:23 -05:00
MrGadget1024
b0b039f468 NTRCustomSendInterval - formatting 2023-02-25 21:30:02 -05:00
MrGadget1024
40d8e0268d SnapshotInterpolation - syntax 2023-02-25 21:27:06 -05:00
MrGadget1024
b4257d7484 NTRCustomSendInterval Mirror icon 2023-02-25 10:49:57 -05:00
JesusLuvsYooh
3252dec547
fix: Use PingWindowSize instead of hardcoded value (#3396)
fix: Use PingWindowSize instead of hardcoded value
2023-02-25 09:56:29 -05:00
MrGadget1024
a04f388c82 PlayerDummy WIP 2023-02-25 09:22:23 -05:00
MrGadget1024
431a396df8 NTReliableExt updated 2023-02-25 09:22:11 -05:00
MrGadget1024
d15f9d4579 Offline scene 2023-02-25 09:21:51 -05:00
MrGadget1024
d7896c2ec1 NetworkTime changes 2023-02-25 09:21:19 -05:00
JesusLuvsYooh
4603bb1a4d
Shortened PingWindowSize to get a faster more accurate result. (#3395)
* Shortened PingWindowSize to get a faster more accurate result.

Shortened PingWindowSize to get a faster more accurate result.
It taking too long to calculate the average may look bad to users

* Revert "Shortened PingWindowSize to get a faster more accurate result."

This reverts commit 0a5916b4dc.

* Revert "Shortened PingWindowSize to get a faster more accurate result."

This reverts commit 0a5916b4dc.

* Shortened PingWindowSize to get a faster more accurate result.

Shortened PingWindowSize to get a faster more accurate result.
It taking too long to calculate the average may look bad to users

* Shortened PingWindowSize to get a faster more accurate result.

Shortened PingWindowSize to get a faster more accurate result.
It taking too long to calculate the average may look bad to users, choosing 6 gives us an average of 3 results, where as the previous 10, would wait for 5, it should be a slight visual improvement.
2023-02-25 11:11:56 +01:00
MrGadget1024
4c329fc7ef clientMaxMessagesPerTick: 2000 2023-02-24 23:35:52 -05:00
MrGadget1024
0f08a2f45f Teleport by X 2023-02-24 22:53:10 -05:00
MrGadget1024
6aabc65d1d Offline scene updated 2023-02-24 22:52:34 -05:00
MrGadget1024
c352c354ec bufferTimeMultiplierForClamping cmd line arg 2023-02-24 22:52:18 -05:00
MrGadget1024
9b9fe83dc5 NTRCustomSendInterval override OnTeleport 2023-02-24 22:51:42 -05:00
MrGadget1024
92310b4c9e bufferTimeMultiplierForClamping = 1f 2023-02-24 22:51:14 -05:00
MrGadget1024
0d461a8836 only ninja NPCs 2023-02-24 22:50:34 -05:00
MrGadget1024
0d6868b693 useNinja = true 2023-02-24 22:50:16 -05:00
MrGadget1024
5b56a4ce22 updated NTReliableExt 2023-02-24 22:49:24 -05:00
MrGadget1024
95e189d197 Updated NTReliableExt 2023-02-24 22:49:04 -05:00
MrGadget1024
e242c5f965 Formatting 2023-02-24 03:38:32 -05:00
MrGadget1024
d92cc65315 Formatting 2023-02-24 03:38:18 -05:00
ninjakickja
a424ee87d1 Clamping time if the difference exceeds X times multiplier.
Added in NM to include settings for clamp multiplier.
Added clamp multiplier field in NetworkServer for use in snapshot interpolation, similar to send Interval.
Amended all the function call to InsertAndAdjust to include clamp multiplier.
2023-02-24 11:36:10 +08:00
mischa
228a577683
fix: kcp2p V1.30 (#3391)
- fix: set send/recv buffer sizes directly instead of iterating to find the limit.
  fixes: https://github.com/MirrorNetworking/Mirror/issues/3390
- fix: server & client sockets are now always non-blocking to ensure main thread never
  blocks on socket.recv/send. Send() now also handles WouldBlock.
- fix: socket.Receive/From directly with non-blocking sockets and handle WouldBlock,
  instead of socket.Poll. faster, more obvious, and fixes Poll() looping forever while
  socket is in error state. fixes: https://github.com/MirrorNetworking/Mirror/issues/2733
2023-02-23 03:14:31 +01:00
ninjakickja
46ec63dc51 Changing TimeOverride Method
If we want local timeline to be around bufferTime slower,
Then over her we want to clamp localTimeline to be:
target +- multiplierCheck * bufferTime.
2023-02-23 09:26:07 +08:00
MrGadget1024
192f79c92b Merged master 2023-02-22 17:48:39 -05:00
MrGadget1024
148b4e487c Console.WriteLine instead of Debug.Log 2023-02-22 01:35:44 -05:00
MrGadget
a1db764b7c
Organize WeaverTypes (#3393)
* Organize WeaverTypes
- Put all NetworkBehaviors together
- Put Writer with Reader
- Put Remote things together
- moved ScriptableObjectType down

* moved NetworkClientConnectionReference up
2023-02-22 07:07:45 +01:00
MrGadget1024
f87d5e4f9c UpdateClient change per Ninja 2023-02-21 02:14:21 -05:00
MrGadget1024
aa3c1b6bd4 Changes per Ninja 2023-02-21 01:29:23 -05:00
MrGadget1024
712b1c9120 fixed dumb mistake 2023-02-20 15:24:09 -05:00
MrGadget1024
dba4aa7f24 Added back PlayerBuffers to Ninja prefabs 2023-02-20 11:45:36 -05:00
MrGadget1024
51e47c733a PlayerName - removed commented code 2023-02-20 02:40:46 -05:00
MrGadget1024
7fb1d25e06 default multiplier 3 2023-02-20 02:40:26 -05:00
MrGadget1024
6a4dcf8d10 Hide snap UI elements 2023-02-20 02:40:06 -05:00
MrGadget1024
dc1c45a7b8 set multipler default back to 3 2023-02-20 02:15:23 -05:00
MrGadget1024
03c063e69e UI bug for multiplier, and default now 6 2023-02-20 02:09:37 -05:00
MrGadget1024
566c9eb29d TestNTNetworkManager OnClientDisconnect offline scene check 2023-02-20 00:56:36 -05:00
MrGadget1024
7fa5afcfce fixed TestNT.meta 2023-02-19 23:34:33 -05:00
MrGadget1024
94114a88b3 Deleted TMP folder 2023-02-19 23:13:49 -05:00
MrGadget1024
47c4285423 Merged Master 2023-02-19 23:12:48 -05:00
MrGadget1024
494f6b342c SWT ClientHandshake - fixed error 2023-02-19 23:07:05 -05:00
MrGadget
69d5cf3c8f
breaking: AsmDef Updates (#3388)
* breaking: AsmDef Updates
- KcpTransport moved up
- SimpleWeb moved into folder
- AsmDef chains updated and simplified

* Reverted accidental change

* reverted accidental change

* Mirror.Tests - reverted ref removal
- needed for 2019 and 2020
2023-02-20 04:56:52 +01:00
Robin Rolf
cfe27a179b
fix: never use custom NB writers for SyncVars (#3387)
We always use a specific reader for NB syncvars, so if a custom defined writer handles data differently this leads to data mismatches.
Supporting custom readers for NB syncvars will just lead to too many edge cases and unexpected behaviour, so dont do it (see https://github.com/MirrorNetworking/Mirror/issues/2680#issuecomment-1435093212 for rationale).

Fixes #2680
2023-02-20 04:29:48 +01:00
MrGadget1024
ce2f1206e4 NTRCustomSendInterval formatting 2023-02-19 22:01:32 -05:00
ninjakickja
913a29dc6d Update NT to fix desyncs
When a new client joins in between sending frames, server will serialize a current live position to the client. This may not be the last sent copy to everyone, so when the next send happens, the delta sent will be delta-ed against wrong data.

Other changes:
1) Removed CheckLastSendTime() in OnSerialize(), not needed.
2) Only checking sending/set dirty in LateUpdate(). Other users may require positions updated in
    update, and do something to it on LateUpdate().
3) Initialize last snapshot to zeroes in Reset(). For syncOnlyOnChange, sender will check against last sent
    snapshot for changes. This needs to be zero on a reset.
2023-02-20 10:36:14 +08:00
MrGadget1024
fbbb10be7f TestNTNetworkManager wrap using System 2023-02-19 16:42:20 -05:00
MrGadget1024
9877249130 Add back reference 2023-02-19 16:38:31 -05:00
MrGadget1024
e0aac07a30 resolved conflict 2023-02-19 10:28:48 -05:00
MrGadget1024
ccf6569dd3 Merged AsmDef-Sanity 2023-02-19 10:25:55 -05:00
MrGadget1024
fe03ba88d9 breaking: AsmDef Updates
- KcpTransport moved up
- SimpleWeb moved into folder
- AsmDef chains updated and simplified
2023-02-19 10:23:38 -05:00
MrGadget1024
346442efed Kcp compatibility 2023-02-19 10:08:18 -05:00
MrGadget1024
31203aabb1 TestNTNetworkManager overrides 2023-02-18 21:16:55 -05:00
MrGadget1024
44e7d76b08 UI updates 2023-02-18 21:00:35 -05:00
MrGadget1024
7f655d1899 Offline scenes updated 2023-02-18 20:27:51 -05:00
MrGadget1024
d9882e42f0 LoginUI prefab 2023-02-18 20:27:26 -05:00
MrGadget1024
5088ccde81 offline scenes updated - UI wireups 2023-02-18 20:08:45 -05:00
MrGadget1024
ba1d5e1b5f LoginUI Prefab updated 2023-02-18 20:08:25 -05:00
MrGadget1024
3bb3efbb62 LoginUI - removed unused field 2023-02-18 20:08:08 -05:00
MrGadget1024
fc951d84c2 unused usings 2023-02-18 14:52:00 -05:00
MrGadget1024
9ffd233958 OfflioneKcp updated 1K 2023-02-18 14:44:21 -05:00
MrGadget1024
add8fa42d1 OfflineKcp updated 2023-02-18 14:36:55 -05:00
MrGadget1024
2cac079138 LoginUI prefab 2023-02-18 14:36:46 -05:00
MrGadget1024
863ec8d0b8 1000 maxConn 2023-02-18 13:24:30 -05:00
MrGadget1024
699c9ac5c7 fixed client not getting multiplier 2023-02-18 11:44:08 -05:00
MrGadget1024
4536fb3dc8 sendIntervalMultiplier SyncVar 2023-02-18 10:15:54 -05:00
MrGadget1024
a4491057e3 fixed BotNinja prefab 2023-02-18 09:42:31 -05:00
MrGadget1024
346aaabc02 fixed /ninja switch 2023-02-18 09:31:26 -05:00