Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }