protected void CallRegisterPrefab(GameObject prefab, RegisterPrefabOverload overload, Guid guid) { SpawnDelegate spawnHandler = new SpawnDelegate((x, y) => null); SpawnHandlerDelegate spawnHandlerDelegate = new SpawnHandlerDelegate(x => null); UnSpawnDelegate unspawnHandler = new UnSpawnDelegate(x => {}); switch (overload) { case RegisterPrefabOverload.Prefab_NewAssetId: NetworkClient.RegisterPrefab(prefab, guid); break; case RegisterPrefabOverload.Prefab_SpawnDelegate_NewAssetId: NetworkClient.RegisterPrefab(prefab, guid, spawnHandler, unspawnHandler); break; case RegisterPrefabOverload.Prefab_SpawnHandlerDelegate_NewAssetId: NetworkClient.RegisterPrefab(prefab, guid, spawnHandlerDelegate, unspawnHandler); break; case RegisterPrefabOverload.Prefab: case RegisterPrefabOverload.Prefab_SpawnDelegate: case RegisterPrefabOverload.Prefab_SpawnHandlerDelegate: Debug.LogError("Overload did not have guid parameter"); break; default: Debug.LogError("Overload not found"); break; } }
protected void CallRegisterPrefab(GameObject prefab, RegisterPrefabOverload overload, SpawnHandlerDelegate spawnHandlerDelegate) { UnSpawnDelegate unspawnHandler = new UnSpawnDelegate(x => {}); switch (overload) { case RegisterPrefabOverload.Prefab_SpawnHandlerDelegate: NetworkClient.RegisterPrefab(prefab, spawnHandlerDelegate, unspawnHandler); break; case RegisterPrefabOverload.Prefab_SpawnHandlerDelegate_NewAssetId: NetworkClient.RegisterPrefab(prefab, anotherGuid, spawnHandlerDelegate, unspawnHandler); break; case RegisterPrefabOverload.Prefab: case RegisterPrefabOverload.Prefab_NewAssetId: case RegisterPrefabOverload.Prefab_SpawnDelegate: case RegisterPrefabOverload.Prefab_SpawnDelegate_NewAssetId: Debug.LogError("Overload did not have SpawnHandlerDelegate parameter"); break; default: Debug.LogError("Overload not found"); break; } }
protected void CallRegisterPrefab(GameObject prefab, RegisterPrefabOverload overload, UnSpawnDelegate unspawnHandler) { SpawnDelegate spawnHandler = new SpawnDelegate((x, y) => null); SpawnHandlerDelegate spawnHandlerDelegate = new SpawnHandlerDelegate(x => null); switch (overload) { case RegisterPrefabOverload.Prefab_SpawnDelegate: ClientScene.RegisterPrefab(prefab, spawnHandler, unspawnHandler); break; case RegisterPrefabOverload.Prefab_SpawnDelegate_NewAssetId: ClientScene.RegisterPrefab(prefab, anotherGuid, spawnHandler, unspawnHandler); break; case RegisterPrefabOverload.Prefab_SpawnHandlerDelegate: ClientScene.RegisterPrefab(prefab, spawnHandlerDelegate, unspawnHandler); break; case RegisterPrefabOverload.Prefab_SpawnHandlerDelegate_NewAssetId: ClientScene.RegisterPrefab(prefab, anotherGuid, spawnHandlerDelegate, unspawnHandler); break; case RegisterPrefabOverload.Prefab: case RegisterPrefabOverload.Prefab_NewAssetId: Debug.LogError("Overload did not have UnSpawnDelegate parameter"); break; default: Debug.LogError("Overload not found"); break; } }
public void ErrorForNullPrefab(RegisterPrefabOverload overload) { string msg = OverloadWithHandler(overload) ? "Could not register handler for prefab because the prefab was null" : "Could not register prefab because it was null"; LogAssert.Expect(LogType.Error, msg); CallRegisterPrefab(null, overload); }
public void ErrorForPrefabWithoutNetworkIdentity(RegisterPrefabOverload overload) { string msg = OverloadWithHandler(overload) ? $"Could not register handler for '{invalidPrefab.name}' since it contains no NetworkIdentity component" : $"Could not register '{invalidPrefab.name}' since it contains no NetworkIdentity component"; LogAssert.Expect(LogType.Error, msg); CallRegisterPrefab(invalidPrefab, overload); }
public void Prefab_AddsPrefabToDictionary(RegisterPrefabOverload overload) { Guid guid = GuidForOverload(overload); CallRegisterPrefab(validPrefab, overload); Assert.IsTrue(NetworkClient.prefabs.ContainsKey(guid)); Assert.AreEqual(NetworkClient.prefabs[guid], validPrefab); }
public void Prefab_WarningForAssetIdAlreadyExistingInPrefabsDictionary(RegisterPrefabOverload overload) { Guid guid = GuidForOverload(overload); NetworkClient.prefabs.Add(guid, validPrefab); LogAssert.Expect(LogType.Warning, $"Replacing existing prefab with assetId '{guid}'. Old prefab '{validPrefab.name}', New prefab '{validPrefab.name}'"); CallRegisterPrefab(validPrefab, overload); }
public void Handler_AddsUnSpawnHandlerToDictionaryForRuntimeObject(RegisterPrefabOverload overload) { // create a scene object CreateNetworked(out GameObject runtimeObject, out _); //test CallRegisterPrefab(runtimeObject, overload); Assert.IsTrue(NetworkClient.unspawnHandlers.ContainsKey(anotherGuid)); }
public void Handler_ErrorForAssetIdAlreadyExistingInPrefabsDictionary(RegisterPrefabOverload overload) { Guid guid = GuidForOverload(overload); NetworkClient.prefabs.Add(guid, validPrefab); LogAssert.Expect(LogType.Error, $"assetId '{guid}' is already used by prefab '{validPrefab.name}', unregister the prefab first before trying to add handler"); CallRegisterPrefab(validPrefab, overload); }
public void NewGuid_ErrorForEmptyGuid(RegisterPrefabOverload overload) { string msg = OverloadWithHandler(overload) ? $"Could not register handler for '{validPrefab.name}' with new assetId because the new assetId was empty" : $"Could not register '{validPrefab.name}' with new assetId because the new assetId was empty"; LogAssert.Expect(LogType.Error, msg); CallRegisterPrefab(validPrefab, overload, new Guid()); }
public void PrefabNewGuid_NoErrorWhenNewAssetIdIsSameAsCurrentPrefab(RegisterPrefabOverload overload) { Guid guid = validPrefabGuid; CallRegisterPrefab(validPrefab, overload, guid); Assert.IsTrue(NetworkClient.prefabs.ContainsKey(guid)); NetworkIdentity netId = validPrefab.GetComponent <NetworkIdentity>(); Assert.AreEqual(netId.assetId, validPrefabGuid); }
public void Handler_AddsSpawnHandlerToDictionaryForRuntimeObject(RegisterPrefabOverload overload) { // create a scene object CreateNetworked(out GameObject runtimeObject, out NetworkIdentity networkIdentity); Debug.Assert(networkIdentity.sceneId == 0, "SceneId was not set to 0"); Debug.Assert(runtimeObject.GetComponent <NetworkIdentity>().sceneId == 0, "SceneId was not set to 0"); //test CallRegisterPrefab(runtimeObject, overload); Assert.IsTrue(NetworkClient.spawnHandlers.ContainsKey(anotherGuid)); }
public void PrefabNewGuid_ErrorDoesNotChangePrefabsAssetId(RegisterPrefabOverload overload) { Guid guid = anotherGuid; LogAssert.Expect(LogType.Error, $"Could not register '{validPrefab.name}' to {guid} because it already had an AssetId, Existing assetId {validPrefabGuid}"); CallRegisterPrefab(validPrefab, overload); Assert.IsFalse(NetworkClient.prefabs.ContainsKey(guid)); NetworkIdentity netId = validPrefab.GetComponent <NetworkIdentity>(); Assert.AreEqual(netId.assetId, validPrefabGuid); }
public void Handler_AddsUnSpawnHandlerToDictionaryForRuntimeObject(RegisterPrefabOverload overload) { // setup CreateSceneObject(out GameObject runtimeObject, out NetworkIdentity networkIdentity); //test CallRegisterPrefab(runtimeObject, overload); Assert.IsTrue(unspawnHandlers.ContainsKey(anotherGuid)); // teardown GameObject.DestroyImmediate(runtimeObject); }
public void ErrorForEmptyGuid(RegisterPrefabOverload overload) { // create a scene object CreateNetworked(out GameObject runtimeObject, out _); //test string msg = OverloadWithHandler(overload) ? $"Can not Register handler for '{runtimeObject.name}' because it had empty assetid. If this is a scene Object use RegisterSpawnHandler instead" : $"Can not Register '{runtimeObject.name}' because it had empty assetid. If this is a scene Object use RegisterSpawnHandler instead"; LogAssert.Expect(LogType.Error, msg); CallRegisterPrefab(runtimeObject, overload); }
public void PrefabNewGuid_AddsRuntimeObjectToDictionary(RegisterPrefabOverload overload) { // create a scene object CreateNetworked(out GameObject runtimeObject, out NetworkIdentity networkIdentity); //test CallRegisterPrefab(runtimeObject, overload); Assert.IsTrue(NetworkClient.prefabs.ContainsKey(anotherGuid)); Assert.AreEqual(NetworkClient.prefabs[anotherGuid], runtimeObject); Assert.AreEqual(networkIdentity.assetId, anotherGuid); }
public void NewGuid_ChangePrefabsAssetId(RegisterPrefabOverload overload) { Guid guid = anotherGuid; CallRegisterPrefab(validPrefab, overload); Assert.IsTrue(prefabs.ContainsKey(guid)); Assert.AreEqual(prefabs[guid], validPrefab); NetworkIdentity netId = prefabs[guid].GetComponent <NetworkIdentity>(); Assert.AreEqual(netId.assetId, guid); }
public void ErrorIfPrefabHadSceneId(RegisterPrefabOverload overload) { GameObject clone = GameObject.Instantiate(validPrefab); NetworkIdentity netId = clone.GetComponent <NetworkIdentity>(); // Scene Id needs to not be zero for this test netId.sceneId = 20; LogAssert.Expect(LogType.Error, $"Can not Register '{clone.name}' because it has a sceneId, make sure you are passing in the original prefab and not an instance in the scene."); CallRegisterPrefab(clone, overload); GameObject.DestroyImmediate(clone); }
public void WarningForAssetIdAlreadyExistingInHandlersDictionary(RegisterPrefabOverload overload) { Guid guid = GuidForOverload(overload); NetworkClient.spawnHandlers.Add(guid, x => null); NetworkClient.unspawnHandlers.Add(guid, x => {}); string msg = OverloadWithHandler(overload) ? $"Replacing existing spawnHandlers for prefab '{validPrefab.name}' with assetId '{guid}'" : $"Adding prefab '{validPrefab.name}' with assetId '{guid}' when spawnHandlers with same assetId already exists."; LogAssert.Expect(LogType.Warning, msg); CallRegisterPrefab(validPrefab, overload); }
public void PrefabNewGuid_AddsRuntimeObjectToDictionary(RegisterPrefabOverload overload) { // setup CreateSceneObject(out GameObject runtimeObject, out NetworkIdentity networkIdentity); //test CallRegisterPrefab(runtimeObject, overload); Assert.IsTrue(prefabs.ContainsKey(anotherGuid)); Assert.AreEqual(prefabs[anotherGuid], runtimeObject); Assert.AreEqual(networkIdentity.assetId, anotherGuid); // teardown GameObject.DestroyImmediate(runtimeObject); }
public void ErrorForEmptyGuid(RegisterPrefabOverload overload) { // setup CreateSceneObject(out GameObject runtimeObject, out NetworkIdentity networkIdentity); //test string msg = OverloadWithHandler(overload) ? $"Can not Register handler for '{runtimeObject.name}' because it had empty assetid. If this is a scene Object use RegisterSpawnHandler instead" : $"Can not Register '{runtimeObject.name}' because it had empty assetid. If this is a scene Object use RegisterSpawnHandler instead"; LogAssert.Expect(LogType.Error, msg); CallRegisterPrefab(runtimeObject, overload); // teardown GameObject.DestroyImmediate(runtimeObject); }
public void Handler_AddsSpawnHandlerToDictionaryForRuntimeObject(RegisterPrefabOverload overload) { // setup CreateSceneObject(out GameObject runtimeObject, out NetworkIdentity networkIdentity); Debug.Assert(networkIdentity.sceneId == 0, "SceneId was not set to 0"); Debug.Assert(runtimeObject.GetComponent <NetworkIdentity>().sceneId == 0, "SceneId was not set to 0"); //test CallRegisterPrefab(runtimeObject, overload); Assert.IsTrue(spawnHandlers.ContainsKey(anotherGuid)); // teardown GameObject.DestroyImmediate(runtimeObject); }
public void SpawnDelegate_AddsHandlerToSpawnHandlers(RegisterPrefabOverload overload) { int handlerCalled = 0; Guid guid = GuidForOverload(overload); SpawnDelegate handler = new SpawnDelegate((pos, rot) => { handlerCalled++; return(null); }); CallRegisterPrefab(validPrefab, overload, handler); Assert.IsTrue(NetworkClient.spawnHandlers.ContainsKey(guid)); // check spawnHandler above is called SpawnHandlerDelegate handlerInDictionary = NetworkClient.spawnHandlers[guid]; handlerInDictionary.Invoke(default);
protected static bool OverloadWithHandler(RegisterPrefabOverload overload) { return((overload & RegisterPrefabOverload.WithHandler) != 0); }
protected static bool OverloadWithAssetId(RegisterPrefabOverload overload) { return((overload & RegisterPrefabOverload.WithAssetId) != 0); }
public void CheckOverloadWithHandler(RegisterPrefabOverload overload, bool expected) { // test to make sure OverloadWithHandler correctly works with flags Assert.That(OverloadWithHandler(overload), Is.EqualTo(expected)); }
protected Guid GuidForOverload(RegisterPrefabOverload overload) => OverloadWithAssetId(overload) ? anotherGuid : validPrefabGuid;
public void ErrorForNetworkIdentityInChildren(RegisterPrefabOverload overload) { LogAssert.Expect(LogType.Error, $"Prefab '{prefabWithChildren.name}' has multiple NetworkIdentity components. There should only be one NetworkIdentity on a prefab, and it must be on the root object."); CallRegisterPrefab(prefabWithChildren, overload); }