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); }
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; } }
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); }
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); }
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); }
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); }