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(); }
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); }; }
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); }; }
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; } }
/// <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); }
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)); }
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; } }
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; } }
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"); } }
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); }
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); }
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); }
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; } } } } }
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); } } }