示例#1
0
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            GameObject go;

            if (processedPrefab != null)
            {
                go = GameObject.Instantiate(processedPrefab);
                go.SetActive(true);
                gameObject.Set(go);
                yield break;
            }

            CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(TypeToClone);

            yield return(task);

            GameObject prefab = task.GetResult();

            if (prefab != null)
            {
                processedPrefab = GameObject.Instantiate(prefab);
                processedPrefab.SetActive(false);
            }

            go = GameObject.Instantiate(processedPrefab);
            go.SetActive(true);
            gameObject.Set(go);
            yield break;
        }
示例#2
0
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            Stillsuit s;

            if (prefab == null)
            {
                CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(TechType.ColdSuit, verbose: true);
                yield return(task);

                prefab = task.GetResult();
                //prefab.SetActive(false); // Keep the prefab inactive until we're done editing it.

                // Editing prefab
                if (prefab.TryGetComponent <Stillsuit>(out s))
                {
                    GameObject.DestroyImmediate(s);
                }
                prefab.EnsureComponent <SurvivalsuitBehaviour>();

                ModPrefabCache.AddPrefab(prefab, false); // This doesn't actually do any caching, but it does disable the prefab without "disabling" it - the prefab doesn't show up in the world [as with SetActive(false)]
                                                         // but it can still be instantiated. [unlike with SetActive(false)]
            }

            // Despite the component being removed from the prefab above, testing shows that the Survival Suits still add the water packs when they should.
            // So we're going to force-remove it here, to be safe.
            GameObject go = GameObject.Instantiate(prefab);

            if (go.TryGetComponent <Stillsuit>(out s))
            {
                GameObject.DestroyImmediate(s);
            }
            gameObject.Set(go);
        }
示例#3
0
文件: ModelT.cs 项目: 0rps/model_git
 public ProcessBlock(AbsTimeGenerator _timeGenerator, IOut _queue, IIn _nextBlock)
 {
     m_isRequestHere = false;
     m_timeGenerator = _timeGenerator;
     m_queue = _queue;
     m_nextBlock = _nextBlock;
 }
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            GameObject go;

            if (processedPrefab != null)
            {
                go = GameObject.Instantiate(processedPrefab);
                go.SetActive(true);
                gameObject.Set(go);
                yield break;
            }

            GameObject prefab = Utils.CreateGenericLoot(this.TechType);

            if (prefab != null)
            {
                processedPrefab = GameObject.Instantiate(prefab);
                processedPrefab.SetActive(false);
            }

            go = GameObject.Instantiate(processedPrefab);
            go.SetActive(true);
            gameObject.Set(go);
            yield break;
        }
        /// <summary>
        /// INTERNAL ARM SPAWNING METHOD, DON'T OVERRIDE! Use ModifyGameObject() instead!
        /// Initializes the visual appearance of the arm in the open world or in the inventory.
        /// </summary>
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            CoroutineTask <GameObject> request = CraftData.GetPrefabForTechTypeAsync(PrefabForClone);

            yield return(request);

            GameObject result = request.GetResult();

            if (result == null)
            {
                BZLogger.Warn("API message: Cannot instantiate prefab from TechType!");
                yield break;
            }

            PrefabClone = Object.Instantiate(result);

            PrefabClone.name = TechTypeName;

            if (ArmTemplate == ArmTemplate.ClawArm)
            {
                OverrideClawArm();
            }

            PrefabClone.transform.localScale = new Vector3(0.8f, 0.8f, 0.8f);

            PostModify();

            gameObject.Set(PrefabClone);

            yield break;
        }
        private IEnumerator ChooseRandomResourceAsync(IOut <GameObject> result)
        {
            for (int i = 0; i < drillable.resources.Length; i++)
            {
                Drillable.ResourceType resourceType = drillable.resources[i];

                if (resourceType.chance >= 1f)
                {
                    CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(resourceType.techType, true);
                    yield return(task);

                    result.Set(task.GetResult());
                    break;
                }
                if (Player.main.gameObject.GetComponent <PlayerEntropy>().CheckChance(resourceType.techType, resourceType.chance))
                {
                    CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(resourceType.techType, true);
                    yield return(task);

                    result.Set(task.GetResult());
                    break;
                }
            }
            yield break;
        }
            public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
            {
                //Logger.Log("AutosortStandingTargetBuildable.GetGameObjectAsync: 1");

                TaskResult <GameObject> result = new TaskResult <GameObject>();

                yield return(GetPrefabAsync(TechType.Locker, result));

                //Logger.Log("AutosortStandingTargetBuildable.GetGameObjectAsync: 2");

                GameObject basePrefab = result.Get();
                GameObject prefab     = GameObject.Instantiate(basePrefab);

                //Logger.Log("AutosortStandingTargetBuildable.GetGameObjectAsync: 3");
                StorageContainer container = prefab.GetComponent <StorageContainer>();

                //Logger.Log("AutosortStandingTargetBuildable.GetGameObjectAsync: 3.1");
                container.width = Mod.config.StandingReceptacleWidth;
                //Logger.Log("AutosortStandingTargetBuildable.GetGameObjectAsync: 3.2");
                container.height = Mod.config.StandingReceptacleHeight;
                //Logger.Log("AutosortStandingTargetBuildable.GetGameObjectAsync: 3.3, container.container " + (container.container == null ? "is" : "is not") + " null");
                container.Resize(Mod.config.StandingReceptacleWidth, Mod.config.StandingReceptacleHeight);

                //Logger.Log("AutosortStandingTargetBuildable.GetGameObjectAsync: 4");
                gameObject.Set(prefab);
                yield break;
            }
