コード例 #1
0
    private void render()
    {
        Transform startPositionMarker = base.transform;
        LandPatch terrain             = GameController.Instance.park.getTerrain(startPositionMarker.position);

        if (terrain == null)
        {
            Object.Destroy(base.gameObject);
        }
        else
        {
            HybridCoasterMeshGenerator meshGenerator = (HybridCoasterMeshGenerator)track.TrackedRide.meshGenerator;
            foreach (SupportPosition position in meshGenerator.supportPosts[trackSegment.getStartpoint()])
            {
                leftVerticalSupportPost   = new Vector3(position.verticalSupportPostLeft.x, position.verticalSupportPostLeft.y + meshGenerator.supportBeamExtension, position.verticalSupportPostLeft.z);
                rightVerticalSupportPost  = new Vector3(position.verticalSupportPostRight.x, position.verticalSupportPostRight.y + meshGenerator.supportBeamExtension, position.verticalSupportPostRight.z);
                projectedTangentDirection = position.verticalSupportPostTangent;

                leftVerticalSupportPost_floor  = GameController.Instance.park.getTerrain(leftVerticalSupportPost).getPoint(leftVerticalSupportPost);
                rightVerticalSupportPost_floor = GameController.Instance.park.getTerrain(rightVerticalSupportPost).getPoint(rightVerticalSupportPost);

                leftVerticalSupportPost_footerHeight = leftVerticalSupportPost_floor.y + 0.1f;
                if (GameController.Instance.park.getTerrain(leftVerticalSupportPost).WaterHeight > leftVerticalSupportPost_footerHeight)
                {
                    leftVerticalSupportPost_footerHeight = GameController.Instance.park.getTerrain(leftVerticalSupportPost).WaterHeight + 0.025f;
                }
                rightVerticalSupportPost_footerHeight = rightVerticalSupportPost_floor.y + 0.1f;
                if (GameController.Instance.park.getTerrain(rightVerticalSupportPost).WaterHeight > rightVerticalSupportPost_footerHeight)
                {
                    rightVerticalSupportPost_footerHeight = GameController.Instance.park.getTerrain(rightVerticalSupportPost).WaterHeight + 0.025f;
                }
                if (leftVerticalSupportPost.y > leftVerticalSupportPost_floor.y)
                {
                    woodenVerticalSupportPostExtruder.extrude(leftVerticalSupportPost, new Vector3(0, -1, 0), projectedTangentDirection);
                    woodenVerticalSupportPostExtruder.extrude(leftVerticalSupportPost_floor, new Vector3(0, -1, 0), projectedTangentDirection);
                    woodenVerticalSupportPostExtruder.end();
                    concreteVerticalSupportFooterExtruder.extrude(new Vector3(leftVerticalSupportPost_floor.x, leftVerticalSupportPost_footerHeight, leftVerticalSupportPost_floor.z), new Vector3(0, -1, 0), projectedTangentDirection);
                    concreteVerticalSupportFooterExtruder.extrude(new Vector3(leftVerticalSupportPost_floor.x, leftVerticalSupportPost_floor.y - 0.05f, leftVerticalSupportPost_floor.z), new Vector3(0, -1, 0), projectedTangentDirection);
                    concreteVerticalSupportFooterExtruder.end();
                }
                if (rightVerticalSupportPost.y > rightVerticalSupportPost_floor.y)
                {
                    woodenVerticalSupportPostExtruder.extrude(rightVerticalSupportPost, new Vector3(0, -1, 0), projectedTangentDirection);
                    woodenVerticalSupportPostExtruder.extrude(rightVerticalSupportPost_floor, new Vector3(0, -1, 0), projectedTangentDirection);
                    woodenVerticalSupportPostExtruder.end();
                    concreteVerticalSupportFooterExtruder.extrude(new Vector3(rightVerticalSupportPost_floor.x, rightVerticalSupportPost_footerHeight, rightVerticalSupportPost_floor.z), new Vector3(0, -1, 0), projectedTangentDirection);
                    concreteVerticalSupportFooterExtruder.extrude(new Vector3(rightVerticalSupportPost_floor.x, rightVerticalSupportPost_floor.y - 0.05f, rightVerticalSupportPost_floor.z), new Vector3(0, -1, 0), projectedTangentDirection);
                    concreteVerticalSupportFooterExtruder.end();
                }
            }

            List <BoxExtruder> extruders = new List <BoxExtruder>();
            if (woodenVerticalSupportPostExtruder.vertices.Count > 0)
            {
                extruders.Add(woodenVerticalSupportPostExtruder);
            }
            if (woodenHorizontalSupportPostExtruder.vertices.Count > 0)
            {
                extruders.Add(woodenHorizontalSupportPostExtruder);
            }
            if (concreteVerticalSupportFooterExtruder.vertices.Count > 0)
            {
                extruders.Add(concreteVerticalSupportFooterExtruder);
            }
            foreach (BoxExtruder extruder in extruders)
            {
                GameObject gameObject = new GameObject("supportObject");
                gameObject.transform.parent        = base.instance.transform;
                gameObject.transform.localPosition = Vector3.zero;
                gameObject.transform.localRotation = Quaternion.identity;
                MeshRenderer meshRenderer = gameObject.AddComponent <MeshRenderer>();
                meshRenderer.sharedMaterial = track.TrackedRide.meshGenerator.material;
                MeshFilter meshFilter = gameObject.AddComponent <MeshFilter>();
                Mesh       mesh       = extruder.getMesh(base.instance.transform.worldToLocalMatrix);
                trackSegment.addGeneratedMesh(mesh);
                meshFilter.mesh = mesh;
            }
        }
    }
