コード例 #1
0
        public override void onEnabled()
        {
            var dsc = System.IO.Path.DirectorySeparatorChar;


            binder = new TrackRiderBinder("kvwQwhKWWG");
            TrackedRide retroSteelCoaster =
                binder.RegisterTrackedRide <TrackedRide>("Steel Coaster", "retroSteelCoaster", "Retro Steel Coaster");
            RetroSteelCoasterMeshGenerator retroSteelCoasterTrackGenerator =
                binder.RegisterMeshGenerator <RetroSteelCoasterMeshGenerator>(retroSteelCoaster);

            TrackRideHelper.PassMeshGeneratorProperties(TrackRideHelper.GetTrackedRide("Steel Coaster").meshGenerator,
                                                        retroSteelCoaster.meshGenerator);

            retroSteelCoaster.canCurveLifts             = true;
            retroSteelCoaster.canHaveLSM                = false;
            retroSteelCoaster.description               = "Similar to the modern steel rollercoaster, this coaster is capable of having a curved lifthill but not of being launched.";
            retroSteelCoasterTrackGenerator.crossBeamGO = null;

            retroSteelCoaster.price                      = 1500;
            retroSteelCoaster.trackPricePerUnit          = 25;
            retroSteelCoaster.meshGenerator.customColors = new[]
            {
                new Color(0f / 255f, 0f / 255f, 0f / 255f, 1), new Color(80f / 255f, 115f / 255f, 150f / 255f, 1),
                new Color(110f / 255f, 170f / 255f, 255f / 255f, 1), new Color(95f / 255f, 140f / 255f, 200f / 255f, 1)
            };
            retroSteelCoaster.airtimeImportanceExcitement        = TrackRideHelper.GetTrackedRide("Steel Coaster").airtimeImportanceExcitement + 0.2f;
            retroSteelCoaster.dropsImportanceExcitement          = TrackRideHelper.GetTrackedRide("Steel Coaster").dropsImportanceExcitement - 0.4f;
            retroSteelCoaster.inversionsImportanceExcitement     = TrackRideHelper.GetTrackedRide("Steel Coaster").inversionsImportanceExcitement - 0.1f;
            retroSteelCoaster.averageLatGImportanceExcitement    = TrackRideHelper.GetTrackedRide("Steel Coaster").averageLatGImportanceExcitement - 0.3f;
            retroSteelCoaster.accelerationImportanceExcitement   = TrackRideHelper.GetTrackedRide("Steel Coaster").accelerationImportanceExcitement + 0.1f;
            retroSteelCoaster.velocityImportanceExcitement       = TrackRideHelper.GetTrackedRide("Steel Coaster").velocityImportanceExcitement + 0.2f;
            retroSteelCoaster.excitementImportanceRideLengthTime = TrackRideHelper.GetTrackedRide("Steel Coaster").excitementImportanceRideLengthTime + 0.15f;
            binder.Apply();
        }
コード例 #2
0
        void Start()
        {
            TrackRide    = ((TrackedRide)_trackerRiderField.GetValue(TrackBuilder));
            TrackBuilder = this.gameObject.GetComponent <TrackBuilder>();

            TrackRide.Track.OnAddTrackSegment += (trackSegment) => {
                _segments.Add(trackSegment, new TrackSegmentModify(trackSegment, this));
            };
            TrackRide.Track.OnRemoveTrackSegment += (trackSegment) => {
                _segments [trackSegment].Destroy();
                _segments.Remove(trackSegment);
            };
        }
コード例 #3
0
		void Start() {
			

			TrackRide = ((TrackedRide)_trackerRiderField.GetValue (TrackBuilder));
			TrackBuilder = this.gameObject.GetComponent<TrackBuilder>();
		
			TrackRide.Track.OnAddTrackSegment += (trackSegment) => {
				_segments.Add (trackSegment, new TrackSegmentModify (trackSegment, this));
			};
			TrackRide.Track.OnRemoveTrackSegment += (trackSegment) => {
				_segments [trackSegment].Destroy ();
				_segments.Remove (trackSegment);
			};	
		

		}
