Ejemplo n.º 1
0
    public void MakeBuildPart(Item buildPart, Cube.Type face)
    {
        Mesh mesh = MakeMesh(buildPart, face, 0, 0, 0);

        //Create a temporary GO for the buildpart
        GameObject buildPartGO = new GameObject();

        buildPartGO.AddComponent <MeshFilter>();
        buildPartGO.AddComponent <MeshRenderer>();

        //Add the mesh
        buildPartGO.GetComponent <MeshFilter>().mesh             = mesh;
        buildPartGO.GetComponent <MeshRenderer>().sharedMaterial = ChunksManager.blockMat;

        buildPartGO.transform.eulerAngles = BuildMouseBehaviour.active.lastRot;

        //Communicate with mouse
        BuildMouseBehaviour.active.clickTimer = 0;
        TempBuildComponent comp = new TempBuildComponent();

        comp.go   = buildPartGO;
        comp.item = buildPart;
        comp.face = face;
        BuildMouseBehaviour.active.SetGOFollowMouse(comp);
    }
Ejemplo n.º 2
0
    public void Update()
    {
        if (delay > 0)
        {
            delay -= Time.deltaTime;
            return;
        }
        float wheel = Input.GetAxis("Mouse ScrollWheel");

        if (wheel < 0)
        {
            index -= 1;
            delay += 0.3f;
        }
        else if (wheel > 0)
        {
            index += 1;
            delay += 0.3f;
        }

        if (index > 2)
        {
            index = 0;
        }
        else if (index < 0)
        {
            index = 2;
        }

        holy.SetActive(false);
        garlic.SetActive(false);
        silver.SetActive(false);

        switch (index)
        {
        case 0:
            holy.SetActive(true);
            type = Cube.Type.zombie;
            break;

        case 1:
            garlic.SetActive(true);
            type = Cube.Type.vampire;
            break;

        case 2:
            silver.SetActive(true);
            type = Cube.Type.werewolf;
            break;
        }
    }
Ejemplo n.º 3
0
    public static Vector2[] FaceUVs(Cube.Type type)
    {
        Vector2[] UVs     = new Vector2[4];
        Tile      tilePos = TexturePosition(type);

        UVs[0] = new Vector2(tileSize * tilePos.x + tileSize,
                             tileSize * tilePos.y);
        UVs[1] = new Vector2(tileSize * tilePos.x + tileSize,
                             tileSize * tilePos.y + tileSize);
        UVs[2] = new Vector2(tileSize * tilePos.x,
                             tileSize * tilePos.y + tileSize);
        UVs[3] = new Vector2(tileSize * tilePos.x,
                             tileSize * tilePos.y);

        return(UVs);
    }
Ejemplo n.º 4
0
    private static Mesh MakeMesh(Item buildPart, Cube.Type face, int x, int y, int z)
    {
        //Create the mesh
        MeshData meshForObject = new MeshData();

        meshForObject = GetItemMeshData.MeshForObject(x, y, z, meshForObject, buildPart, face);

        //Place values to the mesh
        Mesh mesh = new Mesh();

        mesh.Clear();
        mesh.vertices  = meshForObject.vertices.ToArray();
        mesh.triangles = meshForObject.triangles.ToArray();
        mesh.uv        = meshForObject.uv.ToArray();
        mesh.RecalculateNormals();
        return(mesh);
    }
Ejemplo n.º 5
0
    Cube ChangeCube(Cube cube, Cube.Type type)
    {
        Vector2i position = cube.position;

        DestroyImmediate(cube.gameObject);
        SetCube((int)position.x, (int)position.y, null);
        Cube typeCube = defaultCube;
        int  i        = 0;

        while (i < cubeType.Count && cubeType[i].type != type)
        {
            ++i;
        }
        Cube cubeSpawn = Instantiate(cubeType[i], new Vector3(position.x, 0, position.y), Quaternion.identity, transform);

        SetCube((int)position.x, (int)position.y, cubeSpawn);
        cubeSpawn.SetPosition((int)position.x, (int)position.y);

        return(cubeSpawn);
    }
