Esempio n. 1
0
        public Optional <GameObject> Spawn(Entity entity, Optional <GameObject> parent)
        {
            GameObject prefabForTechType = CraftData.GetPrefabForTechType(entity.TechType, false);

            if (prefabForTechType == null && !PrefabDatabase.TryGetPrefab(entity.ClassId, out prefabForTechType))
            {
                return(Optional <GameObject> .Of(Utils.CreateGenericLoot(entity.TechType)));
            }

            GameObject gameObject = Utils.SpawnFromPrefab(prefabForTechType, null);

            gameObject.transform.position   = entity.Position;
            gameObject.transform.localScale = entity.Scale;

            if (parent.IsPresent())
            {
                gameObject.transform.SetParent(parent.Get().transform, true);
            }

            gameObject.transform.localRotation = entity.Rotation;
            GuidHelper.SetNewGuid(gameObject, entity.Guid);
            gameObject.SetActive(true);
            // Makes movable objects movable... we can probably do this before the server sends the spawner packet?
            if (gameObject.GetComponent <Rigidbody>() == null)
            {
                gameObject.AddComponent <Rigidbody>();
            }

            LargeWorldEntity.Register(gameObject);
            CrafterLogic.NotifyCraftEnd(gameObject, entity.TechType);

            return(Optional <GameObject> .Of(gameObject));
        }
Esempio n. 2
0
        public Optional <GameObject> Spawn(Entity entity, Optional <GameObject> parent)
        {
            TechType       techType = entity.TechType.Enum();
            GameObject     prefab;
            IPrefabRequest prefabRequest = PrefabDatabase.GetPrefabAsync(entity.ClassId);

            if (!prefabRequest.TryGetPrefab(out prefab)) // I realize its more code but Sorry couldnt stand all the warnings
            {
                prefab = CraftData.GetPrefabForTechType(techType, false);
                if (prefab == null)
                {
                    return(Optional <GameObject> .Of(Utils.CreateGenericLoot(techType)));
                }
            }

            GameObject gameObject = Utils.SpawnFromPrefab(prefab, null);

            gameObject.transform.position   = entity.Position;
            gameObject.transform.localScale = entity.Scale;

            if (parent.IsPresent())
            {
                gameObject.transform.SetParent(parent.Get().transform, true);
            }

            gameObject.transform.localRotation = entity.Rotation;
            gameObject.SetActive(true);

            NitroxIdentifier.SetNewId(gameObject, entity.Id);
            LargeWorldEntity.Register(gameObject);
            CrafterLogic.NotifyCraftEnd(gameObject, techType);

            return(Optional <GameObject> .Of(gameObject));
        }
Esempio n. 3
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);
        }
Esempio n. 4
0
        public Optional <GameObject> Spawn(Entity entity, Optional <GameObject> parent)
        {
            TechType   techType = entity.TechType.Enum();
            GameObject prefab;

            if (!PrefabDatabase.TryGetPrefab(entity.ClassId, out prefab))
            {
                prefab = CraftData.GetPrefabForTechType(techType, false);
                if (prefab == null)
                {
                    return(Optional <GameObject> .Of(Utils.CreateGenericLoot(techType)));
                }
            }

            GameObject gameObject = Utils.SpawnFromPrefab(prefab, null);

            gameObject.transform.position   = entity.Position;
            gameObject.transform.localScale = entity.Scale;

            if (parent.IsPresent())
            {
                gameObject.transform.SetParent(parent.Get().transform, true);
            }

            gameObject.transform.localRotation = entity.Rotation;
            GuidHelper.SetNewGuid(gameObject, entity.Guid);
            gameObject.SetActive(true);

            LargeWorldEntity.Register(gameObject);
            CrafterLogic.NotifyCraftEnd(gameObject, techType);

            return(Optional <GameObject> .Of(gameObject));
        }
