Inheritance: MonoBehaviour
Exemple #1
0
        public override GameObject GetGameObject()
        {
            if (PrefabDatabase.TryGetPrefabFilename(CraftData.GetClassIdForTechType(TechType.Seamoth), out string seamothFileName))
            {
                GameObject prefab     = Resources.Load <GameObject>(seamothFileName);
                GameObject gameObject = GameObject.Instantiate(prefab);
                prefab.SetActive(false);
                gameObject.SetActive(false);

                SeaMoth seaMoth = gameObject.GetComponent <SeaMoth>();

                SeamothCloneBehaviour seamothCloneBehaviour = gameObject.EnsureComponent <SeamothCloneBehaviour>();

                typeof(SeaMoth).GetFields(BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy | BindingFlags.Static).ForEach((x) => { try { x.SetValue(seamothCloneBehaviour, x.GetValue(seaMoth)); } catch { } });

                seamothCloneBehaviour.energyInterface = seaMoth.energyInterface;

                GameObject.DestroyImmediate(seaMoth);

                gameObject.SetActive(true);
                return(gameObject);
            }

            return(GameObject.CreatePrimitive(PrimitiveType.Cube));
        }
Exemple #2
0
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            IPrefabRequest request = PrefabDatabase.GetPrefabForFilenameAsync("WorldEntities/Alterra/DataBoxes/BeaconDataBox.prefab");

            yield return(request);

            request.TryGetPrefab(out GameObject prefab);

            GameObject obj = GameObject.Instantiate(prefab);

            obj.name = ClassID;
            obj.SetActive(false);

            obj.GetComponent <PrefabIdentifier>().classId = this.ClassID;

            BlueprintHandTarget blueprintHandTarget = obj.GetComponent <BlueprintHandTarget>();

            blueprintHandTarget.alreadyUnlockedTooltip = this.alreadyUnlockedTooltip;
            blueprintHandTarget.primaryTooltip         = this.primaryTooltip;
            blueprintHandTarget.secondaryTooltip       = this.secondaryTooltip;
            blueprintHandTarget.unlockTechType         = this.unlockTechType;

            obj.SetActive(true);

            gameObject.Set(obj);
        }
        private static float fActiveModeHealthRegenMultiplier    = 5f; // Health regeneration is multiplied by this amount in active mode


        protected void Start()
        {
            string RCFilename;

            if (thermalReactorCharge is null && PrefabDatabase.TryGetPrefabFilename(CraftData.GetClassIdForTechType(TechType.Exosuit), out RCFilename))
            {
                AddressablesUtility.LoadAsync <GameObject>(RCFilename).Completed += (x) =>
                {
                    GameObject gameObject1 = x.Result;
                    Exosuit    exosuit     = gameObject1?.GetComponent <Exosuit>();
                    thermalReactorCharge = exosuit?.thermalReactorCharge;
                };
            }

            if (sonarSound is null && PrefabDatabase.TryGetPrefabFilename(CraftData.GetClassIdForTechType(TechType.Seamoth), out RCFilename))
            {
                AddressablesUtility.LoadAsync <GameObject>(RCFilename).Completed += (x) =>
                {
                    GameObject gameObject1 = x.Result;
                    SeaMoth    seamoth     = gameObject1?.GetComponent <SeaMoth>();
                    if (seamoth?.sonarSound != null)
                    {
                        sonarSound = this.gameObject.AddComponent <FMOD_CustomEmitter>();
                        sonarSound.SetAsset(seamoth.sonarSound.asset);
                        sonarSound.UpdateEventAttributes();
                    }
                    foreach (var r in gameObject1.GetComponentsInChildren <Renderer>())
                    {
                    }
                };
            }
        }
    private void Populate()
    {
        Object[]       assets   = AssetDatabase.GetAllAssetPaths().Where(a => a.StartsWith("Assets/Resources/Props/")).Select(a => AssetDatabase.LoadAssetAtPath <GameObject>(a)).ToArray();
        PrefabDatabase database = target as PrefabDatabase;

        database.Prefabs.Clear();
        database.Labels.Clear();
        foreach (var asset in assets)
        {
            GameObject go = asset as GameObject;
            if (go != null)
            {
                string[]  lables = AssetDatabase.GetLabels(asset);
                string    path   = AssetDatabase.GetAssetPath(asset);
                WorldProp prop   = go.GetComponent <WorldProp>();
                if (prop != null)
                {
                    database.Prefabs.Add(new PrefabDatabase.PrefabEntry(prop.name, lables, AssetDatabase.AssetPathToGUID(path), path.Replace("Assets/Resources/", "").Replace("/" + prop.name + ".prefab", "")));
                    database.Labels.AddRange(lables.Where(l => !database.Labels.Contains(l)));
                }
            }
        }
        EditorUtility.SetDirty(target);
        AssetDatabase.SaveAssets();
    }
        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));
        }
        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));
        }
        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));
        }