コード例 #2
0
        public void onEnabled()
        {
            var dsc = System.IO.Path.DirectorySeparatorChar;

            //assetBundle = AssetBundle.LoadFromFile(Path + dsc + "assetbundle" + dsc + "assetpack");
            //SideCrossBeamsGo = assetBundle.LoadAsset<GameObject>("21a3f09b79e34f147a2b6017d2b6c05b");
            assetBundle      = AssetBundle.LoadFromFile(Path + dsc + "assetbundle" + dsc + "corkscrewassetpack");
            SideCrossBeamsGo = assetBundle.LoadAsset <GameObject>("c184c4f392587465f9bf2c86e6615e78");
            FrontCartGo      = assetBundle.LoadAsset <GameObject>("01be2cec49bbb476381a537d75ad047e");
            CartGo           = assetBundle.LoadAsset <GameObject>("7c1045f838c59460db2bfebd3df04a47");

            binder = new TrackRiderBinder("kvwQwhKWWG");
            TrackedRide iboxCoaster =
                binder.RegisterTrackedRide <TrackedRide>("Floorless Coaster", "IboxCoaster", "Steel Hybrid Coaster");
            TrackedRide topperCoaster =
                binder.RegisterTrackedRide <TrackedRide>("Floorless Coaster", "TopperCoaster", "Wooden Hybrid Coaster");
            HybridCoasterMeshGenerator iboxTrackGenerator =
                binder.RegisterMeshGenerator <HybridCoasterMeshGenerator>(iboxCoaster);
            HybridCoasterMeshGenerator topperTrackGenerator =
                binder.RegisterMeshGenerator <HybridCoasterMeshGenerator>(topperCoaster);

            TrackRideHelper.PassMeshGeneratorProperties(TrackRideHelper.GetTrackedRide("Floorless Coaster").meshGenerator,
                                                        iboxCoaster.meshGenerator);
            TrackRideHelper.PassMeshGeneratorProperties(TrackRideHelper.GetTrackedRide("Floorless Coaster").meshGenerator,
                                                        topperCoaster.meshGenerator);

            HybridCoasterSupportInstantiator iboxSupportGenerator   = binder.RegisterSupportGenerator <HybridCoasterSupportInstantiator>(iboxCoaster);
            HybridCoasterSupportInstantiator topperSupportGenerator = binder.RegisterSupportGenerator <HybridCoasterSupportInstantiator>(topperCoaster);

            iboxCoaster.canCurveLifts        = true;
            topperCoaster.canCurveLifts      = true;
            iboxCoaster.description          = "A rollercoaster combining a steel track and a mix of wooden and steel supports to allow elements not normally found on wooden coasters.";
            topperCoaster.description        = "A rollercoaster combining a wooden track and a mix of wooden and steel supports to allow elements not normally found on wooden coasters.";
            iboxTrackGenerator.path          = Path;
            topperTrackGenerator.path        = Path;
            iboxTrackGenerator.crossBeamGO   = null;
            topperTrackGenerator.crossBeamGO = null;
            GameObject hybridSupportContainer = new GameObject("HybridCoasterSupports");
            GameObject hybridSupportLocation  = new GameObject("HybridCoasterSupportLocation");

            hybridSupportContainer.AddComponent <SupportHybridCoaster>();
            hybridSupportLocation.AddComponent <HybridSupportLocation>();
            SupportConfiguration hybridSupportConfiguration = new SupportConfiguration();

            hybridSupportConfiguration.supportLocationGO  = hybridSupportLocation.GetComponent <HybridSupportLocation>();
            hybridSupportConfiguration.supportSettings    = new SupportSettings[1];
            hybridSupportConfiguration.supportSettings[0] = new SupportSettings();
            hybridSupportConfiguration.supportSettings[0].minimumHeightAboveGround = 0.25f;
            hybridSupportConfiguration.supportSettings[0].supportGO = hybridSupportContainer.GetComponent <SupportHybridCoaster>();
            iboxCoaster.supportConfiguration = hybridSupportConfiguration;
            //iboxCoaster.supportConfiguration.supportSettings[0].supportGO = hybridSupportContainer.GetComponent<SupportHybridCoaster>();
            //iboxTrackGenerator.supportInstantiator = null;
            //topperTrackGenerator.supportInstantiator = null;
            iboxTrackGenerator.stationPlatformGO   = TrackRideHelper.GetTrackedRide("Spinning Coaster").meshGenerator.stationPlatformGO;
            topperTrackGenerator.stationPlatformGO = TrackRideHelper.GetTrackedRide("Spinning Coaster").meshGenerator.stationPlatformGO;
            iboxTrackGenerator.frictionWheelsGO    = TrackRideHelper.GetTrackedRide("Junior Coaster").meshGenerator.frictionWheelsGO;
            topperTrackGenerator.frictionWheelsGO  = TrackRideHelper.GetTrackedRide("Junior Coaster").meshGenerator.frictionWheelsGO;
            iboxTrackGenerator.material            = TrackRideHelper.GetTrackedRide("Wooden Coaster").meshGenerator.material;
            topperTrackGenerator.material          = TrackRideHelper.GetTrackedRide("Wooden Coaster").meshGenerator.material;
            iboxTrackGenerator.metalMaterial       = TrackRideHelper.GetTrackedRide("Steel Coaster").meshGenerator.material;
            topperTrackGenerator.metalMaterial     = TrackRideHelper.GetTrackedRide("Steel Coaster").meshGenerator.material;
            topperTrackGenerator.useTopperTrack    = true;

            iboxCoaster.price      = 1650;
            topperCoaster.price    = 1700;
            iboxCoaster.carTypes   = new CoasterCarInstantiator[] { };
            topperCoaster.carTypes = new CoasterCarInstantiator[] { };
            iboxCoaster.meshGenerator.customColors = new[]
            {
                new Color(132f / 255f, 40f / 255f, 137f / 255f, 1), new Color(23f / 255f, 133f / 255f, 30f / 255f, 1),
                new Color(180 / 255f, 180f / 255f, 180f / 255f, 1), new Color(108f / 255f, 70f / 255f, 23f / 255f, 1)
            };
            topperCoaster.meshGenerator.customColors = new[]
            {
                new Color(132f / 255f, 40f / 255f, 137f / 255f, 1), new Color(23f / 255f, 133f / 255f, 30f / 255f, 1),
                new Color(180 / 255f, 180f / 255f, 180f / 255f, 1), new Color(108f / 255f, 70f / 255f, 23f / 255f, 1)
            };
            iboxCoaster.dropsImportanceExcitement          = 0.665f;
            topperCoaster.dropsImportanceExcitement        = 0.665f;
            iboxCoaster.inversionsImportanceExcitement     = 0.673f;
            topperCoaster.inversionsImportanceExcitement   = 0.673f;
            iboxCoaster.averageLatGImportanceExcitement    = 0.121f;
            topperCoaster.averageLatGImportanceExcitement  = 0.121f;
            iboxCoaster.accelerationImportanceExcitement   = 0.525f;
            topperCoaster.accelerationImportanceExcitement = 0.525f;

            CoasterCarInstantiator iboxCoasterCarInstantiator =
                binder.RegisterCoasterCarInstaniator <CoasterCarInstantiator>(iboxCoaster, "RmcCoasterInsantiator",
                                                                              "Hybrid Coaster Cars", 1, 15, 6);
            CoasterCarInstantiator topperCoasterCarInstantiator =
                binder.RegisterCoasterCarInstaniator <CoasterCarInstantiator>(topperCoaster, "RmcCoasterInsantiator",
                                                                              "Hybrid Coaster Cars", 1, 15, 6);

            BaseCar frontCar = binder.RegisterCar <BaseCar>(Object.Instantiate(FrontCartGo), "RmcCoaster_Front_Car",
                                                            .35f, 0f, true, new[]
            {
                new Color(168f / 255, 14f / 255, 14f / 255), new Color(234f / 255, 227f / 255, 227f / 255),
                new Color(73f / 255, 73f / 255, 73f / 255)
            }
                                                            );

            iboxCoasterCarInstantiator.frontVehicleGO   = frontCar;
            topperCoasterCarInstantiator.frontVehicleGO = frontCar;
            iboxCoasterCarInstantiator.frontVehicleGO.gameObject.AddComponent <RestraintRotationController>().closedAngles =
                new Vector3(110, 0, 0);
            topperCoasterCarInstantiator.frontVehicleGO.gameObject.AddComponent <RestraintRotationController>().closedAngles =
                new Vector3(110, 0, 0);

            List <Transform> transforms = new List <Transform>();

            Utility.recursiveFindTransformsStartingWith("wheel", frontCar.transform, transforms);
            foreach (var transform in transforms)
            {
                transform.gameObject.AddComponent <FrictionWheelAnimator>();
            }

            BaseCar backCar = binder.RegisterCar <BaseCar>(Object.Instantiate(CartGo), "RmcCoaster_Back_Car", .35f,
                                                           -.3f, false, new[]
            {
                new Color(168f / 255, 14f / 255, 14f / 255), new Color(234f / 255, 227f / 255, 227f / 255),
                new Color(73f / 255, 73f / 255, 73f / 255)
            }
                                                           );

            iboxCoasterCarInstantiator.vehicleGO   = backCar;
            topperCoasterCarInstantiator.vehicleGO = backCar;
            iboxCoasterCarInstantiator.vehicleGO.gameObject.AddComponent <RestraintRotationController>().closedAngles =
                new Vector3(110, 0, 0);
            topperCoasterCarInstantiator.vehicleGO.gameObject.AddComponent <RestraintRotationController>().closedAngles =
                new Vector3(110, 0, 0);

            Utility.recursiveFindTransformsStartingWith("wheel", backCar.transform, transforms);
            foreach (var transform in transforms)
            {
                transform.gameObject.AddComponent <FrictionWheelAnimator>();
            }

            binder.Apply();
            assetBundle.Unload(false);
        }