Ejemplo n.º 6
0
    public static Tile TexturePosition(Cube.Type type)
    {
        Tile tile = new Tile();

        tile.x = 1;
        tile.y = 0;

        if (type == Cube.Type.Grass)
        {
            tile.x = 2;
            tile.y = 4;
        }
        if (type == Cube.Type.Rock)
        {
            tile.x = 0;
            tile.y = 4;
        }
        if (type == Cube.Type.MarbleWall)
        {
            tile.x = 0;
            tile.y = 5;
        }
        if (type == Cube.Type.Wood)
        {
            tile.x = 1;
            tile.y = 5;
        }
        if (type == Cube.Type.Sand)
        {
            tile.x = 3;
            tile.y = 5;
        }
        if (type == Cube.Type.Water)
        {
            tile.x = 2;
            tile.y = 5;
        }
        if (type == Cube.Type.Sandstone)
        {
            tile.x = 3;
            tile.y = 6;
        }
        if (type == Cube.Type.Terracotta)
        {
            tile.x = 3;
            tile.y = 4;
        }
        if (type == Cube.Type.Snow)
        {
            tile.x = 5;
            tile.y = 6;
        }
        if (type == Cube.Type.Ice)
        {
            tile.x = 6;
            tile.y = 6;
        }
        if (type == Cube.Type.Clay)
        {
            tile.x = 4;
            tile.y = 7;
        }
        if (type == Cube.Type.Dry_Grass)
        {
            tile.x = 4;
            tile.y = 5;
        }
        if (type == Cube.Type.Desert_Grass)
        {
            tile.x = 4;
            tile.y = 4;
        }
        if (type == Cube.Type.Lush_Grass)
        {
            tile.x = 5;
            tile.y = 7;
        }
        if (type == Cube.Type.Dirt)
        {
            tile.x = 1;
            tile.y = 4;
        }
        if (type == Cube.Type.Green_Grass)
        {
            tile.x = 0;
            tile.y = 3;
        }
        if (type == Cube.Type.Brown_Grass)
        {
            tile.x = 1;
            tile.y = 3;
        }
        if (type == Cube.Type.Dark_Grass)
        {
            tile.x = 2;
            tile.y = 3;
        }
        if (type == Cube.Type.Light_Grass)
        {
            tile.x = 3;
            tile.y = 3;
        }
        if (type == Cube.Type.Oak_Wood)
        {
            tile.x = 4;
            tile.y = 3;
        }
        if (type == Cube.Type.Pine_Wood)
        {
            tile.x = 5;
            tile.y = 3;
        }
        if (type == Cube.Type.Birch_Wood)
        {
            tile.x = 6;
            tile.y = 3;
        }
        if (type == Cube.Type.Oak_Planks)
        {
            tile.x = 5;
            tile.y = 4;
        }
        if (type == Cube.Type.Pine_Planks)
        {
            tile.x = 5;
            tile.y = 5;
        }
        if (type == Cube.Type.Birch_Planks)
        {
            tile.x = 6;
            tile.y = 4;
        }
        if (type == Cube.Type.Planks)
        {
            tile.x = 6;
            tile.y = 5;
        }

        return(tile);
    }
    public static MeshData BoxData(int x, int y, int z, MeshData meshData, MeshEntry meshPrfb, Cube.Type optionalFace)
    {
        float bottom = 0.5f;
        float yVals  = meshPrfb.ySize - bottom;//
        float xVals  = meshPrfb.xSize / 2f;
        float zVals  = meshPrfb.zSize / 2f;


        //Trunk
        //North
        meshData.AddVertex(new Vector3(x + xVals + meshPrfb.xPos, y - bottom + meshPrfb.yPos, z + zVals + meshPrfb.zPos));
        meshData.AddVertex(new Vector3(x + xVals + meshPrfb.xPos, y + yVals + meshPrfb.yPos, z + zVals + meshPrfb.zPos));
        meshData.AddVertex(new Vector3(x - xVals + meshPrfb.xPos, y + yVals + meshPrfb.yPos + meshPrfb.difLeftRightYTop, z + zVals + meshPrfb.zPos));
        meshData.AddVertex(new Vector3(x - xVals + meshPrfb.xPos, y - bottom + meshPrfb.yPos + meshPrfb.difLeftRightYBottom, z + zVals + meshPrfb.zPos));
        meshData.AddQuadTriangles();
        if (meshPrfb.face == Cube.Type.None)
        {
            meshData.uv.AddRange(GetUVs.FaceUVs(optionalFace));
        }
        else
        {
            meshData.uv.AddRange(GetUVs.FaceUVs(meshPrfb.face));
        }

        //East
        meshData.AddVertex(new Vector3(x + xVals + meshPrfb.xPos, y - bottom + meshPrfb.yPos, z - zVals + meshPrfb.zPos));
        meshData.AddVertex(new Vector3(x + xVals + meshPrfb.xPos, y + yVals + meshPrfb.yPos, z - zVals + meshPrfb.zPos));
        meshData.AddVertex(new Vector3(x + xVals + meshPrfb.xPos, y + yVals + meshPrfb.yPos, z + zVals + meshPrfb.zPos));
        meshData.AddVertex(new Vector3(x + xVals + meshPrfb.xPos, y - bottom + meshPrfb.yPos, z + zVals + meshPrfb.zPos));
        meshData.AddQuadTriangles();
        if (meshPrfb.face == Cube.Type.None)
        {
            meshData.uv.AddRange(GetUVs.FaceUVs(optionalFace));
        }
        else
        {
            meshData.uv.AddRange(GetUVs.FaceUVs(meshPrfb.face));
        }

        //South
        meshData.AddVertex(new Vector3(x - xVals + meshPrfb.xPos, y - bottom + meshPrfb.yPos + meshPrfb.difLeftRightYBottom, z - zVals + meshPrfb.zPos));
        meshData.AddVertex(new Vector3(x - xVals + meshPrfb.xPos, y + yVals + meshPrfb.yPos + meshPrfb.difLeftRightYTop, z - zVals + meshPrfb.zPos));
        meshData.AddVertex(new Vector3(x + xVals + meshPrfb.xPos, y + yVals + meshPrfb.yPos, z - zVals + meshPrfb.zPos));
        meshData.AddVertex(new Vector3(x + xVals + meshPrfb.xPos, y - bottom + meshPrfb.yPos, z - zVals + meshPrfb.zPos));
        meshData.AddQuadTriangles();
        if (meshPrfb.face == Cube.Type.None)
        {
            meshData.uv.AddRange(GetUVs.FaceUVs(optionalFace));
        }
        else
        {
            meshData.uv.AddRange(GetUVs.FaceUVs(meshPrfb.face));
        }

        //West
        meshData.AddVertex(new Vector3(x - xVals + meshPrfb.xPos, y - bottom + meshPrfb.yPos + meshPrfb.difLeftRightYBottom, z + zVals + meshPrfb.zPos));
        meshData.AddVertex(new Vector3(x - xVals + meshPrfb.xPos, y + yVals + meshPrfb.yPos + meshPrfb.difLeftRightYTop, z + zVals + meshPrfb.zPos));
        meshData.AddVertex(new Vector3(x - xVals + meshPrfb.xPos, y + yVals + meshPrfb.yPos + meshPrfb.difLeftRightYTop, z - zVals + meshPrfb.zPos));
        meshData.AddVertex(new Vector3(x - xVals + meshPrfb.xPos, y - bottom + meshPrfb.yPos + meshPrfb.difLeftRightYBottom, z - zVals + meshPrfb.zPos));
        meshData.AddQuadTriangles();
        if (meshPrfb.face == Cube.Type.None)
        {
            meshData.uv.AddRange(GetUVs.FaceUVs(optionalFace));
        }
        else
        {
            meshData.uv.AddRange(GetUVs.FaceUVs(meshPrfb.face));
        }

        //Up
        meshData.AddVertex(new Vector3(x - xVals + meshPrfb.xPos, y + yVals + meshPrfb.yPos + meshPrfb.difLeftRightYTop, z + zVals + meshPrfb.zPos));
        meshData.AddVertex(new Vector3(x + xVals + meshPrfb.xPos, y + yVals + meshPrfb.yPos, z + zVals + meshPrfb.zPos));
        meshData.AddVertex(new Vector3(x + xVals + meshPrfb.xPos, y + yVals + meshPrfb.yPos, z - zVals + meshPrfb.zPos));
        meshData.AddVertex(new Vector3(x - xVals + meshPrfb.xPos, y + yVals + meshPrfb.yPos + meshPrfb.difLeftRightYTop, z - zVals + meshPrfb.zPos));
        meshData.AddQuadTriangles();
        if (meshPrfb.face == Cube.Type.None)
        {
            meshData.uv.AddRange(GetUVs.FaceUVs(optionalFace));
        }
        else
        {
            meshData.uv.AddRange(GetUVs.FaceUVs(meshPrfb.face));
        }
        return(meshData);
    }
 public static MeshData MeshForObject(int x, int y, int z, MeshData meshData, Item item, Cube.Type optionalFace)
 {
     foreach (MeshEntry meshPrfb in item.meshParts)
     {
         meshData = BoxData(x, y, z, meshData, meshPrfb, optionalFace);
     }
     return(meshData);
 }