protected override void MakeSurfaceEnd(U_Surface surf, int i)
 {
     if (!clockwise && i == verts.Length - 1)
     {
         surf.leftSurf       = firstSurf;
         firstSurf.rightSurf = surf;
     }
     else if (clockwise && i == 0)
     {
         surf.leftSurf       = firstSurf;
         firstSurf.rightSurf = surf;
     }
 }
Exemple #2
0
 protected void MakeLedge(U_Surface surf)
 {
     if (surf.leftSurf != null)
     {
         if (surf.leftSurf.surfaceType == SurfaceType.WallL || (surf.leftSurf.surfaceType == SurfaceType.Ceiling && surf.leftSurf.point1.y < surf.point2.y))
         {
             MakeLedgeObj(surf.point1, LedgeType.LedgeL);
         }
     }
     if (surf.rightSurf != null)
     {
         if (surf.rightSurf.surfaceType == SurfaceType.WallR || (surf.rightSurf.surfaceType == SurfaceType.Ceiling && surf.rightSurf.point2.y < surf.point1.y))
         {
             MakeLedgeObj(surf.point2, LedgeType.LedgeR);
         }
     }
 }
Exemple #3
0
 protected void MakeLedges()
 {
     for (int i = 0; i < transform.childCount; i++)
     {
         GameObject child = transform.GetChild(i).gameObject;
         if (child != null)
         {
             U_Surface surf = child.GetComponent <U_Surface>();
             if (surf != null)
             {
                 if (surf.surfaceType == SurfaceType.Ground)
                 {
                     MakeLedge(surf);
                 }
             }
         }
     }
 }
Exemple #4
0
    protected void MakeSurface(int i)
    {
        vertsW[i] = transform.TransformPoint(verts[i]);
        int prev = i - 1;

        if (clockwise)
        {
            prev = i + 1;
        }
        if (prev < 0)
        {
            if (amPoly)
            {
                prev         = verts.Length - 1;
                vertsW[prev] = transform.TransformPoint(verts[prev]);
            }
            else
            {
                return;
            }
        }
        if (prev > verts.Length - 1)
        {
            if (amPoly)
            {
                prev         = 0;
                vertsW[prev] = transform.TransformPoint(verts[prev]);
            }
            else
            {
                return;
            }
        }
        if (verts[i] == verts[prev])
        {
            return;
        }

        Vector3 center = (vertsW[i] + vertsW[prev]) / 2f;

        center.z = 0;
        Vector3    diff    = vertsW[prev] - vertsW[i];
        float      length  = Mathf.Sqrt(Mathf.Pow(diff.x, 2f) + Mathf.Pow(diff.y, 2f));
        float      angle   = Mathf.Atan2(diff.y, diff.x);
        GameObject surfObj = Instantiate((GameObject)Resources.Load(SurfacePrefabName), center, new Quaternion());

        surfObj.transform.localScale       = new Vector3(length, 0.002f, 1f);
        surfObj.transform.localEulerAngles = new Vector3(0, 0, angle * Mathf.Rad2Deg);
        U_Surface surf = surfObj.GetComponent <U_Surface>();

        surf.angle       = angle;
        surf.point1      = vertsW[i];
        surf.point2      = vertsW[prev];
        surf.surfaceType = GetSurfaceType(Mathf.Rad2Deg * angle);

        if (prevSurf != null)
        {
            surf.rightSurf    = prevSurf;
            prevSurf.leftSurf = surf;
        }
        if (firstSurf == null)
        {
            firstSurf = surf;
        }
        MakeSurfaceEnd(surf, i);
        prevSurf = surf;
        surf.transform.parent = transform;
    }
Exemple #5
0
 protected virtual void MakeSurfaceEnd(U_Surface surf, int i)
 {
 }