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); }
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); }
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); }
/// <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 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(); }
public TrackRideObjectContainer(AssetManagerLoader loader, TResult target, GameObject go) : base(loader, target, go) { }