Exemple #8
0
        /// <summary>
        /// It will perform all necessary steps to serialize and save all configs from the entities on the current project
        /// </summary>
        private static void Save()
        {
            var prefabList = GetPrefabListFromBolt();

            if (prefabList != null && prefabList.Count != 0)
            {
                var updateList = new List <UpdateItem>();

                foreach (var prefabID in prefabList)
                {
                    var go = PrefabDatabase.Find(prefabID);

                    if (go != null)
                    {
                        var updateItem = BuildUpdateItem(go);
                        if (updateItem != null)
                        {
                            updateList.Add(updateItem);
                        }
                    }
                }

                JsonSerializerUpdateUtils.SaveData(updateList, SerializedDataPath);

                BoltLog.Info("Save DONE!");
            }
            else
            {
                BoltLog.Warn("No prefabs found to be serialized");
            }
        }
Exemple #9
0
        // Token: 0x06002BB7 RID: 11191 RVA: 0x00104FDC File Offset: 0x001031DC
        private static void CreatePowerPreview(TechType constructableTechType, GameObject ghostModel)
        {
            GameObject gameObject        = null;
            string     poweredPrefabName = CraftData.GetPoweredPrefabName(constructableTechType);

            if (poweredPrefabName != string.Empty)
            {
                gameObject = PrefabDatabase.GetPrefabForFilename(poweredPrefabName);
            }

            if (gameObject != null)
            {
                PowerRelay component = gameObject.GetComponent <PowerRelay>();
                if (component.powerFX != null && component.powerFX.attachPoint != null)
                {
                    PowerFX powerFX = ghostModel.AddComponent <PowerFX>();
                    powerFX.attachPoint = new GameObject
                    {
                        transform =
                        {
                            parent        = ghostModel.transform,
                            localPosition = component.powerFX.attachPoint.localPosition
                        }
                    }.transform;
                }

                PowerRelay powerRelay = ghostModel.AddComponent <PowerRelay>();
                powerRelay.maxOutboundDistance = component.maxOutboundDistance;
                powerRelay.dontConnectToRelays = component.dontConnectToRelays;
                if (component.internalPowerSource != null)
                {
                    powerRelay.internalPowerSource = ghostModel.AddComponent <PowerSource>();
                }
            }
        }
 public static void Postfix()
 {
     foreach (var prefab in CustomPrefabHandler.customPrefabs)
     {
         PrefabDatabase.AddToCache(prefab.PrefabFileName, prefab.GetResource() as GameObject);
         PrefabDatabase.prefabFiles[prefab.ClassID] = prefab.PrefabFileName;
     }
 }
        public static void PreparePrefabDatabase()
        {
            var originPrefabFiles = PrefabDatabase.prefabFiles;

            if (originPrefabFiles.Count == 0)
            {
                PrefabDatabase.LoadPrefabDatabase(SNUtils.prefabDatabaseFilename);
            }
        }
        public void SpawnNetworkTechType(TechType type, Vector3 position, Quaternion rotation)
        {
            string classId = ClassIDForTechType[type];

            if (PrefabDatabase.TryGetPrefabFilename(classId, out string filename))
            {
                GameObject go = PhotonNetwork.Instantiate(filename, position, rotation, 0);
            }
        }
 public static void PostFix()
 {
     foreach (var v in customPrefabs)
     {
         Debug.Log("Patching Custom Resource " + v.Path + " " + v.Key);
         PrefabDatabase.AddToCache(v.Path, v.LoadResource() as GameObject);
         PrefabDatabase.prefabFiles[v.Key] = v.Path;
     }
 }
    void DrawPrefabInfo(AscensionEntity entity)
    {
        PrefabType prefabType = PrefabUtility.GetPrefabType(entity.gameObject);

#if DEBUG
        EditorGUILayout.LabelField("Type", prefabType.ToString());
        EditorGUILayout.LabelField("Scene Id", entity.SceneGuid.ToString());
#endif

        switch (prefabType)
        {
        case PrefabType.Prefab:
        case PrefabType.PrefabInstance:
            EditorGUILayout.LabelField("Id", entity.prefabId.ToString());

            if (entity.prefabId < 0)
            {
                EditorGUILayout.HelpBox("Prefab id not set, run the 'Ascension/Emit Code' menu option to correct", MessageType.Error);
            }

            if (prefabType == PrefabType.Prefab)
            {
                if (PrefabDatabase.Contains(entity) == false)
                {
                    EditorGUILayout.HelpBox("Prefab lookup not valid, run the 'Ascension/Emit Code' menu option to correct", MessageType.Error);
                }
            }
            break;

        case PrefabType.None:
            if (entity.prefabId != 0)
            {
                // force 0 prefab id
                entity.prefabId = 0;

                // set dirty
                EditorUtility.SetDirty(this);
            }

            DEditorGUI.Disabled(() =>
            {
                EditorGUILayout.IntField("Prefab Id", entity.prefabId);
            });

            break;

        case PrefabType.DisconnectedPrefabInstance:
            entity.prefabId = EditorGUILayout.IntField("Prefab Id", entity.prefabId);

            if (entity.prefabId < 0)
            {
                EditorGUILayout.HelpBox("Prefab Id not set", MessageType.Error);
            }
            break;
        }
    }