示例#8
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);
        }
示例#9
0
        protected IEnumerator AddInventoryAsync(TechType techType, IOut <GameObject> result = null)
        {
#if SUBNAUTICA_STABLE
            GameObject go = CraftData.InstantiateFromPrefab(techType, false);
#elif BELOWZERO
            TaskResult <GameObject> instResult = new TaskResult <GameObject>();
            yield return(CraftData.InstantiateFromPrefabAsync(techType, instResult, false));

            GameObject go = instResult.Get();
#endif
            Pickupable component = go?.GetComponent <Pickupable>();
            if (component != null)
            {
                Inventory.main.ForcePickup(component);
            }
            else
            {
                Log.LogError($"DiverPerimeterDefenceBehaviour.AddInventoryAsync(): Failed to instantiate inventory item for TechType {techType.AsString()}");
            }

            if (result != null)
            {
                result.Set(go);
            }
            yield break;
        }
示例#10
0
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(this.PrefabType);

            yield return(task);

            gameObject.Set(ModifyPrefab(task.GetResult()));
        }
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(TechType.ReinforcedDiveSuit);

            yield return(task);

            gameObject.Set(task.GetResult());
        }
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(TechType.ReinforcedGloves);

            yield return(task);

            gameObject.Set(ModifyAndInstantiateGameObject(task.GetResult()));
        }
示例#13
0
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            CoroutineTask <GameObject> task;
            Oxygen oxy;

            if (prefab == null)
            {
                Log.LogDebug($"HighCapacityBooster.GetGameObjectAsync: getting SuitBoosterTank prefab");
                task = CraftData.GetPrefabForTechTypeAsync(TechType.SuitBoosterTank, verbose: true);
                yield return(task);

                prefab = GameObject.Instantiate(task.GetResult());
                ModPrefabCache.AddPrefab(prefab, false); // This doesn't actually do any caching, but it does disable the prefab without "disabling" it - the prefab doesn't show up in the world [as with SetActive(false)] but it can still be instantiated.
                //HighCapacityBooster.prefab = prefab;
            }

            if (highCapTank == null)
            {
                Log.LogDebug($"HighCapacityBooster.GetGameObjectAsync: getting HighCapacityTank prefab");
                task = CraftData.GetPrefabForTechTypeAsync(TechType.HighCapacityTank, verbose: true);
                yield return(task);

                highCapTank = GameObject.Instantiate(task.GetResult()); // The "capacity expansion" code in Customise Your Oxygen can't run unless the thing is instantiated. The prefabs can't be altered.
                                                                        // So unless we instantiate, we only get default capacities.
                ModPrefabCache.AddPrefab(highCapTank, false);           // This doesn't actually do any caching, but it does disable the prefab without "disabling" it - the prefab doesn't show up in the world [as with SetActive(false)] but it can still be instantiated.
            }

            GameObject go            = GameObject.Instantiate(prefab);
            Oxygen     highCapOxygen = highCapTank.GetComponent <Oxygen>();

            //Oxygen highCapOxygen = task.GetResult().GetComponent<Oxygen>();
            if (highCapOxygen != null)
            {
                oxy = go.EnsureComponent <Oxygen>();
                if (oxy != null)
                {
                    float oxygenCapacity = highCapOxygen.oxygenCapacity;
                    Log.LogDebug($"Found Oxygen component with capacity of {oxygenCapacity} for prefab HighCapacityTank and existing oxygen capacity of {oxy.oxygenCapacity} for prefab HighCapacityBooster.");
                    oxy.oxygenCapacity = oxygenCapacity;
                }
                else
                {
                    Log.LogError($"Could not get Oxygen component of SuitBoosterTank while generating HighCapacityBooster");
                }

                GameObject.Destroy(highCapOxygen);
            }
            else
            {
                Log.LogError($"Could not get Oxygen component of HighCapacityTank while generating HighCapacityBooster");
            }

            float oxyCap = prefab.GetComponent <Oxygen>().oxygenCapacity;

            Log.LogDebug($"GameObject created with oxygenCapacity of {oxyCap}");
            gameObject.Set(go);
        }