Esempio n. 5
0
 public static bool OnConsoleCommand_spawn_Prefix(NotificationCenter.Notification n)
 {
     if (n != null && n.data != null && n.data.Count > 0)
     {
         string text = (string)n.data[0];
         if (UWE.Utils.TryParseEnum <TechType>(text, out TechType techType) && techType != TechType.None)
         {
             if (CraftData.IsAllowed(techType))
             {
                 foreach (IDecorationItem item in DecorationsMod.DecorationItems)
                 {
                     // If item being spawned is one of our decoration items.
                     if (techType == item.TechType)
                     {
                         // If item being spawned is one of our new flora.
                         if (!string.IsNullOrEmpty(item.ClassID) && CustomFlora.AllPlants.Contains(item.ClassID))
                         {
                             GameObject prefabForTechType = CraftData.GetPrefabForTechType(techType, true);
                             if (prefabForTechType != null)
                             {
                                 int num = 1;
                                 int num2;
                                 if (n.data.Count > 1 && int.TryParse((string)n.data[1], out num2))
                                 {
                                     num = num2;
                                 }
                                 float maxDist = 12f;
                                 if (n.data.Count > 2)
                                 {
                                     maxDist = float.Parse((string)n.data[2]);
                                 }
                                 Debug.LogFormat("Spawning {0} {1}", new object[] { num, techType });
                                 for (int i = 0; i < num; i++)
                                 {
                                     GameObject gameObject = global::Utils.CreatePrefab(prefabForTechType, maxDist, i > 0);
                                     LargeWorldEntity.Register(gameObject);
                                     CrafterLogic.NotifyCraftEnd(gameObject, techType);
                                     gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver);
                                     // Hide plant, show seed and enable pickupable
                                     PrefabsHelper.HidePlantAndShowSeed(gameObject.transform, item.ClassID);
                                 }
                             }
                             else
                             {
                                 ErrorMessage.AddDebug("Could not find prefab for TechType = " + techType);
                             }
                             // Dont call original function if item being spawned is one of our new flora.
                             return(false);
                         }
                         break;
                     }
                 }
             }
         }
     }
     // Give back execution to original function.
     return(true);
 }
Esempio n. 6
0
        public override void Process(VehicleSpawned packet)
        {
            vehicles.AddVehicle(packet.VehicleModel);

            GameObject gameObject = SerializationHelper.GetGameObject(packet.SerializedData);

            LargeWorldEntity.Register(gameObject);
            CrafterLogic.NotifyCraftEnd(gameObject, CraftData.GetTechType(gameObject));
            gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver);
        }
        // Token: 0x0600000B RID: 11 RVA: 0x00002A8C File Offset: 0x00000C8C
        private void OnSubPrefabLoaded(GameObject prefab)
        {
            GameObject gameObject = global::Utils.SpawnPrefabAt(prefab, null, this.spawnPosition);

            gameObject.transform.localScale = new Vector3(this.x, this.y, this.z);
            gameObject.transform.rotation   = this.spawnRotation;
            gameObject.SetActive(true);
            gameObject.SendMessage("StartConstruction", 1);
            LargeWorldEntity.Register(gameObject);
            CrafterLogic.NotifyCraftEnd(gameObject, CraftData.GetTechType(gameObject));
        }
Esempio n. 8
0
 public static bool Prefix(ref SpawnConsoleCommand __instance, NotificationCenter.Notification n)
 {
     if (n != null && n.data != null && n.data.Count > 0)
     {
         string   text = (string)n.data[0];
         TechType techType;
         if (UWE.Utils.TryParseEnum <TechType>(text, out techType))
         {
             if (techType == TechType.Seamoth && n.data.Count <= 2)
             {
                 GameObject prefabForTechType = CraftData.GetPrefabForTechType(techType, true);
                 if (prefabForTechType != null)
                 {
                     int num = 1;
                     int num2;
                     if (n.data.Count > 1 && int.TryParse((string)n.data[1], out num2))
                     {
                         num = num2;
                     }
                     float maxDist = 12f;
                     if (n.data.Count > 2)
                     {
                         maxDist = float.Parse((string)n.data[2]);
                     }
                     Debug.LogFormat("Spawning {0} {1}", new object[]
                     {
                         num,
                         techType
                     });
                     for (int i = 0; i < num; i++)
                     {
                         GameObject gameObject = global::Utils.CreatePrefab(prefabForTechType, maxDist, i > 0);
                         LargeWorldEntity.Register(gameObject);
                         CrafterLogic.NotifyCraftEnd(gameObject, techType);
                         gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver);
                     }
                 }
                 return(false);
             }
             return(true);
         }
         else
         {
             return(true);
         }
     }
     return(true);
 }