Exemple #15
0
        public void spawnresource(string prefab)
        {
            // if parameter is prefabID
            if (PrefabDatabase.TryGetPrefabFilename(prefab, out string prefabPath))
            {
                prefab = prefabPath;
            }

            Utils.CreatePrefab(Resources.Load <GameObject>(prefab));
        }
Exemple #16
0
 public static void FixPrefabDB()
 {
     Debug.Log("[UM4SN] Fixing prefab database");
     foreach (KeyValuePair <string, GameObject> kvp in customTechGameObjects)
     {
         PrefabDatabase.AddToCache(kvp.Key, kvp.Value);
     }
     foreach (KeyValuePair <string, string> kvp in customTechUuids)
     {
         PrefabDatabase.prefabFiles[kvp.Key] = kvp.Value;
     }
 }
Exemple #17
0
        public override GameObject GetGameObject()
        {
            string classid = CraftData.GetClassIdForTechType(TechType.VehicleArmorPlating);

            if (PrefabDatabase.TryGetPrefabFilename(classid, out string filename))
            {
                var prefab = Resources.Load <GameObject>(filename);
                var obj    = GameObject.Instantiate(prefab);

                // Get the TechTags and PrefabIdentifiers
                var techTag          = obj.EnsureComponent <TechTag>();
                var prefabIdentifier = obj.GetComponent <PrefabIdentifier>();

                // Change them so they fit to our requirements.
                techTag.type             = TechType;
                prefabIdentifier.ClassId = ClassID;

                return(obj);
            }
            return(null);

            /*
             * // Get the ElectricalDefense module prefab and instantiate it
             * var path = "WorldEntities/Tools/Compass";
             * var prefab = Resources.Load<GameObject>(path);
             * var obj = GameObject.Instantiate(prefab);
             *
             * // Get the TechTags and PrefabIdentifiers
             * var techTag = obj.GetComponent<TechTag>();
             * var prefabIdentifier = obj.GetComponent<PrefabIdentifier>();
             *
             * // Change them so they fit to our requirements.
             * techTag.type = TechType;
             * prefabIdentifier.ClassId = ClassID;
             *
             * var pick = obj.GetComponent<Pickupable>();
             * if (pick == null)
             * {
             *  CattleLogger.Message("Pickupable is Null");
             * } else
             * {
             *  if (pick.AllowedToPickUp())
             *  {
             *      CattleLogger.Message("Allowed to pick up");
             *  } else
             *  {
             *      CattleLogger.Message("NOT Allowed to pick up");
             *  }
             * }
             *
             * return obj;
             */
        }
