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