protected override void SpawnPostProcess(Base latestBase, Int3 latestCell, GameObject finishedPiece) { NitroxId pieceId = NitroxEntity.GetId(finishedPiece); WaterParkPiece waterParkPiece = finishedPiece.GetComponent <WaterParkPiece>(); if (!waterParkPiece) { // The BaseWater has multiple base pieces, but only one of them (the bottom) contains the WaterParkPiece component... return; } WaterPark waterPark = waterParkPiece.GetWaterParkModule(); Validate.NotNull(waterPark, "WaterParkPiece without WaterParkModule?!?"); // assuming there could be multiple pieces sharing the same waterpark we only create an ID if there is none. NitroxEntity waterEntity = waterPark.gameObject.GetComponent <NitroxEntity>(); if (!waterEntity) { NitroxId newWaterparkId = pieceId.Increment(); NitroxEntity.SetNewId(waterPark.gameObject, newWaterparkId); NitroxId newPlanterId = newWaterparkId.Increment(); NitroxEntity.SetNewId(waterPark.planter.gameObject, newPlanterId); Log.Debug($"BaseRoomWaterParkProcessor: Created new Waterpark {newWaterparkId} and Planter {newPlanterId}"); } }
protected override void SpawnPostProcess(Base latestBase, Int3 latestCell, GameObject finishedPiece) { NitroxId moonpoolId = NitroxEntity.GetId(finishedPiece); VehicleDockingBay dockingBay = finishedPiece.RequireComponentInChildren <VehicleDockingBay>(); NitroxId dockingBayId = moonpoolId.Increment(); NitroxEntity.SetNewId(dockingBay.gameObject, dockingBayId); }
public override void SpawnPostProcess(Base latestBase, Int3 latestCell, GameObject finishedPiece) { NitroxId reactorId = NitroxEntity.GetId(finishedPiece); BaseBioReactorGeometry bioReactor = finishedPiece.RequireComponent <BaseBioReactorGeometry>(); GameObject bioReactorModule = ((BaseBioReactor)bioReactor.ReflectionCall("GetModule")).gameObject; NitroxId moduleId = reactorId.Increment(); NitroxEntity.SetNewId(bioReactorModule, moduleId); }
protected override void SpawnPostProcess(Base latestBase, Int3 latestCell, GameObject finishedPiece) { NitroxId mapRoomGeometryPieceId = NitroxEntity.GetId(finishedPiece); GameObject mapRoomFunctionality = FindUntaggedMapRoomFunctionality(latestBase); NitroxId mapRoomFunctionalityId = mapRoomGeometryPieceId.Increment(); NitroxEntity.SetNewId(mapRoomFunctionality, mapRoomFunctionalityId); GameObject mapRoomModules = mapRoomFunctionality.FindChild("MapRoomUpgrades"); NitroxId mapRoomModulesId = mapRoomFunctionalityId.Increment(); NitroxEntity.SetNewId(mapRoomModules, mapRoomModulesId); }
protected override void SpawnPostProcess(GameObject finishedFurniture) { if (finishedFurniture.TryGetComponent(out Bench bench)) { try { NitroxId benchId = NitroxEntity.GetId(finishedFurniture); GameObject benchTileLeft = new GameObject("BenchPlaceLeft") { layer = LAYER_USEABLE }; benchTileLeft.transform.SetParent(finishedFurniture.transform, false); benchTileLeft.transform.localPosition -= new Vector3(0.75f, 0, 0); BoxCollider benchTileLeftCollider = benchTileLeft.AddComponent <BoxCollider>(); benchTileLeftCollider.center = new Vector3(0, 0.25f, 0); benchTileLeftCollider.size = new Vector3(0.85f, 0.5f, 0.65f); benchTileLeftCollider.isTrigger = true; GameObject benchTileCenter = new GameObject("BenchPlaceCenter") { layer = LAYER_USEABLE }; benchTileCenter.transform.SetParent(finishedFurniture.transform, false); BoxCollider benchTileCenterCollider = benchTileCenter.AddComponent <BoxCollider>(); benchTileCenterCollider.center = new Vector3(0, 0.25f, 0); benchTileCenterCollider.size = new Vector3(0.7f, 0.5f, 0.65f); benchTileCenterCollider.isTrigger = true; GameObject benchTileRight = new GameObject("BenchPlaceRight") { layer = LAYER_USEABLE }; benchTileRight.transform.SetParent(finishedFurniture.transform, false); benchTileRight.transform.localPosition += new Vector3(0.75f, 0, 0); BoxCollider benchTileRightCollider = benchTileRight.AddComponent <BoxCollider>(); benchTileRightCollider.center = new Vector3(0, 0.25f, 0); benchTileRightCollider.size = new Vector3(0.85f, 0.5f, 0.65f); benchTileRightCollider.isTrigger = true; GameObject animationRoot = finishedFurniture.FindChild("bench_animation"); MultiplayerBench.FromBench(bench, benchTileLeft, MultiplayerBench.Side.LEFT, animationRoot); MultiplayerBench.FromBench(bench, benchTileCenter, MultiplayerBench.Side.CENTER, animationRoot); MultiplayerBench.FromBench(bench, benchTileRight, MultiplayerBench.Side.RIGHT, animationRoot); NitroxId benchLeftId = benchId.Increment(); NitroxId benchCenterId = benchLeftId.Increment(); NitroxId benchRightId = benchCenterId.Increment(); NitroxEntity.SetNewId(benchTileLeft, benchLeftId); NitroxEntity.SetNewId(benchTileCenter, benchCenterId); NitroxEntity.SetNewId(benchTileRight, benchRightId); UnityEngine.Object.Destroy(bench); UnityEngine.Object.Destroy(finishedFurniture.FindChild("Builder Trigger")); } catch (Exception ex) { Log.Error(ex); } } }