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}");
            }
        }
Exemple #2
0
    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);
        }
Exemple #5
0
        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);
                }
            }
        }