Exemplo n.º 1
0
 //generates tunnels for all kinds of tracks//
 private void generateTunnels()
 {
     if (gt.tunnels.Count <= 0)
     {
         return;
     }
     //Debug.Log("tunnel count" + gt.tunnels.Count);
     tunnels = new GameObject[gt.tunnels.Count];
     for (int i = 0; i < gt.tunnels.Count; i++)
     {
         tunnels[i] = new GameObject("tunnel" + (i + 1));
         RailMesh railMesh = tunnels[i].AddComponent <RailMesh>();
         railMesh.skip_tracks        = Data.speed_points;
         railMesh.start              = gt.tunnels[i].start / (int)Data.data.speed_points;
         railMesh.end                = gt.tunnels[i].end / (int)Data.data.speed_points;
         railMesh.object_mgr         = gt.points;
         railMesh.two_sided          = true;
         railMesh.collider_flag      = true;
         railMesh.width              = 8f;
         railMesh.height             = 6f;
         railMesh.spacing            = 0f;
         railMesh.height_relative    = -1f;
         railMesh.mat                = Data.data.tunnel_mat;
         tunnels[i].transform.parent = tunnels_main.transform;
         railMesh.generateMesh();
     }
 }
    // Use this for initialization
    void Start()
    {
        RailMesh tt = tilePrefab.GetComponent <RailMesh>();

        if (tt != null)
        {
            quadsPerTile = tt.quadsPerTile;
        }

        if (train == null)
        {
            train = Camera.main.transform;
        }

        StartCoroutine(GenerateWorldAroundPlayer());
    }
Exemplo n.º 3
0
    public void wall()
    {
        rollercoaster.name = "wall";
        track_main         = new GameObject("wall");
        RailMesh railMesh = track_main.AddComponent <RailMesh>();

        railMesh.skip_tracks     = Data.speed_points;
        railMesh.start           = 0;
        railMesh.end             = (int)(gt.points.Count / Data.speed_points);
        railMesh.object_mgr      = gt.points;
        railMesh.two_sided       = false;
        railMesh.collider_flag   = true;
        railMesh.width           = 1f;
        railMesh.height          = 6f;
        railMesh.spacing         = 0f;
        railMesh.height_relative = -1f;
        railMesh.mat             = Data.data.wall_mat;
        railMesh.generateMesh();
    }
Exemplo n.º 4
0
    public void wallGenerate()
    {
        wall.name  = "wall";
        track_main = new GameObject("wall");
        RailMesh railMesh = track_main.AddComponent <RailMesh>();

        railMesh.skip_tracks     = 0;
        railMesh.start           = 0;
        railMesh.end             = (int)(gt.points.Count);
        railMesh.object_mgr      = gt.points;
        railMesh.two_sided       = true;
        railMesh.collider_flag   = true;
        railMesh.width           = .1f;
        railMesh.height          = 1f;
        railMesh.spacing         = 0f;
        railMesh.height_relative = 0f;
        railMesh.mat             = Data.data.wall_mat;
        railMesh.generateMesh();
    }
Exemplo n.º 5
0
    public void fenceWall()
    {
        rollercoaster.name = "fence wall";
        track_generator(Data.data.fence_pole);
        int   num           = 2;
        float total_length  = (gt.points.Count / Data.speed_points);
        int   submesh_count = (int)Mathf.Ceil(total_length * 4f / RailGenerator.MAX);

        mesh_rails = new GameObject[num][];
        for (int i = 0; i < num; i++)
        {
            mesh_rails[i] = new GameObject[submesh_count];
        }
        int start = 0;
        int end;

        if (submesh_count == 1)
        {
            end = (int)total_length;
        }
        else
        {
            end = (int)(RailGenerator.MAX / 4f);
        }
        //Debug.Log("track count:" + total_length + "\t" + (int)(gt.points.getCount()/gt.speed_points));
        for (int j = 0; j < submesh_count; j++)
        {
            for (int k = 0; k < num; k++)
            {
                mesh_rails[k][j] = new GameObject("rail" + j + "." + k);
                mesh_rails[k][j].transform.parent = railings.transform;
                RailMesh railMesh = mesh_rails[k][j].AddComponent <RailMesh>();
                railMesh.skip_tracks   = Data.speed_points;
                railMesh.start         = start;
                railMesh.end           = end;
                railMesh.object_mgr    = gt.points;
                railMesh.two_sided     = false;
                railMesh.collider_flag = true;
                railMesh.width         = .1f;
                railMesh.height        = .2f;
                railMesh.spacing       = -0.1f;
                if (k == 0)
                {
                    railMesh.height_relative = .3f;
                }
                else
                {
                    railMesh.height_relative = 1f;
                }
                railMesh.mat = Data.data.fence_mat;
                railMesh.generateMesh();
            }
            start = end;
            if (j == submesh_count - 2)
            {
                end = (int)(total_length * 4f % RailGenerator.MAX);
            }
            else
            {
                end = (int)(total_length * (float)(j + 2));
            }
        }
    }