Exemple #18
0
        private IEnumerator LoadExosuitResourcesAsync()
        {
            IPrefabRequest request = PrefabDatabase.GetPrefabForFilenameAsync("WorldEntities/Tools/Exosuit.prefab");

            yield return(request);

            if (!request.TryGetPrefab(out GameObject prefab))
            {
                BZLogger.Debug("Cannot load Exosuit prefab!");
                yield break;
            }

            BZLogger.Debug("Exosuit prefab loaded!");

            GameObject exosuitResource = UWE.Utils.InstantiateDeactivated(prefab, transform, Vector3.zero, Quaternion.identity);

            exosuitResource.GetComponent <Exosuit>().enabled       = false;
            exosuitResource.GetComponent <Rigidbody>().isKinematic = true;
            exosuitResource.GetComponent <WorldForces>().enabled   = false;
            UWE.Utils.ZeroTransform(exosuitResource.transform);

            GameObject exoStorage = objectHelper.FindDeepChild(exosuitResource.transform, "Exosuit_01_storage");

            objectHelper.GetPrefabClone(ref exoStorage, StorageLeft.transform, true, "model", out GameObject leftStorageModel);
            leftStorageModel.SetActive(false);

            objectHelper.GetPrefabClone(ref leftStorageModel, StorageRight.transform, true, "model", out GameObject rightStorageModel);
            rightStorageModel.SetActive(false);

            BoxCollider colliderLeft = StorageLeft.AddComponent <BoxCollider>();

            colliderLeft.enabled = false;
            colliderLeft.size    = new Vector3(1.0f, 0.4f, 0.8f);

            BoxCollider colliderRight = StorageRight.AddComponent <BoxCollider>();

            colliderRight.enabled = false;
            colliderRight.size    = new Vector3(1.0f, 0.4f, 0.8f);

            ColorizationHelper.AddRendererToSkyApplier(gameObject, leftStorageModel, Skies.Auto);
            ColorizationHelper.AddRendererToColorCustomizer(gameObject, leftStorageModel, false, new int[] { 0 });

            ColorizationHelper.AddRendererToColorCustomizer(gameObject, rightStorageModel, false, new int[] { 0 });
            ColorizationHelper.AddRendererToSkyApplier(gameObject, rightStorageModel, Skies.Auto);

            Destroy(exosuitResource);

            isGraphicsReady = true;

            yield break;
        }
        private IEnumerator FinalSetup()
        {
            IPrefabRequest request = PrefabDatabase.GetPrefabForFilenameAsync("Submarine/Build/SmallLocker.prefab");

            yield return(request);

            request.TryGetPrefab(out GameObject prefab);
            lockerPrefab   = prefab;
            bPrefabsLoaded = true;

            CreatePicker();
            CreateCustomizeScreen();

            yield break;
        }
        protected void Start()
        {
#pragma warning disable CS0612 // Type or member is obsolete
            if (repulsionCannonFireSound is null && PrefabDatabase.TryGetPrefabFilename(CraftData.GetClassIdForTechType(TechType.RepulsionCannon), out var RCFilename))
            {
                AddressablesUtility.LoadAsync <GameObject>(RCFilename).Completed += (x) =>
                {
                    var gameObject1 = x.Result;
                    var component   = gameObject1?.GetComponent <RepulsionCannon>();
                    repulsionCannonFireSound = component?.shootSound;
                };
            }

            if ((stasisRifleFireSound is null || stasisRifleEvent is null) && PrefabDatabase.TryGetPrefabFilename(CraftData.GetClassIdForTechType(TechType.StasisRifle), out var SRFilename))
            {
                AddressablesUtility.LoadAsync <GameObject>(SRFilename).Completed += (x) =>
                {
                    var gameObject2 = x.Result;
                    var component2  = gameObject2?.GetComponent <StasisRifle>();
                    stasisRifleFireSound = component2?.fireSound;
                    stasisRifleEvent     = component2?.chargeBegin;
                };
            }

            if (modeChangeSound is null && PrefabDatabase.TryGetPrefabFilename(CraftData.GetClassIdForTechType(TechType.PropulsionCannon), out var PCFilename))
            {
                AddressablesUtility.LoadAsync <GameObject>(PCFilename).Completed += (x) =>
                {
                    var gameObject3 = x.Result;
                    var component3  = gameObject3?.GetComponent <PropulsionCannon>();
                    modeChangeSound = component3?.shootSound;
                };
            }

            if (laserShootSound is null && PrefabDatabase.TryGetPrefabFilename(CraftData.GetClassIdForTechType(TechType.Welder), out var WFilename))
            {
                AddressablesUtility.LoadAsync <GameObject>(WFilename).Completed += (x) =>
                {
                    var gameObject4 = x.Result;
                    var component4  = gameObject4?.GetComponent <Welder>();
                    laserShootSound = component4?.weldSound;
                };
            }
#pragma warning restore CS0612 // Type or member is obsolete

            laserEndParticleSystem = LaserParticles.transform.Find("Laserend").gameObject.GetComponent <ParticleSystem>();
            scaleParticleSystem    = LaserParticles.transform.Find("scale").GetComponent <ParticleSystem>();
        }