コード例 #4
0
        void Update()
        {
            if (_segments.Count == 0)
            {
                TrackRide = ((TrackedRide)_trackerRiderField.GetValue(TrackBuilder));

                for (int x = 0; x < TrackRide.Track.trackSegments.Count; x++)
                {
                    _segments.Add(TrackRide.Track.trackSegments [x], new TrackSegmentModify(TrackRide.Track.trackSegments [x], this));
                }
            }

            foreach (var segment in _segments.Values)
            {
                segment.Update();
            }

            var ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            if (Input.GetMouseButtonDown(0))
            {
                if (!_selected)
                {
                    RaycastHit hit;
                    if (Physics.Raycast(ray, out hit, Mathf.Infinity, -1))
                    {
                        if (hit.transform.name == "BezierNode")
                        {
                            _selected = hit.transform;
                            _offset   = hit.transform.position - hit.point;
                            _dist     = (ray.origin - hit.point).magnitude;
                        }
                    }
                }
            }
            else if (Input.GetMouseButtonUp(0))
            {
                _selected = null;
            }

            if (_selected)
            {
                _selected.gameObject.GetComponent <TrackCurveNode> ().NodeUpdate();

                _selected.position = ray.GetPoint(_dist) + _offset;
            }
        }
コード例 #5
0
        /// <summary>
        /// Register to an existing coaster that has been loaded
        /// </summary>
        /// <param name="loader"></param>
        /// <param name="attractionName"></param>
        /// <returns></returns>
        public TResult Register(AssetManagerLoader loader, String attractionName)
        {
            TResult result = Build(loader);

            TrackedRide ride = AssetPackUtilities.TrackedRide(attractionName);

            if (ride != null)
            {
                ScriptableSingleton <AssetManager> .Instance.registerCoasterCarInstantiator(ride.getReferenceName(), result);

                Debug.Log("Register Coaster Ride " + attractionName);
            }
            else
            {
                Debug.Log("Cant find Coaster Ride " + attractionName);
            }
            return(result);
        }
コード例 #6
0
        public static TrackRideBuilder <TTrackRide> FromTrackedRide <TTrackRide>(string name) where TTrackRide : TrackedRide
        {
            TrackedRide original = null;

            foreach (Attraction current in ScriptableSingleton <AssetManager> .Instance.getAttractionObjects())
            {
                if (current.getUnlocalizedName() == name)
                {
                    original = (TrackedRide)current;
                    break;
                }
            }
            if (original == null)
            {
                throw new Exception("Can't Find Track Ride: " + name);
            }
            return(new TrackRideBuilder <TTrackRide>(original.gameObject));
        }
コード例 #7
0
		void Update()
		{
			if (_segments.Count == 0) {

				TrackRide = ((TrackedRide)_trackerRiderField.GetValue (TrackBuilder));

				for (int x = 0; x < TrackRide.Track.trackSegments.Count; x++) {
					_segments.Add (TrackRide.Track.trackSegments [x], new TrackSegmentModify (TrackRide.Track.trackSegments [x], this));

				}
			}

			foreach (var segment in _segments.Values) {
				segment.Update ();
			}
	
			var ray = Camera.main.ScreenPointToRay (Input.mousePosition);

			if (Input.GetMouseButtonDown (0)) {
				if (!_selected) {
					RaycastHit hit;
					if (Physics.Raycast (ray, out hit, Mathf.Infinity,-1)) {
						if (hit.transform.name == "BezierNode") {
							_selected = hit.transform;
							_offset = hit.transform.position - hit.point;
							_dist = (ray.origin - hit.point).magnitude;

						}
					}
				}
			} else if (Input.GetMouseButtonUp (0)) 
			{
				_selected = null;
			}

			if (_selected) {
				_selected.gameObject.GetComponent<TrackCurveNode> ().NodeUpdate ();

				_selected.position = ray.GetPoint (_dist) + _offset;
			}
				

		}
コード例 #8
0
        private void Update()
        {
            if (TrackRide != null)
            {
                if (!TrackRide.isBeingEdited)
                {
                    ClearPlanes();
                }

                TrackSegment4 segment = GetSelectedSegment();
                if (segment != _selectedSegment)
                {
                    ClearPlanes();
                    if (!segment.gameObject.GetComponent <HeightMarkerPlane>() != null)
                    {
                        _planes.Add(segment.gameObject.AddComponent <HeightMarkerPlane>());
                    }
                }

                TrackSegment4 ghost = GetGhostSegment();
                if (ghost != null)
                {
                    if (!ghost.gameObject.GetComponent <HeightMarkerPlane>() != null)
                    {
                        ghost.gameObject.AddComponent <HeightMarkerPlane>();
                    }
                }


                _selectedSegment = segment;
            }

            var ride = GetTrackRide();

            if (ride != TrackRide)
            {
                ClearPlanes();
                TrackRide = ride;
            }
        }