Exemplo n.º 6
0
    //generates a steel rollercoaster track//
    public void steelCoaster()
    {
        rollercoaster.name = "steel coaster";
        track_generator(Data.data.steel_bar);
        int   num           = 4;
        float total_length  = (gt.points.Count / Data.speed_points);
        int   submesh_count = (int)Mathf.Ceil(total_length * 4f / RailGenerator.MAX);

        mesh_rails = new GameObject[num][];
        for (int i = 0; i < num; i++)
        {
            mesh_rails[i] = new GameObject[submesh_count];
        }
        int start = 0;
        int end;

        if (submesh_count == 1)
        {
            end = (int)total_length;
        }
        else
        {
            end = (int)(RailGenerator.MAX / 4f);
        }
        Debug.Log("sub mesh count:" + submesh_count);
        for (int j = 0; j < submesh_count; j++)
        {
            for (int k = 0; k < num; k++)
            {
                mesh_rails[k][j] = new GameObject(string.Concat(new object[]
                {
                    "rail ",
                    k,
                    ".",
                    j
                }));
                RailMesh railMesh = mesh_rails[k][j].AddComponent <RailMesh>();
                mesh_rails[k][j].transform.parent = railings.transform;
                railMesh.skip_tracks   = Data.speed_points;
                railMesh.start         = start;
                railMesh.end           = end;
                railMesh.object_mgr    = gt.points;
                railMesh.collider_flag = true;
                if (k == 0)
                {
                    railMesh.mat   = Data.data.motor_mat;
                    railMesh.start = 0;
                    railMesh.end   = end;
                    //Debug.Log("top point : " + railMesh.end);
                    railMesh.spacing = 0f;
                }
                else if (k == 1)
                {
                    railMesh.mat             = Data.data.steel_coaster_mat;
                    railMesh.spacing         = 0f;
                    railMesh.height_relative = -0.3f;
                    railMesh.width           = 0.2f;
                    railMesh.height          = 0.2f;
                }
                else
                {
                    railMesh.mat     = Data.data.steel_coaster_mat;
                    railMesh.spacing = 0.5f;
                    railMesh.width   = 0.1f;
                    railMesh.height  = 0.1f;
                }
                if (k % 2 == 0)
                {
                    railMesh.spacing *= -1f;
                }
                Debug.Log("j:" + j + "::start:" + (start * Data.speed_points) + "::end:" + end * Data.speed_points);
                railMesh.generateMesh();
            }
            start = end;
            if (j == submesh_count - 2)
            {
                end = (int)(total_length);
            }
            else
            {
                end = (int)(total_length * (float)(j + 2));
            }
        }
    }
Exemplo n.º 7
0
    //generates a wooden rollercoaster track//
    public void woodCoaster()
    {
        rollercoaster.name = "wooden coaster";
        track_generator(Data.data.bar);
        int   num           = 7;
        float total_length  = (gt.points.Count / Data.speed_points);
        int   submesh_count = (int)Mathf.Ceil(total_length * 4f / RailGenerator.MAX);

        mesh_rails = new GameObject[num][];
        for (int i = 0; i < num; i++)
        {
            mesh_rails[i] = new GameObject[submesh_count];
        }
        int start = 0;
        int end;

        if (submesh_count == 1)
        {
            end = (int)total_length;
        }
        else
        {
            Debug.Log("something is wrong");
            end = (int)(RailGenerator.MAX / 4f);
        }
        Debug.Log("track count:" + total_length + "\t" + (int)(gt.points.Count / Data.speed_points));
        for (int j = 0; j < submesh_count; j++)
        {
            for (int k = 0; k < num; k++)
            {
                mesh_rails[k][j] = new GameObject("rail" + j + "." + k);
                mesh_rails[k][j].transform.parent = railings.transform;
                RailMesh railMesh = mesh_rails[k][j].AddComponent <RailMesh>();
                railMesh.skip_tracks   = Data.speed_points;
                railMesh.start         = start;
                railMesh.end           = end;
                railMesh.object_mgr    = gt.points;
                railMesh.collider_flag = true;
                if (k == 0)
                {
                    railMesh.mat   = Data.data.motor_mat;
                    railMesh.start = 0;
                    railMesh.end   = end;
                    Debug.Log("top point : " + railMesh.end);
                    railMesh.spacing = 0f;
                }
                else if (k < 3)
                {
                    railMesh.mat     = Data.data.railing_mat;
                    railMesh.spacing = 0.35f;
                }
                else
                {
                    railMesh.mat     = Data.data.railing_mat;
                    railMesh.spacing = 0.78f;
                    if (k <= 4)
                    {
                        railMesh.height_relative = 0.45f;
                    }
                    else
                    {
                        railMesh.height_relative = 0.18f;
                    }
                    railMesh.width  = 0.05f;
                    railMesh.height = 0.05f;
                }
                if (k % 2 == 0)
                {
                    railMesh.spacing *= -1f;
                }
                Debug.Log("setup finished for railings. Generation in progress...");
                railMesh.generateMesh();
            }
            start = end;
            if (j == submesh_count - 2)
            {
                end = (int)(total_length * 4f % RailGenerator.MAX);
            }
            else
            {
                end = (int)(total_length * (float)(j + 2));
            }
        }
    }