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");
            }
        }
예제 #2
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);
    }
예제 #3
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);
    }
예제 #4
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);
        }