Esempio n. 9
0
        public Optional <GameObject> Spawn(Entity entity, Optional <GameObject> parent, EntityCell cellRoot)
        {
            TechType       techType = entity.TechType.Enum();
            GameObject     prefab;
            IPrefabRequest prefabRequest = PrefabDatabase.GetPrefabAsync(entity.ClassId);

            if (!prefabRequest.TryGetPrefab(out prefab)) // I realize its more code but Sorry couldnt stand all the warnings
            {
                prefab = CraftData.GetPrefabForTechType(techType, false);
                if (prefab == null)
                {
                    return(Optional.Of(Utils.CreateGenericLoot(techType)));
                }
            }

            GameObject gameObject = Utils.SpawnFromPrefab(prefab, null);

            gameObject.transform.position   = entity.Transform.Position;
            gameObject.transform.rotation   = entity.Transform.Rotation;
            gameObject.transform.localScale = entity.Transform.LocalScale;

            NitroxEntity.SetNewId(gameObject, entity.Id);
            CrafterLogic.NotifyCraftEnd(gameObject, techType);

            if (parent.HasValue)
            {
                gameObject.transform.SetParent(parent.Value.transform, true);
            }

            if (parent.HasValue && !parent.Value.GetComponent <LargeWorldEntityCell>())
            {
                LargeWorldEntity.Register(gameObject); // This calls SetActive on the GameObject
            }
            else
            {
                gameObject.SetActive(true);
            }

            Optional <EntityMetadataProcessor> metadataProcessor = EntityMetadataProcessor.FromMetaData(entity.Metadata);

            if (metadataProcessor.HasValue)
            {
                metadataProcessor.Value.ProcessMetadata(gameObject, entity.Metadata);
            }

            return(Optional.Of(gameObject));
        }
Esempio n. 10
0
        private void SpawnEntity(Entity entity)
        {
            if (entity.TechType != TechType.None)
            {
                GameObject gameObject = CraftData.InstantiateFromPrefab(entity.TechType);
                gameObject.transform.position      = entity.Position;
                gameObject.transform.localRotation = entity.Rotation;
                GuidHelper.SetNewGuid(gameObject, entity.Guid);
                gameObject.SetActive(true);
                LargeWorldEntity.Register(gameObject);
                CrafterLogic.NotifyCraftEnd(gameObject, entity.TechType);

                Log.Debug("Received cell entity: " + entity.Guid + " at " + entity.Position + " of type " + entity.TechType);
            }

            alreadySpawnedGuids.Add(entity.Guid);
        }
Esempio n. 11
0
        private void Process(ClientItemDropped msg)
        {
            var gameObject = ObjectSerializer.GetGameObject(msg.data);

            gameObject.transform.position = msg.position;

            GuidHelper.Set(gameObject, msg.itemGuid);

            var waterParkObject = GuidHelper.Find(msg.waterParkGuid);

            if (waterParkObject != null)
            {
                var waterPark = waterParkObject.GetComponent <WaterPark>();
                if (waterPark != null)
                {
                    var pickupable = gameObject.GetComponent <Pickupable>();
                    if (pickupable != null)
                    {
                        waterPark.AddItem(pickupable);
                    }
                }
            }

            var rigidbody = gameObject.GetComponent <Rigidbody>();

            if (rigidbody != null)
            {
                rigidbody.isKinematic = false;
            }

            SyncedObject.ApplyTo(gameObject);

            var constructor = gameObject.GetComponent <Constructor>();

            if (constructor != null)
            {
                var method = typeof(Constructor).GetMethod("Deploy", BindingFlags.NonPublic | BindingFlags.Instance);
                method.Invoke(constructor, new object[] { true });
                constructor.OnDeployAnimationStart();
                LargeWorldEntity.Register(constructor.gameObject);

                Utils.PlayEnvSound(constructor.releaseSound, constructor.transform.position, 20f);
            }
        }
Esempio n. 12
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);
        }
Esempio n. 13
0
        public Optional <GameObject> Spawn(Entity entity, Optional <GameObject> parent)
        {
            GameObject prefabForTechType = CraftData.GetPrefabForTechType(entity.TechType, false);

            if (prefabForTechType == null && !PrefabDatabase.TryGetPrefab(entity.ClassId, out prefabForTechType))
            {
                return(Optional <GameObject> .Of(Utils.CreateGenericLoot(entity.TechType)));
            }

            GameObject gameObject = Utils.SpawnFromPrefab(prefabForTechType, null);

            gameObject.transform.position      = entity.Position;
            gameObject.transform.localRotation = entity.Rotation;
            GuidHelper.SetNewGuid(gameObject, entity.Guid);
            gameObject.SetActive(true);
            LargeWorldEntity.Register(gameObject);
            CrafterLogic.NotifyCraftEnd(gameObject, entity.TechType);

            return(Optional <GameObject> .Of(gameObject));
        }
