Example #1
0
        /// <summary>
        /// Adds a WorldObject for clients.
        /// </summary>
        /// <param name="addedData"></param>
        private void ClientAddWorldObject(AddedWorldObjectData addedData)
        {
            WorldObject prefab = ReturnPrefab(addedData.Data.ObjectType);
            //Instantiate a new WorldObject using the position passed in from data.
            WorldObject wo = Instantiate(prefab, addedData.Position, Quaternion.identity);

            //Update newly spawned WorldObject with current date.
            wo.UpdateData(addedData.Data);
            //Add to collection.
            _worldObjects[addedData.Data.Key] = wo;
        }
Example #2
0
        public void InitializeWorldObject(WorldObject wo, WorldObjectTypes objectType)
        {
            if (wo == null || wo.gameObject == null)
            {
                Debug.LogError("You must first InstantiateWorldObject, and use the result within InitializeWorldObject.");
                return;
            }

            WorldObjectData data = wo.ReturnData();

            data.SetKey(ReturnNextKey());
            data.SetObjectType(objectType);
            data.SetInstantiated(true);
            //Update WorldObjects data with newly generated data.
            wo.UpdateData(data);
            //Add to WorldObjects collection.
            _worldObjects[data.Key] = wo;
            //WorldObject was modified so do a dirty update.
            UpdateDirty(wo, DirtyUpdateReasons.Instantiated);
            //Generate new added WorldObject and send to clients.
            AddedWorldObjectData addedWorldObject = new AddedWorldObjectData(wo.transform.position, wo.transform.rotation, data);

            RpcAddWorldObject(new AddedWorldObjectData[] { addedWorldObject });
        }