public override List <LEVoxel> CreateVoxels(VoxAtlas atlas) { voxels = new List <LEVoxel>(GameState.MAX_NONENV_PLAYERS * 2); LEVoxel lev; VGPCube vgp; for (int i = 0; i < GameState.MAX_NONENV_PLAYERS; i++) { // Create HQ Voxel lev = new LEVoxel("Team " + (i + 1) + " HQ", atlas); lev.VData.FaceType.SetAllTypes(0x00000001u); lev.VData.FaceType.SetAllMasks(0xfffffffeu); vgp = new VGPCube(); vgp.Color = TEAM_COLORS[i]; vgp.UVRect = new Vector4(DUV * 0, DUV * 1, DUV, DUV); lev.VData.GeoProvider = vgp; voxels.Add(lev); // Create Barracks Voxel lev = new LEVoxel("Team " + (i + 1) + " Barracks", atlas); lev.VData.FaceType.SetAllTypes(0x00000001u); lev.VData.FaceType.SetAllMasks(0xfffffffeu); vgp = new VGPCube(); vgp.Color = TEAM_COLORS[i]; vgp.UVRect = new Vector4(DUV * 1, DUV * 1, DUV, DUV); lev.VData.GeoProvider = vgp; voxels.Add(lev); } minID = voxels[0].VData.ID; maxID = voxels[voxels.Count - 1].VData.ID; return(voxels); }
public override List <LEVoxel> CreateVoxels(VoxAtlas atlas) { float duv = 1f / 8f; voxels = new List <LEVoxel>(2); LEVoxel lev; VGPCube vgp; // Create Flora Voxel lev = new LEVoxel("Flora", atlas); lev.VData.FaceType.SetAllTypes(0x00000001u); lev.VData.FaceType.SetAllMasks(0xfffffffeu); vgp = new VGPCube(); vgp.Color = Color.Khaki; vgp.UVRect = new Vector4(duv * 0, duv * 1, duv, duv); lev.VData.GeoProvider = vgp; voxels.Add(lev); // Create Ore Voxel lev = new LEVoxel("Ore", atlas); lev.VData.FaceType.SetAllTypes(0x00000001u); lev.VData.FaceType.SetAllMasks(0xfffffffeu); vgp = new VGPCube(); vgp.Color = Color.Purple; vgp.UVRect = new Vector4(duv * 1, duv * 1, duv, duv); lev.VData.GeoProvider = vgp; voxels.Add(lev); minID = voxels[0].VData.ID; maxID = voxels[voxels.Count - 1].VData.ID; return(voxels); }
public override List <LEVoxel> CreateVoxels(VoxAtlas atlas) { float duv = 1f / 8f; voxels = new List <LEVoxel>(1); // Create Camera Voxel LEVoxel lev = new LEVoxel("Camera Position", atlas); lev.VData.FaceType.SetAllTypes(0x00000001u); lev.VData.FaceType.SetAllMasks(0xfffffffeu); VGPCube vgp = new VGPCube(); vgp.Color = Color.White; vgp.UVRect = new Vector4(duv * 0, duv * 1, duv, duv); lev.VData.GeoProvider = vgp; voxels.Add(lev); camID = voxels[0].VData.ID; return(voxels); }
private void CreateVoxTypes() { Random r = new Random(343); for (int i = 0; i < COUNT_TERRAIN; i++) { var vd = state.World.Atlas.Create(); vd.FaceType = new VoxFaceType(); vd.FaceType.SetAllTypes(0x00000001u); vd.FaceType.SetAllMasks(0xfffffffeu); var vgp = new VGPCube(); switch (i) { case 0: vgp.Color = Color.White; break; case 1: vgp.Color = Color.Goldenrod; break; case 2: vgp.Color = Color.ForestGreen; break; case 3: vgp.Color = Color.Brown; break; case 4: vgp.Color = Color.Red; break; } vgp.UVRect = new Vector4(DUV * 0, DUV * 0, DUV, DUV); vd.GeoProvider = vgp; dVox.Add("Terrain " + i, vd); } for (int i = 0; i < COUNT_SCENERY; i++) { var vd = state.World.Atlas.Create(); vd.FaceType = new VoxFaceType(); vd.FaceType.SetAllTypes(0x00000001u); vd.FaceType.SetAllMasks(0xfffffffeu); var vgp = new VGPCube(); switch (i) { case 0: vgp.Color = Color.White; break; case 1: vgp.Color = Color.Goldenrod; break; case 2: vgp.Color = Color.ForestGreen; break; case 3: vgp.Color = Color.Brown; break; case 4: vgp.Color = Color.Red; break; case 5: vgp.Color = Color.Green; break; case 6: vgp.Color = Color.Red; break; case 7: vgp.Color = Color.Orange; break; case 8: vgp.Color = Color.Purple; break; case 9: vgp.Color = Color.DarkGray; break; } vgp.UVRect = new Vector4(DUV * 1, DUV * 0, DUV, DUV); vd.GeoProvider = vgp; dVox.Add("Scenery " + i, vd); } for (int i = 0; i < COUNT_RAMP; i++) { var vd = state.World.Atlas.Create(); vd.FaceType = new VoxFaceType(); vd.FaceType.SetAllTypes(0x00000000u); vd.FaceType.Types[Voxel.FACE_PY] = 0xffffffffu; vd.FaceType.SetAllMasks(0xffffffffu); var vgp = new VGPCustom(); Vector4 uvr = new Vector4(DUV * 3, DUV * 0, DUV, DUV); switch (i) { case 0: case 1: vgp.CustomVerts[Voxel.FACE_PY] = new VertexVoxel[] { new VertexVoxel(new Vector3(0, 0, 0), Vector2.UnitX, uvr, Color.White), new VertexVoxel(new Vector3(1, -1, 0), Vector2.One, uvr, Color.White), new VertexVoxel(new Vector3(1, -1, 1), Vector2.UnitY, uvr, Color.White), new VertexVoxel(new Vector3(0, 0, 1), Vector2.Zero, uvr, Color.White), new VertexVoxel(new Vector3(0, -1, 0), Vector2.UnitX, uvr, Color.White), new VertexVoxel(new Vector3(0, -1, 1), Vector2.Zero, uvr, Color.White) }; vgp.CustomInds[Voxel.FACE_PY] = new int[] { 0, 1, 3, 3, 1, 2, 3, 2, 5, 1, 0, 4, 0, 3, 4, 4, 3, 5 }; break; default: vgp.CustomVerts[Voxel.FACE_PY] = new VertexVoxel[] { new VertexVoxel(new Vector3(1, 0, 0), Vector2.UnitX, uvr, Color.White), new VertexVoxel(new Vector3(1, -1, 1), Vector2.One, uvr, Color.White), new VertexVoxel(new Vector3(0, -1, 1), Vector2.UnitY, uvr, Color.White), new VertexVoxel(new Vector3(0, 0, 0), Vector2.Zero, uvr, Color.White), new VertexVoxel(new Vector3(1, -1, 0), Vector2.UnitX, uvr, Color.White), new VertexVoxel(new Vector3(0, -1, 0), Vector2.Zero, uvr, Color.White) }; vgp.CustomInds[Voxel.FACE_PY] = new int[] { 0, 1, 3, 3, 1, 2, 3, 2, 5, 1, 0, 4, 0, 3, 4, 4, 3, 5 }; break; } if ((i % 2) == 1) { if (i == 1) { for (int vi = 0; vi < 6; vi++) { vgp.CustomVerts[Voxel.FACE_PY][vi].Position.X = 1 - vgp.CustomVerts[Voxel.FACE_PY][vi].Position.X; } } else { for (int vi = 0; vi < 6; vi++) { vgp.CustomVerts[Voxel.FACE_PY][vi].Position.Z = 1 - vgp.CustomVerts[Voxel.FACE_PY][vi].Position.Z; } } for (int ti = 0; ti < vgp.CustomInds[Voxel.FACE_PY].Length;) { int buf = vgp.CustomInds[Voxel.FACE_PY][ti + 2]; vgp.CustomInds[Voxel.FACE_PY][ti + 2] = vgp.CustomInds[Voxel.FACE_PY][ti]; vgp.CustomInds[Voxel.FACE_PY][ti] = buf; ti += 3; } } vd.GeoProvider = vgp; dVox.Add("Ramp " + i, vd); } for (int i = 0; i < REGION_COLORS.Length; i++) { var vd = state.World.Atlas.Create(); vd.FaceType = new VoxFaceType(); vd.FaceType.SetAllTypes(0x00000001u); vd.FaceType.SetAllMasks(0xfffffffeu); var vgp = new VGPCube(); vgp.Color = REGION_COLORS[i]; vgp.UVRect = new Vector4(DUV * 2, DUV * 0, DUV, DUV); vd.GeoProvider = vgp; dVox.Add("Region " + i, vd); } // Load Custom Voxels foreach (var gtc in gtcList) { var l = gtc.CreateVoxels(state.World.Atlas); if (l == null) { continue; } foreach (var lv in l) { dVox.Add(lv.Name, lv.VData); } } foreach (var ic in icList) { var l = ic.CreateVoxels(state.World.Atlas); if (l == null) { continue; } foreach (var lv in l) { dVox.Add(lv.Name, lv.VData); } } }
public override List<LEVoxel> CreateVoxels(VoxAtlas atlas) { voxels = new List<LEVoxel>(GameState.MAX_NONENV_PLAYERS * 2); LEVoxel lev; VGPCube vgp; for(int i = 0; i < GameState.MAX_NONENV_PLAYERS; i++) { // Create HQ Voxel lev = new LEVoxel("Team " + (i + 1) + " HQ", atlas); lev.VData.FaceType.SetAllTypes(0x00000001u); lev.VData.FaceType.SetAllMasks(0xfffffffeu); vgp = new VGPCube(); vgp.Color = TEAM_COLORS[i]; vgp.UVRect = new Vector4(DUV * 0, DUV * 1, DUV, DUV); lev.VData.GeoProvider = vgp; voxels.Add(lev); // Create Barracks Voxel lev = new LEVoxel("Team " + (i + 1) + " Barracks", atlas); lev.VData.FaceType.SetAllTypes(0x00000001u); lev.VData.FaceType.SetAllMasks(0xfffffffeu); vgp = new VGPCube(); vgp.Color = TEAM_COLORS[i]; vgp.UVRect = new Vector4(DUV * 1, DUV * 1, DUV, DUV); lev.VData.GeoProvider = vgp; voxels.Add(lev); } minID = voxels[0].VData.ID; maxID = voxels[voxels.Count - 1].VData.ID; return voxels; }