示例#14
0
        public static IEnumerator getPrefabCopyAsync(TechType techType, IOut <GameObject> result, CopyOptions options = CopyOptions.Default)
        {
            $"PrefabUtils: getPrefabCopyAsync(TechType.{techType})".logDbg();
            TaskResult <GameObject> prefabResult = new();

            yield return(CraftData.GetPrefabForTechTypeAsync(techType, false, prefabResult));

            result.Set(_instantiate(prefabResult.Get(), options));
        }
示例#15
0
        public static IEnumerator getPrefabCopyAsync(string filename, IOut <GameObject> result, CopyOptions options = CopyOptions.Default)
        {
            $"PrefabUtils: getPrefabCopyAsync(\"{filename}\")".logDbg();
            TaskResult <GameObject> prefabResult = new();

            yield return(getPrefabAsync(filename, prefabResult));

            result.Set(_instantiate(prefabResult.Get(), options));
        }
示例#16
0
        /// <summary>
        /// Sets the SQL parameter value.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="parameter">The parameter.</param>
        /// <param name="value">The value.</param>
        /// <param name="mode">The mode.</param>
        /// <exception cref="ArgumentNullException"><paramref name="parameter"/> is <see langword="null" />.</exception>
        /// <exception cref="DatabaseSchemaException"><para>The type <typeparamref name="T" /> is invalid for the <see cref="Direction" />.</para>
        /// <para>-or-</para>
        /// <para>The type <typeparamref name="T" /> was unsupported.</para>
        /// <para>-or-</para>
        /// <para>A fatal error occurred.</para>
        /// <para>-or-</para>
        /// <para>The object exceeded the SQL type's maximum <see cref="SqlTypeSize">size</see>.</para>
        /// <para>-or-</para>
        /// <para>The serialized object was truncated.</para>
        /// <para>-or-</para>
        /// <para>Unicode characters were found and only ASCII characters are supported in the SQL type.</para>
        /// <para>-or-</para>
        /// <para>The date was outside the range of accepted dates for the SQL type.</para></exception>
        public void SetSqlParameterValue <T>(
            [NotNull] SqlParameter parameter,
            T value,
            TypeConstraintMode mode = TypeConstraintMode.Warn)
        {
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }

            if (value == null)
            {
                parameter.Value = Type.IsTable ? null : DBNull.Value;
                return;
            }

            IOut output = value as IOut;

            if (output != null)
            {
                bool   hasInput = output?.InputValue.IsAssigned ?? false;
                string dir      = hasInput ? "input/output" : "output";
                switch (Direction)
                {
                case ParameterDirection.Input:
                    throw new DatabaseSchemaException(
                              LoggingLevel.Error,
                              () => "Cannot pass {0} value to input only parameter {1}",
                              dir,
                              FullName);

                case ParameterDirection.Output:
                case ParameterDirection.ReturnValue:
                    if (hasInput)
                    {
                        throw new DatabaseSchemaException(
                                  LoggingLevel.Error,
                                  () => "Cannot pass {0} value to output only parameter {1}",
                                  dir,
                                  FullName);
                    }
                    break;
                }

                output.SetParameter(parameter);

                if (hasInput)
                {
                    parameter.Value = Type.CastCLRValue(output.InputValue.Value, output.Type, mode);
                }
            }
            else
            {
                parameter.Value = Type.CastCLRValue(value, mode);
            }
        }
			public override IEnumerator GetGameObjectAsync(IOut<GameObject> gameObject)
			{
				CoroutineTask<GameObject> task = CraftData.GetPrefabForTechTypeAsync(TechType.SmallLocker);
				yield return task;
				var smallLockerPrefab = task.GetResult();
				GameObject prefab = GameObject.Instantiate(smallLockerPrefab);
				var storageAccess = prefab.EnsureComponent<VehicleStorageAccess>();
				storageAccess.textPrefab = GameObject.Instantiate(smallLockerPrefab.GetComponentInChildren<TextMeshProUGUI>());
#endif

				var container = prefab.EnsureComponent<StorageContainer>();
				container.width = Mod.config.LockerWidth;
				container.height = Mod.config.LockerHeight;
				container.container.Resize(Mod.config.LockerWidth, Mod.config.LockerHeight);

				var meshRenderers = prefab.GetComponentsInChildren<MeshRenderer>();
				foreach (var meshRenderer in meshRenderers)
				{
					meshRenderer.material.color = new Color(0, 0, 1);
				}

				var label = prefab.FindChild("Label");
				DestroyImmediate(label);

				var canvas = LockerPrefabShared.CreateCanvas(prefab.transform);
				storageAccess.background = LockerPrefabShared.CreateBackground(canvas.transform);
				storageAccess.icon = LockerPrefabShared.CreateIcon(storageAccess.background.transform, PrimaryColor, 15);
				storageAccess.text = LockerPrefabShared.CreateText(storageAccess.background.transform, storageAccess.textPrefab, PrimaryColor, -40, 10, "");
				storageAccess.seamothIcon = LockerPrefabShared.CreateIcon(storageAccess.background.transform, PrimaryColor, 80);
				storageAccess.seamothCountText = LockerPrefabShared.CreateText(storageAccess.background.transform, storageAccess.textPrefab, PrimaryColor, 55, 10, "none");
				storageAccess.exosuitIcon = LockerPrefabShared.CreateIcon(storageAccess.background.transform, PrimaryColor, 80);
				storageAccess.exosuitCountText = LockerPrefabShared.CreateText(storageAccess.background.transform, storageAccess.textPrefab, PrimaryColor, 55, 10, "none");

				storageAccess.seamothIcon.rectTransform.anchoredPosition += new Vector2(-23, 0);
				storageAccess.seamothCountText.rectTransform.anchoredPosition += new Vector2(-23, 0);
				storageAccess.exosuitIcon.rectTransform.anchoredPosition += new Vector2(23, 0);
				storageAccess.exosuitCountText.rectTransform.anchoredPosition += new Vector2(23, 0);

				if (Mod.config.UseAutosortMod)
				{
					storageAccess.autosortCheckbox = CheckboxButton.CreateCheckbox(storageAccess.background.transform, PrimaryColor, storageAccess.textPrefab, "Autosort");
					storageAccess.autosortCheckbox.transform.localPosition = new Vector3(0, -104 + 19);
				}

				storageAccess.enableCheckbox = CheckboxButton.CreateCheckbox(storageAccess.background.transform, PrimaryColor, storageAccess.textPrefab, "Enabled");
				storageAccess.enableCheckbox.transform.localPosition = new Vector3(0, -104);

				storageAccess.background.gameObject.SetActive(false);

#if SN1
				return prefab;
#elif BZ
				gameObject.Set(prefab);
#endif
			}
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            if (processedPrefab == null)
            {
                CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(TechType.SeaglideFragment);
                yield return(task);

                GameObject prefab = GameObject.Instantiate(task.GetResult());

                MeshRenderer[]        meshRenderers        = prefab.GetAllComponentsInChildren <MeshRenderer>();
                SkinnedMeshRenderer[] skinnedMeshRenderers = prefab.GetAllComponentsInChildren <SkinnedMeshRenderer>();
                Color powerGlideColour = new Color(PowerglideEquipable.PowerglideColourR, PowerglideEquipable.PowerglideColourG, PowerglideEquipable.PowerglideColourB);

                foreach (MeshRenderer mr in meshRenderers)
                {
                    // MeshRenderers have the third-person mesh, apparently?
                    if (mr.name.Contains("SeaGlide_01_damaged"))
                    {
                        mr.material.color = powerGlideColour;
                    }
                }

                foreach (SkinnedMeshRenderer smr in skinnedMeshRenderers)
                {
                    if (smr.name.Contains("SeaGlide_geo"))
                    {
                        smr.material.color = powerGlideColour;
                    }
                }

                PrefabIdentifier prefabIdentifier = prefab.GetComponent <PrefabIdentifier>();
                prefabIdentifier.ClassId = this.ClassID;
                prefab.GetComponent <LargeWorldEntity>().cellLevel = LargeWorldEntity.CellLevel.VeryFar;
                prefab.EnsureComponent <TechTag>().type            = this.TechType;

                Pickupable pickupable = prefab.GetComponent <Pickupable>();
                pickupable.isPickupable = false;

                ResourceTracker resourceTracker = prefab.EnsureComponent <ResourceTracker>();
                resourceTracker.prefabIdentifier = prefabIdentifier;
                typeof(ResourceTracker).GetField("techType", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(resourceTracker, this.TechType);
                //resourceTracker.techType = this.TechType;
                resourceTracker.overrideTechType = TechType.Fragment;
                resourceTracker.rb         = prefab.GetComponent <Rigidbody>();
                resourceTracker.pickupable = pickupable;

                prefab.SetActive(true);
                processedPrefab = prefab;
                ModPrefabCache.AddPrefab(processedPrefab, false); // This doesn't actually do any caching, but it does disable the prefab without "disabling" it - the prefab doesn't show up in the world [as with SetActive(false)]
                // but it can still be instantiated. [unlike with SetActive(false)]
            }

            gameObject.Set(processedPrefab);
        }