コード例 #9
0
        public void CreateCustomCoasterType()
        {
            TrackedRide TR    = new TrackedRide();
            GameObject  hider = new GameObject();

            char dsc = System.IO.Path.DirectorySeparatorChar;

            using (WWW www = new WWW("file://" + Path + dsc + "assetbundle" + dsc + "mod"))
            {
                AssetBundle       bundle      = www.assetBundle;
                List <Attraction> attractions = AssetManager.Instance.getAttractionObjects().ToList();
                foreach (TrackedRide attraction in attractions.OfType <TrackedRide>())
                {
                    if (attraction.getUnlocalizedName() == "Steel Coaster")
                    {
                        TR = Instantiate(attraction);
                        TR.dropsImportanceExcitement        = 0.665f;
                        TR.inversionsImportanceExcitement   = 0.673f;
                        TR.averageLatGImportanceExcitement  = 0.121f;
                        TR.accelerationImportanceExcitement = 0.525f;
                        TR.meshGenerator = ScriptableObject.CreateInstance <CustomCoasterMeshGenerator>();
                        TR.meshGenerator.stationPlatformGO   = attraction.meshGenerator.stationPlatformGO;
                        TR.meshGenerator.material            = attraction.meshGenerator.material;
                        TR.meshGenerator.liftMaterial        = attraction.meshGenerator.liftMaterial;
                        TR.meshGenerator.frictionWheelsGO    = attraction.meshGenerator.frictionWheelsGO;
                        TR.meshGenerator.supportInstantiator = attraction.meshGenerator.supportInstantiator;
                        GameObject asset = Instantiate(bundle.LoadAsset("Corkscrew Coaster@Crossbeam")) as GameObject;
                        TR.meshGenerator.crossBeamGO = SetUV(asset, 15, 14);
                        break;
                    }
                }


                /* foreach (TrackedRide attraction in attractions.OfType<TrackedRide>())
                 * {
                 *  if (attraction.getName() == "Log Flume")
                 *  {
                 *      TR.meshGenerator = Instantiate(attraction.meshGenerator);
                 *  }
                 * }*/

                int pillar    = 89;
                int center    = 100;
                int crossbeam = 255;
                int beams     = 175;

                Color[] colors = new Color[] { new Color(pillar / 255f, pillar / 255f, pillar / 255f, 1), new Color(center / 255f, center / 255f, center / 255f, 1), new Color(crossbeam / 255f, crossbeam / 255f, crossbeam / 255f, 1), new Color(beams / 255f, beams / 255f, beams / 255f, 1) };
                TR.meshGenerator.customColors = colors;
                TR.meshGenerator.customColors = colors;
                TR.setDisplayName("Corkscrew Coaster");
                TR.price = 3600;
                TR.name  = "Corkscrew_coaster_GO";
                AssetManager.Instance.registerObject(TR);

                //Get cars from assetbundle
                GameObject carGO    = bundle.LoadAsset("Corkscrew Coaster@Car") as GameObject;
                Rigidbody  carRigid = carGO.AddComponent <Rigidbody>();
                carRigid.isKinematic = true;
                carGO.AddComponent <BoxCollider>();
                GameObject frontCarGO    = bundle.LoadAsset("Corkscrew Coaster@FrontCar") as GameObject;
                Rigidbody  frontCarRigid = frontCarGO.AddComponent <Rigidbody>();
                frontCarRigid.isKinematic = true;
                frontCarGO.AddComponent <BoxCollider>();

                //Add car type
                CustomCar car      = carGO.AddComponent <CustomCar>();
                CustomCar frontCar = frontCarGO.AddComponent <CustomCar>();

                car.Decorate(carGO, false);
                frontCar.Decorate(frontCarGO, true);

                //Create Instantiator
                List <CoasterCarInstantiator> TypeList        = new List <CoasterCarInstantiator>();
                CoasterCarInstantiator        CarInstantiator = ScriptableObject.CreateInstance <CoasterCarInstantiator>();

                CarInstantiator.name = "Corkscrew Coaster@CoasterCarInstantiator";
                CarInstantiator.defaultTrainLength = 5;
                CarInstantiator.maxTrainLength     = 7;
                CarInstantiator.minTrainLength     = 2;
                CarInstantiator.carGO      = carGO;
                CarInstantiator.frontCarGO = frontCarGO;

                //Register
                AssetManager.Instance.registerObject(car);
                AssetManager.Instance.registerObject(frontCar);

                //Offset
                float CarOffset = .02f;
                car.offsetBack      = CarOffset;
                frontCar.offsetBack = CarOffset;

                //Restraints
                RestraintRotationController controller      = carGO.AddComponent <RestraintRotationController>();
                RestraintRotationController controllerFront = frontCarGO.AddComponent <RestraintRotationController>();
                controller.closedAngles      = new Vector3(0, 0, 120);
                controllerFront.closedAngles = new Vector3(0, 0, 120);

                //Custom Colors
                Color[] CarColors = new Color[] { new Color(168f / 255, 14f / 255, 14f / 255), new Color(234f / 255, 227f / 255, 227f / 255), new Color(73f / 255, 73f / 255, 73f / 255) };

                MakeRecolorble(frontCarGO, "CustomColorsDiffuse", CarColors);
                MakeRecolorble(carGO, "CustomColorsDiffuse", CarColors);

                CarInstantiator.displayName = "Corkscrew Car";
                AssetManager.Instance.registerObject(CarInstantiator);
                TypeList.Add(CarInstantiator);

                TR.carTypes = TypeList.ToArray();

                bundle.Unload(false);

                carGO.transform.parent      = hider.transform;
                frontCarGO.transform.parent = hider.transform;
                hider.SetActive(false);

                loadedList.Add(TR);
                loadedList.Add(car);
                loadedList.Add(frontCar);
                loadedList.Add(CarInstantiator);

                Debug.Log(TR.getName() + " Loaded");
            }
        }
