Commit Graph

2777 Commits

Author SHA1 Message Date
James Frowen
f3f0403005
Removing websockets from mirror repo (#2268)
* Adding new websocket transport soon that doesn't depend on library
* Code for old transport can now be found here https://github.com/MirrorNetworking/NinjaWebSocketsTransport
* We shouldn't need to replace with empty files from store as having this in project should not break things
2020-10-16 16:46:04 +01:00
James Frowen
a2b64a4d1d
Update cloud readme
making examples a link
2020-10-15 17:57:48 +01:00
vis2k
31758e668f
perf: NetworkIdentity DirtyComponentsMask code removed entirely. OnSerialize now includes the component index as byte before serializing each component. Faster because we avoid GetDirtyComponentsMask() and GetSyncModeObserversMask() calculations. Increases allowed NetworkBehaviour components from 64 to 255. Code is significantly more simple. (#2331)
* perf: NetworkIdentity DirtyComponentsMask code removed entirely. OnSerialize now includes the component index as byte before serializing each component. Faster because we avoid GetDirtyComponentsMask() and GetSyncModeObserversMask() calculations. Increases allowed NetworkBehaviour components from 64 to 255. Bandwidth is now smaller if <8 components, and larger if >8 components. Code is significantly more simple.

* Update Assets/Mirror/Runtime/NetworkIdentity.cs

Co-authored-by: James Frowen <jamesfrowendev@gmail.com>

Co-authored-by: James Frowen <jamesfrowendev@gmail.com>
2020-10-13 16:21:06 +02:00
Paul Pacheco
3c82ff0cb2
breaking: Users must initialize synclists (#391) (#2330)
* Users must initialize syncobjects (#391)

Previously we initialized syncobjects, so this is valid:
```cs
public class Pepe : NetworkBehavior {

    public SyncList<int> mylist;
}
```

With this change,  users must initialize their own fields:
```cs
public class Pepe : NetworkBehavior {

    public SyncList<int> mylist = new SyncList<int>();
}
```

BREAKING CHANGE: You must initialize all your SyncLists

* Add null check

* This is no longer a weaver error

* Update Assets/Mirror/Runtime/NetworkBehaviour.cs

Co-authored-by: James Frowen <jamesfrowendev@gmail.com>

* Remove unnecesary using

Co-authored-by: James Frowen <jamesfrowendev@gmail.com>
2020-10-12 09:37:26 +02:00
James Frowen
1da023dfd3
Update NetworkIdentity.cs
checking cache instead of property
2020-10-11 22:45:48 +01:00
James Frowen
9bf8817245
fix: fixing Initializer for generic synclists (#2328)
Weaver should initialize `public SyncList<int> myList;`  in the same way it does for `SyncListInt`
2020-10-10 18:04:35 -05:00
James Frowen
ad48d511a1
Update NetworkConnection.cs
reverting comment
2020-10-10 15:34:46 +01:00
James Frowen
1c476f71b5
Update NetworkConnection.cs 2020-10-10 13:04:07 +01:00
vis2k
eb23bb76e0 Benchmark: custom NetworkManager with adjustable spawn amount for easier testing 2020-10-10 12:42:06 +02:00
vis2k
7529f5aedc Benchmark: namespace changed from OneK to Benchmark 2020-10-10 12:39:50 +02:00
vis2k
575f1f6071 Benchmark: SpawnPosition renamed and centered at 0,0,0 2020-10-10 12:39:06 +02:00
uwee
6e44e6e526
fix: NRE in tanks example when running in headless server only (#2326) 2020-10-09 13:23:47 +01:00
vis2k
d9f58d3439 Benchmark monsters doubled to 4k, everyone broadcasting to everyone 2020-10-08 15:19:44 +02:00
James Frowen
5ad3fb5807
feat: NetworkTranform Teleport (#2320)
* Server Teleport Enchancement for NetworkTransform

Related to this issue: https://github.com/vis2k/Mirror/issues/2200

* Improvements on NetworkTransformBase

We disable clientAuthority until teleportation is finished and acknowledged. We set the goal and start data points to null before teleportation.
We set the clientAuthority back to it's initial value registered on server, both on the server and client side; it seems like we don't need to change it to anything on Client side because to my understanding clientAuthortiy is not affecting anything on client side. I may be wrong but still it is a great practice to set it back to it's initial value just in case...

* Added teleportation with rotation

I forgot to add a rotation functionality on my previous commit. It wouldn't be a teleportation without also changing the rotation. If provided a rotation input it will teleport with a rotation, if not it will simply protect the original rotation before the teleportation.

* Removed my debug statement

I forgot to remove the debug log statement lol silly me

* fixing up code

* resetting goal and last pos on server and client
* renaming variables
* making sure TeleportFinished can't request authority at any time

* moving teleport block

* removing duplicate lines

Co-authored-by: Emre Bugday <47198270+EmreB99@users.noreply.github.com>
2020-10-06 18:47:16 +01:00
James Frowen
1b5cbb51d7
fix: fixing PR number in Obsolete message 2020-10-06 18:08:35 +01:00
Paul Pacheco
31b07ae02f
breaking: no need to override Serialize/Deserialize in messages (#2317)
* breaking: no need to override Serialize/Deserialize in messages

Messages no longer serilize themselves.  This has been decoupled.  Serializing a message is now done
via readers and writers, which can be either generated or user provided.

This lifts some restrictions,
* you no longer need to have a default constructor in messages
* Messages types can be recursive
* struct Messages don't need to provide an empty Serialize and Deserialize method

Before:
```cs
public struct ReadyMessage : IMessageBase
{
    public void Deserialize(NetworkReader reader) { }

    public void Serialize(NetworkWriter writer) { }
}
```

After:
```cs
public struct ReadyMessage : IMessageBase
{
}
```

BREAKING CHANGE: Messages must be public
BREAKING CHANGE: Use custom reader and writer instead of Serialize/Deserialize methods

* Remove unused method

* remove unused methods

* remove unused methods

* make all messages struct

* Fix test code generator

* Get rid of MessageBase

* Rename IMessageBase -> NetworkMessage

* add MessageBase as obsolete

* Use a default request

* Empty file to make asset store happy

* Apply suggestions from code review

Co-authored-by: James Frowen <jamesfrowendev@gmail.com>

Co-authored-by: James Frowen <jamesfrowendev@gmail.com>
2020-10-06 09:31:02 +02:00
James Frowen
6813360f93
feat: NetworkAnimator now syncs animator.speed (#2312)
* feat: NetworkAnimator now syncs animator.speed

* Update NetworkAnimator.cs

- adding previous speed field
- avoiding floating number equals

* Update NetworkAnimator.cs

- adding previousSpeed field
2020-10-03 20:51:08 +02:00
Emre Bugday
032012f9e1
Fixed OnStopClient not being called on Client Side (#2308)
* Fixed OnStopClient not being called on Client Side

* Moved identity.OnStopClient() two scopes above

Co-authored-by: Emre Bugday <47198270+EmreB99@users.noreply.github.com>
2020-10-03 02:57:37 +01:00
James Frowen
42f5a117ec
Update Extensions.cs (#2310)
- only catching AssemblyResolutionException
- using null propagation instead of null ref
2020-10-03 01:45:53 +01:00
James Frowen
181bab6bd0
fixing test names (#2309)
* fixing test names

* renaming test files
2020-10-03 01:45:40 +01:00
vis2k
e730e4baca fix tests after previous SyncLists commit 2020-10-02 10:03:07 +02:00
Paul Pacheco
fb49d19793
breaking: Use SyncLists directly (delete overrides) (#2307)
* feat: Use SyncLists directly

Previously,  you had to write an intermediary class to use synclists, syncsets and syncdictionaries.
The weaver would populate that intermediary class with a serialization and deserialization method

This PR gets rid of 90% of the weaver code for synclists.
There is no need to generate these methods anymore.
Instead the lists use `writer.Write<T>` and `read.read<T>` to serialize their Data.

Since there is no code generate in synclists, you can now use the synclists directly instead
of subclassing them.

BEFORE:

```cs
public class MyComponent : NetworkBehaviour {
    // nonsense class to make the weaver happy
    class SyncListData : Synclist<Data> {}

    SyncListData mySyncList;
}
```

AFTER:

```cs
public class MyComponent : NetworkBehaviour {
    Synclist<Data> mySyncList;
}
```

* linting

* feat: Use SyncLists directly (no overrides)

Previously,  you had to write an intermediary class to use synclists and syncdictionaries.

The weaver would populate that intermediary class with a serialization and deserialization method

This PR gets rid of 90% of the weaver code for synclists.
There is no need to generate these methods anymore.
Instead the lists use `writer.Write<T>` and `read.read<T>` to serialize their Data.

Since there is no code generate in synclists, you can now use the synclists directly instead
of subclassing them.

Same as #2305 ,but it removes the deprecated Serialize and Deserialize methods from syncobjects,
This way you get a nice compiler error for the code that no longer works, instead of a warning you might accidentally ignore.

BEFORE:

```cs
public class MyComponent : NetworkBehaviour {
    // nonsense class to make the weaver happy
    class SyncListData : Synclist<Data> {}

    SyncListData mySyncList;
}
```

AFTER:

```cs
public class MyComponent : NetworkBehaviour {
    Synclist<Data> mySyncList;
}
```

BREAKING CHANGE: Serialize and Deserialize methods in synclists don't do anything anymore

* Remove old comment

* Fix compilatio error
2020-10-02 09:12:25 +02:00
Paul Pacheco
85252c3d84
feat: new generic Read and Write methods for all types (#2301)
Currently in mirror,  there is no way for Mirror itself to invoke
readers and writers for types it does not know about.

This causes us to have to generate code for lists, dictionaries and messages.

This PR makes it so that if there is a reader and writer anywhere in the
code for type X, then the writer can be invoked like this:

```cs
X x = ...;
writer.Write<X>(x);
```

and the reader can be invoked like this:
```cs
X x = reader.Read<X>();
```
2020-10-01 17:13:30 -05:00
vis2k
efb9b21aa4 Revert xml 2020-09-30 12:11:08 +02:00
vis2k
ae95b0625d revert 2020-09-30 11:09:12 +02:00
vis2k
7fa8345b85 wtf 2020-09-30 11:02:27 +02:00
Paul Pacheco
16864f9ff0 It is fine to serialize empty struct 2020-09-29 21:26:53 -05:00
Paul Pacheco
0267dbe1f2 feat: support Jagged arrays
simplify the code for checking for multidimentional arrays
and lift the restriction on jagged arrays
2020-09-29 21:21:16 -05:00
Paul Pacheco
5e2d87685b Generated class does not need constructor 2020-09-29 15:22:21 -05:00
Paul Pacheco
c720055bce remove empty blocks 2020-09-29 12:26:24 -05:00
Paul Pacheco
7ca08924b5 Remove unused meta 2020-09-29 12:16:21 -05:00
Paul Pacheco
0132697513 Simplify obj initialization 2020-09-29 12:15:26 -05:00
Paul Pacheco
88ece20e68 Simplify IsDerivedFrom 2020-09-29 12:01:49 -05:00
Paul Pacheco
9889ed4f9c Remove unnecesary lists from WeaverLists 2020-09-29 11:22:46 -05:00
Paul Pacheco
8dbf46720e
fix: generic arguments resolution (#2300)
* fix: generic arguments lookup

The weaver was not able to figure out the synclist type in code like this:

```cs
    public class SomeList<G, T> : SyncList<T> { }
    public class SomeListInt : SomeList<string, int> { }
```

This code fixes that problem, and greatly reduces the complexity
of argument lookup.

* linting
2020-09-29 09:39:17 -05:00
vis2k
720a06ea70 MessagePacker.Pack<T> to byte[] moved out of MessagePacker and into MessagePackerTest to simplify code. It's only used in tests anyway. 2020-09-29 11:54:07 +02:00
vis2k
c947bc03e6 MessagePacker.GetId<T> reuses GetId(Type) 2020-09-29 10:55:02 +02:00
Cooper Saye
aba69ca4d0
fix: typos (#2297) 2020-09-29 09:16:30 +02:00
Paul Pacheco
bdb6ca07d2 linting 2020-09-28 23:11:50 -05:00
Paul Pacheco
3103266b44 space linting 2020-09-28 22:49:36 -05:00
Paul Pacheco
3e2c3f8ccc
Refactor reading array segment (#2296)
* Refactor reading array segment

Just deserialize the array and transform to array segment

* Fix comment

* Fix invalid IL
2020-09-28 22:43:44 -05:00
Paul Pacheco
59bc83f997 Fix more comments 2020-09-28 22:42:34 -05:00
Paul Pacheco
fe1064ce0b Remove redundant InitLocals 2020-09-28 22:37:25 -05:00
Paul Pacheco
53452cc003 Fix comments 2020-09-28 22:37:25 -05:00
Paul Pacheco
5c4d8a27cc Refactor writer for loops (#2294)
* Refactor writer for loops

* Remove unused variable
2020-09-28 22:37:25 -05:00
Paul Pacheco
fe2adc8d59 Deduplicate null check (#2295) 2020-09-28 22:37:25 -05:00
Paul Pacheco
0aea48cf06 Linting 2020-09-28 22:14:54 -05:00
Paul Pacheco
b9550cf6d3 Linting 2020-09-28 22:14:09 -05:00
Paul Pacheco
4ec84df494
Reuse checking for null (#2293) 2020-09-28 21:32:43 -05:00
Paul Pacheco
66be588512
reuse ReadLength (#2292) 2020-09-28 21:32:16 -05:00
Paul Pacheco
7c2a6595eb
refactor reader for loops (#2291)
* Fix comments

* refactor for loops

* Cleanup a bit
2020-09-28 21:29:52 -05:00
Paul Pacheco
69161144a0 Fix comments 2020-09-28 21:02:53 -05:00
Paul Pacheco
4a710b2eea Add some comments 2020-09-28 20:44:18 -05:00
Paul Pacheco
86df5954ac Add some comments 2020-09-28 20:32:38 -05:00
Paul Pacheco
3ccb7d9da4
feat: Support recursive data types (#2288)
Remove all the recursionCount nonsense.
This was added to prevent infinite recursion with types that reference themselves.

No need to check anymore, the weaver can generate readers and writers for types that reference themselves such as:

```cs
class Tree {
    Tree child1;
    Tree child2;
}
```

This works by the weaver doing it the way the compiler does: Create a function first, memoize it, then write the body. If the body needs the function, it will get itself and issue a call to itself.
2020-09-28 20:18:56 -05:00
Paul Pacheco
513a0f9945
feat: support null when serializing classes (#2290) 2020-09-28 19:55:29 -05:00
Paul Pacheco
fe641adae8
Refactor writer function generation (#2289) 2020-09-28 17:07:16 -05:00
Paul Pacheco
6fc5a4effc remove TODO comment 2020-09-28 16:43:48 -05:00
Paul Pacheco
7aa47f14be Simplify reader registration 2020-09-28 15:52:36 -05:00
Paul Pacheco
2dc280d292 Refactor reader function generation 2020-09-28 15:50:40 -05:00
Paul Pacheco
fe061ac792 Simplify generated writer name 2020-09-28 15:32:06 -05:00
Paul Pacheco
5e78e27c8f Simplify generated reader name 2020-09-28 15:09:19 -05:00
Paul Pacheco
664d5f7f99
Generate reader and writer functions for enums (#2283)
Currently,  whenever we want to serialize an enum,
we simply serialize the underlying type (byte, short, int)

This works fine,  but in order to get the reader and writer
at runtime I need a function for each type.

With this PR, we generate a reader and writer function for enums too,
the function body simply calls the underlying reader and writer.
2020-09-28 14:51:13 -05:00
James Frowen
fa059b59bf
Squashed (#2187)
* throwing Exception instead of returning null
* re-adding null check until later PR
* removing error from test
* removing extra error
* adding comment
* replacing error with throw for abstact
2020-09-28 21:29:10 +02:00
James Frowen
796aa3baf8
moving WeaverLists functions to WeaverLists (#2285)
The plan is to remove WeaverLists at some point so moving the functions
out of weaver to here for now and then move them closer to where they
are actaully used when we start to remove WeaverLists.
2020-09-28 21:21:30 +02:00
Paul Pacheco
694de7255b Cannot use generics as declared reader and writers 2020-09-28 09:17:33 -05:00
Paul Pacheco
f9ecc64468 Simplify type check 2020-09-28 09:13:25 -05:00
Paul Pacheco
b0d1d9aac0 Rename method for clarity 2020-09-28 08:52:15 -05:00
Paul Pacheco
59566588b1 Simplify type check 2020-09-28 07:39:03 -05:00
Paul Pacheco
54f96309da Simplify type check 2020-09-28 07:38:24 -05:00
vis2k
9077cc7fd7 Add comments 2020-09-27 18:51:23 +02:00
James Frowen
8b3e509c3b
Update Transport.cs 2020-09-23 16:52:11 +01:00
James Frowen
bdd81e33ba
fix: fixing new import
see https://github.com/vis2k/Mirror/pull/2259
2020-09-23 16:30:32 +01:00
Paul Pacheco
a0aecf11fb Linting 2020-09-22 13:07:03 -05:00
Paul Pacheco
25b2fa9af8 KISS 2020-09-22 13:03:33 -05:00
Paul Pacheco
c868561822 Remove passthrough method 2020-09-22 12:49:38 -05:00
Paul Pacheco
3fec9ec880 Remove static weaver state 2020-09-22 12:33:48 -05:00
Paul Pacheco
116336fbf1 Remmove passthrough method 2020-09-22 12:33:18 -05:00
Paul Pacheco
3d331b4c61 Simplify set initialization 2020-09-22 12:21:58 -05:00
Paul Pacheco
34fa002099 Remove comment that does not apply 2020-09-22 12:20:37 -05:00
Paul Pacheco
a126bfd4dd Simplify method signature 2020-09-22 11:56:54 -05:00
Paul Pacheco
fdc21582db simplify module weaving 2020-09-22 11:45:31 -05:00
Paul Pacheco
e79ffeaa8e Use string interpolation 2020-09-22 11:40:13 -05:00
Paul Pacheco
b113fd4ecf KISS 2020-09-22 11:23:24 -05:00
Paul Pacheco
6c7e578d5a Remove redundant validations 2020-09-22 11:22:36 -05:00
Paul Pacheco
3e8870f791 we only weave one assembly at a time, no need for array 2020-09-22 10:11:07 -05:00
Paul Pacheco
eaf6ac66f0 output directory is always null, no need to pass it around 2020-09-22 10:06:13 -05:00
Paul Pacheco
eadb029393 Rename methods for clarity 2020-09-22 09:53:23 -05:00
Paul Pacheco
9d7c9069d7 Simplify namespace 2020-09-22 08:17:06 -05:00
Paul Pacheco
0fbcefe8df Follow naming convention 2020-09-22 08:16:04 -05:00
Paul Pacheco
85d26ebce6 type safe type comparison 2020-09-21 23:00:30 -05:00
Paul Pacheco
541b516d60 Remove unused parameter 2020-09-21 17:09:13 -05:00
Paul Pacheco
030dc86ea9 Namespace simplifications 2020-09-21 17:08:46 -05:00
Paul Pacheco
12debf1c8c Simplify namespace 2020-09-21 17:05:20 -05:00
Paul Pacheco
f77186e1d1 Simplify namespace 2020-09-21 17:00:57 -05:00
Paul Pacheco
d123e03915 Simplify namespace 2020-09-21 17:00:10 -05:00
Paul Pacheco
8fcbba50c4 Remove unused parameter 2020-09-21 16:59:05 -05:00
Paul Pacheco
7347e5700d Remove unused parameter 2020-09-21 16:58:33 -05:00
Paul Pacheco
76ce3796eb Simplify attribute namespace 2020-09-21 16:58:08 -05:00
Paul Pacheco
ca418457e8 Simplify guard check 2020-09-21 16:57:22 -05:00
Paul Pacheco
65f6e42b53 Simplify namespaces 2020-09-21 16:53:01 -05:00
James Frowen
94419ba003
Update ApiConnector.cs
adding null check for when listserver fails to be created
2020-09-20 00:44:13 +01:00
James Frowen
44401ab3bf
Update NetworkHeadlessLogger.cs 2020-09-19 11:30:41 +01:00
vis2k
d559bcfea7 Icon updated to half M 2020-09-19 10:01:10 +02:00
Paul Pacheco
07d290fd8c
Enhance code readability by using extension method (#2260)
# Before

This is hard to read:
```
if (ca.AttributeType.FullName == typeof(Mirror.CommandAttribute).FullName) {
...
}
```

# After

```
if (ca.AttributeType.Is<Mirror.CommandAttribute>()) {
...
}
```
2020-09-18 14:54:51 -05:00
James Frowen
7919942110
Splitting up test function
* Update NetworkServerTest.cs

splitting up test

* Update NetworkServer.cs

using string interpolation
2020-09-18 20:47:54 +01:00
Paul Pacheco
e50ea6318f
perf(weaver): No need to manually load mirror and unity assemblies (#2261) 2020-09-18 14:32:14 -05:00
James Frowen
a573bccc79
Update ApiUpdater.cs 2020-09-18 20:14:10 +01:00
Paul Pacheco
0b5989f87d Move overloads together 2020-09-18 13:06:34 -05:00
Paul Pacheco
6cfdd6469a
Simplify type lookup in weaver (#2258)
# Before
WeaverTypes declared a static variable like this:
```cs
public static TypeReference int32Type;
```
Weavertypes then loaded the variable in SetupTargetTypes like this:
```cs
int32Type = ImportSystemModuleType(currentAssembly, systemModule, "System.Int32");
```
Note we lookup the type with a string,  any typo there won't be detected until the code is executed.  It will also not be found by the IDE when you click "find references",  or when you refactor.

Then we use it like this:
```cs
var intType = WeaverTypes.int32Type;
```
This is a DRY violation: I have to modify 3 different code sections just to say that I want the int32 type.

# After
Get rid of all the duplication, and use the type instead of a string:
```cs
var intType = WeaverTypes.Import<int>();
```
No need for static variable,  or to add it in SetupTargetTypes.
2020-09-18 13:05:16 -05:00
James Frowen
8dac53ce3c
making InvokeUserCode use correct type in argument (#2259) 2020-09-17 22:41:37 +01:00
James Frowen
c69d8cca0b
flip equals to return early (#2245)
* flip equals to return early

* flip equals to return early

* removing un-needed comment
2020-09-16 12:05:43 +01:00
James Frowen
23bd9559d3
pref: increasing performance when Send is called on no observers (#2244)
* pref increasing performance when sending to no observers

* pref increasing performance when sending to no observers
2020-09-16 10:32:16 +02:00
James Frowen
5eb5ff6601
fix: fixing NullReferenceException when loading scene (#2240)
* fixing null ref error when local player is destroyed

* removing null objects

* fixing InvalidOperationException

* moving code to its own function

* Update Assets/Mirror/Runtime/ClientScene.cs
2020-09-16 10:30:10 +02:00
James Frowen
7580e9a6f5
Update ClientScene.cs (#2250)
* Update ClientScene.cs

Improving logging
- making sure sceneId is always hex
- only logging "Client spawn for ..." if it was successful

* Update ClientSceneTests_OnSpawn.cs
2020-09-14 22:35:41 +01:00
James Frowen
833c329ab2
Update ApiUpdater.cs
- Adding handlers in Awake instead of Start to make sure they are added before start on headless
- using GetComponent for NetworkManagerListServer
- Adding asserts to make sure values are set
2020-09-14 21:58:33 +01:00
James Frowen
b4fea1bfa3
Update NetworkServer.cs (#2247) 2020-09-13 19:07:59 +01:00
James Frowen
aec9b8a2ec
Update NetworkIdentity.cs
fixing block not being in remarks
2020-09-13 15:44:25 +01:00
James Frowen
d5c2387d1d
Update SyncObject.cs 2020-09-13 14:33:32 +01:00
James Frowen
ae9d2e35a9
docs: adding debug notes on list server (#2246) 2020-09-13 02:47:57 +01:00
James Frowen
844904dae5
adding doc comment (#2243) 2020-09-13 01:54:23 +01:00
James Frowen
94da8aec34
fix: Fixing IndexChanged hook not being called for NetworkRoomPlayer (#2242)
* adding Server to make sure index is only changed on the server

* removing calls to RecalculateRoomPlayerIndices on client
2020-09-13 01:52:32 +01:00
James Frowen
0c78fa0d7a
making sure CallOnClientExitRoom is called when object is disabled/destroyed (#2241) 2020-09-12 23:36:46 +01:00
Paul Pacheco
992129e5b6 Simplify string interpolation 2020-09-12 09:04:52 -05:00
James Frowen
5edba81dee
fix: ClientScene.localplayer is now set to null when it is destroyed (#2227)
* moving FakeNetworkConnection to common test folder

* adding test for local player destroy

* adding method to clear local player

* temp move test functions

* adding test for destroying non player

* moving asset to setup

* adding tests for destroy message and host mode

* adding ClearLocalPlayer to reset
2020-09-08 09:45:24 +02:00
James Frowen
2033f7d009
breaking: Removing manual invoke for Cmd and RPC (#2223)
* Removing manual invoke for Cmd and RPC

There should be no reason to manaully invoke remote code
they are marked with EditorBrowsableState.Never which implies they should not be called by the user

* removing tests
2020-09-06 16:14:05 +02:00
vis2k
a30e8fcd85 adding empty SyncEventProcessor file for deleted file 2020-09-06 16:07:52 +02:00
James Frowen
a232c539a7 adding empty program file for deleted file 2020-09-06 16:05:50 +02:00
James Frowen
bfa482fde7
Adding Network Lerp Rigidbody docs and change log (#2226)
* adding NetworkLerpRigidbody to change log

* adding docs for  Network Lerp Rigidbody
2020-09-05 13:09:06 +01:00
James Frowen
f326999d50
removing methods that only set enum (#2221) 2020-09-04 22:41:38 +01:00
James Frowen
622b52124b
Refactoring handle remote call (#2222)
* using string interpolation for logs

* return early instead of if/else
2020-09-04 22:40:56 +01:00
James Frowen
eac69ab5f6
docs: sync event obsolete (#2216)
* adding note to guides about removed SyncEvent

* updating Obsolete

making Obsolete error whe used
updating text to say it has been removed
linking to issue

* adding Obsolete note to other references to SyncEvent
2020-09-04 16:29:46 +01:00
vis2k
e67cef6666
Remove ScriptTemplates to clean up folder (#2213)
* Remove ScriptTemplates to clean up folder

* Update main.yml

Removing script templates from CI

Co-authored-by: James Frowen <jamesfrowendev@gmail.com>
2020-09-04 07:55:11 +02:00
James Frowen
24e3ea099c
adding version define from v18 breaking change (#2214) 2020-09-03 15:46:15 +01:00
James Frowen
e79e340e0d
fixing typo in NetworkIdentity.cs 2020-09-03 11:51:05 +01:00
vis2k
cd3d9c2144 Delete old file 2020-09-03 09:05:47 +02:00
vis2k
fc1096d66c
breaking: Removed [SyncEvent] because ClientRpc/TargetRpc does the same thing, and it's an enormous effort to support the Weaver code. (#2178) 2020-09-03 09:04:29 +02:00
James Frowen
ad8af783dc
Replacing prefabAssetPath with assetPath for PrefabStage to stop warning (#2210) 2020-09-03 08:48:06 +02:00
James Frowen
1ade82d435
feat: making NetworkBehaviour.IsDirty public (#2208) 2020-08-31 12:26:50 +01:00
James Frowen
5701369e84
feat: adding script to help debug list server (#2202)
Script uses OnGui so can be used to check if server has been added to list server
2020-08-27 23:15:43 +01:00
James Frowen
fc530782cc
fix: fixing width and layout group on cloud example (#2201) 2020-08-27 23:10:11 +01:00
vis2k
f6dbf8c19e Fix broken Weaver test 2020-08-27 00:18:01 +02:00
vis2k
594aec45bf Weaver RpcProcessor validation moved to NetworkBeahviourProcessor.ProcessClientRpc 2020-08-26 13:15:23 +02:00
vis2k
25ef6ac36a Weaver TargetRpcProcessor validation moved to NetworkBehaviourProcessor.ProcessTargetRpc 2020-08-26 13:13:56 +02:00
vis2k
820d0daa29 Weaver CommandProcessor validation moved to NetworkBehaviourProcessor.ProcessCommand 2020-08-26 13:12:56 +02:00
vis2k
5e7257d7bc Weaver ValidateRemoteCallAndParameters IsStatic check added so we don't need to check in Command/Rpc/TargetRpcProcessors 2020-08-26 13:11:56 +02:00
vis2k
2e178b7eaf Weaver NetworkBehaviourProcessor: ValidateRemoteCallAndParameters function added to be used from Command/Rpc/TargetRpcProcessors 2020-08-26 13:08:46 +02:00
vis2k
fbad5d2401 Add comment 2020-08-26 13:04:39 +02:00
vis2k
68ebaf1756 Weaver TargetRpcProcessor: ValidateTargetRpc simplified 2020-08-26 13:03:44 +02:00
vis2k
e6ffe6d6bf Weaver: Simplify ValidateParameters 2020-08-26 13:02:25 +02:00
vis2k
ce3dd51d81 Weaver NetworkBehaviourProcessor: ProcessMethodsValidateParameters renamed to ValidateParameters 2020-08-26 13:01:43 +02:00
vis2k
ee8ad1d750 Weaver TargetRpcProcessor: ProcessMethodsValidateTargetRpc renamed to ValidateTargetRpc 2020-08-26 13:01:43 +02:00
vis2k
1b49a21d49 Weaver RpcProcessor: ProcessMethodsValidateRpc renamed to ValidateRpc 2020-08-26 13:01:43 +02:00
vis2k
9131586f5c Weaver NetworkBehaviourProcessor: ProcessMethodsValidateFunction renamed to ValidateFunction 2020-08-26 13:01:43 +02:00
vis2k
3dab0ec7c5 Weaver CommandProcessor: ProcessMethodsValidateCommand renamed to ValidateCommand 2020-08-26 13:01:43 +02:00
James Frowen
a9d21ea9ab
fix: adding error for generated read writer for abstract class (#2191)
* fix adding error for gernated read writer for abstract class

weaver can not initialize class abstract class so cant not create a reader
this gives a helpful error telling the server to make a custom reader

* adding tests for error message

* fixing typo

* renaming

* fixing expected error messages
2020-08-25 17:14:39 +01:00
James Frowen
c9a9f92c7c
commenting out reader error checks (#2196)
Reader code doesn't run on Rpc now if a valid writer can not be found
In future PR write and read functions should be generated together as they share most of the same checks
2020-08-25 01:39:03 +01:00
James Frowen
d73de03eca
renaming variables in Readers to match writers (#2195) 2020-08-24 14:48:15 +01:00
James Frowen
11a8d41464
fixng ArgumentNullException (#2193) 2020-08-24 14:43:51 +01:00
James Frowen
771f1fea13
fixing typo (#2192)
variable should start with lower case
2020-08-23 19:30:20 +01:00
James Frowen
1045b1f2ed
tests using HasError (#2188)
* replacing assert with haserror

* adding IsSuccess and HasWarning functions

* using IsSuccess

* checking weaverWarnings empty in success

* using HasWarning

* replacing asserts missed by regex

* fixing typo

* adding HasNoErrors function to be used when tests only have warnings

* fixing typo

* making fields public to stop warnings

* simplifying more test files
2020-08-22 20:20:16 +01:00
James Frowen
bd7c93674e
Error with message overloads (#2168)
* weaver error with message overloads

* finding method with 1 arg
2020-08-22 21:07:33 +02:00
James Frowen
d5d434cf13
weaver: renaming variables and changing order things happen (#2172)
* renaming variables

* adding todo

* moving order that things happen
2020-08-22 21:05:01 +02:00
James Frowen
ea0b9e1215
returning lists instead of passing them in as args (#2183) 2020-08-22 20:51:47 +02:00
James Frowen
f051c4b911
Simplify weaver tests (#2186)
* Simplifying weaver test files

* updating error messages
2020-08-22 19:00:11 +01:00
James Frowen
c312874bcb
renaming test folder in order to use WeaverTestsBuildFromTestName (#2189) 2020-08-22 18:59:06 +01:00
James Frowen
f1d7f207c3
adding HasError method (#2185)
Makes it easier to write error message within weaver tests because there is mess syntax to worry about
2020-08-22 16:23:56 +01:00
vis2k
9ec5eadd51 Weaver: PropertySiteProcessor.ProcessSitesModule renamed to Process for consistency 2020-08-22 13:59:17 +02:00
vis2k
ed60e592dc Syntax 2020-08-22 13:57:52 +02:00
vis2k
16f8f05abe Weaver: ReaderWriterProcessor.ProcessReadersAndWriters renamed to Process for consistency 2020-08-22 13:56:52 +02:00
vis2k
84602aace6 ServerClientAttributeProcessor: ProcessSiteClass renamed to Process for consistency 2020-08-22 13:55:22 +02:00
vis2k
342ed13f55 Weaver: update ServerClientAttributeProcessor explanation 2020-08-22 13:40:41 +02:00
vis2k
427adf6c8e Weaver: ProcessNetworkBehaviourType code moved into NetworkBehaviourProcessor.Process 2020-08-22 13:40:41 +02:00
James Frowen
4774f83032
moving FindSyncObjectsFields to its own function (#2182) 2020-08-22 12:10:01 +02:00
vis2k
df38c4fb2c Syntax 2020-08-21 20:00:42 +02:00
vis2k
5cc908a18d Weaver PropertySiteProcessor: remove redundant AssemblyDefinition parameter. Weaver passes assembly.MainModule anyway. 2020-08-21 18:25:01 +02:00
vis2k
4258220b26 Weaver PropertySiteProcessor: pass CurrentAssembly to Process function to reduce coupling 2020-08-21 18:22:12 +02:00
vis2k
7b9066832b Syntax 2020-08-21 18:04:32 +02:00
vis2k
fe32557a38 Weaver ProcessSyncVars: remove redundant numSyncVars field, use syncVars.Count instead 2020-08-21 17:33:11 +02:00
vis2k
54c32227bd
[Obsolete] SyncEvent (#2180) 2020-08-21 17:03:06 +02:00
James Frowen
eec49fafce
feat: Use Server Client attribute outside of NetworkBehaviour (#2150)
* adding generated test for other baseclasses

* removing errors when attribute is not in networkbehaviour

* temp weaver tests

* updating weaver tests for monobehaviour

* adding weaver tests for non-networkbehaviour

* moving where serverclient attributes are processed

* removing un-used code

* regenerate tests
2020-08-21 16:02:37 +01:00
James Frowen
c6fa49c72a
fix: adding version define from v17 breaking change 2020-08-21 13:49:54 +01:00
vis2k
35d8e0ed60 Syntax 2020-08-21 12:12:40 +02:00
vis2k
07f5912215 Weaver GenericArgumentResolver: reuse StripGenericParametersFromClassName 2020-08-21 12:07:18 +02:00
vis2k
0e124ff8b2 Weaver Resolvers: remove unused code 2020-08-21 12:02:01 +02:00
vis2k
bfb97e7202 Syntax 2020-08-21 11:54:49 +02:00
vis2k
2ea787f4fc Weaver Extensions: HasCustomAttribute uses Linq to simplify code 2020-08-21 11:38:36 +02:00
vis2k
467d9e834f Weaver Extensions: GetMethod uses Linq to simplify code 2020-08-21 11:38:36 +02:00
vis2k
045b50a929 Weaver Extensions: GetMethods uses Linq to simplify code 2020-08-21 11:31:25 +02:00
vis2k
687c9002dd typo 2020-08-21 11:28:51 +02:00
vis2k
0043288900 typo 2020-08-21 11:28:38 +02:00
vis2k
e8ae2246c0 Weaver Extensions: remove unused functions 2020-08-21 11:27:11 +02:00
vis2k
22486885f1 syntax 2020-08-21 11:21:26 +02:00
vis2k
948b97e30d Weaver Tests: StripGenericParametersFromClassNameTest 2020-08-21 11:20:31 +02:00
vis2k
ad42aa19de internal 2020-08-21 11:18:05 +02:00
vis2k
3b6f98be9f Weaver Extensions: IsDerivedFrom strip generic parameters code moved into separate function 2020-08-21 11:16:05 +02:00
vis2k
461396601f ignore warnings 2020-08-21 11:07:08 +02:00
James Frowen
c39a2d546e
splitting up GetWriteFunc function (#2171) 2020-08-21 10:57:41 +02:00
James Frowen
150b14a2ed
perf: adding check for no connections (#2130)
* adding check for no connections

Dont need to run Server Update if there are no connections

* adding toggle to disable skip

* formatt

* removing skipUpdateIfNoConnections check, and merging if checks

* removing extra line

* adding tests for NoConnections
2020-08-21 10:51:58 +02:00
James Frowen
7c7edb2586
weaver: Moving stuff around in writer (#2170)
* removing TypeDef versions of extension methods

* moving function up

* Renaming function

* fixing comment

* changing comment

* Update Writers.cs

Co-authored-by: vis2k <info@noobtuts.com>
2020-08-20 22:35:57 +02:00
James Frowen
99d4f8c9bd
breaking: replacing isHeadless with isServerBuild (#2093)
* replacing isHeadless with isServerBuild

* renaming startOnHeadless

* fixing isServerBuild bool

* making property a field instead

* replacing isServerBuild for #if UNITY_SERVER

* fixing comment and removing extra lines

* removing system from System.Obsolete

* renaming to autoStartServerBuild
2020-08-20 13:56:46 +02:00
James Frowen
a2124c3522
Renaming tests and namespaces (#2167)
* renaming test

* renaming test file

* removing test suffix from methods

* changing test namesapce
2020-08-19 02:18:20 +01:00
James Frowen
0c790e339d
adding assert to make sure transport is set (#2164)
* adding assert to make sure transport is set

this helps people who want to connect without using networkmanager

* moving Transport.activeTransport to setup

* replacing Substitute.For for addComponent

Can't used Substitute for monobehaviours as they will still be null with unity equals
2020-08-18 18:57:31 +02:00
James Frowen
3a276b4e30
fix: weaver test for abstract methods (#2166)
* weaver test for abstract methods

* doing nothing is method is abstract

* not calling base if it is abstract

* adding tests for message to make sure they work
2020-08-18 18:56:48 +02:00
James Frowen
7294c42798
splitting up ProcessEvents function (#2174) 2020-08-18 18:56:21 +02:00
James Frowen
e4d9304478
moving getwriter to above op code (#2175) 2020-08-18 18:54:35 +02:00
James Frowen
901898e897
removing old tests (#2165)
these are covered by CollectionWriterTests.gen.cs
2020-08-17 12:01:33 +01:00
James Frowen
aa49c54dd0
removing program class (#2161) 2020-08-16 12:22:12 +02:00
James Frowen
381e5a115b
feat: allowing lists to automatically be sent in Commands, Rpc, and Messages (#2151)
* weaver tests for list read write

* generated tests for list read write

* adding method to check for list type

* temp

* weaver functions for creating read write for list

* generating tests for lists
2020-08-15 18:00:55 +02:00
James Frowen
5b179e8917
Generated tests for collection read write (#2158)
* adding generated tests for collection writers

tests for read+write for array and array segment

* changing menu path

* adding tests for collections of classes

* swapping order in class name
2020-08-15 02:57:38 +01:00
James Frowen
2fbd131f61
Test for array segment and writers (#2157)
* tests for array and segment writers

* fix typo
2020-08-14 23:29:07 +01:00
James Frowen
c1410b0924
fix: adding error when Server/Client is used on abstract methods (#1978)
* tests for Server attribute on virtual methods

test for virtual, abstract and override methods

* adding test for client attribute

* adding error when attribute is put on abstract method

* improving error message

* updating error mesages in tests

* updating to use WeaverTypes

* adding check before error
2020-08-14 10:52:06 +02:00
James Frowen
71bf792db5
moving where CallOnClientEnterRoom is called (#1922) 2020-08-14 10:47:44 +02:00
James Frowen
fc48e0ecf9
Adding alternative to NetworkRigidbody (#2123)
Uses Lerp to set position and velocity
2020-08-11 10:27:09 +02:00
James Frowen
2046e8813e
removing Internal functions that do nothing (#2154) 2020-08-10 08:57:47 +02:00
James Frowen
5089546ecd
fixing IL error when using floats (#2147)
* fixing IL error when using floats

* removing speical case for primitive types
2020-08-09 21:11:46 +01:00
James Frowen
e4a5ce795b
fix: Nested messages (#2148)
* test for nested messages

* fixing StackOverflow with nested types
2020-08-09 20:01:14 +02:00
James Frowen
fe3bebcc63
Making EnableDebugMode public (#2152) 2020-08-09 17:29:05 +01:00
James Frowen
ee9a600f66
Generated attribute tests (#2149)
* class to create test functions

* generated test folder

* generated attribute tests

* adding out function and long type

* generated test file

* using OneTimeSetUp to make tests run faster
2020-08-08 15:11:31 +01:00
James Frowen
ec54ee6d8c
fix: fixing unity crash on StackOverflowException (#2146)
StackOverflowException was causing unity to crash while running weaver 
tests, using inner exception seems to fix that issue
2020-08-07 16:30:08 +01:00
James Frowen
ddc6139725
fix: fixing warning message for client attribute (#2144) 2020-08-07 13:03:46 +01:00
James Frowen
d46469a79c
fix: isServer false in OnDestroy (#2101)
* fix isServer false in OnDestroy

* making sure that OnDestroy doesn't call Destroy again
2020-08-06 17:55:35 +02:00
James Frowen
a124f3f439
fix: fixing cloud log not using logger (#2141) 2020-08-06 13:26:14 +01:00
Keir Smith
23b9fb0214
feat: Added Layer Weight to NetworkAnimator (#2134)
* Added Layer Weight to NetworkAnimator

Now NetworkAnimator is aware of each layer weight on it's references
Animator and will sync layer weights across the network.

* NetworkAnimator layers Float equality fix

* Update Assets/Mirror/Components/NetworkAnimator.cs

Co-authored-by: James Frowen <jamesfrowen5@gmail.com>

* Update Assets/Mirror/Components/NetworkAnimator.cs

Co-authored-by: James Frowen <jamesfrowen5@gmail.com>

* Remove GetLayerWeight check every incoming packet as is extern call

Co-authored-by: James Frowen <jamesfrowen5@gmail.com>
2020-08-05 23:54:46 +01:00
James Frowen
87a96d17ca
deleting telepathy tests (#2136) 2020-08-05 20:44:38 +02:00
James Frowen
fee9adfa63
Adding asmdef to telepathy (#2137)
* Adding asmdef to telepathy

mirror has to reference telepathy as it is the default transport
this also means that TelepathyTransport has to be in the mirror asmdef

* references telepathy in tests

* formatting asmdef
2020-08-05 12:40:10 +01:00
James Frowen
2998295e45
adding asmdef to websockets (#2135) 2020-08-05 12:09:00 +02:00
James Frowen
17838c5b52
removing 2nd null check (#2128)
if identity is not null then the game object is also not null
2020-08-05 12:08:20 +02:00
James Frowen
2b6a1bb792
adding test for NetworkServer.Destroy (#2115) 2020-08-05 12:07:40 +02:00
vis2k
0f09702062
Weaver types moved into WeaverTypes, and reduce some global state (#2138) 2020-08-05 12:07:11 +02:00
James Frowen
f1e5878ca1
Test for OnSpawn (#2004) 2020-08-04 11:55:42 +01:00
James Frowen
067c46fd60
fixing doc links (#2139) 2020-08-03 22:11:38 +01:00
James Frowen
4adaac8867
moving 2nd if inside 1st (#2127) 2020-08-03 20:37:32 +02:00
James Frowen
c63811ddc4
correctly error message so they are not misleading (#2124) 2020-08-03 20:36:20 +02:00
James Frowen
03fd6a5526
splitting on spawn into functions (#2113)
* making ApplySpawnPayload internal for tests

* splitting on spawn into functions

* renaming
2020-08-03 20:35:51 +02:00
James Frowen
7604e65c2c
fix: making triggers be called right away instead on owner (#2125)
* making triggers be called right away instead on owner

* only handling on server if it is not the host
2020-08-03 20:34:52 +02:00
James Frowen
da629e5f71
Formatting doc comments (#2131)
* making comments in NetworkServer doc comments

* making comments in NetworkIdentity doc comments
2020-08-03 20:33:42 +02:00
James Frowen
c3765c101d
moving FakeNetworkConnection to its own file (#2132) 2020-08-02 23:11:03 +01:00
James Frowen
3f027e0d0a
using memory transport in test (#2129)
telepathy fails this test sometimes
2020-08-02 23:00:14 +01:00
linjmeyer
3bdfd451cb
SSL/TLS version in Websockets now configurable (#2121) 2020-08-01 09:36:17 -05:00
Paul Pacheco
890ee6b58d
fix: auto fill serialize/deserialize for classes (#2120)
Note this method is being called in 3 places:
one in MessageClassProcessor and 2 in NetworkBehaviorProcessor.

The NetworkBehaviorProcess is really a don't care, this condition cannot happen since it would not be invoked unless the class extends from NetworkBehavior. In this case, it will always resolve.
but even if it does not resolve, they handle the null case gracefully by not calling the base method.

MessageClassProcessor also calls this method, and if it is null it does not call the base method. That is precisely the behavior we want to resolve #2117

so all 3 places are perfectly fine receiving null.

The only way to trigger the error was #2117

I renamed the method to make it clearer that this may not find the method in the parent class.
2020-08-01 08:46:12 -05:00
vis2k
0cb84baf97 Benchmark example missing NetworkManager reference fixed 2020-07-30 19:59:11 +02:00
vis2k
2effa7bc02 Update readme for 2018.4 LTS 2020-07-30 19:36:46 +02:00
vis2k
ce8d540a8f 2k NetworkTransforms renamed to Benchmark 2020-07-30 19:24:05 +02:00
vis2k
7de5400ad5 10k Benchmark removed because it's 2D, outdated and insignificant 2020-07-30 19:23:25 +02:00
vis2k
6f645c870c Benchmark monster mesh changed to cube to reduce polygons 2020-07-30 19:21:50 +02:00
vis2k
0a554f5f6c Remove warning 2020-07-30 19:12:15 +02:00
Anastasios Andronidis
92bc3c3150
Improve Telepathy debug messages (#2106) 2020-07-28 18:45:00 +01:00
James Frowen
70b7211cba
docs: updating cloud readme (#2111) 2020-07-28 00:41:45 +01:00
James Frowen
e136f48101
feat: Adding Custom Data and Custom Address fields to list server (#2110)
* whitespace

* adding doc comment
2020-07-27 17:31:56 +01:00