示例#19
0
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(Original, false);

            yield return(task);

            GameObject prefab = task.GetResult();

            gameObject.Set(GameObject.Instantiate(prefab));
            yield break;
        }
示例#20
0
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(PrefabTemplate);

            yield return(task);

            GameObject prefab = task.GetResult();
            GameObject obj    = Object.Instantiate(prefab);

            gameObject.Set(obj);
        }
示例#21
0
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(TechType.SeamothSonarModule, false);

            yield return(task);

            GameObject gameObject1 = GameObject.Instantiate(task.GetResult());

            gameObject.Set(gameObject1);

            yield break;
        }
示例#22
0
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            if (prefab == null)
            {
                CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(TechType.HoverbikeJumpModule);
                yield return(task);

                prefab = GameObject.Instantiate <GameObject>(task.GetResult());
            }

            gameObject.Set(GameObject.Instantiate(prefab));
        }
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            if (prefab == null)
            {
                CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(TechType.SeaglideFragment);
                yield return(task);

                prefab = PreparePrefab(task.GetResult());
            }

            gameObject.Set(prefab);
        }
示例#24
0
            public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
            {
                CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(TechType.SmallLocker);

                yield return(task);

                GameObject originalPrefab = task.GetResult();
                GameObject prefab         = GameObject.Instantiate(originalPrefab);

                StorageContainer container = prefab.GetComponent <StorageContainer>();

                container.width  = Mod.config.AutosorterWidth;
                container.height = Mod.config.AutosorterHeight;
                container.Resize(Mod.config.AutosorterWidth, Mod.config.AutosorterHeight);
                var meshRenderers = prefab.GetComponentsInChildren <MeshRenderer>();

                foreach (var meshRenderer in meshRenderers)
                {
                    meshRenderer.material.color = new Color(1, 0, 0);
                }

#if SUBNAUTICA
                var prefabText = prefab.GetComponentInChildren <Text>();
#elif BELOWZERO
                var prefabText = prefab.GetComponentInChildren <TextMeshProUGUI>();
#endif
                var label = prefab.FindChild("Label");
                DestroyImmediate(label);

                var autoSorter = prefab.AddComponent <AutosortLocker>();

                var canvas = LockerPrefabShared.CreateCanvas(prefab.transform);
                autoSorter.background = LockerPrefabShared.CreateBackground(canvas.transform, autoSorter.name);
                autoSorter.icon       = LockerPrefabShared.CreateIcon(autoSorter.background.transform, MainColor, 40);
                // The first number is the vertical position, the second number is the font
                autoSorter.text = LockerPrefabShared.CreateText(autoSorter.background.transform, prefabText, MainColor, 0, 14, "Autosorter", "Autosorter");
                autoSorter.text.rectTransform.anchoredPosition += new Vector2(20, 0);

                autoSorter.sortingText = LockerPrefabShared.CreateText(autoSorter.background.transform, prefabText, MainColor, -120, 18, "Sorting...", "Autosorter");
#if SUBNAUTICA
                autoSorter.sortingText.alignment = TextAnchor.UpperCenter;
#elif BELOWZERO
                autoSorter.sortingText.alignment = TextAlignmentOptions.Top;
#endif

                autoSorter.background.gameObject.SetActive(false);
                autoSorter.icon.gameObject.SetActive(false);
                autoSorter.text.gameObject.SetActive(false);
                autoSorter.sortingText.gameObject.SetActive(false);

                gameObject.Set(prefab);
                yield break;
            }
        public override IEnumerator GetGameObjectAsync(IOut<GameObject> gameObject)
        {
            if (prefab == null)
            {
                CoroutineTask<GameObject> task = CraftData.GetPrefabForTechTypeAsync(TechType.HoverbikeJumpModule);
                yield return task;
                prefab = GameObject.Instantiate<GameObject>(task.GetResult());
                ModPrefabCache.AddPrefab(prefab, false); // This doesn't actually do any caching, but it does disable the prefab without "disabling" it - the prefab doesn't show up in the world [as with SetActive(false)]
                                                         // but it can still be instantiated. [unlike with SetActive(false)]
            }

            gameObject.Set(GameObject.Instantiate(prefab));
        }
        //public override string AssetsFolder => Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),"Assets");
        //public override string IconFileName => "MetalHandsMK1.png";
        //public override bool HasSprite => true;

        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(TechType.ColdSuitGloves);

            yield return(task);

            GameObject prefab = task.GetResult();
            GameObject obj    = GameObject.Instantiate(prefab);

            prefab.SetActive(false);

            gameObject.Set(obj);
        }
