Example #1
0
    //returns a random value from Size enum (in Interior.cs)
    private InteriorSize randomSize()
    {
        InteriorSize[] values = (InteriorSize[])Enum.GetValues(typeof(InteriorSize));
        InteriorSize   size   = values[UnityEngine.Random.Range(0, values.Length)];

        return(size);
    }
Example #2
0
    //selects a set of objects from the possible blueprints for the size
    private void selectLayout(InteriorSize size)
    {
        List <GameObject> blueprints = interior.blueprints[size];

        objects = Instantiate(blueprints[UnityEngine.Random.Range(0, blueprints.Count)], interior.transform);
        objects.transform.localPosition = Vector3.zero;
        objects.SetActive(false);
    }
Example #3
0
    public void SetSize(InteriorSize size)
    {
        edgeColl.points = points[size];
        meshFilter.mesh = getMesh(size);
        float dimension = -Mathf.Abs(points[size][0][0]); //exit sprite is centered in image, so no need to do sprite dimensions

        buildingExit.transform.position = new Vector2(0f, dimension);
        spawnPos = buildingExit.transform.position;
    }
Example #4
0
    //checks pool for mesh, otherwise add a new one to the pool
    private Mesh getMesh(InteriorSize size)
    {
        if (meshPool.ContainsKey(size))
        {
            return(meshPool[size]);
        }
        Mesh mesh = createMesh(size);

        meshPool[size] = mesh;
        return(mesh);
    }
Example #5
0
 //called in World.cs when reusing a building pool object after setting its new position
 public void Reset()
 {
     if (objects != null)
     {
         Destroy(objects);
     }
     Populate();
     size = randomSize();
     selectLayout(size);
     setFloorHeight();
     // isEnterable = true; //temp
     // isOccupied = false; //temp
 }
Example #6
0
    //create new mesh for designated size
    private Mesh createMesh(InteriorSize size)
    {
        Mesh mesh = new Mesh();

        Vector2[]      inner     = points[size];
        List <Vector3> vertices  = new List <Vector3>();
        List <int>     triangles = new List <int>();

        foreach (Vector2 pt in inner)
        {
            vertices.Add(new Vector3(pt.x, pt.y));
        }
        vertices.AddRange(outter);
        switch (size)
        {
        case InteriorSize.SMALL:
            goto case InteriorSize.LARGE;

        case InteriorSize.MEDIUM:
            goto case InteriorSize.LARGE;

        case InteriorSize.LARGE:
            for (int i = 0; i < inner.Length - 1; i++)
            {
                triangles.Add(i);
                triangles.Add(inner.Length + i + 1);
                triangles.Add(inner.Length + i);
                triangles.Add(i);
                triangles.Add(i + 1);
                triangles.Add(inner.Length + i + 1);
            }
            break;

        default:
            Debug.LogError($"Unrecognized Size {size}");
            break;
        }
        mesh.vertices  = vertices.ToArray();
        mesh.triangles = triangles.ToArray();
        mesh.RecalculateNormals();
        return(mesh);
    }