コード例 #10
0
ファイル: Main.cs プロジェクト: pollend/CarRide
    public void onEnabled()
    {
        if (Main.AssetBundleManager == null)
        {
            AssetBundleManager = new AssetBundleManager(this);
        }

        binder = new TrackRiderBinder("509e93b5d3723a5a215e5c67500c2e28");


        TrackedRide trackedRide = binder.RegisterTrackedRide <TrackedRide> ("Ghost Mansion Ride", "CarRide", "Car Ride");

        trackedRide.price    = 1200;
        trackedRide.carTypes = new CoasterCarInstantiator[] { };

        TrackedRide ghostRide = TrackRideHelper.GetTrackedRide("Ghost Mansion Ride");
        GhostMansionRideMeshGenerator meshGenerator = binder.RegisterMeshGenerator <GhostMansionRideMeshGenerator> (trackedRide);

        TrackRideHelper.PassMeshGeneratorProperties(ghostRide.meshGenerator, trackedRide.meshGenerator);
        meshGenerator.tubeMaterial = ((GhostMansionRideMeshGenerator)ghostRide.meshGenerator).tubeMaterial;

        trackedRide.maxBankingAngle            = 7;
        trackedRide.targetVelocity             = 7;
        trackedRide.meshGenerator.customColors = new Color[]
        {
            new Color(63f / 255f, 46f / 255f, 37f / 255f, 1),
            new Color(43f / 255f, 35f / 255f, 35f / 255f, 1),
            new Color(90f / 255f, 90f / 255f, 90f / 255f, 1)
        };
        trackedRide.canChangeCarRotation = false;

        CoasterCarInstantiator mouseCarInstaniator = binder.RegisterCoasterCarInstaniator <CoasterCarInstantiator>(trackedRide, "MouseCarInstaniator", "Mouse Car", 1, 1, 1);
        BaseCar mouseCar = binder.RegisterCar <BaseCar>(Main.AssetBundleManager.MouseCarGo, "MouseCar", .3f, .1f, true,
                                                        new Color[] {
            new Color(71f / 255, 71f / 255, 71f / 255),
            new Color(176f / 255, 7f / 255, 7f / 255),
            new Color(26f / 255, 26f / 255, 26f / 255),
            new Color(31f / 255, 31f / 255, 31f / 255)
        }
                                                        );

        mouseCar.gameObject.AddComponent <RestraintRotationController>().closedAngles = new Vector3(0, 0, 120);
        mouseCarInstaniator.carGO = mouseCar.gameObject;


        CoasterCarInstantiator TruckCarInstaniator = binder.RegisterCoasterCarInstaniator <CoasterCarInstantiator> (trackedRide, "TruckCarInstaniator", "Truck Car", 1, 1, 1);
        BaseCar truckCar = binder.RegisterCar <BaseCar>(Main.AssetBundleManager.TruckGo, "TruckCar", .3f, .35f, true,
                                                        new Color[] {
            new Color(68f / 255, 58f / 255, 50f / 255),
            new Color(176f / 255, 7f / 255, 7f / 255),
            new Color(55f / 255, 32f / 255, 12f / 255),
            new Color(61f / 255, 40f / 255, 19f / 255)
        }

                                                        );

        truckCar.gameObject.AddComponent <RestraintRotationController>().closedAngles = new Vector3(0, 0, 120);
        TruckCarInstaniator.carGO = truckCar.gameObject;

        CoasterCarInstantiator sportsCarInstaniator = binder.RegisterCoasterCarInstaniator <CoasterCarInstantiator> (trackedRide, "SportsCarInstaniator", "Sports Car", 1, 1, 1);
        BaseCar sportsCar = binder.RegisterCar <BaseCar>(Main.AssetBundleManager.SportsCarGo, "SportsCar", .3f, .35f, true,
                                                         new Color[] {
            new Color(.949f, .141f, .145f),
            new Color(.925f, .937f, .231f),
            new Color(.754f, .754f, .754f),
            new Color(.788f, .788f, .788f)
        }
                                                         );

        sportsCar.gameObject.AddComponent <RestraintRotationController>().closedAngles = new Vector3(0, 0, 120);
        sportsCarInstaniator.carGO = sportsCar.gameObject;

        binder.Apply();

        //deprecatedMappings
        string oldHash = "asdfawujeba8whe9jnimpiasnd";

        GameObjectHelper.RegisterDeprecatedMapping("car_ride_coaster_GO" + oldHash, trackedRide.name);

        GameObjectHelper.RegisterDeprecatedMapping("Mouse_Car@CoasterCarInstantiator" + oldHash, mouseCarInstaniator.name);
        GameObjectHelper.RegisterDeprecatedMapping("Truck_Car@CoasterCarInstantiator" + oldHash, TruckCarInstaniator.name);
        GameObjectHelper.RegisterDeprecatedMapping("Sports_Car@CoasterCarInstantiator" + oldHash, sportsCarInstaniator.name);

        GameObjectHelper.RegisterDeprecatedMapping("Mouse_Car_Front" + oldHash, mouseCar.name);
        GameObjectHelper.RegisterDeprecatedMapping("Truck_Car_Front" + oldHash, truckCar.name);
        GameObjectHelper.RegisterDeprecatedMapping("Sports_Car_Front" + oldHash, sportsCar.name);
    }