Esempio n. 14
0
        public Optional <GameObject> Spawn(Entity entity, Optional <GameObject> parent, EntityCell cellRoot)
        {
            TechType techType = entity.TechType.ToUnity();

            GameObject gameObject = CreateGameObject(techType, entity.ClassId);

            gameObject.transform.position   = entity.Transform.Position.ToUnity();
            gameObject.transform.rotation   = entity.Transform.Rotation.ToUnity();
            gameObject.transform.localScale = entity.Transform.LocalScale.ToUnity();

            NitroxEntity.SetNewId(gameObject, entity.Id);
            CrafterLogic.NotifyCraftEnd(gameObject, techType);

            if (parent.HasValue && !parent.Value.GetComponent <LargeWorldEntityCell>())
            {
                LargeWorldEntity.Register(gameObject); // This calls SetActive on the GameObject
            }
            else if (gameObject.GetComponent <LargeWorldEntity>() != null && gameObject.transform.parent == null)
            {
                gameObject.transform.SetParent(cellRoot.liveRoot.transform, true);
                LargeWorldEntity.Register(gameObject);
            }
            else
            {
                gameObject.SetActive(true);
            }

            if (parent.HasValue)
            {
                gameObject.transform.SetParent(parent.Value.transform, true);
            }

            Optional <EntityMetadataProcessor> metadataProcessor = EntityMetadataProcessor.FromMetaData(entity.Metadata);

            if (metadataProcessor.HasValue)
            {
                metadataProcessor.Value.ProcessMetadata(gameObject, entity.Metadata);
            }

            return(Optional.Of(gameObject));
        }
Esempio n. 15
0
        public static void ConstructorCraft(ConstructorInput input, TechType tech)
        {
            if (!CrafterLogic.ConsumeResources(tech))
            {
                return;
            }

            uGUI.main.craftingMenu.Close(input);
            input.cinematicController.DisengageConstructor();

            Transform spawn    = input.constructor.GetItemSpawnPoint(tech);
            var       position = spawn.position;
            var       rotation = spawn.rotation;

            GameObject gameObject;

            if (tech == TechType.Cyclops)
            {
                SubConsoleCommand.main.SpawnSub("cyclops", position, rotation);
                gameObject = SubConsoleCommand.main.GetLastCreatedSub();
            }
            else
            {
                gameObject = CraftData.InstantiateFromPrefab(tech, false);
                Transform component = gameObject.GetComponent <Transform>();
                component.position = position;
                component.rotation = rotation;
            }

            LargeWorldEntity.Register(gameObject);
            gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver);
            CrafterLogic.NotifyCraftEnd(gameObject, CraftData.GetTechType(gameObject));
            Story.ItemGoalTracker.OnConstruct(tech);

            Commands.SendSpawn(gameObject, tech);
        }