Exemple #21
0
        private GameObject CreateGameObject(TechType techType, string classId)
        {
            IPrefabRequest prefabRequest = PrefabDatabase.GetPrefabAsync(classId);

            if (!prefabRequest.TryGetPrefab(out GameObject prefab))
            {
                prefab = CraftData.GetPrefabForTechType(techType, false);

                if (prefab == null)
                {
                    return(Utils.CreateGenericLoot(techType));
                }
            }

            return(Utils.SpawnFromPrefab(prefab, null));
        }
Exemple #22
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));
        }
    void Footer()
    {
        GUILayout.BeginHorizontal();

        //var version = Assembly.GetExecutingAssembly().GetName().Version;

        GUILayout.Label(string.Format("{0} ({1})", version, Core.IsDebugMode ? "DEBUG" : "RELEASE"), EditorStyles.miniLabel);

        GUILayout.FlexibleSpace();

        PrefabDatabase db = PrefabDatabase.Instance;

        if (db.DatabaseMode == PrefabDatabaseMode.ManualScan)
        {
            if (DEditorGUI.IconButton("refresh"))
            {
                AscensionCompiler.UpdatePrefabsDatabase();
                Debug.Log("Upading prefab database...");
            }

            GUILayout.Space(8);
        }

        if (DEditorGUI.IconButton("code-emit"))
        {
            if (RuntimeSettings.Instance.compileAsDll)
            {
                AscensionDataAssemblyCompiler.Run();
            }
            else
            {
                AscensionDataAssemblyCompiler.CodeEmit();
            }

            Debug.Log("Compiling project... " + ProjectPath);
        }

        GUILayout.Space(8);

        if (DEditorGUI.IconButton("save-project"))
        {
            Save();
            Debug.Log("Saving project... " + ProjectPath);
        }

        GUILayout.EndHorizontal();
    }
