internal void DestroyObject(String name) { if (NetworkedObjects.ContainsKey(name)) { client.NetworkedClientInstance.DestroyObject(NetworkedObjects[name].OriginalObject, name); client.Simulator.UnregisterNetworkedObject(NetworkedObjects[name]); NetworkedObjects.Remove(name); } }
internal void CreateObject(string typeName, String name) { if (!NetworkedObjects.ContainsKey(name)) { INetworkedObject networkedObject = client.NetworkedClientInstance.CreateObject(typeName, name); NetworkedObjects.Add(name, new NetworkedObject(networkedObject, name)); client.Simulator.RegisterNetworkedObject(NetworkedObjects[name]); } }
/// <summary> /// Unregisters a local created <see cref="INetworkedObject"/>. The object will no longer be updated with data received from the server. /// </summary> /// <param name="networkedObject">The networked object</param> public void UnregisterNetworkAwareObject(INetworkedObject networkedObject) { var noKv = NetworkedObjects.FirstOrDefault(kv => kv.Value.OriginalObject == networkedObject); if (noKv.Key != null) { client.Simulator.UnregisterNetworkedObject(noKv.Value); NetworkedObjects.Remove(noKv.Key); } }
int seed; // only matters on the master client // singleton assignment void Awake() { /* DontDestroyOnLoad(canvas); * if (canvasInstance == null) * { * canvasInstance = this.canvas; * } * else * { * Destroy(canvasInstance); * }*/ find = this; }
/// <summary> /// Update the component internals. Do not call this directly. /// </summary> /// <param name="timeSinceLastUpdate">Elapsed time since this function was last called.</param> public void Update(TimeSpan timeSinceLastUpdate) { lock (networkObjectQueue) { //Order is: //Destroy objects //Create objects //Update objects values //TODO: Changed order IEnumerable <QueuedNetworkedObjectData> createObjects = networkObjectQueue.Where(q => q.MessageData.Object.StartsWith(LiNGSMarkers.CreateObject)); foreach (var item in createObjects) { CreateObject(item.MessageData.Value, item.MessageData.Property); } IEnumerable <QueuedNetworkedObjectData> destroyObjects = networkObjectQueue.Where(q => q.MessageData.Object.StartsWith(LiNGSMarkers.DestroyObject)); foreach (var item in destroyObjects) { DestroyObject(item.MessageData.Value); } IEnumerable <QueuedNetworkedObjectData> fieldsData = networkObjectQueue.Where(q => !q.MessageData.Object.StartsWith(LiNGSMarkers.CreateObject) && !q.MessageData.Object.StartsWith(LiNGSMarkers.DestroyObject)); foreach (var item in fieldsData) { NetworkedObject no; if (NetworkedObjects.TryGetValue(item.ObjectName, out no)) { if (item.MessageData.Property == LiNGSMarkers.SetActive) { no.SetActive(bool.Parse(item.MessageData.Value)); } else { client.Simulator.NewFieldValue(no, item.MessageData.Property, item.MessageData.Value); } } } networkObjectQueue.Clear(); } }
protected override void HandleData(NetMessageType MessageType, NetIncomingMessage Msg) { if (MessageType == NetMessageType.ObjectRemoveAll) { NetworkedObjects.Clear(); } else if (MessageType == NetMessageType.ObjectCreate) { int ID = Msg.ReadInt32(); string TypeName = Msg.ReadString(); Type T = Type.GetType(TypeName); object Obj = Activator.CreateInstance(T); Add(Obj, ID); } else { throw new InvalidOperationException("Unknown message type " + MessageType); } }
int seed; // only matters on the master client // singleton assignment void Awake() { find = this; }
private void Awake() { find = this; //DontDestroyOnLoad(gameObject); }
/// <summary> /// Registers a local created <see cref="INetworkedObject"/> to be update with data from the server. This object will not be syncronized on the server. /// </summary> /// <param name="networkedObject">The networked object</param> /// <param name="objectName">UNIQUE object name</param> public void RegisterNetworkAwareObject(INetworkedObject networkedObject, string objectName) { NetworkedObjects.Add(objectName, new NetworkedObject(networkedObject, objectName)); client.Simulator.RegisterNetworkedObject(NetworkedObjects[objectName]); }