public TResult Build(AssetManagerLoader loader)
        {
            GameObject go = UnityEngine.Object.Instantiate(_go);
            // existing Decos are not evaluated. Assumed to be configured correctly
            TResult vehicle = go.GetComponent <TResult>();

            if (vehicle == null)
            {
                vehicle = go.AddComponent <TResult>();
                if (!ContainsTag("GUID"))
                {
                    throw new Exception("Guid is never set");
                }
            }

            Apply(new BaseObjectContainer <TResult>(loader, vehicle, go));
            foreach (Renderer componentsInChild in go.GetComponentsInChildren <Renderer>())
            {
                Parkitility.ReplaceWithParkitectMaterial(componentsInChild);
            }

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

            Utility.recursiveFindTransformsStartingWith("WheelsFront", go.transform, transforms);
            vehicle.frontAxisArray = transforms.ToArray();
            transforms.Clear();
            Utility.recursiveFindTransformsStartingWith("WheelsBack", go.transform, transforms);
            vehicle.backAxisArray = transforms.ToArray();


            loader.RegisterObject(vehicle);

            return(vehicle);
        }
        public TResult Build(AssetManagerLoader loader)
        {
            GameObject go = UnityEngine.Object.Instantiate(_go);
            // existing Decos are not evaluated. Assumed to be configured correctly
            TResult deco = go.GetComponent <TResult>();

            if (deco == null)
            {
                deco = go.AddComponent <TResult>();
                if (!ContainsTag("GUID"))
                {
                    throw new Exception("Guid is never set");
                }
            }

            Apply(new BaseObjectContainer <TResult>(loader, deco, go));
            foreach (Renderer componentsInChild in go.GetComponentsInChildren <Renderer>())
            {
                Parkitility.ReplaceWithParkitectMaterial(componentsInChild);
            }

            // register deco
            loader.RegisterObject(deco);
            return(deco);
        }
Exemple #3
0
 public TSelf FrontVehicle <TVehicle>(IBuildable <TVehicle> vehicleBuilder, AssetManagerLoader loader)
     where TVehicle : Vehicle
 {
     AddStep("FRONT_VEHICLE",
             (container) =>
     {
         TVehicle vehicle = vehicleBuilder.Build(loader);
         container.Target.frontVehicleGO = vehicle;
     });
     return(this as TSelf);
 }
Exemple #4
0
 public TrackMeshGeneratorBuilder <TResult, TResult1, TFrom> CrossBeam(GameObject gameObject, bool bentCrossBeams,
                                                                       AssetManagerLoader loader)
 {
     _from.AddStep("CROSS_BEAM",
                   (handler) =>
     {
         GameObject go = GameObject.Instantiate(gameObject);
         loader.HideGo(go);
         typeof(TResult)
         .GetField("bendCrossBeamsToTrackShape",
                   BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic)
         .SetValue(handler.Target.meshGenerator, bentCrossBeams);
         handler.Target.meshGenerator.crossBeamGO = go;
     });
     return(this);
 }
 public TrackRideBuilder <TResult> AddTrain <TTrain>(AssetManagerLoader loader, IBuildable <TTrain> train)
     where TTrain : CoasterCarInstantiator
 {
     AddStep("ADD_TRAIN", (handler) =>
     {
         TTrain target = train.Build(loader);
         if (handler.Target.carTypes == null)
         {
             handler.Target.carTypes = new CoasterCarInstantiator[] { target };
         }
         else
         {
             Array.Resize(ref handler.Target.carTypes, handler.Target.carTypes.Length + 1);
             handler.Target.carTypes[handler.Target.carTypes.Length - 1] = target;
         }
     });
     return(this);
 }
Exemple #6
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);
        }
Exemple #7
0
        public TResult Build(AssetManagerLoader loader)
        {
            if (!ContainsTag("GUID"))
            {
                throw new Exception("Guid unset");
            }
            if (!ContainsTag("DISPLAY"))
            {
                throw new Exception("Display unset");
            }
            if (!ContainsTag("MIDDLE_VEHICLE"))
            {
                throw new Exception("Middle Train is unset");
            }

            TResult result = ScriptableObject.CreateInstance <TResult>();

            Apply(new TrainContainer <TResult>(loader, result));
            loader.RegisterObject(result);
            return(result);
        }
 public BaseObjectContainer(AssetManagerLoader loader, T target, GameObject go)
 {
     Loader = loader;
     Target = target;
     Go     = go;
 }
 public BaseContainer(AssetManagerLoader loader, T target)
 {
     Loader = loader;
     Target = target;
 }
        /// <summary>
        /// build mesh generator from target
        /// </summary>
        /// <param name="target"></param>
        /// <param name="loader"></param>
        /// <typeparam name="TMeshGenerator"></typeparam>
        /// <returns></returns>
        public TrackMeshGeneratorBuilder <TMeshGenerator, TResult, TrackRideBuilder <TResult> > Generator <TMeshGenerator>(MeshGenerator target, AssetManagerLoader loader)
            where TMeshGenerator : MeshGenerator
        {
            var builder = new TrackMeshGeneratorBuilder <TMeshGenerator, TResult, TrackRideBuilder <TResult> >(this);

            AddStep("MESH_GENERATOR",
                    handler =>
            {
                handler.Target.meshGenerator = ScriptableObject.CreateInstance <TMeshGenerator>();

                handler.Target.meshGenerator.stationPlatformGO   = UnityEngine.Object.Instantiate(target.stationPlatformGO);
                handler.Target.meshGenerator.stationHandRailGO   = UnityEngine.Object.Instantiate(target.stationHandRailGO);
                handler.Target.meshGenerator.material            = target.material;
                handler.Target.meshGenerator.liftMaterial        = target.liftMaterial;
                handler.Target.meshGenerator.frictionWheelsGO    = UnityEngine.Object.Instantiate(target.frictionWheelsGO);
                handler.Target.meshGenerator.supportInstantiator = target.supportInstantiator;
                handler.Target.meshGenerator.crossBeamGO         = UnityEngine.Object.Instantiate(target.crossBeamGO);
                handler.Target.meshGenerator.customColors        = target.customColors;
                handler.Target.meshGenerator.tunnelMeshGenerator = target.tunnelMeshGenerator;
                handler.Target.meshGenerator.lsmFinGO            = target.lsmFinGO;

                loader.HideGo(handler.Target.meshGenerator.frictionWheelsGO);
                loader.HideGo(handler.Target.meshGenerator.crossBeamGO);
                loader.HideGo(handler.Target.meshGenerator.stationHandRailGO);
            });
            return(builder);
        }
 public TResult Build(AssetManagerLoader loader)
 {
     throw new System.NotImplementedException();
 }
Exemple #12
0
 public TrackRideObjectContainer(AssetManagerLoader loader, TResult target, GameObject go) : base(loader, target,
                                                                                                  go)
 {
 }