Exemple #24
0
    private void GenerateViewsByInfo <TModel>(Transform parent, PrefabDatabase infos, IEnumerable <TModel> models, Action <BaseView> created = null) where TModel : class
    {
        foreach (var m in models)
        {
            var prefab = infos[m.GetType().AssemblyQualifiedName];
            if (prefab != null)
            {
                var inst = Instantiate(prefab);
                inst.transform.SetParent(parent);

                var view = inst.GetComponentInChildren <BaseView>();
                view.Load(m, this);

                created?.Invoke(view);
            }
        }
    }
        protected void Start()
        {
            if (repulsionCannonFireSound is null)
            {
                if (PrefabDatabase.TryGetPrefabFilename(CraftData.GetClassIdForTechType(TechType.RepulsionCannon), out var RCFilename))
                {
                    var gameObject1 = Resources.Load <GameObject>(RCFilename);
                    var component   = gameObject1.GetComponent <RepulsionCannon>();
                    repulsionCannonFireSound = component.shootSound;
                    gameObject1.SetActive(false);
                }

                if (PrefabDatabase.TryGetPrefabFilename(CraftData.GetClassIdForTechType(TechType.StasisRifle), out var SRFilename))
                {
                    var gameObject2 = Resources.Load <GameObject>(SRFilename);
                    var component2  = gameObject2.GetComponent <StasisRifle>();
                    stasisRifleFireSound = component2.fireSound;
                    stasisRifleEvent     = component2.chargeBegin;
                    gameObject2.SetActive(false);
                }

                if (PrefabDatabase.TryGetPrefabFilename(CraftData.GetClassIdForTechType(TechType.PropulsionCannon), out var PCFilename))
                {
                    var gameObject3 = Resources.Load <GameObject>(PCFilename);
                    var component3  = gameObject3.GetComponent <PropulsionCannon>();
                    modeChangeSound = component3.shootSound;
                    gameObject3.SetActive(false);
                }

                if (PrefabDatabase.TryGetPrefabFilename(CraftData.GetClassIdForTechType(TechType.Welder), out var WFilename))
                {
                    var gameObject4 = Resources.Load <GameObject>(WFilename);
                    var component4  = gameObject4.GetComponent <Welder>();
                    laserShootSound = component4.weldSound;
                    gameObject4.SetActive(false);
                }

                Transform transform1;
                laserEndParticleSystem = LaserParticles.transform.Find("Laserend").gameObject.GetComponent <ParticleSystem>();
                scaleParticleSystem    = LaserParticles.transform.Find("scale").GetComponent <ParticleSystem>();
            }
            else
            {
                rigidbody.detectCollisions = true;
            }
        }
