Commit Graph

4148 Commits

Author SHA1 Message Date
rodolphito
c289ffb440 Remove proxy methods for setting playerController. (#665)
* Deprecate proxy methods for setting playerController.

* shortened obsoleted methods.

* This isnt actually public facing, its internal. Obsoletion is unnecessary, plain removal is ok.
2019-03-27 10:26:45 +01:00
uwee
f4cdfbf952 Remove IsClientConnected (#663)
* remove IsClientConnected

no longer needed now that NetworkClient is static

* removed in other scripts also

* marked as obsolete
2019-03-27 09:15:03 +01:00
MrGadget
d7306986b6 Updated Lobby Example Scenes Lighting (#662) 2019-03-26 17:49:56 +01:00
MrGadget
d2868646fa SyncVar Updates (#660)
* Change SyncVar hooks to use `nameof`
I intentionally left the test for missing hook as a literal string because it won't compile otherwise.

* Removed unnecessary property value set from hook
2019-03-26 15:40:28 +01:00
uwee
68f63b5f69 bool InActiveScene not referenced in any script? (#656)
* code is not referenced in any script?

* fully remove code
2019-03-26 13:58:05 +01:00
Paul Pacheco
2d63ee1318
fix: Set syncvar variables after calling the hook (#659)
Previously, during deserialize,  Mirror either called the hook for a syncvar or it set the variable, but never both. So users had to set the variable inside the hook.

```cs
class Player : NetworkBehaviour {

	[SyncVar(hook=nameof(OnVarChanged))]
	public int myvar;

	public void OnVarChanged(int newvalue) {

		Debug.Log("Got new value " + newvalue);
		Debug.Log("Old value is " + myvar);

		// with this pull request the following line is no longer needed
		// the weaver will do this after the hook finishes
		// this.myvar = newvalue;
	}
}
```

fix: Hook not working with NetworkIdentity or GameObjects

Deserializing NetworkIdentity or GameObjects was broken, it called the hook only if there was no hook,  and it saved the variable only if there was a hook.
2019-03-26 07:15:25 -05:00
Paul Pacheco
4d74f555b1 Update Assets/Mirror/Runtime/NetworkClient.cs
Co-Authored-By: vis2k <info@noobtuts.com>
2019-03-26 12:16:57 +01:00
vis2k
1879f5ecdc Add [Obsolete] for compatibility 2019-03-26 12:16:57 +01:00
vis2k
9bc1dc1e85 NetworkClient class made static 2019-03-26 12:16:57 +01:00
vis2k
912572d6fe NetworkClient.ConnectLocalServer: use the same order as Connect 2019-03-26 12:16:57 +01:00
vis2k
7bc320d098 LocalClient class moved into NetworkClient 2019-03-26 12:16:57 +01:00
vis2k
31836c16d1 NetworkClient.RemoveTransportHandlers made static 2019-03-26 12:16:57 +01:00
vis2k
4dbaff8ac1 NetworkManager.StartClient/StartHost don't return NetworkClient anymore 2019-03-26 12:16:57 +01:00
vis2k
d1d006e6d7 NetworkClient.Connect made static 2019-03-26 12:16:57 +01:00
vis2k
080bf2eaf0 NetworkClient.InitializeTransportHandlers made static 2019-03-26 12:16:57 +01:00
vis2k
32ed62f82b NetworkClient.OnError made static 2019-03-26 12:16:57 +01:00
vis2k
461ba0b036 NetworkClient.OnDisconnected made static 2019-03-26 12:16:57 +01:00
vis2k
60083ff72d NetworkClient.OnDataReceived made static 2019-03-26 12:16:57 +01:00
vis2k
42bceb25d9 NetworkClient.OnConnected made static 2019-03-26 12:16:57 +01:00
vis2k
493bf7fa5f NetworkClient.RegisterSystemHandlers made static 2019-03-26 12:16:57 +01:00
vis2k
bc6c2542f6 NetworkClient.UnregisterHandler made static 2019-03-26 12:16:57 +01:00
vis2k
9eac983872 . NetworkManager.RegisterClientMessages doesn't require NetworkClient parameter anymore 2019-03-26 12:16:57 +01:00
vis2k
712aecb452 NetworkClient.REgisterHandle made static 2019-03-26 12:16:57 +01:00
vis2k
ba00554e0c NetworkClient.GetRTT made static 2019-03-26 12:16:57 +01:00
vis2k
4abc58b136 NetworkClient.Send(msgId, msg) made static 2019-03-26 12:16:57 +01:00
vis2k
cd56c6a6f7 NetworkTime.UpdateClient doesn't require NetworkClient anymore 2019-03-26 12:16:57 +01:00
vis2k
8c125d2fd3 NetworkClient.Send made static 2019-03-26 12:16:57 +01:00
vis2k
558e1d8754 NetworkClient.SetHandlers made static 2019-03-26 12:16:57 +01:00
vis2k
180d3f8cf4 NetworkClient.isConnected made static 2019-03-26 12:16:57 +01:00
vis2k
604c205025 NetworkClient.serverIp made static 2019-03-26 12:16:57 +01:00
vis2k
882a7d5ba8 NetworkClient.connection made static 2019-03-26 12:16:57 +01:00
vis2k
f351a8a6d4 NetworkClient.connectState made static 2019-03-26 12:16:57 +01:00
vis2k
006d5d3bc8 NetworkClient.handlers made static 2019-03-26 12:16:57 +01:00
rodolphito
3a8fa3f571 Remove internal access modifier. (#658) 2019-03-26 12:09:43 +01:00
rodolphito
a96417112d Use ulong instead of uint to support up to 64 animator parameters. (#655)
* Use ulong instead of uint to support up to 64 animator parameters.

* Split onto new line as Paul asked
2019-03-26 07:57:51 +01:00
uwee
65eaba1fe0 fix: #651 GetSceneAt assumes default scene (#654)
Changed to GetActiveScene
2019-03-26 07:57:31 +01:00
Paul Pacheco
8c93f31b80 refactor: Load parameters right before function call 2019-03-25 23:13:52 -05:00
vis2k
ff909bf830 Telepathy license file included 2019-03-25 20:03:27 +01:00
vis2k
14807f6ef7 add comment 2019-03-25 16:20:17 +01:00
vis2k
13bb748603 fix: Revert "NetworkClient.Shutdown: call ClientScene.Shutdown, otherwise it's never called" - caused client's player to not be removed from scene after disconnecting
This reverts commit e1e7b3132e.
2019-03-25 16:19:22 +01:00
rodolphito
d483901432 Use PackedUInt for dirty bits for bandwidth (#649) 2019-03-25 13:13:14 +01:00
uwee
4c7c97bf70 reset netId counter to 1 on NetworkServer.Shutdown (#645) 2019-03-25 05:37:28 -05:00
rodolphito
6120a8e082 Removed unused parameter from NetworkAnimator. (#648) 2019-03-25 08:07:45 +01:00
Paul Pacheco
e2a6ce9811
feat: Add weaver support for Vector2Int and Vector3Int (#646) 2019-03-24 16:04:13 -05:00
vis2k
7836433b4f Local Connection's connectionId is now set to 0 inside of their constructors, instead of doing it in LocalClient 2019-03-24 21:16:55 +01:00
vis2k
5f7c4d48b4 NetworkServer.AddLocalClient renamed to SetLocalConnection because that's what it does. The connection is created in LocalClient now too, this way NetworkServer doesn't need to depend on LocalClient(!) 2019-03-24 21:15:05 +01:00
vis2k
829da79288 LocalClient.InternalConnectLocalServer sets connectionId to 0 directly instead of getting it from NetworkServer.AddLocalClient (which shows an error message if failed anyway) 2019-03-24 21:07:41 +01:00
vis2k
56c163d9cd NetworkServer.RemoveLocalClient renamed to RemoveLocalConnection because NetworkServer only keeps a local connection, not a local client 2019-03-24 21:07:41 +01:00
uwee
6db11b298b Add the name of the Message back to the debug
The random int representing the Message is less human readable.
2019-03-24 14:50:13 -05:00
vis2k
ca2c72aee8 NetworkServer.s_LocalConnection replaced with .localConnection private setter 2019-03-24 20:46:34 +01:00
Paul Pacheco
48674151f0 perf: don't varint bytes and shorts 2019-03-24 14:45:03 -05:00
vis2k
bdf12c85d0 fix: #640 InternalReplacePlayerForConnection calls SpawnObserversForConnection now too 2019-03-24 19:41:41 +01:00
vis2k
a2d6317642 fix: #573 NullReferenceException because destroyed NetworkIdentities were never removed from sceneIds dict 2019-03-24 19:28:25 +01:00
rodolphito
1e5fc3cde5 Made dirty bits not rely on NetworkWriter position manipulation hackery. (#636)
* Made dirty bits not rely on NetworkWriter position manipulation hackery.

* Renamed GetDirtyBits to NextDirtyBits, as discussed with Paul.

* Expanded one line ifs.
2019-03-24 12:43:39 -05:00
Paul Pacheco
a495f66fc1
refactor: configure frame rate in a virtual method (#638)
Moved frame rate configuration into a virtual method so that people can override it and we reduce StartServer complexity

Fixes #567
2019-03-24 08:58:11 -05:00
vis2k
2d492607c8 pong example: ball is only simulated on server now 2019-03-24 14:38:22 +01:00
vis2k
e521a20052 fix: #573 (part 2) NetworkManager detects additive scene loads and respawns objects on server/client again 2019-03-24 13:24:29 +01:00
vis2k
c1af84e6bf fix: #573 (part 1) NetworkScenePostProcess handles NetworkIdentities of all scenes except DontDestroyOnLoad. this way it works for additively loaded scenes too. 2019-03-24 13:24:29 +01:00
vis2k
603dfa1fe9 don't use continue and improve comments 2019-03-24 13:24:29 +01:00
vis2k
051cd7cf66 add comment 2019-03-24 13:24:29 +01:00
vis2k
bce7c54fa1 NetworkScenePostProcess: only set inactive if this was actually a valid scene object 2019-03-24 13:24:29 +01:00
rodolphito
b3595d3f5d Code simplification and optimization. (#635) 2019-03-24 10:47:14 +01:00
Zac North
7d21bded9a feat(syncvar): Add SyncDictionary (#602)
* Added basic SyncDictionary support, no support for structs yet

* Fixed TryGetValue usage

* Removed extraneous hardcoded SyncDictionary type

* Added a couple basic tests, more coming

* Added 4 more tests

* Added two tests and SyncDictionary now bubbles item to Callback on Remove (both Remove cases)

* Added the remainder of tests

* Added basic documentation about SyncDictionaries on StateSync.md page

* Simplify test syntax

Co-Authored-By: Katori <znorth@gmail.com>

* Simplify test syntax

Co-Authored-By: Katori <znorth@gmail.com>

* Simplify test syntax

Co-Authored-By: Katori <znorth@gmail.com>

* Simplify test syntax

Co-Authored-By: Katori <znorth@gmail.com>

* Remove null-check when setting value directly (and updated expected test behaviour)

* fix: Provide default implementation for SyncDictionary serializers

* feat: Add Weaver support for syncdictionary

* Fix minor issue with Set code and made test use Weaved serialization instead of manual

* Added a new test for bare set (non-overwrite)

* Added another test for BareSetNull and cleaned up some tests

* Updated SyncDictionary documentation on StateSync.md

* Update docs with SyncDictionary info

* Update SyncDictionary docs wording

* docs: document the types and better example

* Add two SyncDictionary constructors

* Removed unnecessary initialization

* Style fixes

* - Merged many operation cases
- Fixed Contains method
- Added new test to test contains (and flag its earlier improper usage)
- Use PackedUInt32 instead of int for Changes and Counts

* - Simplify "default" syntax
- Use Rodol's remove method (faster)
- Don't use var

* Removed unnecessary newline, renamed <B, T> to <K, V> per vis2k, corrected wording of InvalidOperationException on ReadOnly AddOp

* Code simplification, style fixes, docs example style fixes, newly improved implementation for CopyTo that fails gracefully
2019-03-24 10:18:31 +01:00
rodolphito
fea46b801d Remove NetworkAnimatorEditor and animator parameter mask. (#633) 2019-03-24 09:39:51 +01:00
vis2k
67d715fe74 fix: Telepathy updated to latest version: protect against allocation attacks via MaxMessageSize. Can be configured in the TelepathyTransport component now. 2019-03-23 20:34:48 +01:00
Zac North
b0af876221 fix(tests): Added missing SyncListByteValid test file (#634)
* Added missing SyncListByteValid test file (passing)

* Added a missing newline
2019-03-23 18:40:38 +01:00
MichalPetryka
1595fb07b1 PreprocessorDefine rework (#626)
perf: speed up preprocessor define
2019-03-23 06:59:35 -05:00
vis2k
1bf2f9ee56 Update List Server demo text 2019-03-23 12:51:39 +01:00
vis2k
4eb01da0c1 update welcome message 2019-03-22 17:19:05 +01:00
vis2k
fa04185fa8 remove empty line 2019-03-22 14:08:59 +01:00
vis2k
c194771084 ClientScene.DestroyAllClientObjects simplified: use .Values 2019-03-22 14:05:47 +01:00
vis2k
6e11429699 NetworkClient.Shutdown made static too. ShutdownAll made obsolete. 2019-03-22 13:56:43 +01:00
vis2k
1d94464023 NetworkClient.ShutdownAll calls .Shutdown 2019-03-22 13:54:20 +01:00
vis2k
e1e7b3132e NetworkClient.Shutdown: call ClientScene.Shutdown, otherwise it's never called 2019-03-22 13:53:28 +01:00
vis2k
227b0a71d1 tanks example namespaces updated 2019-03-22 13:29:24 +01:00
vis2k
c5b4211ac7 list server examples namespace changed 2019-03-22 13:28:08 +01:00
vis2k
5c00577746
fix: #609 by spawning observers in NetworkServer.AddPlayerForConnection after setting the controller. There is no point in trying to spawn with a null controller in SetReady, because by definition no one can observer something that is null. (#623) 2019-03-22 12:50:35 +01:00
Paul Pacheco
b7e977a7a3
synclist code generator is now reusable (#624)
* refactor: Made serializer generation reusable

* refactor: SyncList code generator is reusable for other structs
2019-03-22 06:44:57 -05:00
vis2k
1d166c699a add comment 2019-03-22 12:24:22 +01:00
vis2k
694185b756 NetworkServer.SpawnObserversForConnection helper function instead of doing it all in SetClientReady 2019-03-22 12:23:33 +01:00
vis2k
009943f368 remove outdated comment 2019-03-22 12:10:13 +01:00
vis2k
c3bd7d6e07 NetworkServer.SetClientReady: get rid of 'continue' 2019-03-22 12:09:22 +01:00
vis2k
400bb91821 NetworkServer.SetClientReady: remove unnecessary null check because we don't have one in the above foreach either, and we don't have them anywhere else for NetworkIdentity.spawned because OnDestroy removes objects from it before they become null. The only way to cause this would be by calling Destroy(GetComponent<NetworkIdentity>()) - which no one does, and if someone does it then it's fine to get an exception here. 2019-03-22 12:08:47 +01:00
vis2k
9567daedba add comments 2019-03-22 12:06:13 +01:00
vis2k
b869e3af99 improve comment 2019-03-22 12:04:25 +01:00
vis2k
c176da7bc3 NetworkServer.SetClientReady: use if+else instead of if + early return 2019-03-22 12:00:16 +01:00
vis2k
0e8b442cad add some ocmments 2019-03-22 11:59:12 +01:00
vis2k
f6a6440294 NetworkServer.SetClientReady: move isReady=true upwards 2019-03-22 11:57:27 +01:00
vis2k
47d5ee976e remove unused variable 2019-03-22 11:53:42 +01:00
Paul Pacheco
6f19489721
feature(synclist): allow SyncList of primitive types (#622)
* feature(synclist): allow SyncList of primitive types

As it turns out this never really worked:
```cs
class SyncListByte : SyncList<byte> {};
```

You had to write your own serializeItem / deserialize item for native types.

This change lifts the restriction, now you can use a synclist of anything that mirror can serialize/deserialize

* fix: fix unit tests error messages
2019-03-22 05:51:20 -05:00
vis2k
aa5e5a104f ClientScene.s_PendingOwnerNetIds converted to HashSet 2019-03-22 10:10:53 +01:00
vis2k
0d6b03989a NetworkServer.InternalAddPlayerForConnection moved into AddPlayerForConnection because there is no reason to keep it in an internal method anymore, since NetworkServer is static now 2019-03-22 10:04:14 +01:00
vis2k
fb2131207c NetworkServer.InternalAddPlayerForConnection: reuse 'identity' for log message 2019-03-22 10:03:00 +01:00
vis2k
4f53f37dc8 NetworkServer.InternalAddPlayerForConnection: rename playerGameObject parameter for consistency 2019-03-22 10:02:30 +01:00
vis2k
75e51513db added the log message again too 2019-03-22 09:58:04 +01:00
vis2k
1a55c3d52d NetworkManager: move OnServerAddPlayerInternal code into OnServerAddPlayer because it was really just the implementation for OnServerAddPlayer moved into another function 2019-03-22 09:53:21 +01:00
vis2k
4b4dd179cc sort regular and obsolete OnServerAddPlayer functions 2019-03-22 09:51:27 +01:00
vis2k
a39954003a NetworkManager.RegisterServerMessages for AddPlayerMessage uses OnServerAddPlayer directly instead of wrapping it with a OnServerAddPlayerMessageInternal function 2019-03-22 09:46:14 +01:00
vis2k
fa4efa6683 syntax 2019-03-21 18:12:34 +01:00
vis2k
155764cea8 simplify NetworkIdentity.RebuildObservers 2019-03-21 17:58:15 +01:00
vis2k
f90cdae3c6 fix #384: duplicating scene objects at runtime is now detected and and error is shown. otherwise the user could instantiate scene objects at runtime, which would then send the sceneId to the client, then the client wouldn't know which of the multiple objects to use for the sceneId, resulting in things getting out of sync. 2019-03-21 11:46:55 +01:00
Zac North
c9eac57ce8 fix: OnClientReady is called and passed the appropriate ready state value in NetworkLobbyPlayer (#618) 2019-03-21 02:27:25 -05:00
Martin Evans
28b067d3cd refactor: Generic IMessageBase to allow struct message types (#619)
* - Added a `IMessageBase` as an interface to `MessageBase`. Existing messages which inherit `MessageBase` (including ones which do not implement Serialize/Deserialize and rely on the weaver) will continue to work in exactly the same way as before!
 - Modified any methods which were generic `T where T : MessageBase` to be `T where T : IMessageBase`. this does not change things at all for all existing usages of the method.

These two changes allow end users to implement IMessageBase as a `struct` instead of `MessageBase` as a `class`, so they are no longer forced to allocate message objects in their own code.

* Update .gitignore

* Update Messages.cs

* Update MessageBaseTests.cs

* Update MessageBaseTests.cs

* Update MessageBaseTests.cs
2019-03-20 19:44:42 -05:00
Paul Pacheco
9d043182bf feature: SyncList now support structs (#614)
Previously, if you wanted a synclist of structures,  you would do:  SyncListSTRUCT<MyStruct>
Now you can use SyncList<MyStruct>
SyncListSTRUCT is left there, but obsolete
2019-03-20 12:45:46 +01:00
vis2k
22640b5e62
Mirror List Server example (#611)
feature: Mirror List Server example
2019-03-20 09:38:53 +01:00
Anthony Eckert
00961ccc9c feature: Add NoRotation to NetworkTransform (#616)
This allows you to leave rotation out of the NetworkTransform if you only need position.
Right now if you don't need sync rotation and set compression to Lots, it can move your object in ways not expected. This forces you to use no compression as a fix. Using more bandwidth for something you don't need. I think this is all that is needed, tested it in my game and it works.
2019-03-19 23:46:33 -05:00
Paul Pacheco
80bce0a626 refactor: rename SyncObjectProcessor -> SyncObjectInitializer
The name SyncObjectProcessor is confusing because it does not process syncobjects.   Instead it initializes syncobjects in a NetworkBehaviour.
this avoids the confusion with SyncListStructProcessor, that does process synclists to add serialization methods
2019-03-19 08:26:03 -05:00
Paul Pacheco
6e51e69e3d refactor: rename SyncListProcessor -> SyncListInitializer
SyncListProcessor is a very confusing name,  it does not process synclists at all,  instead it initializes synclists in the network behaviour.
This is more confusing especially since SyncListStructProcessor  does process the synclists to add serialization methods, and both of them normally work
in tandem in different parts of the code
2019-03-19 08:23:28 -05:00
vis2k
8f8856d320 remove targetrpc first parameter networkconnection test because it's optional now 2019-03-18 13:08:28 +01:00
MichalPetryka
c1707e5917 fix: Don't disconnect host (#608)
* Don't disconnect host

* Update NetworkConnection.cs
2019-03-18 09:38:51 +01:00
vis2k
ed6a93724f tanks: projectiles 2019-03-17 22:23:20 +01:00
vis2k
21327065f2 rename Examples/Movement to Examples/Tank 2019-03-17 21:46:53 +01:00
vis2k
97b4e26d8b movement: add a light to the tank 2019-03-17 21:46:18 +01:00
vis2k
a2165d3278 movement: dirt texture 2019-03-17 21:38:58 +01:00
vis2k
d41c5d0040 movement: adjust camera 2019-03-17 21:31:45 +01:00
vis2k
6a11335050 movement: improve code 2019-03-17 21:30:45 +01:00
vis2k
a773df4905 movement: use animations 2019-03-17 21:30:45 +01:00
vis2k
c0b2d63a8d movement: rename player to tank 2019-03-17 21:18:57 +01:00
vis2k
13717c8b57 movement: rotate camera 2019-03-17 21:17:20 +01:00
vis2k
fbe2895eab movement: delete old model 2019-03-17 21:12:49 +01:00
vis2k
14b63e9d10 movement: add some spawn positions 2019-03-17 21:08:52 +01:00
vis2k
477fe61a14 movement example: fix movement in builds by using navmeshagent; use better model (tank) 2019-03-17 21:05:12 +01:00
MichalPetryka
b67b3e4304 fix: Stop calling ClientDisconnect on host (#597)
* Stop calling ClientDisconnect on host

* Update NetworkConnection.cs

* Update NetworkServer.cs
2019-03-17 19:37:21 +01:00
MrGadget
78504533f3 Fix Scene Handling (#463)
* Fix Scene Handling

Line 361: Passing false prevents the switch to offline scene...pass true instead to forceReload paramater.
Line 588: Never assume Network Manager is in Scene 0 of Build Settings...it often is not.

* Reverted GetActiveScene

Will make separate PR

* Added code to unwind DontDestroyOnLoad

* Fixed typo in comment

* Removed the unwinding of DDOL
2019-03-17 19:32:49 +01:00
vis2k
7efeaa980c not public 2019-03-17 14:35:53 +01:00
vis2k
d72a10b4a9 pong: NetworkManagerPong handles ball spawn and despawn 2019-03-17 14:34:59 +01:00
vis2k
7e9b3efa7d pong: fixed racket spawn position after reconnecting 2019-03-17 14:24:15 +01:00
vis2k
6d8d9f2998 pong: racket uses * Time.fixedDeltaTime 2019-03-17 14:14:22 +01:00
vis2k
a3209add85 pong ball uses continous collision detection and interpolation to fix going through walls 2019-03-17 14:08:08 +01:00
vis2k
f360e5070c pong ball velocity only starts when both players are connected 2019-03-17 14:07:24 +01:00
vis2k
c956148982 pong ball position centered 2019-03-17 14:02:42 +01:00
vis2k
46dd15d4a4 spawn scene object not found message shows sceneID as hex 2019-03-17 09:54:44 +01:00
MrGadget
f64eb8be0b Should be fixedDeltaTime in FixedUpdate (#605) 2019-03-16 13:15:32 -05:00
MrGadget
d09c7cddc0 Fixed typos (#604) 2019-03-16 12:57:17 -05:00
MrGadget
54c964c232 Made Lists available to inheritors (#603)
* Made Lists available to inheritors

* Update NetworkLobbyManager.cs

Made them public
2019-03-16 15:47:33 +01:00
rodolphito
0b83c9feb9 Add scale to spawn payload. (#599) 2019-03-16 11:57:59 +01:00
vis2k
4193574864
[TargetRPC] optional connection parameter for easier usage while still allowing for previous usage (#592)
* [TargetRPC] optional connection parameter for easier usage while still allowing for previous usage

* allow for parameterless targetrpc too

* syntax

* Add Helpers.ReaderParameters change from HLAPI 2019.2 package just to be sure
2019-03-14 14:52:32 +01:00
vis2k
1824e8db80 sceneID buildIndex byte replaced with scenePath hash and sceneID converted to long to fix #571, #577 2019-03-14 11:26:19 +01:00
vis2k
ca69cb9c14 log sceneid as hex 2019-03-14 11:15:51 +01:00
vis2k
de9d31f6b6 syntax 2019-03-14 11:01:42 +01:00
vis2k
e962fd2f35 sceneID random generation excludes 0 because 0 is for random sceneIDs 2019-03-14 11:01:12 +01:00
vis2k
62fc738673 Fix sceneID mismatch bug between build (buildIndex=-1) and editor (buildIndex=0) for projects where the scene was not added to build settings list 2019-03-13 18:36:20 +01:00
vis2k
8642056f21 add comments 2019-03-13 18:27:00 +01:00
MichalPetryka
8c41ee2380 Remove a per packet Encoding allocation (#588)
* Remove a per packet encoding allocation

* Update NetworkReader.cs

* Update NetworkReader.cs

* Update NetworkWriter.cs

* Update NetworkWriter.cs

* Update NetworkReader.cs
2019-03-13 15:53:18 +01:00
MrGadget
ab668962d1 Added Obsoleted Methods (#590) 2019-03-13 15:49:43 +01:00
MrGadget
dc0b8d406a NetworkLobbyManager: Added Obsoleted Method (#591) 2019-03-13 15:49:11 +01:00
vis2k
f17ddfec5f syntax 2019-03-13 14:03:41 +01:00
vis2k
d23facc048 simplify code 2019-03-13 14:01:50 +01:00
vis2k
00a1004b41
Weaver sourcebased hlapi2019.2package (#587)
* move weaver into assets folder

* disable tests for now

* asmdef

* add logs

* Use UNET's WeaverRunner code, slightly modified to find Mirror assembly

* Use UNET's 2019.2 package Weave function changes

* compiler messages error checked moved into separate function

* fix typo

* syntax

* replace 'var'

* rename

* replace var

* fix log

* update comment

* syntax

* rename to assemblyPath. no need for an extra variable.

* remove extra variable

* fix typo

* remove old code

* don't use .Contains to find Mirror dll. that's crazy. would fail for all DLLs in Mirror folder.

* look for 'this' assembly separately

* separate unityEngine assembly search

* add comment

* move null check up

* move null check upwards

* move outputDirectory down

* check process result properly

* use our previous way to find unity engine dll

* rename to unityEngineCoreModuleDLL again

* improve output directory construction

* move unityengine dll finding upwards

* move foundThisAssembly down, where it is used

* add comments

* split dependency code into separate functions

* add TODO

* store this assembly in a variable

* split dependency search depending on if we found assembly or not

* move usesMirror logic into if and out of 'not found' else

* syntax

* improve order

* GetNonDynamicAssemblyDirectories helper function

* check File.Exists instead of exception

* improve comment

* rename HlapiRuntimeAssemblyName to MirrorAssemblyName

* reuse MirrorAssemblyName

* remove telepathy check

* rename to MirrorRuntimeAssemblyName

* add MirrorWeaverAssemblyName

* reuse name consts

* don't use contains to check if assembly depends on Mirror

* add actions for testing again

* make CompilationFinishedHook public so it can be used by tests

* fix typo

* Mirror.Tests.asmdef references weaver asmdef

* reenable tests

* pass error handlers to Weaver Processing for tests to work
2019-03-13 12:17:04 +01:00
Liu
dea7b58792 Fix network animator doesn't sync float value as expected (#589)
Maybe we should do float sync when the Abs of newValue - lastValue > 0.001f
2019-03-13 12:15:34 +01:00
vis2k
b0ef89a0d9 resave scenes because of new sceneIDs 2019-03-12 18:45:42 +01:00
MrGadget
303d0f4b3a Reverted spelling error from #537 (#584) 2019-03-11 18:51:34 -05:00
rodolphito
dd362b18a0 Fixed the NetworkAnimator issue I introduced in the bandwidth fix. This should also further improve bandwidth, too. (#576) 2019-03-11 08:54:46 +01:00
Paul Pacheco
092c5663b6
NetworkReader should enforce read only (#580) 2019-03-10 12:04:45 -05:00
rodolphito
4aa1a4b169 Removed one liner braces from transport files. (#544) 2019-03-10 10:18:11 +01:00
vis2k
98a0e23413
Persistent sceneid (#563)
* add empty line

* persistent scene ids

* never assign scene ids at runtime

* fix warning

* fix 'sceneid is never assigned to' warning in play mode

* simplify bitwise operation

* set dirty even if only scene index byte changed

* improve log message

* assign build index byte in OnPostProcessScene to also work with unopened scenes and build index changes

* add comment

* improve log

* Add sceneid not set check

* Only PostProcess the objects from this scene.

* Interrupt build if there is an unopened scene that still needs sceneId assignments. This makes it 100% fail safe.

* improve comment and error message

* clear build index byte before or-ing into it
2019-03-08 20:24:18 +01:00
vis2k
508ba558fc NetworkManager: headless start moved to Start() because Awake() is for initialization. 2019-03-07 15:30:23 +01:00
vis2k
3a86bd501a headless start doesn't unnecessarily set tick rate anymore. StartServer already takes care of that. 2019-03-07 15:27:15 +01:00
vis2k
8b85e1c846 NetworkIdentityEditor: create GUIContent directly 2019-03-07 13:39:30 +01:00
vis2k
f3738d87d7 NetworkAnimatorEditor: create GUIContent directly 2019-03-07 13:39:30 +01:00
rodolphito
ca7824bbc1 Fixed animator bandwidth problem. (#536)
* Fixed animator bandwidth problem.

* Renamed xShadowCopy to lastXParamters, renamed val to be consistent with the reading value names, renamed newValue to newIntValue to be consistent with newFloatValue and newBoolValue.

* Removed Debug.log which slipped by.
2019-03-06 22:52:26 +01:00
MichalPetryka
9afefbdce7 Adjusted line endings, encoding and trimmed whitespaces at EOL (#561) 2019-03-06 18:08:48 +01:00
rodolphito
896551eb00 Finished replacing comment walls with regions. (#558) 2019-03-06 10:53:35 -06:00
vis2k
17ab8ae30a add empty line 2019-03-06 14:42:22 +01:00
rodolphito
ca57f1180c Removed trailing whitespace (#556) 2019-03-06 09:08:34 +01:00
rodolphito
98284e4253 Removed single line braces from NetworkWriter. (#545)
* Removed single line braces from NetworkWriter.

* Undid alignment.
2019-03-05 18:17:42 -06:00
vis2k
ed64872163 NetworkIdentity.OnValidate: wrap in #if UNITY_EDITOR in case OnValidate is needed at runtime later 2019-03-04 17:43:51 +01:00
vis2k
8eb27ea0af Syntax 2019-03-04 17:42:24 +01:00
rodolphito
f6d89c763f Removed comment divider thingies and used regions where applicable. Reordered a bit of code to make the regions make sense. (#532) 2019-03-04 10:04:54 +01:00
rodolphito
f324c0df94 Removed SetInstanceId by making netId setter internal. (#510)
* Removed SetInstanceId by making netId setter internal.

* Split isServer into multiple lines as per vis' suggestion.
2019-03-04 10:02:00 +01:00
rodolphito
15c3991905 Removed braces from everything else. (#551) 2019-03-04 09:57:27 +01:00
rodolphito
c1179fbd0d Renamed UNetInvokeType to MirrorInvokeType. (#553) 2019-03-04 09:56:59 +01:00
rodolphito
8141c44e50 Brace crunching (#554)
* Made bracing consistent in WeaverTests.

* Made bracing consistent everywhere else.
2019-03-04 08:48:28 +01:00
rodolphito
335ed683a5 Remove one liner braces in NetworkManager. (#547) 2019-03-04 08:47:11 +01:00
rodolphito
0790dd2ac9 Remove one liner braces on NetworkServer. (#548) 2019-03-04 08:46:54 +01:00
rodolphito
b3e6194665 Remove one liner braces. (#550) 2019-03-04 08:44:39 +01:00
rodolphito
45e886e2c4 Removed one liner braces in NetworkIdentity. (#546) 2019-03-04 08:44:27 +01:00
rodolphito
a9deb56282 Remove one liner braces in ClientScene (#549) 2019-03-04 08:43:33 +01:00
Paul Pacheco
70cfe9e8ce Websocket transport should be namespaced (#542) 2019-03-04 08:42:17 +01:00
Paul Pacheco
9a0af7cb55
Allow users to unpack messages too (#543) 2019-03-03 18:06:36 -06:00
Paul Pacheco
4749abd307
Move GetId<T> to MessagePacker (#540)
Now we have the logic of how many bits in just one place and we free up MessageBase for eventually converting to an interface
2019-03-03 14:02:34 -06:00
Paul Pacheco
e4fbbeddc3 Simplify add player extra data (#537)
* Simplify add player extra data

* Pass byte[] in the client too

* Renamed to extra message
2019-03-03 19:53:24 +01:00
vis2k
001cec6d82 NetworkManager.InitializeSingleton: set active transport AFTER setting singleton or destroying self. not before. Otherwise we would set it to a transport that is destroyed a moment later. 2019-03-03 18:19:07 +01:00
vis2k
440a6dfc6f NetworkManager.InitializeSingleton: show warning if destroying self. No need to show an error, since this can be completely normal if we use zones/multiple scenes and switch back to the main scene, which still has a networkmanager. 2019-03-03 18:16:29 +01:00
Paul Pacheco
480bd8c9c6 Transport should be protected so that people can implement their own OnValidate logic (#539) 2019-03-03 16:51:03 +01:00
Paul Pacheco
c7b8f78aae #418 Send messages without id (#422)
* Client can send/receive messages without id

* Server can send and receive messages without id

* Move message id to one common place

* Client use the new send method

* Obsolete the message ids

* Remove player uses the new api

* Refactor AddPlayer with new message api

* Provide a Pack method that gets the message id

* Convert ready message to new api

* Use new api for ObjectDestroy and ObjectHide

* Refactored ready message to new API

* Refactored SpawnSceneObjectMessage to new api

* Convert local authority message to new api

* Convert spawn started message to new api

* Convert spawn finished message to new api

* Convert upate vars message to new api

* Convert owner message to new api

* Convert pong message to new api

* Convert RPC message to new api

* Convert SyncEvent rpc to new api

* Refactor Command to new api

* Refactor Ping to new api

* Convert ErrorMessage to new api

* Convert ErrorMessage to new api

* Use int instead of short for message id to avoid collisions

* Keep only 16 bit hash for message id

* Converted Disconnect Message to new api

* Convert Connect to new message api

* Convert not ready message to new api

* Convert scene message to new api

* the Enum is no longer used for message id

* Add non obsolete version of SendToClient

* Document how to use new API

With this PR,  we no longer use Message id,  document the proper use of the api

* use C# syntax highlight

* Update NetworkMessages.md (#5)

Punctuation changes, added `cs` to code blocks.

* Write message id in short instead of packed int

* Use packer method with id

* Pass the NetworkConnection to the client message handlers
2019-03-03 14:52:35 +01:00
rodolphito
834fab5ba4 Changed several mentions of UNet to instead say Mirror. (#531) 2019-03-03 10:34:23 +01:00
rodolphito
8b2f99b3c4 Made SetDynamicAssetId a setter on the assetId property. (#530)
* Made SetDynamicAssetId a setter on the assetId property.

* Update NetworkIdentity.cs
2019-03-03 10:32:49 +01:00
rodolphito
c0ba0073b2 Removed RequireComponent(Animator) because NetworkAnimator does not have to be on the same game object as the Animator. (#529) 2019-03-03 10:30:59 +01:00
rodolphito
bc9982e187 Remove useless comment (#528) 2019-03-02 23:25:10 -06:00
rodolphito
d9be5cf941 Update tooltip in NetworkTransform. (#527) 2019-03-02 23:13:38 -06:00
MrGadget
24b8003b74
Fixed guidance for hostId
It should be `typeof(NetworkConnection)`
2019-03-02 22:46:12 -05:00
MrGadget
11a755e961 Restored GetConnectionInfo with [Obsolete] (#504)
* Restored GetConnectionInfo with [Obsolete]

* Update Transport.cs

* Update Transport.cs

* Update Transport.cs
2019-03-02 21:03:26 +01:00
vis2k
ce723a62ff Ninja.Websockets license.meta file generated by Unity 2019-03-02 10:27:48 +01:00
vis2k
c4f436d71e Rebuild Weaver.dll 2019-03-02 09:55:37 +01:00
Zac North
7da51e62ff Removed an unused override in the Example NetworkLobbyPlayer (#521) 2019-03-02 09:53:36 +01:00
vis2k
cfc5a0888f Rebuild Weaver.dll 2019-03-02 09:46:26 +01:00
c6burns
92596de38a Weaver follow on pr to 490 (#519)
* removed workaround from previous cecil version that now causes sharing violation console warning

* fixed language feature error -- null prop op is C#4 but .sln target is net35

* separated editor logging (required) from console logging (optional)

* fix issue introduced by flipping boolean property meaning in 9895bff

* added updated weaver assembly

* updated to release assembly - wrong assembly in ef0c903

* commenting weave target debug log to retain prev behaviour (oops)
2019-03-02 09:45:38 +01:00
vis2k
400382be76 ProximityChecker NonAlloc to avoid GC (see https://github.com/vis2k/Mirror/pull/228/) 2019-03-01 22:51:49 +01:00
Zac North
d41701e0c5 Added a license for Ninja.WebSockets (#518) 2019-03-01 21:29:02 +01:00
vis2k
32b9fcc987 Remove old comment 2019-03-01 15:30:20 +01:00
vis2k
0e5181f26a NetworkClient: move PrepareForConnect code into Connect 2019-03-01 15:29:55 +01:00
rodolphito
6b6d2b00a5 Spaces around equal signs. (#515) 2019-03-01 15:26:20 +01:00
rodolphito
4d40ddb891 Minor style fixes. (#514) 2019-03-01 15:01:42 +01:00
rodolphito
5a9f10ec47 Made member accessor debug logs consistent. (#513) 2019-03-01 07:29:38 -06:00
rodolphito
1e13ef5c31 Made it more clear that the checkboxes on the NetworkAnimator are referring to whether the parameter should be synced or not. (#512) 2019-03-01 11:45:01 +01:00
vis2k
fcc3f06feb
move RegisterSystemHandlers from ClientScene to NetworkClient. There is no reason why it should be in ClientScene, especially since it passes a NetworkClient, which is very strange. Additionally, not all delegates are in ClientScene anyway (like NetworkTime) (#473) 2019-03-01 11:38:00 +01:00
rodolphito
e30ec76581 Made client authority setter internal to remove internal setter method. (#508) 2019-03-01 01:18:20 -06:00
Paul Pacheco
32c89f4f33 Use property setter instead of custom setter 2019-03-01 01:11:46 -06:00
rodolphito
848e9cfbe9 Removed unused line. (#506) 2019-03-01 01:07:08 -06:00
Zac North
fbada30e01 Changed WebSockets default port to 7778 in case we add Multiplex (#503) 2019-02-28 22:55:12 +01:00
Zac North
8f041331de Fix WebSocket transport default port (#502) 2019-02-28 22:13:34 +01:00
Zac North
abf95651e2 Added modified version of Paul's 2018 WebSockets transport (#369)
* Added modified version of Paul's 2018 WebSockets transport, modifications include:
- Basic support for WSS
- Event format converted to master event format (UnityEvents)

* Fixed indentation and added support for Available()

* Manually merged in Paul's changes for latest version of Transport

* Added comment to CertVerificationCallback to reflect new research done in live environment.

* Added NoDelay option and merged in some minor renames from 2018 branch version
2019-02-28 20:53:22 +01:00
MrGadget
c8a12eb12e Update Readme.txt (#498)
Removed GitHub link
Added notice to restart unity after import
2019-02-28 18:38:01 +01:00
Lymdun
73f822d9b7 Weaver - My kingdom for some tests (#490)
* Added custom assembly compiler for easier testing

* Added weaver tests

* Added controls to silence Weaver logging and collect logs

* Update weaver dll

* Added new weaver test fixture and tests

* Connected WeaveFailed property to weave result status

* Removed useless meta files

* Removed useless comment

* Fix artifacts deletion

* Moved to [SetUp]

* Removed logs noise
2019-02-28 17:22:18 +01:00
vis2k
a28355d771 Weaver: remove unused ULocalConnectionToClientType 2019-02-28 15:44:18 +01:00
vis2k
cbeea38298
move Command NetworkClient.active check out of weaver (#494) 2019-02-28 15:23:04 +01:00
vis2k
9f0c485b7d
move TargetRpc NetworkServer.active and conn is ULocalConnectionToServer check out of weaver (#492) (#491) 2019-02-28 15:21:07 +01:00
vis2k
d7b6c8556f
move TargetRpc NetworkServer.active and conn is ULocalConnectionToServer check out of weaver (#492) 2019-02-28 15:18:52 +01:00
vis2k
8d96dd77cd Fix trailing whitespace 2019-02-28 13:57:46 +01:00
MichalPetryka
5ac23dd231 More using cleanup (#489) 2019-02-28 12:36:21 +01:00
MichalPetryka
97fc7aca4c Use type keywords (#472)
* Use type keywords

* Update
2019-02-28 12:21:27 +01:00
SuperCables
2b429c9b3a This doesn't sync slow rotating objects (#428)
* This doesn't sync slow rotating objects

The function sets lastRotation to the current rotation every frame, regardless of whether or not it detected a change. Because comparing two similar, but different Quaternions return true, only quickly rotating objects will return true; slow turning objects will return false, and the rotation will not be synced. By not updating lastRotation until a difference is spotted, any rotation will be synced.
This fix allowed my slow rotating spaceship to sync rotation.
TL;DR
lastRotation should be the last time this function returned true, not the rotation last frame.

* Update NetworkTransformBase.cs
2019-02-28 12:19:09 +01:00
rodolphito
7ecd66d6ec Transport.activeTransport instead of NetworkManager.singleton.transport (#479)
* Created Transport.activeTransport to decrease NetworkManager god status.

* Fixed NetworkManagerHUD. (I forgot I had deleted it temporarily for testing)
2019-02-28 11:58:37 +01:00
MichalPetryka
c33c72e720 Using cleanup (#452) 2019-02-28 11:44:55 +01:00
rodolphito
c13f4bd13b Used Expression Body Members to make code smaller and nicer in NetworkIdentity. (#486) 2019-02-28 10:20:57 +01:00
rodolphito
2d37a9e87c First pass of moving stuff out of UNetwork. (#481) 2019-02-28 09:42:03 +01:00
Paul Pacheco
d39f999f0f Simplify with auto property 2019-02-27 22:12:19 -06:00
rodolphito
51458762d4 Split Utils into FloatBytePacker and NetworkManager. (#483) 2019-02-27 21:47:37 -06:00
rodolphito
96133d1583 Removed useless proxy methods and substituted in direct property modification. (#454) 2019-02-27 18:33:10 -06:00
rodolphito
82535b0a8c Moved SceneAttribute into CustomAttribute. (#470) 2019-02-27 18:32:13 -06:00
MichalPetryka
f746ba8b08 Hide obsolete warnings (#476) 2019-02-27 17:06:13 +01:00
MrGadget
e7e890988d Re-applied GetActiveScene (#474) 2019-02-27 15:57:33 +01:00
vis2k
732111c1b9 add obsolete hostId again for easier transition from UNET 2019-02-27 15:43:35 +01:00
vis2k
26a9b5670d NetworkClient.allClients added as obsolete 2019-02-27 15:24:44 +01:00
rodolphito
dbd5f57e96 Remove List.ForEach on hot path. (#467)
* Remove LINQ on hot path.

* Fixed erroneous classification of List.ForEach as LINQ.

* Added back using so that it could be removed by #452.
2019-02-27 15:11:52 +01:00
rodolphito
d9a64c62b7 Move NetworkProximityChecker to ../Components/. (#471) 2019-02-27 14:39:44 +01:00
MichalPetryka
a3a10e82f2 Use string interpolation expressions (#469) 2019-02-27 14:37:54 +01:00
vis2k
6630b0bdbf
Move NetworkIdentity.UNetStaticUpdate to NetworkManager.Update. There is no reason why it should be in NetworkIdentity. (#457) 2019-02-27 14:36:53 +01:00
vis2k
b1c028a067 Rename Protocol to MessagePacker(#444) 2019-02-27 14:36:09 +01:00
vis2k
07a5cca725 NetworkConnection.isConnected obsolete 2019-02-27 14:32:15 +01:00
MichalPetryka
ffda610f0d Use nameof expression (#468) 2019-02-27 14:27:52 +01:00
rodolphito
0114a36fe1 Expanded symbols in test comments to english. (#465) 2019-02-27 09:42:50 +01:00
vis2k
81d031c6a1 Rebuild weaver.dll 2019-02-27 09:39:53 +01:00
Lymdun
cb432a12fb Weaver aesthetic (#455)
* Renamed lists to WeaveList

* Renamed scriptDef to CurrentAssembly

* Renamed corLib to CorLibModule

* Renamed m_UnityAssemblyDefinition to UnityAssembly

* Renamed m_UNetAssemblyDefinition to NetAssembly

* Renamed MaxRecursionCount  to m_kMaxRecursionCount

* Renamed s_RecursionCount to m_recursionCount

* Renamed m_DebugFlag to m_debugLogEnabled

* Moved properties & fixed comment

* Renamed fail to WeavingFailed

* Renamed generateLogErros to GenerateLogErrors

* Removed UNET references

* Updated dll

* WeaveLists better than WeaveList

* Removed m_ prefix

* Updated dll
2019-02-27 09:38:17 +01:00
rodolphito
7d3d8dad72 Simplify ClientScene functions. (#461) 2019-02-26 22:16:42 -06:00
rodolphito
72474af073 Fixed typos in Lobby Example README. (#456) 2019-02-26 22:16:03 -06:00
rodolphito
ca9d88d602 Greatly simplified SyncList by using Expression Bodied Members. (#466) 2019-02-26 22:15:22 -06:00
vis2k
a851ca7554
Rename NetworkWriter.Reset to SetLength(value). Seems more obvious. Reset could mean a lot of things. (#459) 2019-02-26 20:59:32 +01:00
vis2k
619d5f47e3 Remove hostId from NetworkServer and NetworkConnection because it was only needed for the old LLAPI. Also added comment for NetworkConnection.isConnected which can be removed later. 2019-02-26 17:08:10 +01:00
vis2k
74b297819b NetworkServer: remove unnecessary check because hostId is set to 0 one line before that 2019-02-26 16:57:19 +01:00
vis2k
d08b9c0272 NetworkClient.clientId removed because all it ever did was change between -1 and 0 to indicate if a connection was made. The .active variable is enough here. 2019-02-26 16:45:58 +01:00
vis2k
3d945666a8 NetworkClient.Connect: use 0 as second parameter because the third one was actually the client id. The second one was the host id, which will likely be removed soon because it's left over from LLAPI. 2019-02-26 16:43:55 +01:00
vis2k
9a143dac5b NetworkClient.Disconnect sets active = false too 2019-02-26 16:41:18 +01:00
vis2k
bd2952446e NetworkClient.clientId: add comment 2019-02-26 16:36:08 +01:00
vis2k
70ecdd8f3a NetworkClient.UpdateClients renamed to UpdateClient 2019-02-26 16:28:45 +01:00
vis2k
db32754100 NetworkClient: move Shutdown next to ShutdownAll 2019-02-26 16:26:33 +01:00
vis2k
9957cbc3b5 NetworkServer.OnConnected: call AddConnection in here too, instead of manually doing it from AddLocalClient and OnConnected 2019-02-26 16:07:40 +01:00
vis2k
fd561db9c2 NetworkServer.AddLocalClient: reused OnConnected 2019-02-26 16:07:40 +01:00
vis2k
81ecf61eed LocalClient: move connect above disconnect 2019-02-26 16:07:40 +01:00
vis2k
7ac3749274 NetworkServer.RemoveLocalClient: remove unnecessary parameter 2019-02-26 16:07:40 +01:00
vis2k
9c58cb5c80 syntax 2019-02-26 16:07:40 +01:00
vis2k
a724503f6e LocalClient.Disconnect: modify syntax to be more similar to NetworkClient.Disconnect 2019-02-26 16:07:39 +01:00
vis2k
6fa3aacea2 LocalClient: removed unnecessary m_Connected variable 2019-02-26 16:07:39 +01:00
vis2k
3967a7c089 LocalClient.InternalConnectLocalServer: always generate connect message 2019-02-26 16:07:39 +01:00
vis2k
903ca76c65 Remove NetworkServer.InvokeBytes. LocalConnection uses TransportReceive instead. 2019-02-26 16:07:39 +01:00
vis2k
c2dcf69e15 improve comments 2019-02-26 16:07:39 +01:00
vis2k
1c999df5de syntax 2019-02-26 16:07:39 +01:00
vis2k
312ef309ae NetworkConnection.TransportReceive: reuse InvokeHandler 2019-02-26 16:07:39 +01:00
vis2k
b15ad7dbc0 syntax 2019-02-26 16:07:39 +01:00
vis2k
17c343d28d NetworkConnection.InvokeHandler: improve error message 2019-02-26 16:07:39 +01:00
vis2k
2f322c37fe NetworkConnection: move InvokeHandler functions down to TransportReceive for better overview 2019-02-26 16:07:39 +01:00
vis2k
038f09de3f NetworkConnection: remove unused InvokeHandler(NetworkMessage) function 2019-02-26 16:07:39 +01:00
vis2k
06a334e6dd NetworkConnection.HandleBytes moved into TransportReceive 2019-02-26 16:07:39 +01:00
vis2k
f68119d614 LocalClient.Update uses OnDataReceived 2019-02-26 16:07:39 +01:00
vis2k
e605ec7251 NetworkClient.OnDataReceived made protected so it can be called from LocalClient 2019-02-26 16:07:39 +01:00
vis2k
cbc3c724c9 ClientScene.RegisterSystemHandlers: sort and add empty handlers to local client's handlers to avoid 'messageid not found' errors. This way we can reuse NetworkConnection.HandleBytes for local client without errors. 2019-02-26 16:07:39 +01:00
vis2k
29a95b33a1 NetworkConnection: move InvokeHandlers next to HandleBytes for a better overview 2019-02-26 16:07:39 +01:00
vis2k
2fcd0cac64 LocalClient packetQueue stores byte arrays and unpacks them in Update 2019-02-26 16:07:39 +01:00
vis2k
d86d9e3e87 m_internalmsgs renamed to packetqueue 2019-02-26 16:07:39 +01:00
vis2k
93e7da9b88 syntax 2019-02-26 16:07:39 +01:00
rodolphito
c931d03ae0 Simplified code a bit, and also removed allocation. (#453) 2019-02-26 08:21:43 -06:00
Paul Pacheco
58b7126f0b Use Length instead of position for getting the written data (#449)
* Use Length instead of position for getting the written data

* Update NetworkBehaviour.cs
2019-02-26 14:54:41 +01:00
vis2k
7109be3c1c move ProcessInternalMessages to Update 2019-02-26 09:09:55 +01:00
vis2k
b0da7f8b0f syntax 2019-02-26 09:03:00 +01:00
vis2k
48e08bdd05 no need for extra variable 2019-02-26 09:02:37 +01:00
vis2k
f1e3c6f8fd syntax 2019-02-26 09:02:12 +01:00
vis2k
0cdaaecd3a avoid shadowing member 2019-02-26 09:02:02 +01:00
vis2k
c7524cb7f1 NetworkClient.Update: remove unnecessary checks 2019-02-26 09:01:09 +01:00
vis2k
d42c13ad15 comment out unused function 2019-02-26 09:00:16 +01:00
vis2k
2c54ab3722 NetworkClient.connection via property 2019-02-26 08:59:43 +01:00
vis2k
605c4d471c rename m_ClientId to clientId 2019-02-26 08:57:12 +01:00
vis2k
4634f0632e comment out unused GenerateConnectError 2019-02-26 08:55:04 +01:00
vis2k
f87f00effa remove unused ctor 2019-02-26 08:54:20 +01:00
vis2k
c3b6fc5f4e syntax 2019-02-26 08:53:44 +01:00
vis2k
bb3bf0635b
Networkclient active (#448)
* use NetworkClient.active directly

* add comment
2019-02-26 08:50:59 +01:00
vis2k
24b3b0d0fb
Networkclient singleton (#447)
* NetworkClient.allClients replaced with singleton because there is only ever one client.

* use this()

* remove redundant log
2019-02-25 22:01:42 +01:00
vis2k
6c229c8c58 LocalClient: add internalmsgs comment 2019-02-25 20:27:12 +01:00
vis2k
39ec1fd256
0gc recv (#445)
* Protocol.UnpackMessage returns reader instead of content to avoid manually extracting content, just to create a reader from it in all callers

* Create NetworkReader outside of Protocol.Unpack
2019-02-25 20:15:47 +01:00
vis2k
647ff39d3f remove trailing whitespaces 2019-02-25 16:59:21 +01:00
vis2k
745519982e
Merge pull request #443 from vis2k/0gc
0gc
2019-02-25 13:57:31 +01:00
MrGadget
3735b3bd72 Update NetworkLobbyManager.cs (#442)
Removed two unused methods
2019-02-25 06:27:27 -06:00
vis2k
086de4bf88 NetworkServer.SendToReady/All/Observers: only pack message once instead of repacking it for each one again. This should avoid giant amounts of allocations (PackMessage->Writer.ToArray()) and computations 2019-02-24 22:52:42 +01:00
vis2k
10c5592f75 NetworkConnection.SendBytes made internal so it can be used by NetworkServer 2019-02-24 22:52:29 +01:00
vis2k
5e09d13d6e NetworkIdentity: cache UNetUpdate UpdateVarsMessage 2019-02-24 22:27:02 +01:00
vis2k
7392de2790 Protocol.PackMessage caches writer and takes message as parameter to serialize it directly into the writer after writing the message type. 2019-02-24 22:20:45 +01:00
vis2k
6c3401c4fe OnSerializeAllSafely: cache writer 2019-02-24 22:11:33 +01:00
Paul Pacheco
7323d450ad Add MIRROR define and version (#437)
* Add MIRROR define and version

* Update PreprocessorDefine.cs
2019-02-24 20:35:14 +01:00
Paul Pacheco
34392915c8 NetworkMessage can be value type. It eliminates per message allocation (#417) 2019-02-24 20:32:19 +01:00
MrGadget
4a59f563e0 Network Lobby Updates (#438)
* Fixed 1 link to be relative
Removed Wiki link from ReadMe

* Made ClientLoadedScene virtual
Updates to scene object references
Scene and vsync handling improvements
Minor cleanup.

* removed all use of vSyncCount

* Fixed bug with ReadyToBegin being incorrectly set
2019-02-24 20:31:13 +01:00
Paul Pacheco
567fa8acf5 Use C# 7 pattern matching 2019-02-23 08:28:36 -06:00
Paul Pacheco
80a4b9d139 Simplify with auto properties 2019-02-23 08:27:26 -06:00
Paul Pacheco
8fc66d3b26 Simplify with auto properties 2019-02-22 19:36:35 -06:00
Paul Pacheco
6ab0a0a7c2 use C#7 out variable declaration 2019-02-22 19:17:15 -06:00
Paul Pacheco
b45d52c765 use C#7 out variable declaration 2019-02-22 19:08:50 -06:00
Paul Pacheco
1191db75d0 We no longer support unity < 2018.3 2019-02-22 19:05:36 -06:00
Paul Pacheco
3ed430a6d1 use C#7 out variable declaration 2019-02-22 19:03:16 -06:00
Paul Pacheco
992bc8ac4e use C#7 out variable declaration 2019-02-22 19:02:10 -06:00
Paul Pacheco
6018f4d9db use C#7 out variable declaration 2019-02-22 19:01:24 -06:00
Paul Pacheco
505d2b85ad use C#7 out variable declaration 2019-02-22 18:59:35 -06:00
Paul Pacheco
9f21421d33 Simplify with auto properties 2019-02-22 18:58:54 -06:00
Paul Pacheco
95fd789ef4 use C#7 out variable declaration 2019-02-22 18:57:49 -06:00
Paul Pacheco
3573294d33 use C#7 out variable declaration 2019-02-22 18:54:44 -06:00
Paul Pacheco
8cff5e3f7d use C#7 out variable declaration 2019-02-22 18:54:00 -06:00
Paul Pacheco
28f3875110 remove redundant initialization 2019-02-22 18:51:09 -06:00
Paul Pacheco
6e1087a02f remove redundant initialization 2019-02-22 18:50:45 -06:00
Paul Pacheco
76af9ecec9 remove redundant initialization 2019-02-22 18:50:22 -06:00
Paul Pacheco
4772c4445c remove redundant initialization 2019-02-22 18:49:08 -06:00
Paul Pacheco
b673167a9e Fix indentation 2019-02-22 18:48:46 -06:00
Paul Pacheco
efac99813c Simplify object initialization 2019-02-22 18:47:45 -06:00
Paul Pacheco
d2eac37aa9 Simplify list initialization 2019-02-22 18:45:58 -06:00
Paul Pacheco
792a356cdb We require 2018.3 now 2019-02-22 18:45:16 -06:00
Paul Pacheco
0309f0b6f9 Use C#7 pattern matching 2019-02-22 18:43:18 -06:00
Paul Pacheco
5cc23fcc35 Make field readonly 2019-02-22 18:42:41 -06:00
Paul Pacheco
788c26a3fa Simplify object initialization 2019-02-22 18:41:28 -06:00
Paul Pacheco
d5112fd65c Remove redundant initialization 2019-02-22 18:40:11 -06:00
Paul Pacheco
c7e22d583c Remove redundant initialization 2019-02-22 18:39:36 -06:00
Paul Pacheco
3755b6bbf0 C# 7 syntax 2019-02-22 18:38:11 -06:00
vis2k
d3afa9f26f Utils.IsHeadless so it can be reused by other classes if needed. 2019-02-22 20:43:25 +01:00
vis2k
2a9d7e2df3 Upgrade to Unity 2018.3.6 to fix #427 and to prepare for LTS version 2019-02-22 09:29:39 +01:00
Chris Langsenkamp
7e7683766f Network Lobby Manager & Lobby Player (#356)
* Initial Commit with Unity's Network Lobby Components

* Lobby Components WIP

* Massive simplifications and structural changes to NetworkLobbyManager and NetworkLobbyPlayer

* Replaced more default messages with Command structure resulting in further simplification and less LOC

* Completed removal of messages

* Code Formatting and GUI Layout

* Fixed bugs and finished Remove feature in UI

* Added Network Lobby Manager Doc

* Network Lobby Docs

* Network Lobby Player Doc

* Updated doc and image about Offline Scene

* changed to PNG

* Added Lobby components to navigation

* Conformed to naming convention
Removed some leftover cruft
Removed maxPlayers (redundant to maxConnections)
Trapped and killed null ref in OnServerDisconnect

* Fixed mistake in OnServerDisconnect

* Fix Active Scene check

* Alow clean switch to Offline scene

* Add Help URL attributes to components

* Added Help URL Attributes

* Fixed OnGUI logic error.

* Added Example and README

* Fixed Disconnect handler

* Updated Docs

* Added Header for Inspector

* Finished Lobby Example Minigame

* Minor cleanup

* Set targetFramerates

* Code Cleanup
Changed to extended Lobby Manager for player Indexes & colors

* Minor changes to align with Mirror's NetworkManager

* Fixed logic error

* SyncVar Hook Workaround
Random Start Positions

* Revert making CallOnClientEnterLobby public

* Added documentation to the extension

* Minor code rearrangement

* Made OnGUI virtual so it can be overridden.
Added AllPlayersReady bool for convenience to extenders
Start Game enhancement to example.

* added comments

* Corrected namespaces and usings

* Reworked DontDestroyOnLoad
LobbyPlayer: Moved code from OnStartClient to Start
Added LobbyPlayerExt to Lobby Example
Code cleanup, added regions
Fixed Start Game button bug

* Final push of Lobby example to make sure it's complete.

* Improved Lobby Example

* Code cleanup

* Added ground texture
Set player camera angle
Adjusted lighting angle

* Updated ReadMe
Cleaned up privates
Fixed example to use SetParent
Changed to 5 max connections in example

* Prefab name fixes due to Mirror master's changes
Changed camera handling and GamePlayer Prefab
Two more SetParent fixes
Demoted two warnings to information
Added more comments to example scripts

* Revisions based on Vis2K review...more to come.

* Added f's where assigning literals to floats

* Removed manual calls to SyncVar Hooks because the bug is now fixed.

* Changed to GUILayout

* wrapped in namespace

* Changed to GUILayout

* All changes per peer review

* Renamed folder to Lobby.

* Fix due to change in Mirror 1691

* Renamed Scenes
Added LobbyScene property to OfflineGUI script.
2019-02-20 16:58:50 +01:00
vis2k
82d4cf08ff Revert "ClientScene.OnSpawnPrefab and NetworkManager.OnServerAddPlayerInternal: spawn objects with prefab names to avoid unnecessary "(Clone)" suffix from Unity. otherwise we need a name sync component in all games that show the names, e.g. MMOs for all monsters. This way we only need name sync components for objects that actually do change names, e.g. players." because of issue #426
This reverts commit 6a33c2d8bf.
2019-02-20 10:19:17 +01:00
Paul Pacheco
dfd0e02125 Fix #372, call syncvar hook for spawn (#410)
* Fix #372, call syncvar hook for spawn

* Rebuilt the weaver with the changes
2019-02-18 13:07:36 +01:00
vis2k
b7ef2b3521
Fix #421 race condition by calling Transport LateUpdate after all other LateUpdates. Transport needs to send and apply data onto latest game state at all times. (#424) 2019-02-18 11:56:38 +01:00
Paul Pacheco
143404aab5 Remove unused import 2019-02-17 20:12:42 -06:00
Paul Pacheco
95a629686d Simplify attribute name 2019-02-17 20:04:16 -06:00
Paul Pacheco
91760d88e3 Simplify with auto properties 2019-02-17 20:02:10 -06:00
Paul Pacheco
2114765668 Simplify more with auto properties 2019-02-17 19:59:17 -06:00
Paul Pacheco
e54a23a286 Simplify with auto properties 2019-02-17 19:57:34 -06:00
Paul Pacheco
c0cc77d062 Simplify with auto properties 2019-02-17 19:55:51 -06:00
Paul Pacheco
fc203dd89e Simplify by using property 2019-02-17 19:53:11 -06:00
Paul Pacheco
559c1f155a Simplify by using auto properties 2019-02-17 19:52:07 -06:00
vis2k
ee1b1c0b2b Telepath updated to latest version 2019-02-17 09:00:10 +01:00
vis2k
2ec7de32df Fix LLAPI.ToString 2019-02-17 08:55:28 +01:00
Chris Langsenkamp
ea3b48ab87 Replaced vars with explicit types (#411) 2019-02-17 08:45:13 +01:00
vis2k
8c441e8fe9
Transport.ServerGetClientAddress (#412) 2019-02-17 08:44:19 +01:00
Paul Pacheco
82cf23d348 Improve some comments 2019-02-15 06:29:54 -06:00
vis2k
bfe6e6aa28 better comments 2019-02-15 13:12:38 +01:00
vis2k
6a33c2d8bf ClientScene.OnSpawnPrefab and NetworkManager.OnServerAddPlayerInternal: spawn objects with prefab names to avoid unnecessary "(Clone)" suffix from Unity. otherwise we need a name sync component in all games that show the names, e.g. MMOs for all monsters. This way we only need name sync components for objects that actually do change names, e.g. players. 2019-02-15 13:02:18 +01:00
vis2k
871fe9a7f4 syntax 2019-02-15 12:43:49 +01:00
vis2k
bc52ff5e62 TelepathyTransport: remove old comments 2019-02-15 12:41:12 +01:00
vis2k
ab30ac6141 Fix #223: NetworkServer.DestroyPlayerForConnection tries to destroy both player controller and player owned objects if not null. No need to return early. 2019-02-14 13:38:34 +01:00
vis2k
5899cf81b5 refactor the fix for #389 2019-02-14 13:32:07 +01:00
uwee
0187163f70 fix for inactive scene in editor (#389)
* fix for inactive scene in editor

* changed to use #if UNITY_EDITOR
2019-02-14 13:26:53 +01:00
vis2k
9b232b0551 Revert "Source based weaver (#319)"
This reverts commit 8d7613b9b6.
2019-02-13 15:59:32 +01:00
vis2k
d159e9c78b
Configurable Server Tickrate (#390)
* Configurable Server Tickrate

* only  Update
2019-02-11 10:49:44 +01:00
Paul Pacheco
8d7613b9b6 Source based weaver (#319)
* Example for weaver issue

* Fix #314,  weave assemblies built before the weaver

* Don't need the example anymore

* Update CompilationFinishedHook.cs

* Dont try to load assemblies while they are being modified

* Revert "Weave dll again. Plan B for #314 (#323)"

This reverts commit b20cb4280c.
2019-02-09 18:14:26 +01:00
Paul Pacheco
1249ec25ac Fix #371, NetworkAnimator can support more than 6 variables (#387) 2019-02-08 09:32:36 +01:00
Chris Langsenkamp
d1626f7842 Add a virtual method that fires on the client right before scene change so devs can implement client-side work / prep / cleanup / visuals / etc. based on what scene is about to be loaded. (#383)
Documentation updates included.
2019-02-07 13:37:54 +01:00
Chris Langsenkamp
f1bdd8620c Update TelepathyTransport.cs (#382)
Added Help URL
2019-02-07 12:26:45 +01:00
Gabe Brown
a5515b099e BUG: TelepathyTransport delivers messages even when this.enabled == false across scene loads (#379)
* BUG: Fix issue where setting this.enabled = false doesn't get honored when transitioning from Local Offline Host to Connected Server.

* Update TelepathyTransport.cs
2019-02-07 10:13:23 +01:00
Chris Langsenkamp
5e642af577 Update NetworkManager.cs (#376)
Make "Multiple NetworkManagers detected" a full time error not hidden by log filter.
2019-02-06 15:30:16 +01:00
vis2k
548876a9b6 Syntax 2019-02-05 10:07:02 +01:00
Paul Pacheco
fba7b3f826 Add multiplex transport (#358)
* Add multiplex transport

* Simplify Availability method

* Update MultiplexTransport.cs
2019-02-05 10:02:32 +01:00
vis2k
4c749df4fa Telepathy updated to latest version 2019-02-02 14:37:32 +01:00
vis2k
ca4ef1d8b3 LLAPITransport: expose connectionconfig and globalconfig in inspector 2019-02-02 11:08:52 +01:00
vis2k
de4b08d066 LLAPITransport: fix localhost connections 2019-02-02 11:08:20 +01:00
vis2k
1cc125d6c6 LLAPITransport: fix max connections error 2019-02-02 11:05:16 +01:00
vis2k
a210e8ce65 LLAPITransport: fix hostId out of bounds error 2019-02-02 11:02:45 +01:00
vis2k
dbbdcd02c7
Onserialize improvements (#302)
* position magic instead of allocating writers

* premature optimizations here we come

* simplify. less magic.

* better logging

* fix ondeserialize bugs caused by readpacketuint32 instead of readint32
2019-02-01 13:23:21 +01:00
vis2k
e690360f41 Updated Telepathy to latest version: Net 4.x, ConcurrentQueue/Dictionary, Fixed growing thread count bug in #347 2019-02-01 13:00:54 +01:00
vis2k
e6f5511d24 TelepathyTransport.ToString: fix NRE in server-only mode while listener wasn't created yet 2019-02-01 12:02:58 +01:00
Chris Langsenkamp
22e88cd8d4 Superfluous Code (#366)
Immediately after the deleted lines is a call to `OnClientDisconnect(netMsg.conn);` which calls `StopClient();` which has the exact same code on line 344 as what I'm proposing be deleted here.
2019-02-01 09:48:49 +01:00
vis2k
cb6bb75ee1 Use LateUpdate in Transports. Fixes race condition where Mirror would complain about 'Observer not ready for ...' when stress testing uMMORPG after bots machine was shutdown. 2019-01-31 16:19:14 +01:00
Chris Langsenkamp
46befb6682 Add Help URL attributes to components (#359) 2019-01-31 12:16:31 +01:00
Paul Pacheco
ee5befdd6d Body expressions 2019-01-30 19:11:05 -06:00
Paul Pacheco
52887c2292 Body expressions 2019-01-30 19:10:53 -06:00
Paul Pacheco
c98f0c050c Body expressions 2019-01-30 19:10:21 -06:00
Paul Pacheco
c2fbda6755 Body expressions 2019-01-30 19:10:12 -06:00
Paul Pacheco
869ae95138 Body expressions 2019-01-30 19:09:57 -06:00
Paul Pacheco
027dd3f91e Use body expressions 2019-01-30 19:03:57 -06:00
Paul Pacheco
00c0d5a800 Use body expressions 2019-01-30 19:03:09 -06:00
Paul Pacheco
b816045c06 Null-conditional 2019-01-30 18:40:21 -06:00
Paul Pacheco
07e3d48dde null-conditional operator 2019-01-30 18:37:21 -06:00
Paul Pacheco
17eedda836 null-conditional operator 2019-01-30 18:33:01 -06:00
Paul Pacheco
e15d3cdd71 Removed redundant conditional 2019-01-30 18:30:01 -06:00
Paul Pacheco
332416432e .Net 4.x object initialization syntax 2019-01-30 18:25:26 -06:00
Paul Pacheco
d4cd4aef06 Use null-conditional operator 2019-01-30 18:21:12 -06:00
Paul Pacheco
beeef0cb96 Use null-conditional operator 2019-01-30 18:15:09 -06:00
Paul Pacheco
915dbd7af7 4.x syntax 2019-01-30 18:09:41 -06:00
Paul Pacheco
67767cb131 Fix namespace 2019-01-30 18:09:41 -06:00
uwee
0b5d325062 Removed hostPort as its no longer used. (#360) 2019-01-30 22:12:49 +01:00
Paul Pacheco
ed4c577680 This class should never be instantiated 2019-01-30 07:58:22 -06:00
Paul Pacheco
f6af36d74b 4.x syntax 2019-01-30 07:56:55 -06:00
Paul Pacheco
138dfaa6e1 4.x syntax 2019-01-30 07:55:34 -06:00
Paul Pacheco
7d081da541 4.x syntax 2019-01-30 07:53:04 -06:00
Paul Pacheco
306f974e0c 4.x syntax 2019-01-30 07:39:21 -06:00
Paul Pacheco
ca6224d238 4.x syntax 2019-01-30 07:37:53 -06:00
Paul Pacheco
63f6e40289 4.x syntax 2019-01-30 07:32:43 -06:00
Paul Pacheco
272ac79409 4.x syntax 2019-01-30 07:31:40 -06:00
Paul Pacheco
a0b5d15362 4.x object initialization syntax 2019-01-30 07:27:30 -06:00
Paul Pacheco
b67fe66a91 4.x syntax 2019-01-30 07:24:58 -06:00
Paul Pacheco
69f07547c7 4.x object initialization syntax 2019-01-30 07:22:19 -06:00
Paul Pacheco
4bc87f74fd 4.x syntax 2019-01-30 07:20:52 -06:00
Paul Pacheco
39385d15ee Reduce server CPU usage by limiting framerate 2019-01-29 19:23:41 -06:00
Paul Pacheco
1b915fbffb Now we can stop even while connecting.
In some transports (Ignorance),  when the player clicks "Connect",   the transport goes in Connecting state. If the player clicks Disconnect
the transport remains in Connecting state.

This gives the transport a chance to cancel the Connecting process.  This fix has been tested for quite some time in 2018 branch
2019-01-29 19:07:18 -06:00
Paul Pacheco
6c163d1a45 Fix NRE when disconnecting 2019-01-29 19:01:03 -06:00
vis2k
2e0c38aec8 Upgrade to Unity 2018.2.20f1 2019-01-29 22:44:24 +01:00
vis2k
b20cb4280c
Weave dll again. Plan B for #314 (#323)
* weaver as dll again

* add plugins/weaver folder with latest weaver dll

* Remove unnecessary Debug-Editor/Release-Editor configurations

* Remove old comment

* Build into Assets/Mirror/Plugins directly
2019-01-28 18:20:18 +01:00
vis2k
1a5ce38163
Dispatch Messages as Events - via UnityEvent (#350)
* Transport as events - via UnityEvent

* call RemoveTransportHandlers();

* hide event in inspector until we actually need them
2019-01-27 20:58:22 +01:00
Callum Ferguson
f98d3405f5 Fixed bug allowing one more than max connections to join (#349) 2019-01-27 11:12:40 +01:00
Paul Pacheco
ac07ac8941
Renamed class for clarity (#346) 2019-01-26 09:24:22 -06:00
Paul Pacheco
3a6b37c779
Assign transport in inspector (#344)
* Assign transport in inspector

* Update NetworkManager.cs

* Update NetworkManager.cs

* Update NetworkManager.cs

* Update NetworkManager.cs

* Move transport under NetworkInfo

* Updated scene with new properties
2019-01-26 08:20:33 -06:00
vis2k
90e8fabde9 ITransport converted to Transport as MonoBehaviour 2019-01-26 10:32:16 +01:00
vis2k
41a385afd8 NetworkServer HandleConnection: check if connectionId already in use 2019-01-25 15:02:57 +01:00
vis2k
e31a3a3c4d NetworkServer HandleConnection: >0 check added to fix #321 2019-01-25 15:00:26 +01:00
vis2k
fe02dcab4c Syntax 2019-01-24 20:00:09 +01:00
Paul Pacheco
9c990b938f Remove Network Manager Editor (#310)
* Remove Network Manager Editor

* Add reorderable list to prefabs

* Move Start On Headless to more logical place
2019-01-24 16:56:25 +01:00
vis2k
53fc33cce8 TelepathyTransport: added NoDelay option 2019-01-24 12:09:28 +01:00
vis2k
4f61dc9bc5 Updated Telepathy again. Forgot to check SendMessagesBlocking return value before. 2019-01-22 19:35:35 +01:00
vis2k
b3eb092878 NetworkTransformBase: remove unnecessary connectionToServer check 2019-01-22 16:34:12 +01:00
vis2k
98b786514c Telepathy updated to latest version (performance improvements under heavy load) 2019-01-22 15:45:10 +01:00
vis2k
e969fcf26c More #if fixes (again) 2019-01-21 14:38:53 +01:00
petris
15c5926041 Fix #if 2019-01-20 09:28:17 -06:00
vis2k
3396e56133 Telepathy updated to latest version (Stop always returns and .Active is definitely false afterwards) 2019-01-20 14:26:24 +01:00
vis2k
12f0ba6a64 NetworkTransformBase: fix interpolation being applied to a client's object that he had authority over. fixes #273 2019-01-18 17:50:43 +01:00
vis2k
1b90647f72 Pong: only simulate ball physics on server. Fixes #304 2019-01-18 17:34:59 +01:00
vis2k
32ed3cb540 Pong: Use OnStartServer instead of Server and ServerCallback 2019-01-18 17:32:03 +01:00
vis2k
c975d87310 Syntax 2019-01-18 17:30:30 +01:00
vis2k
4e6d44f3f7 Fix typo 2019-01-18 17:30:15 +01:00
vis2k
c0b2a74c11 Move NetworkReader.ReadMessage to the actual ReadMessage function 2019-01-18 13:09:58 +01:00
vis2k
ce8ede3db3
OnServerAddPlayer uses NetworkMessage parameter instead of NetworkReader. Removes last dependency on NetworkReader.ReadMessage (#307) 2019-01-18 13:08:19 +01:00
vis2k
183afac99a
move startOnHeadless to NetworkManager (#309) 2019-01-18 13:04:05 +01:00
vis2k
904535409d Updated Telepathy to latest version (big endian headers) 2019-01-18 13:00:13 +01:00
vis2k
1c83c74da0
Transport components (#308)
* Convert Transport to component; remove websockets property

* Improve warning

* Automatically add default Transport if needed

* Added Transports to scenes

* Move port to Transport

* Detected too late

* Interface

* Virtual transport property just in case

* HUD shows transport.tostring

* LLAPITransport UseWebsockets option

* Remove bindToIp and ServerStart(ip) parameter. let transport handle it if needed.

* TelepathyTransport.ToString

* Remove unused function

* LLAPITransport.ToString

* Don't duplicate ports

remote endpoint already has the port.
If you have ipv6, it will show like this:
```[::]:7777```
[::] is localhost in IPv6

If you have ipv4, it will show like this:
```127.0.0.1:7777```

* Removed unused labels

* Syntax

* Updated Telepathy to latest version

* localendpoint
2019-01-17 18:14:05 +01:00
vis2k
4cf35eb9cd Updated Telepathy to latest version 2019-01-17 18:02:44 +01:00
Paul Pacheco
d8bcbe0c62 Start on Headless is optional 2019-01-16 23:13:05 -06:00
vis2k
0ef7bc2c5a Revert NetworkClient.UpdateClients foreach because it causes an InvalidOperationException when stopping the client. 2019-01-17 01:21:33 +01:00
vis2k
6738d95b28 NetworkConnection: removed unused imports 2019-01-16 22:24:25 +01:00
vis2k
123dbe8cd8 NetworkBehaviour: remove unnecessary 'private' modifiers 2019-01-16 22:23:22 +01:00
vis2k
8844616c33 LocalClient: remove unnecessary 'private' modifiers 2019-01-16 22:17:23 +01:00
vis2k
4ece68d053 OnObjectSpawnFinished message split into OnObjectSpawnStarted + OnObjectSpawnFinished. Saves 2 bytes of bandwidth per client spawn, and makes the code more obvious. 2019-01-16 22:10:08 +01:00
vis2k
7e9ed33448 Use actual type 2019-01-16 22:01:39 +01:00
vis2k
6cea00db0e Use actual type 2019-01-16 22:00:04 +01:00
vis2k
663dedff81 Use foreach 2019-01-16 21:59:13 +01:00
vis2k
6104d5bafe Use actual types 2019-01-16 21:55:24 +01:00
vis2k
c95fc2bf23 Use foreach instead of for-int 2019-01-16 21:52:53 +01:00
vis2k
edd8f99059 Remove unused imports 2019-01-16 21:49:11 +01:00
vis2k
28539c9d2f NetworkClient: m_MessageHandlers made public and renamed to handlers. No need to have a separate property, it can't be nulled anyway. 2019-01-16 21:48:44 +01:00
vis2k
76bd13c789 Changed Boolean to bool 2019-01-16 21:45:15 +01:00
vis2k
03f0355359 DestroyObject moved next to Destroy 2019-01-16 21:38:03 +01:00
vis2k
b2ab752bc0 DestroyObject moved into Destroy. No need to have an internal version anymore because no one can override Destroy anymore. 2019-01-16 20:51:15 +01:00
vis2k
cdd4948eb8 UnSpawnObject moved into UnSpawn because that's the only function that calls it anyway 2019-01-16 20:49:03 +01:00
vis2k
9891916ba0 UnSpawnObject moved into UnSpawn because that's the only function that called it anyway 2019-01-16 20:46:43 +01:00
vis2k
c6cf8aad02 InternalAddPlayerForConnection: call GetCOmponent directly 2019-01-16 20:43:06 +01:00
vis2k
892d894d0f InternalReplacePlayerForConnection: call GetComponent directly. 2019-01-16 20:42:31 +01:00
vis2k
7d439f0c20 SpawnObject: call GetComponent directly 2019-01-16 20:40:41 +01:00
vis2k
bd12048bd9 Update error message 2019-01-16 20:34:19 +01:00
vis2k
297c2974bd NetworkServer.SendToClientOfPlayer uses NetworkIdentity now too 2019-01-16 20:32:30 +01:00
vis2k
5774f725c6 Make NetworkServer fully static. sealed not needed anymore then either. 2019-01-16 20:24:45 +01:00
vis2k
8fe142c1a7 SendToAll: change syntax for consistency with SendToRead/SendToObservers 2019-01-16 19:44:19 +01:00
vis2k
f7fbbee8d1 OnDeserializeSafely: check that correct amount of bytes was read 2019-01-16 19:25:43 +01:00
vis2k
6688bc39c8 SendToObservers uses NetworkIdentity parameter now too 2019-01-16 15:15:56 +01:00
vis2k
6c32dd561d Syntax 2019-01-16 15:07:02 +01:00
vis2k
f95f127ed1 Syntax 2019-01-16 15:05:57 +01:00
vis2k
7e8c330475 SendToReady: removed context==null case where it would send to all ready connections. We never call it with null internally, and no one would assume to pass null there externally. Use SendToAll instead, or if needed we can add SendToAllReady in the future. 2019-01-16 14:49:23 +01:00
vis2k
32f77e41d4 NetworkServer.SendToReady uses NetworkIdentity to avoid two GetComponent calls per SendToReady: one for the old GetComponent<NetworkIdentity>, one for the callers which always used .gameObject before. 2019-01-16 14:47:38 +01:00
vis2k
dc9d12b67d Rename 'uv' to 'identity' 2019-01-16 12:15:45 +01:00
vis2k
59dd73b0f1 NetworkIdentity: no need to wrap the dict as property 2019-01-16 12:12:29 +01:00
vis2k
80ac56a23f Add comment 2019-01-16 12:09:30 +01:00
vis2k
63ac60a38c UNetUpdate: check observers==null because the rest of the code does that too at the moment 2019-01-16 12:09:01 +01:00
vis2k
70f1fe8c5b NetworkIdentity: move update methods next to each other 2019-01-16 12:08:37 +01:00
Paul Pacheco
f32ac7dfe6 Don't serialize the object if there are no observers (#300) 2019-01-16 12:07:59 +01:00
Paul Pacheco
4a8d780718 Do not pollute default namespace with examples 2019-01-15 17:44:17 -06:00
Paul Pacheco
9f06a5b55b Minimum Mirror example 2019-01-15 17:35:53 -06:00
vis2k
76a1407c42 MonoBehaviourProcessor: better variable naming 2019-01-16 00:16:02 +01:00
vis2k
7c1eaf7363 Use actual type 2019-01-16 00:15:36 +01:00
vis2k
0710ce8b8d Syntax 2019-01-16 00:14:25 +01:00
vis2k
0e344d7b3b Syntax 2019-01-16 00:13:31 +01:00
vis2k
1ad865e367 Syntax 2019-01-16 00:10:20 +01:00
vis2k
10ee102399 Fix comment typo 2019-01-16 00:09:43 +01:00
vis2k
4a1129d572 Syntax 2019-01-16 00:08:11 +01:00
vis2k
3fc094ae5d Use actual type 2019-01-16 00:06:43 +01:00
vis2k
324f277724 fix comment typo 2019-01-16 00:06:05 +01:00
vis2k
5633c63029 Helpers: use actual types 2019-01-16 00:04:48 +01:00
vis2k
6271acaec0 Fix comment typos 2019-01-15 23:52:24 +01:00
vis2k
9df0f0526d Better variable names 2019-01-15 23:51:38 +01:00
vis2k
40ea1cfec6 Fix typo 2019-01-15 23:50:55 +01:00
vis2k
7a73bf4d01 Use actual types 2019-01-15 23:49:45 +01:00
vis2k
f57b58a83e Sort modifiers 2019-01-15 23:33:28 +01:00
vis2k
7161126e67 GetReadFunc: use actual types. less magic. 2019-01-15 23:32:20 +01:00
vis2k
2def424a8a GetWriteFunc: use actual types so it's more obvious 2019-01-15 23:31:14 +01:00
vis2k
f816c8f8e0 Sort modifieds 2019-01-15 23:29:41 +01:00
vis2k
a5c0d3fafb Add a comment 2019-01-15 22:09:48 +01:00
Robin Rolf
c4f8b4eb8c Reduce garbage in IsDirty (#290)
* Reduce garbage & Improve performance in NetworkBehaviour.IsDirty

* Update NetworkBehaviour.cs

* Update NetworkBehaviour.cs
2019-01-15 22:07:58 +01:00
vis2k
745233ca99 NetworkAnimator uses parameters array instead of 6 param values 2019-01-15 22:04:31 +01:00
vis2k
3fe93cbe44
Deprecate FindLocalObject. no need to have it in clientscene and networkserver when there is NetworkIdentity.spawned already in one place. (#295) 2019-01-15 21:43:55 +01:00
Ed
c02c852be5 Issue #280 fix (#281) 2019-01-15 21:37:47 +01:00
vis2k
b4fa6f262c NetworkServer.DestroyPlayerForConnection uses NetworkIdentity.spawned instead of FindLocalObject 2019-01-15 16:52:36 +01:00
vis2k
9c672647a2 NetworkConnection.Dispose uses NetworkIdentity.spawned instead of FindLocalObject. Improves performance by avoiding one .gameObject call and one .GetComponent call. 2019-01-15 16:45:48 +01:00
vis2k
b9dca9c5aa NetworkConnection: use actual type instead of var so it's more obvious 2019-01-15 16:44:00 +01:00
vis2k
e1647d766d NetworkReader.ReadTransform uses NetworkIdentity.spawned instead of FindLocalObject 2019-01-15 16:43:14 +01:00
vis2k
434b778aa9 Weaver: removed findLocalObjectReference because it's not needed anymore. 2019-01-15 16:41:03 +01:00
vis2k
c96f44f73f Add a comment 2019-01-15 16:39:09 +01:00
vis2k
695d56af5f replacedEvents and replacementEvents combined into one replaceEvents dictionary. simplifies code and faster lookups. 2019-01-15 16:29:17 +01:00
vis2k
f10ca145b6 replacedMethods and replacementMethods combined into one replaceMethods Dictionary. Simplifies code and significantly speeds up weave time. uMMORPG script reload time in editor before: 7.6s, after: 5.75s (25% improvement). 2019-01-15 16:25:27 +01:00
vis2k
10fb2634c9 Use actual type 2019-01-15 16:06:27 +01:00
vis2k
29d71e6d43 Weaver: removed replacementMethodNames hashset which was only used for caching. Will be able to use a Dictionary<string, method> later. 2019-01-15 16:04:45 +01:00
vis2k
b13ba85f76 Use actual type so it's more obvious 2019-01-15 15:58:42 +01:00
vis2k
d016dc84f8 SyncVarProcessor.ProcessSyncVar: renamed netFieldId to netIdField because that's what it is 2019-01-15 15:57:30 +01:00
vis2k
940808567e Weaver: removed unused netIdFields list 2019-01-15 15:55:40 +01:00
vis2k
57b848cc34 SyncVarProcessor.syncVarNetIds converted to Dictionary for easier usage and to avoid the netIdFieldCounters 2019-01-15 15:54:45 +01:00
vis2k
70048fc380 Use actual types instead of var because it's not obvious 2019-01-15 15:44:20 +01:00
vis2k
83e32dfec7 Add comment 2019-01-15 15:41:20 +01:00
vis2k
a5e3ec35c1 ErrorMessage reuses ByteMessage 2019-01-15 15:39:19 +01:00
vis2k
b2fa2eebed Add ByteMessage 2019-01-15 15:38:30 +01:00
vis2k
2cc91f4b05 Syntax 2019-01-15 15:37:16 +01:00
vis2k
b75d215b2f Syntax 2019-01-15 15:37:03 +01:00
vis2k
80860c40b7 RemoteCallMessage that is reused by Command/Rpc/SyncEvent messages 2019-01-15 15:36:47 +01:00
vis2k
d94b1a2d89 AddPlayerMessage inherits from BytesMessage 2019-01-15 15:32:42 +01:00
vis2k
3fce3ae675 Syntax 2019-01-15 15:30:27 +01:00
vis2k
93c65dcb78 Telepathy updated to latest version (afbdb31) 2019-01-15 14:24:25 +01:00
vis2k
aedf976d4f
NetworkAnimator moved to components. Replace messages with Cmds/Rpcs (#294) 2019-01-15 13:11:36 +01:00
vis2k
853083a132 Forgot to remove TransformMessage 2019-01-15 13:10:29 +01:00
vis2k
ffced61058 NetworkTransform moved into Components folder so it can be weaved. Removed unnecessary messages. 2019-01-15 12:24:29 +01:00
vis2k
0343e829b4 Movement example: speed now based on frame rate 2019-01-15 12:20:50 +01:00
vis2k
8ff2ba74b3 Forgot to enable local player authority in movement example 2019-01-15 12:17:50 +01:00
vis2k
9ecbf40a95 Fix sceneId assignment showing warning for 0 scene objects. 2019-01-15 11:26:23 +01:00
vis2k
60c9cbd99a Fix sceneId assignment if scene not in build settings 2019-01-15 11:20:37 +01:00
vis2k
5b187fe0df Asset Store Examples added 2019-01-15 11:17:58 +01:00
Ed
39da48a740 Changed syncInterval value is not saved - fix (#293)
syncInterval resets back to 0.1f (Value that is set in the NetworkBehaviour class) if changed using the editor. The issue is present when changing both, scene objects as well as prefabs.
2019-01-15 10:07:33 +01:00
vis2k
43baeff444
[SyncVar] GameObjects are now 100% based on their underlying netId field. Fixes #149 (#292)
* fix

* Test file

* Syntax

* NetworkBehaviour.Set/GetSyncVarNetworkIdentity functions added

* add definitions to weaver

* Use them

* add NetworkIdentity cases everywhere else too

* ProcessInstructionSetter/GetterField replaces for OnDeserialize too, so that [SyncVar]GameObjects/NetworkIdentities work with custom On(De)Serialize as well

* Custom on(De)serialize test

* Weaver.ProcessSiteMethod doesn't ignore OnDeserialize anymore either

* [SyncVar] GameObject/NetworkIdentity hooks work again

* testscene

* public gameobject field test

* pass gameobject field to getsyncvargameobject etc.

* GetSyncVarGameObject/NetworkIdentity always returns the field if server, looks up netId otherwise; functions aren't static anymore.

* Use original OnSerialize generation again, so it simply calls writer.Write(go) on server, which sends the netId internally anyway.

* fixed hooks not using 'this.' because getter function isn't static anymore.

* add scene referencing test

* remove tests
2019-01-14 23:39:29 +01:00
Paul Pacheco
3c0ff33c94 Additive sceneloading sceneid fix (#175)
* Fix additive scene loading causing duplicate sceneIds by using an offset per scene.

* TEST: moved SpawnableObjects to NetworkIdentity. OnDisable adds it to the dict. SpawnObject removes it.

* Log if we don't find the spawn scene object

* Fix compilation issues

* Make PrepareToSpawnSceneObjects public
2019-01-14 22:00:13 +01:00
Paul Pacheco
1785039601 2018.3 master prefab changes etc. (#283)
* 2018.3 warning fix. The old way to check if something is a porefab is depricated so needs replacing with new code.

* 2018.3 warning fix. The old way to check if something is a porefab is depricated so needs replacing with new code.

* Bug fix for 2018.3+ where NetworkIdentity GUIDs are set to blank in prefab files and shown as blank in the editor.

* Another 2018.3 warning fix. The old way to check if something is a porefab is depricated so needs replacing with new code.

* Make sure it works in 2017.4

* Change not needed

* Revert "Change not needed"

This reverts commit 13747739df.

* Mark LLAPI as obsolete

* Don't use obsolete api

* Suppress obsolete LLAPI warning for now

* Remove warning

* Make conditional a little clearer
2019-01-14 11:24:30 +01:00
Hertzole
012e1a1885 Fixed scene reload. 2019-01-13 19:19:47 -06:00
vis2k
266f262665 WeaverLists.replacedFields and replacementProperties merged into replacementSetterProperties dict for easier code and more obvious naming. 2019-01-13 21:21:11 +01:00
vis2k
4fa584e72a Weaver.ProcessInstructionField renamed to ProcessInstructionSetterField 2019-01-13 21:19:19 +01:00
Paul Pacheco
524c183294 Source based instead of dll (#277)
* Ignore unity generated files and folders

* Import mirror as source

* Source based does not build dlls anymore

* nuget packages not used in source based

* Produce an archive with the release

* generate archive with Mirror folder to avoid accidents

* Deploy to github releases

* Document new installation procedures
2019-01-13 21:08:54 +01:00