/// <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; }
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 }); }