示例#27
0
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            if (prefab == null)
            {
                var task = CraftData.GetPrefabForTechTypeAsync(TechType.MapRoomHUDChip);
                yield return(task);

                prefab = GameObject.Instantiate(task.GetResult());
                ModPrefabCache.AddPrefab(prefab, false);                 // This doesn't actually do any caching, but it does disable the prefab without "disabling" it - the prefab doesn't show up in the world [as with SetActive(false)] but it can still be instantiated.
            }

            gameObject.Set(prefab);
        }
示例#28
0
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            if (prefab == null)
            {
                CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(TechType.SeaTruckUpgradeEnergyEfficiency);
                yield return(task);

                prefab = GameObject.Instantiate(task.GetResult());
                Battery cell = prefab.EnsureComponent <Battery>();
                cell.name      = "SolarBackupBattery";
                cell._capacity = cellCapacity;
            }
        }
示例#29
0
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(TechType.HeatBlade);

            yield return(task);

            hbPrefab = task.GetResult();

            task = CraftData.GetPrefabForTechTypeAsync(TechType.DiamondBlade);
            yield return(task);

            prefab = SetupPrefab(task.GetResult());

            gameObject.Set(prefab);
        }
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            if (prefab == null)
            {
                CoroutineTask <GameObject> task = CraftData.GetPrefabForTechTypeAsync(TechType.SeaTruckUpgradeEnergyEfficiency);
                yield return(task);

                prefab = GameObject.Instantiate <GameObject>(task.GetResult());
                // The code is handled by the SeatruckUpdater component, rather than anything here.
                ModPrefabCache.AddPrefab(prefab, false); // This doesn't actually do any caching, but it does disable the prefab without "disabling" it - the prefab doesn't show up in the world [as with SetActive(false)]
                                                         // but it can still be instantiated. [unlike with SetActive(false)]
            }

            gameObject.Set(GameObject.Instantiate(prefab));
        }
示例#31
0
        public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject)
        {
            var task = CraftData.GetPrefabForTechTypeAsync(TechType.DioramaHullPlate);

            yield return(task);

            var _GameObject = Object.Instantiate(task.GetResult());

            var meshRenderer = _GameObject.FindChild("Icon").GetComponent <MeshRenderer>();

            meshRenderer.material.mainTexture = hullPlateTexture;
            _GameObject.name = ClassID;

            gameObject.Set(_GameObject);
        }
示例#32
0
 public AttackingSituationRule(IOut @out, ComponentService componentService)
 {
     _out = @out;
     _componentService = componentService;
 }
示例#33
0
 public DoNothingSituationRule(IOut @out)
 {
     _out = @out;
 }