/// <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);
        }
예제 #2
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);
 }