示例#1
0
 internal void DestroyObject(String name)
 {
     if (NetworkedObjects.ContainsKey(name))
     {
         client.NetworkedClientInstance.DestroyObject(NetworkedObjects[name].OriginalObject, name);
         client.Simulator.UnregisterNetworkedObject(NetworkedObjects[name]);
         NetworkedObjects.Remove(name);
     }
 }
示例#2
0
 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]);
     }
 }
示例#3
0
        /// <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);
            }
        }
示例#4
0
    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;
    }
示例#5
0
        /// <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();
            }
        }
示例#6
0
 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);
     }
 }
示例#7
0
    int seed;     // only matters on the master client

    // singleton assignment
    void Awake()
    {
        find = this;
    }
示例#8
0
 private void Awake()
 {
     find = this;
     //DontDestroyOnLoad(gameObject);
 }
示例#9
0
 /// <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]);
 }