Exemple #26
0
        private IEnumerator LoadBiodomeRobotArmResourcesAsync()
        {
            IPrefabRequest request = PrefabDatabase.GetPrefabForFilenameAsync("WorldEntities/Alterra/Base/biodome_Robot_Arm.prefab");

            yield return(request);

            if (!request.TryGetPrefab(out robotArmResource))
            {
                BZLogger.Warn("Cannot load [biodome_robot_arm] prefab!");
                yield break;
            }

            BZLogger.Debug("Resource loaded: [biodome_robot_arm]");

            Utils.ZeroTransform(robotArmResource.transform);

            yield break;
        }
        private static void CreateButtonPrefab()
        {
            GameObject prefab  = null;
            string     classId = CraftData.GetClassIdForTechType(TechType.SmallLocker);

            string logtmp = ("InLine CreateButton Prefab - MrPurple6411 way - " + classId);

            QModManager.Utility.Logger.Log(QModManager.Utility.Logger.Level.Warn, logtmp);

            string filename;

            if (PrefabDatabase.TryGetPrefabFilename(classId, out filename))
            {
                QModManager.Utility.Logger.Log(QModManager.Utility.Logger.Level.Warn, "InLine CreateButton Prefab - MrPurple6411 way - trygetprefabfilename");
                prefab = Resources.Load <GameObject>(filename);
                Mod.PrintObject(prefab, "asdf1234");
            }
            else
            {
                QModManager.Utility.Logger.Log(QModManager.Utility.Logger.Level.Warn, "InLine CreateButton Prefab - MrPurple6411 way - bad 1");
            }

            if (prefab != null)
            {
                /*
                 *                              GameObject smallLocker = Resources.Load<GameObject>("Submarine/Build/SmallLocker.prefab");
                 *                              //QModManager.Utility.Logger.Log(QModManager.Utility.Logger.Level.Warn, "InLine CreateButton Prefab - DEV Step 02");
                 *                                      //Mod.PrintObject(smallLocker, "asdf1234"); //Thats the Problem for the Null Reference Error
                 *                              QModManager.Utility.Logger.Log(QModManager.Utility.Logger.Level.Warn, "InLine CreateButton Prefab - DEV Step 02-01");
                 */

                var signInput = prefab.GetComponentInChildren <uGUI_SignInput>();
                var original  = signInput.transform.GetChild(1).gameObject.GetComponent <Button>();
                buttonPrefab = GameObject.Instantiate(original);
                var go = buttonPrefab.gameObject;
                GameObject.DestroyImmediate(buttonPrefab);
                buttonPrefab               = go.AddComponent <Button>();
                buttonPrefab.transition    = original.transition;
                buttonPrefab.targetGraphic = go.GetComponentInChildren <Image>();
                buttonPrefab.colors        = original.colors;
                go.SetActive(true);
            }
        }
        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));
        }
Exemple #29
0
        private GameObject CreateGameObject(TechType techType, string classId)
        {
            GameObject prefab = null;

            if (PrefabDatabase.TryGetPrefabFilename(classId, out string filename))
            {
                prefab = Resources.Load <GameObject>(filename);
            }

            if (prefab == null)
            {
                prefab = CraftData.GetPrefabForTechType(techType, false);
                if (prefab == null)
                {
                    return(Utils.CreateGenericLoot(techType));
                }
            }

            return(Utils.SpawnFromPrefab(prefab, null));
        }
Exemple #30
0
        private IEnumerator LoadExosuitResourcesAsync()
        {
            IPrefabRequest request = PrefabDatabase.GetPrefabForFilenameAsync("WorldEntities/Tools/Exosuit.prefab");

            yield return(request);

            if (!request.TryGetPrefab(out GameObject prefab))
            {
                BZLogger.Warn("API message: Cannot load [Exosuit] prefab!");
                yield break;
            }

            exosuitResource = UWE.Utils.InstantiateDeactivated(prefab, GraphicsRoot.transform, Vector3.zero, Quaternion.identity);

            exosuitResource.GetComponent <Exosuit>().enabled       = false;
            exosuitResource.GetComponent <Rigidbody>().isKinematic = true;
            exosuitResource.GetComponent <WorldForces>().enabled   = false;
            UWE.Utils.ZeroTransform(exosuitResource.transform);

            yield break;
        }
 public void gen_rand_forinfo(ref PrefabDatabase.PrefabInfo info)
 {
     if (!info.use_global_rand){
         list_rands.Add(new Random_help(info.scale_seed));
         info.rand_index     = list_rands.Count - 1;
         info.first_rand     = list_rands[info.rand_index].Next_Gaussian(info.dynamic_scale, info.scale_var);
     }
 }
 private void Awake()
 {
     _Instance = this;
 }