/* * public override IEnumerator GetGameObjectAsync(IOut<GameObject> gameObject) * { * AsyncOperationHandle<GameObject> seatruckFabricatorModuleRequest = AddressablesUtility.LoadAsync<GameObject>("WorldEntities/Tools/SeaTruckFabricatorModule.prefab"); * yield return seatruckFabricatorModuleRequest; * GameObject seatruckFabricatorModulePrefab = seatruckFabricatorModuleRequest.Result; * * _GameObject = UWE.Utils.InstantiateDeactivated(seatruckFabricatorModulePrefab); * * _GameObject.SetActive(true); * * gameObject.Set(_GameObject); * } */ public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject) { AsyncOperationHandle <GameObject> loadRequest_01 = AddressablesUtility.LoadAsync <GameObject>("WorldEntities/Tools/SeaTruckFabricatorModule.prefab"); yield return(loadRequest_01); if (loadRequest_01.Status == AsyncOperationStatus.Failed) { BZLogger.Error("Cannot find GameObject in Resources folder at path 'WorldEntities/Tools/SeaTruckFabricatorModule.prefab'"); yield break; } GameObject seatruckFabricatorModulePrefab = loadRequest_01.Result; GameObjectClone = UWE.Utils.InstantiateDeactivated(seatruckFabricatorModulePrefab, null, Vector3.zero, Quaternion.identity); SetupScannerModule(); /* * IAssetBundleWrapperCreateRequest bundleRequest = AssetBundleManager.LoadBundleAsync("basegeneratorpieces"); * yield return bundleRequest; * IAssetBundleWrapper bundle = bundleRequest.assetBundle; * IAssetBundleWrapperRequest loadRequest_02 = bundle.LoadAssetAsync<GameObject>("Assets/Prefabs/Base/GeneratorPieces/BaseMapRoom.prefab"); * yield return loadRequest_02; * GameObject maproom = loadRequest_02.asset as GameObject; */ AsyncOperationHandle <GameObject> loadRequest_02 = AddressablesUtility.LoadAsync <GameObject>("Assets/Prefabs/Base/GeneratorPieces/BaseMapRoom.prefab"); yield return(loadRequest_02); if (loadRequest_02.Status == AsyncOperationStatus.Failed) { BZLogger.Error("Cannot find Prefab at path 'Assets/Prefabs/Base/GeneratorPieces/BaseMapRoom.prefab'"); yield break; } GameObject maproom = loadRequest_02.Result; if (!maproom) { BZLogger.Debug("Failed to load MapRoom prefab!"); yield break; } antenna = UWE.Utils.InstantiateDeactivated(maproom.transform.Find("Map_room_antenna").gameObject, GameObjectClone.transform, Vector3.zero, Quaternion.identity); AsyncOperationHandle <GameObject> loadRequest_03 = AddressablesUtility.LoadAsync <GameObject>("Submarine/Build/BatteryCharger.prefab"); yield return(loadRequest_03); GameObject batteryChargerPrefab = loadRequest_03.Result; GameObject powerSystemRoot = new GameObject("powerSystemRoot"); powerSystemRoot.transform.SetParent(GameObjectClone.transform); powerSystemRoot.transform.localPosition = new Vector3(-1.06f, -0.20f, 1.66f); powerSystemRoot.transform.localRotation = Quaternion.Euler(0, 270, 180); powerSystemRoot.transform.localScale = new Vector3(1.78f, 1.78f, 1.0f); powerSystem = UWE.Utils.InstantiateDeactivated(batteryChargerPrefab, powerSystemRoot.transform, Vector3.zero, Quaternion.identity); AsyncOperationHandle <GameObject> loadRequest_04 = AddressablesUtility.LoadAsync <GameObject>("Submarine/Build/MapRoomFunctionality.prefab"); yield return(loadRequest_04); GameObject mapRoomFunctionalityPrefab = loadRequest_04.Result; scannerUIRoot = new GameObject("scannerRoot"); scannerUIRoot.transform.SetParent(GameObjectClone.transform, false); scannerUIRoot.transform.localScale = new Vector3(1.14f, 1.14f, 1.14f); scannerUIRoot.transform.localPosition = new Vector3(1.37f, 0.07f, 1.60f); scannerUIRoot.transform.localRotation = Quaternion.Euler(0, 90, 0); scannerUI = UWE.Utils.InstantiateDeactivated(mapRoomFunctionalityPrefab.transform.Find("screen/scannerUI").gameObject, scannerUIRoot.transform, Vector3.zero, Quaternion.identity); SetupAntenna(); SetupScannerUI(); SetupPowerSystem(); GameObjectClone.AddComponent <SeaTruckSegmentListener>(); gameObject.Set(GameObjectClone); yield break; }
private void SetupPowerSystem() { powerSystem.name = "powerSystem"; UnityEngine.Object.DestroyImmediate(powerSystem.GetComponent <BatteryCharger>()); UnityEngine.Object.DestroyImmediate(powerSystem.GetComponent <PrefabIdentifier>()); UnityEngine.Object.DestroyImmediate(powerSystem.GetComponent <TechTag>()); UnityEngine.Object.DestroyImmediate(powerSystem.GetComponent <Constructable>()); UnityEngine.Object.DestroyImmediate(powerSystem.GetComponent <FMOD_StudioEventEmitter>()); UnityEngine.Object.DestroyImmediate(powerSystem.GetComponent <ConstructableBounds>()); UnityEngine.Object.DestroyImmediate(powerSystem.GetComponent <PowerConsumer>()); UnityEngine.Object.DestroyImmediate(powerSystem.transform.Find("Collider").gameObject); GameObject EquipmentRoot = powerSystem.transform.Find("EquipmentRoot").gameObject; EquipmentRoot.transform.SetParent(GameObjectClone.transform, false); Transform model = powerSystem.transform.Find("model"); UnityEngine.Object.DestroyImmediate(model.GetComponent <Animator>()); UnityEngine.Object.DestroyImmediate(model.GetComponent <BaseModuleLighting>()); GameObject cover = model.Find("battery_charging_station_base/battery_charging_station_cover").gameObject; cover.transform.SetParent(model, false); UnityEngine.Object.DestroyImmediate(model.Find("battery_charging_station_base").gameObject); SkyApplier skyApplier = model.gameObject.GetComponent <SkyApplier>(); LightingController controller = GameObjectClone.GetComponent <LightingController>(); controller.RegisterSkyApplier(skyApplier); GameObject UI = powerSystem.transform.Find("UI").gameObject; UI.transform.localPosition = new Vector3(0f, 0f, 0.28f); UI.transform.localRotation = Quaternion.Euler(0, 0, 180); GameObject backgroundLeft = UI.transform.transform.Find("Background").gameObject; backgroundLeft.name = "backgroundLeft"; RectTransform leftRt = backgroundLeft.transform as RectTransform; leftRt.anchoredPosition = new Vector2(-495f, 0f); leftRt.localScale = new Vector3(0.70f, 0.70f, 0.1f); GameObject backgroundRight = UWE.Utils.Instantiate(backgroundLeft, UI.transform, Vector3.zero, Quaternion.identity); backgroundRight.name = "backgroundRight"; RectTransform rightRt = backgroundRight.transform as RectTransform; rightRt.anchoredPosition = new Vector2(500f, 0f); rightRt.localScale = new Vector3(0.70f, 0.70f, 0.1f); rightRt.SetSiblingIndex(0); RawImage imageLeft = backgroundLeft.GetComponent <RawImage>(); RawImage imageRight = backgroundRight.GetComponent <RawImage>(); imageLeft.texture = powerUI_background; imageRight.texture = powerUI_background; Transform Powered = UI.transform.Find("Powered"); RectTransform battery1 = Powered.Find("Battery1") as RectTransform; battery1.anchoredPosition = new Vector2(-545f, 15f); RectTransform battery1_text = battery1.Find("Text") as RectTransform; battery1_text.anchoredPosition = new Vector2(0f, 95f); battery1_text.localScale = new Vector3(1.50f, 1.50f, 0.1f); RectTransform battery2 = Powered.Find("Battery2") as RectTransform; battery2.anchoredPosition = new Vector2(-435f, 15f); RectTransform battery2_text = battery2.Find("Text") as RectTransform; battery2_text.anchoredPosition = new Vector2(0f, 95f); battery2_text.localScale = new Vector3(1.50f, 1.50f, 0.1f); RectTransform battery3 = Powered.Find("Battery3") as RectTransform; battery3.anchoredPosition = new Vector2(450f, 15f); RectTransform battery3_text = battery3.Find("Text") as RectTransform; battery3_text.anchoredPosition = new Vector2(0f, 95f); battery3_text.localScale = new Vector3(1.50f, 1.50f, 0.1f); RectTransform battery4 = Powered.Find("Battery4") as RectTransform; battery4.anchoredPosition = new Vector2(560f, 15f); RectTransform battery4_text = battery4.Find("Text") as RectTransform; battery4_text.anchoredPosition = new Vector2(0f, 95f); battery4_text.localScale = new Vector3(1.50f, 1.50f, 0.1f); Powered.gameObject.SetActive(true); BoxCollider Trigger = powerSystem.transform.Find("Trigger").GetComponent <BoxCollider>(); Trigger.center = new Vector3(0f, 0f, 0.32f); Trigger.size = new Vector3(0.35f, 0.35f, 0.35f); UI.SetActive(true); powerSystem.AddComponent <SeaTruckScannerPowerSystem>(); powerSystem.SetActive(true); }
public override IEnumerator GetGameObjectAsync(IOut <GameObject> gameObject) { if (GameObjectClone != null) { gameObject.Set(GameObjectClone); yield break; } GameObject result; if (FragmentTemplate != TechType.None) { CoroutineTask <GameObject> request = CraftData.GetPrefabForTechTypeAsync(FragmentTemplate); yield return(request); result = request.GetResult(); if (result == null) { BZLogger.Error($"Cannot instantiate prefab from TechType '{FragmentTemplate}'!"); yield break; } GameObjectClone = UWE.Utils.InstantiateDeactivated(result); } else if (!string.IsNullOrEmpty(PrefabFileName)) { IPrefabRequest prefabRequest = PrefabDatabase.GetPrefabForFilenameAsync(PrefabFilePath); yield return(prefabRequest); if (prefabRequest.TryGetPrefab(out result)) { //GameObjectClone = UnityEngine.Object.Instantiate(result); GameObjectClone = UWE.Utils.InstantiateDeactivated(result); } else { BZLogger.Error($"Cannot find prefab in PrefabDatabase at path '{PrefabFilePath}!"); yield break; } } GameObjectClone.name = TechTypeName; PrefabIdentifier prefabIdentifier = GameObjectClone.GetComponent <PrefabIdentifier>(); prefabIdentifier.ClassId = TechTypeName; TechTag techTag = GameObjectClone.GetComponent <TechTag>(); techTag.type = TechType; ResourceTracker resourceTracker = GameObjectClone.GetComponent <ResourceTracker>(); resourceTracker.overrideTechType = TechType.Fragment; ModifyGameObject(); AddFragmentTracker(GameObjectClone); BZLogger.Debug($"GetGameObjectAsync called for fragment: {TechTypeName}"); gameObject.Set(GameObjectClone); yield break; }