public override void TryAndErase(NetworkedGameObject netReg) { // komodo stuff base.TryAndErase(netReg); var entityID = entityManager.GetComponentData <NetworkEntityIdentificationComponentData>(netReg.Entity).entityID; if (entityManager.HasComponent <PrimitiveTag>(netReg.Entity)) { // hide object in our view instead ofdestroying it, so we can undo the erasure. netReg.gameObject.SetActive(false); // tell other clients to do the same thing CreatePrimitiveManager.Instance.SendPrimitiveUpdate(entityID, -9); // save to actions stack if (UndoRedoManager.IsAlive) { UndoRedoManager.Instance.savedStrokeActions.Push(() => { netReg.gameObject.SetActive(true); CreatePrimitiveManager.Instance.SendPrimitiveUpdate(entityID, 9); }); } } }
public void ReceivePrimitiveUpdate(string stringData) { Primitive newData = JsonUtility.FromJson <Primitive>(stringData); //detect if we should render or notrender it if (newData.primitiveType == 9) { if (NetworkedObjectsManager.Instance.networkedObjectFromEntityId.ContainsKey(newData.primitiveId)) { NetworkedObjectsManager.Instance.networkedObjectFromEntityId[newData.primitiveId].gameObject.SetActive(true); } return; } else if (newData.primitiveType == -9) { if (NetworkedObjectsManager.Instance.networkedObjectFromEntityId.ContainsKey(newData.primitiveId)) { NetworkedObjectsManager.Instance.networkedObjectFromEntityId[newData.primitiveId].gameObject.SetActive(false); } return; } PrimitiveType primitiveToInstantiate = PrimitiveType.Sphere; switch (newData.primitiveType) { case 0: primitiveToInstantiate = PrimitiveType.Sphere; break; case 1: primitiveToInstantiate = PrimitiveType.Capsule; break; case 2: primitiveToInstantiate = PrimitiveType.Cylinder; break; case 3: primitiveToInstantiate = PrimitiveType.Cube; break; case 4: primitiveToInstantiate = PrimitiveType.Plane; break; case 5: primitiveToInstantiate = PrimitiveType.Quad; break; } var primitive = GameObject.CreatePrimitive(primitiveToInstantiate); NetworkedGameObject nAGO = NetworkedObjectsManager.Instance.CreateNetworkedGameObject(primitive); entityManager.AddComponentData(nAGO.Entity, new PrimitiveTag { }); primitive.tag = "Interactable"; var pos = newData.primitivePos; var rot = newData.primitiveRot; var scale = newData.scale; primitive.transform.position = pos; primitive.transform.SetGlobalScale(Vector3.one * scale); primitive.transform.rotation = new Quaternion(rot.x, rot.y, rot.z, rot.w); primitive.transform.SetParent(primitiveCreationParent.transform, true); }