コード例 #11
0
    public void onEnabled()
    {
        if (Main.AssetBundleManager == null)
        {
            AssetBundleManager = new AssetBundleManager(this);
        }

        binder = new TrackRiderBinder("d41d8cd98f00b204e9800998ecf8427e");

        TrackedRide trackedRide = binder.RegisterTrackedRide <TrackedRide> ("Wooden Coaster", "MineTrainCoaster", "Mine Train Coaster");

        trackedRide.price = 3600;
        trackedRide.dropsImportanceExcitement       = .7f;
        trackedRide.inversionsImportanceExcitement  = .67f;
        trackedRide.averageLatGImportanceExcitement = .7f;

        trackedRide.carTypes = new CoasterCarInstantiator[] { };


        MinetrainTrackGenerator meshGenerator = binder.RegisterMeshGenerator <MinetrainTrackGenerator> (trackedRide);

        TrackRideHelper.PassMeshGeneratorProperties(TrackRideHelper.GetTrackedRide("Wooden Coaster").meshGenerator, trackedRide.meshGenerator);
        trackedRide.meshGenerator.customColors = new Color[] {
            new Color(63f / 255f, 46f / 255f, 37f / 255f, 1),
            new Color(43f / 255f, 35f / 255f, 35f / 255f, 1),
            new Color(90f / 255f, 90f / 255f, 90f / 255f, 1)
        };

        MineTrainSupportInstantiator supportGenerator = binder.RegisterSupportGenerator <MineTrainSupportInstantiator> (trackedRide);

        CoasterCarInstantiator coasterCarInstantiator = binder.RegisterCoasterCarInstaniator <CoasterCarInstantiator> (trackedRide, "MineTrainInstantiator", "Mine Train Car", 5, 7, 2);

        Color[] CarColors = new Color[] {
            new Color(68f / 255, 58f / 255, 50f / 255),
            new Color(176f / 255, 7f / 255, 7f / 255),
            new Color(55f / 255, 32f / 255, 12f / 255),
            new Color(61f / 255, 40f / 255, 19f / 255)
        };

        BaseCar frontCar = binder.RegisterCar <BaseCar> (Main.AssetBundleManager.FrontCarGo, "MineTrainCarFront", .02f, .4f, true, CarColors);
        BaseCar backCar  = binder.RegisterCar <BaseCar> (Main.AssetBundleManager.BackCarGo, "MineTrainCarBack", .02f, .02f, false, CarColors);

        frontCar.gameObject.AddComponent <RestraintRotationController>().closedAngles = new Vector3(0, 0, 120);
        backCar.gameObject.AddComponent <RestraintRotationController>().closedAngles  = new Vector3(0, 0, 120);

        coasterCarInstantiator.frontCarGO = frontCar.gameObject;
        coasterCarInstantiator.carGO      = backCar.gameObject;


        // binder.Apply ();


        //deprecatedMappings
        var trackRideOff = TrackRideHelper.GetTrackedRide("Mine Train Coaster");

        string oldHash = "ASDFawjebfa8pwh9n3a3h8ank";

        GameObjectHelper.RegisterDeprecatedMapping("mine_train_coaster_GO", trackRideOff.name);
        GameObjectHelper.RegisterDeprecatedMapping("mine_train_coaster_GO" + oldHash, trackRideOff.name);

        GameObjectHelper.RegisterDeprecatedMapping("Mine Train@CoasterCarInstantiator" + oldHash, trackRideOff.getCarInstantiator().name);
        GameObjectHelper.RegisterDeprecatedMapping("Mine Train@CoasterCarInstantiator", trackRideOff.getCarInstantiator().name);

        GameObjectHelper.RegisterDeprecatedMapping("MineTrainCar_Car" + oldHash, trackRideOff.getCarInstantiator().carGO.name);
        GameObjectHelper.RegisterDeprecatedMapping("MineTrainCar_Car", trackRideOff.getCarInstantiator().carGO.name);

        GameObjectHelper.RegisterDeprecatedMapping("MineTrainCar_Front" + oldHash, trackRideOff.getCarInstantiator().frontCarGO.name);
        GameObjectHelper.RegisterDeprecatedMapping("MineTrainCar_Front", trackRideOff.getCarInstantiator().frontCarGO.name);

        GameObjectHelper.RegisterDeprecatedMapping(trackedRide.name, trackRideOff.name);
        GameObjectHelper.RegisterDeprecatedMapping(coasterCarInstantiator.name, trackRideOff.getCarInstantiator().name);
        GameObjectHelper.RegisterDeprecatedMapping(frontCar.name, trackRideOff.getCarInstantiator().frontCarGO.name);
        GameObjectHelper.RegisterDeprecatedMapping(backCar.name, trackRideOff.getCarInstantiator().carGO.name);
    }
