public static void SpawnPrefab(string objectGuid, ChildGuid[] children, TechType tech, Vector3 position, Quaternion rotation) { if (tech == TechType.None) { return; } if (tech == TechType.Cyclops) { SpawnSub(objectGuid, children, position, rotation); return; } var prefab = CraftData.GetPrefabForTechType(tech); if (prefab == null) { return; } var gameObject = UnityEngine.Object.Instantiate <GameObject>(prefab, position, rotation); gameObject.SetActive(true); GuidHelper.Set(gameObject, objectGuid); GuidHelper.SetChildGuids(gameObject, children); LargeWorldEntity.Register(gameObject); gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver); CrafterLogic.NotifyCraftEnd(gameObject, tech); SyncedObject.ApplyTo(gameObject); }
private SyncedObject getSyncedObject(IModelObject obj) { var ret = objects.Find(o => o.ModelObject == obj); if (ret == null) { ret = new SyncedObject(); ret.ModelObject = obj; ret.UniqueId = unqiueSyncerId << 24 + nextUniqueId++; objects.Add(ret); } return(ret); }
private void applyObjectAdded(SyncChange change) { var newInstance = (IModelObject)Activator.CreateInstance(change.Object.ModelObject.GetType()); container.AddObject(newInstance); var syncedObject = new SyncedObject { ModelObject = newInstance, UniqueId = change.Object.UniqueId }; objects.Add(syncedObject); synchronizeModelObject(change.Object.ModelObject, newInstance); }
public static void Dropped(GameObject gameObject, TechType tech, Vector3 position) { var res = new ClientItemDropped(); res.itemGuid = GuidHelper.Get(gameObject); res.waterParkGuid = GuidHelper.Get(Player.main?.currentWaterPark?.gameObject); res.tech = tech; res.position = position; res.data = ObjectSerializer.GetBytes(gameObject); if (res.data == null) { return; } Multiplayer.main.Send(res); SyncedObject.ApplyTo(gameObject); }
private static void OnSubLoaded(GameObject prefab) { var gameObject = Utils.SpawnPrefabAt(prefab, null, setPosition); gameObject.transform.rotation = setRotation; gameObject.SetActive(true); LargeWorldEntity.Register(gameObject); gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver); CrafterLogic.NotifyCraftEnd(gameObject, CraftData.GetTechType(gameObject)); GuidHelper.Set(gameObject, setGuid); GuidHelper.SetChildGuids(gameObject, setChildren); setGuid = null; setChildren = null; SyncedObject.ApplyTo(gameObject); }