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