コード例 #12
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);
        }
コード例 #13
0
 public void applyChangedSettings()
 {
     if (settingEnabled("noBuildRestrictions"))
     {
         Global.NO_TRACKBUILDER_RESTRICTIONS = true;
     }
     if (settingEnabled("allowBrokenStuff_NO_WARRANTY") && !ismultiplayer)
     {
         Global.ALLOW_IMPOSSIBLE_TRACKBUILDER_SEGMENTS = true;
     }
     foreach (Attraction current in ScriptableSingleton <AssetManager> .Instance.getAttractionObjects())
     {
         var         ride         = current as TrackedRide;
         TrackedRide originalRide = new TrackedRide();
         if (ride != null)
         {
             if (settingEnabled("allowVerticalDirectionSwap"))
             {
                 ride.canChangeDirectionAngle = true;
             }
             if (settingEnabled("allowVerticalCurve"))
             {
                 ride.canCurveVertical = true;
             }
             if (settingEnabled("allowDeltaHeight"))
             {
                 ride.maxDeltaHeightPerUnit = float.MaxValue;
             }
             if (settingEnabled("allowTightHelix"))
             {
                 ride.minHalfHelixSize = 1;
             }
             if (settingEnabled("allowSteepLifts"))
             {
                 ride.maxDeltaHeightForLift = float.MaxValue;
             }
             if (settingEnabled("allowSteepHills"))
             {
                 ride.maxDeltaHeightUp = float.MaxValue;
             }
             if (settingEnabled("allowSteepDrops"))
             {
                 ride.maxDeltaHeightDown = float.MaxValue;
             }
             if (settingEnabled("allowTrackCrests"))
             {
                 ride.canInvertSlopes = true;
             }
             if (settingEnabled("allowCurvedSlopes"))
             {
                 ride.canCurveSlopes = true;
             }
             if (settingEnabled("allowBrakes"))
             {
                 if (ride.getUnlocalizedName().Contains("Coaster"))
                 {
                     ride.canHaveBrakes      = true;
                     ride.canHaveBlockBrakes = true;
                 }
             }
             if (settingEnabled("changeLiftSpeedLimit"))
             {
                 ride.canAdjustLiftSpeeds = true;
                 ride.maxLiftSpeed        = float.Parse(settings_string["liftSpeedLimit"]);
             }
             if (settingEnabled("changeSegmentWidth"))
             {
                 ride.maxSegmentWidth = float.Parse(settings_string["segmentWidth"]);;
             }
             if (settingEnabled("allowHoldingBrakes"))
             {
                 ride.canHaveHoldingBrakes = true;
             }
             if (settingEnabled("allowCarRotation"))
             {
                 ride.canChangeCarRotation = true;
             }
             if (settingEnabled("allowTightTurns"))
             {
                 ride.min90CurveSize = 1;
             }
             if (settingEnabled("unlimitedHeight"))
             {
                 ride.maxSupportHeight = int.MaxValue;
             }
             if (settingEnabled("allowCurvedLifts"))
             {
                 ride.canCurveLifts = true;
             }
             if (settingEnabled("allowLapsChange"))
             {
                 ride.canChangeLaps = true;
             }
             if (settingEnabled("allowRideCamera"))
             {
                 ride.canBuildRideCamera = true;
             }
             if (settingEnabled("allowSpinLock"))
             {
                 ride.canChangeSpinLock = true;
             }
             if (settingEnabled("allowMagnetickKickers"))
             {
                 ride.canBuildMagneticKickers = true;
             }
             if (settingEnabled("allowSlopeTransitionBrakes"))
             {
                 ride.canBuildSlopeTransitionBrakes = true;
             }
             if (settingEnabled("allowBanking"))
             {
                 ride.maxBankingAngle = 180;
             }
             if (settingEnabled("allowLiftHills"))
             {
                 Debug.Log(ride.getUnlocalizedName());
                 if (ride.getUnlocalizedName().ToLower().Contains("coaster") || ride.everyUpIsLift)
                 {
                     ride.canHaveLifts = true;
                 }
                 ride.everyUpIsLift = false;
             }
             if (settingEnabled("allowLSM"))
             {
                 ride.canHaveLSM = true;
                 if (ride.meshGenerator.lsmFinGO == null)
                 {
                     ride.meshGenerator.lsmFinGO = lsmFin;
                 }
             }
             if (settingEnabled("allowAllSpecialSegments"))
             {
                 foreach (SpecialSegmentSettings segment in ScriptableSingleton <AssetManager> .Instance.specialSegments)
                 {
                     if (segment.name != "Splashdown" && segment.name != "HydraulicLaunchSystem")
                     {
                         ride.specialSegments.addSpecialSegment(segment);
                     }
                 }
             }
             if (settingEnabled("allowAllTrains"))
             {
                 ride.carTypes = ride.carTypes.Union(carTypes).ToArray();
             }
             if (settingEnabled("allowLongTrains"))
             {
                 foreach (CoasterCarInstantiator carType in ride.carTypes)
                 {
                     carType.minTrainLength = 1;
                     carType.maxTrainLength = 255;
                 }
             }
         }
     }
 }