Esempio n. 16
0
        private void DrawHostilesMenu()
        {
            if (reaper == null)
            {
                if (GUILayout.Button("Spawn Reaper"))
                {
                    GameObject prefabForTechType = CraftData.GetPrefabForTechType(TechType.ReaperLeviathan, true);
                    GameObject gameObject        = Utils.CreatePrefab(prefabForTechType);
                    LargeWorldEntity.Register(gameObject);
                    CrafterLogic.NotifyCraftEnd(gameObject, TechType.ReaperLeviathan);
                    gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver);
                    reaper = gameObject.GetComponentInChildren <ReaperLeviathan>();
                    gameObject.transform.position += 50f * gameObject.transform.forward;
                }
            }
            else
            {
                GUILayout.Space(10);

                if (GUILayout.Button("Reaper Components"))
                {
                    foreach (Component c in reaper.GetComponentsInChildren(typeof(Component)))
                    {
                        Log.Print("Component: " + c + " on go: " + c.gameObject.name);
                    }
                }

                if (GUILayout.Button("Delete Reaper"))
                {
                    Destroy(reaper.gameObject);
                }

                GUILayout.Space(10);
            }

            if (crabsquid == null)
            {
                if (GUILayout.Button("Spawn Crabsquid"))
                {
                    GameObject prefabForTechType = CraftData.GetPrefabForTechType(TechType.CrabSquid, true);
                    GameObject gameObject        = Utils.CreatePrefab(prefabForTechType);
                    LargeWorldEntity.Register(gameObject);
                    CrafterLogic.NotifyCraftEnd(gameObject, TechType.CrabSquid);
                    gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver);
                    crabsquid = gameObject.GetComponentInChildren <CrabSquid>();
                    gameObject.transform.position += 50f * gameObject.transform.forward;
                }
            }
            else
            {
                GUILayout.Space(10);

                if (GUILayout.Button("Crabsquid Components"))
                {
                    foreach (Component c in crabsquid.GetComponentsInChildren(typeof(Component)))
                    {
                        Log.Print("Component: " + c + " on go: " + c.gameObject.name);
                    }
                }

                if (GUILayout.Button("Delete Crabsquid"))
                {
                    Destroy(crabsquid.gameObject);
                }

                GUILayout.Space(10);
            }

            if (ghostlevi == null)
            {
                if (GUILayout.Button("Spawn Ghost Levi"))
                {
                    GameObject prefabForTechType = CraftData.GetPrefabForTechType(TechType.GhostLeviathan, true);
                    GameObject gameObject        = Utils.CreatePrefab(prefabForTechType);
                    LargeWorldEntity.Register(gameObject);
                    CrafterLogic.NotifyCraftEnd(gameObject, TechType.GhostLeviathan);
                    gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver);
                    ghostlevi = gameObject.GetComponentInChildren <GhostLeviathan>();
                    gameObject.transform.position += 50f * gameObject.transform.forward;
                }
            }
            else
            {
                GUILayout.Space(10);

                if (GUILayout.Button("Ghost Levi Components"))
                {
                    foreach (Component c in ghostlevi.GetComponentsInChildren(typeof(Component)))
                    {
                        Log.Print("Component: " + c + " on go: " + c.gameObject.name);
                    }
                }

                if (GUILayout.Button("Delete Ghost Levi"))
                {
                    Destroy(ghostlevi.gameObject);
                }

                GUILayout.Space(10);
            }

            if (seaDragon == null)
            {
                if (GUILayout.Button("Spawn Seadragon"))
                {
                    GameObject prefabForTechType = CraftData.GetPrefabForTechType(TechType.SeaDragon, true);
                    GameObject gameObject        = Utils.CreatePrefab(prefabForTechType);
                    LargeWorldEntity.Register(gameObject);
                    CrafterLogic.NotifyCraftEnd(gameObject, TechType.SeaDragon);
                    gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver);
                    seaDragon = gameObject.GetComponentInChildren <SeaDragon>();
                    gameObject.transform.position += 50f * gameObject.transform.forward;
                }
            }
            else
            {
                GUILayout.Space(10);

                if (GUILayout.Button("Seadragon Components"))
                {
                    foreach (Component c in seaDragon.GetComponentsInChildren(typeof(Component)))
                    {
                        Log.Print("Component: " + c + " on go: " + c.gameObject.name);
                    }
                }

                if (GUILayout.Button("Delete Seadragon"))
                {
                    Destroy(seaDragon.gameObject);
                }

                GUILayout.Space(10);
            }

            if (warper == null)
            {
                if (GUILayout.Button("Spawn warper"))
                {
                    GameObject prefabForTechType = CraftData.GetPrefabForTechType(TechType.Warper, true);
                    GameObject gameObject        = Utils.CreatePrefab(prefabForTechType);
                    LargeWorldEntity.Register(gameObject);
                    CrafterLogic.NotifyCraftEnd(gameObject, TechType.Warper);
                    gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver);
                    warper = gameObject.GetComponentInChildren <Warper>();
                    gameObject.transform.position += 50f * gameObject.transform.forward;
                }
            }
            else
            {
                GUILayout.Space(10);

                if (GUILayout.Button("Warper Components"))
                {
                    foreach (Component c in warper.GetComponentsInChildren(typeof(Component)))
                    {
                        Log.Print("Component: " + c + " on go: " + c.gameObject.name);
                    }
                }

                if (GUILayout.Button("Delete Warper"))
                {
                    Destroy(warper.gameObject);
                }

                GUILayout.Space(10);
            }
        }
Esempio n. 17
0
        private void DrawHostilesMenu()
        {
            if (reaper == null)
            {
                if (GUILayout.Button("Spawn Reaper"))
                {
                    GameObject prefabForTechType = CraftData.GetPrefabForTechType(TechType.ReaperLeviathan, true);
                    GameObject gameObject        = Utils.CreatePrefab(prefabForTechType);
                    LargeWorldEntity.Register(gameObject);
                    CrafterLogic.NotifyCraftEnd(gameObject, TechType.ReaperLeviathan);
                    gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver);
                    reaper = gameObject.GetComponentInChildren <ReaperLeviathan>();
                    gameObject.transform.position += 50f * gameObject.transform.forward;
                }
            }
            else
            {
                GUILayout.Space(10);

                if (GUILayout.Button("Reaper Components"))
                {
                    foreach (Component c in reaper.GetComponentsInChildren(typeof(Component)))
                    {
                        Log.Print("Component: " + c + " on go: " + c.gameObject.name);
                    }
                }

                if (GUILayout.Button("Delete Reaper"))
                {
                    Destroy(reaper.gameObject);
                }

                if (GUILayout.Button("AttackCyclops information"))
                {
                    AttackCyclops ac = reaper.GetComponent <AttackCyclops>();
                    Log.Print("LastTarget: " + ac.lastTarget);
                    Log.Print("aggressPerSecond: " + ac.aggressPerSecond);
                    Log.Print("attackAggressionThreshold: " + ac.attackAggressionThreshold);
                    Log.Print("attackPause: " + ac.attackPause);
                    Log.Print("maxDistToLeash: " + ac.maxDistToLeash);
                    Log.Print("swimVelocity: " + ac.swimVelocity);
                    Log.Print("swimInterval: " + ac.swimInterval);
                    Log.Print("aggressiveToNoise Falloff: " + ac.aggressiveToNoise.Falloff);
                    Log.Print("aggressiveToNoise Value: " + ac.aggressiveToNoise.Value);
                }

                GUILayout.Space(10);
            }

            if (crabsquid == null)
            {
                if (GUILayout.Button("Spawn Crabsquid"))
                {
                    GameObject prefabForTechType = CraftData.GetPrefabForTechType(TechType.CrabSquid, true);
                    GameObject gameObject        = Utils.CreatePrefab(prefabForTechType);
                    LargeWorldEntity.Register(gameObject);
                    CrafterLogic.NotifyCraftEnd(gameObject, TechType.CrabSquid);
                    gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver);
                    crabsquid = gameObject.GetComponentInChildren <CrabSquid>();
                    gameObject.transform.position += 50f * gameObject.transform.forward;
                }
            }
            else
            {
                GUILayout.Space(10);

                if (GUILayout.Button("Crabsquid Components"))
                {
                    foreach (Component c in crabsquid.GetComponentsInChildren(typeof(Component)))
                    {
                        Log.Print("Component: " + c + " on go: " + c.gameObject.name);
                    }
                }

                if (GUILayout.Button("Delete Crabsquid"))
                {
                    Destroy(crabsquid.gameObject);
                }

                GUILayout.Space(10);
            }

            if (ghostlevi == null)
            {
                if (GUILayout.Button("Spawn Ghost Levi"))
                {
                    GameObject prefabForTechType = CraftData.GetPrefabForTechType(TechType.GhostLeviathan, true);
                    GameObject gameObject        = Utils.CreatePrefab(prefabForTechType);
                    LargeWorldEntity.Register(gameObject);
                    CrafterLogic.NotifyCraftEnd(gameObject, TechType.GhostLeviathan);
                    gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver);
                    ghostlevi = gameObject.GetComponentInChildren <GhostLeviathan>();
                    gameObject.transform.position += 50f * gameObject.transform.forward;
                }
            }
            else
            {
                GUILayout.Space(10);

                if (GUILayout.Button("Ghost Levi Components"))
                {
                    foreach (Component c in ghostlevi.GetComponentsInChildren(typeof(Component)))
                    {
                        Log.Print("Component: " + c + " on go: " + c.gameObject.name);
                    }
                }

                if (GUILayout.Button("Delete Ghost Levi"))
                {
                    Destroy(ghostlevi.gameObject);
                }

                GUILayout.Space(10);
            }

            if (seaDragon == null)
            {
                if (GUILayout.Button("Spawn Seadragon"))
                {
                    GameObject prefabForTechType = CraftData.GetPrefabForTechType(TechType.SeaDragon, true);
                    GameObject gameObject        = Utils.CreatePrefab(prefabForTechType);
                    LargeWorldEntity.Register(gameObject);
                    CrafterLogic.NotifyCraftEnd(gameObject, TechType.SeaDragon);
                    gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver);
                    seaDragon = gameObject.GetComponentInChildren <SeaDragon>();
                    gameObject.transform.position += 50f * gameObject.transform.forward;
                }
            }
            else
            {
                GUILayout.Space(10);

                if (GUILayout.Button("Seadragon Components"))
                {
                    foreach (Component c in seaDragon.GetComponentsInChildren(typeof(Component)))
                    {
                        Log.Print("Component: " + c + " on go: " + c.gameObject.name);
                    }
                }

                if (GUILayout.Button("Delete Seadragon"))
                {
                    Destroy(seaDragon.gameObject);
                }

                GUILayout.Space(10);
            }

            if (warper == null)
            {
                if (GUILayout.Button("Spawn warper"))
                {
                    GameObject prefabForTechType = CraftData.GetPrefabForTechType(TechType.Warper, true);
                    GameObject gameObject        = Utils.CreatePrefab(prefabForTechType);
                    LargeWorldEntity.Register(gameObject);
                    CrafterLogic.NotifyCraftEnd(gameObject, TechType.Warper);
                    gameObject.SendMessage("StartConstruction", SendMessageOptions.DontRequireReceiver);
                    warper = gameObject.GetComponentInChildren <Warper>();
                    gameObject.transform.position += 50f * gameObject.transform.forward;
                }
            }
            else
            {
                GUILayout.Space(10);

                if (GUILayout.Button("Warper Components"))
                {
                    foreach (Component c in warper.GetComponentsInChildren(typeof(Component)))
                    {
                        Log.Print("Component: " + c + " on go: " + c.gameObject.name);
                    }
                }

                if (GUILayout.Button("Delete Warper"))
                {
                    Destroy(warper.gameObject);
                }

                GUILayout.Space(10);
            }
        }
        private IEnumerator SpawnTechType(NotificationCenter.Notification n, TechType techType)
        {
            CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(techType, false);

            yield return(task);

            GameObject prefabForTechType = task.GetResult();

            if (prefabForTechType != null)
            {
                this.x = 1f;
                this.y = 1f;
                this.z = 1f;
                int num  = 6;
                int num2 = 1;

                if (n.data.Count > 1)
                {
                    num2 = int.Parse((string)n.data[1]);
                }
                if (n.data.Count > 2)
                {
                    this.x = float.Parse((string)n.data[2]);
                }
                if (n.data.Count > 3)
                {
                    this.y = float.Parse((string)n.data[3]);
                }
                if (n.data.Count > 4)
                {
                    this.z = float.Parse((string)n.data[4]);
                }
                if (n.data.Count > 5)
                {
                    num = int.Parse((string)n.data[5]);
                }
                if (n.data.Count == 3)
                {
                    this.y = float.Parse((string)n.data[2]);
                    this.z = float.Parse((string)n.data[2]);
                }
                if (n.data.Count == 4)
                {
                    this.z = float.Parse((string)n.data[3]);
                }

                for (int i = 0; i < num2; i++)
                {
                    GameObject gameObject = global::Utils.CreatePrefab(prefabForTechType, (float)num, i > 0);
                    UWE.Utils.GetEntityRoot(gameObject).transform.localScale = new Vector3(this.x, this.y, this.z);
                    bool flag12 = gameObject.GetComponent <Creature>() != null;
                    if (flag12)
                    {
                        gameObject.AddComponent <mono>().Setsize(this.x, this.y, this.z);
                    }
                    LargeWorldEntity.Register(gameObject);
                    CrafterLogic.NotifyCraftEnd(gameObject, techType);
                    gameObject.SendMessage("StartConstruction", 1);
                }
            }
            else
            {
                ErrorMessage.AddDebug("Prefab not found for " + techType);
            }
            yield break;
        }