コード例 #14
0
 public void createRevertSettings()
 {
     originalSettings = new Dictionary <string, TrackedRide>();
     originalSegments = new Dictionary <string, List <SpecialSegmentSettings> >();
     lsmFin           = TrackRideHelper.GetTrackedRide("Floorless Coaster").meshGenerator.lsmFinGO;
     foreach (Attraction current in ScriptableSingleton <AssetManager> .Instance.getAttractionObjects())
     {
         var ride = current as TrackedRide;
         if (ride != null)
         {
             carTypes = carTypes.Union(ScriptableSingleton <AssetManager> .Instance.getCoasterCarInstantiatorsFor(ride.getReferenceName())).ToArray();
         }
     }
     foreach (Attraction current in ScriptableSingleton <AssetManager> .Instance.getAttractionObjects())
     {
         var         ride         = current as TrackedRide;
         TrackedRide originalRide = new TrackedRide();
         if (ride != null)
         {
             originalRide.canBuildRideCamera            = ride.canBuildRideCamera;
             originalRide.canChangeSpinLock             = ride.canChangeSpinLock;
             originalRide.canBuildMagneticKickers       = ride.canBuildMagneticKickers;
             originalRide.canBuildSlopeTransitionBrakes = ride.canBuildSlopeTransitionBrakes;
             originalRide.maxSegmentWidth         = ride.maxSegmentWidth;
             originalRide.canAdjustLiftSpeeds     = ride.canAdjustLiftSpeeds;
             originalRide.canHaveLSM              = ride.canHaveLSM;
             originalRide.canChangeLaps           = ride.canChangeLaps;
             originalRide.canCurveLifts           = ride.canCurveLifts;
             originalRide.canCurveSlopes          = ride.canCurveSlopes;
             originalRide.canCurveVertical        = ride.canCurveVertical;
             originalRide.canHaveBrakes           = ride.canHaveBrakes;
             originalRide.canHaveBlockBrakes      = ride.canHaveBlockBrakes;
             originalRide.canHaveHoldingBrakes    = ride.canHaveHoldingBrakes;
             originalRide.canHaveLifts            = ride.canHaveLifts;
             originalRide.canInvertSlopes         = ride.canInvertSlopes;
             originalRide.canChangeCarRotation    = ride.canChangeCarRotation;
             originalRide.everyUpIsLift           = ride.everyUpIsLift;
             originalRide.maxBankingAngle         = ride.maxBankingAngle;
             originalRide.maxDeltaHeightDown      = ride.maxDeltaHeightDown;
             originalRide.maxDeltaHeightForLift   = ride.maxDeltaHeightForLift;
             originalRide.maxDeltaHeightPerUnit   = ride.maxDeltaHeightPerUnit;
             originalRide.maxDeltaHeightUp        = ride.maxDeltaHeightUp;
             originalRide.maxLiftSpeed            = ride.maxLiftSpeed;
             originalRide.maxSupportHeight        = ride.maxSupportHeight;
             originalRide.min90CurveSize          = ride.min90CurveSize;
             originalRide.minHalfHelixSize        = ride.minHalfHelixSize;
             originalRide.canChangeDirectionAngle = ride.canChangeDirectionAngle;
             List <SpecialSegmentSettings> originalSpecialSegments = new List <SpecialSegmentSettings>();
             foreach (SpecialSegmentSettings segment in ScriptableSingleton <AssetManager> .Instance.specialSegments)
             {
                 if (ride.specialSegments.hasSpecialSegment(segment))
                 {
                     originalSpecialSegments.Add(segment);
                 }
             }
             originalRide.carTypes = ride.carTypes;
             originalSettings.Add(ride.getUnlocalizedName(), originalRide);
             originalSegments.Add(ride.getUnlocalizedName(), originalSpecialSegments);
         }
     }
 }