public override void GenerateTerrainVertices(Block block, BlockGeometryGenerator generator, TerrainGeometrySubsets geometry, int value, int x, int y, int z) { BlockMesh drawMesh = new BlockMesh(); Point3 p = new Point3(x, y, z); Terrain terrain = generator.Terrain; for (int i = 0; i < 6; i++) { Point3 pp = p + Fixdirection[i]; int v = terrain.GetCellContents(pp.X, pp.Y, pp.Z); if (v == 1003) { BlockMesh blockMesh = new BlockMesh(); Matrix matrix = BlockMesh.GetBoneAbsoluteTransform(model.FindMesh(eles[i]).ParentBone); blockMesh.AppendModelMeshPart(model.FindMesh(eles[i]).MeshParts[0], matrix * Matrix.CreateScale(0.7f), false, false, false, false, Color.White); drawMesh.AppendBlockMesh(blockMesh); } } BlockMesh blockMeshd = new BlockMesh(); Matrix matrixd = BlockMesh.GetBoneAbsoluteTransform(model.FindMesh(eles[6]).ParentBone); blockMeshd.AppendModelMeshPart(model.FindMesh(eles[6]).MeshParts[0], matrixd * Matrix.CreateScale(0.7f), false, false, false, false, Color.White); drawMesh.AppendBlockMesh(blockMeshd); drawMesh.TransformPositions(Matrix.CreateTranslation(0.5f, 0.5f, 0.5f)); if (!ComponentPlayUpdate.duliBlocks.ContainsKey(p)) { ComponentPlayUpdate.duliBlocks.Add(p, texture); } generator.GenerateMeshVertices(block, x, y, z, drawMesh, Color.White, Matrix.Identity, ComponentPlayUpdate.GTV(x, y, z, geometry).SubsetTransparent); boundmesh = drawMesh; }
public override void Initialize() { Model model = ContentManager.Get <Model>("Mekiasm/Models/AtomicDecomposer"); Matrix bone = BlockMesh.GetBoneAbsoluteTransform(model.FindMesh("Atom_main").ParentBone); texture = ContentManager.Get <Texture2D>("Mekiasm/Textures/AtmoicDecomposer"); BlockMesh mesh = new BlockMesh(); mesh.AppendModelMeshPart(model.FindMesh("Atom_main").MeshParts[0], bone, false, false, false, false, Color.White); blockMesh.AppendBlockMesh(mesh); }
public ItemMekWire(int id, string str) : base(id, str) { model = ContentManager.Get <Model>("Mekiasm/Models/Wire"); texture = ContentManager.Get <Texture2D>("Mekiasm/Textures/Wire"); BlockMesh blockMesh = new BlockMesh(); Matrix matrix = BlockMesh.GetBoneAbsoluteTransform(model.FindMesh(eles[1]).ParentBone); blockMesh.AppendModelMeshPart(model.FindMesh(eles[1]).MeshParts[0], matrix, false, false, false, true, Color.White); mainMesh.AppendBlockMesh(blockMesh); mainMesh.TransformPositions(Matrix.CreateTranslation(0.5f, 0.5f, 0.5f)); drawMesh.AppendModelMeshPart(model.FindMesh(eles[6]).MeshParts[0], matrix, false, false, false, true, Color.White); drawMesh.TransformPositions(Matrix.CreateTranslation(0.5f, 0.5f, 0.5f)); }
public MekFengliGenerator(int id, string str) : base(id, str) { Model model = ContentManager.Get <Model>("Mekiasm/Models/风力发电机"); texture = ContentManager.Get <Texture2D>("Mekiasm/Textures/风力发电机"); for (int i = 0; i < eles.Count; i++) { BlockMesh blockMesh = new BlockMesh(); Matrix matrix = BlockMesh.GetBoneAbsoluteTransform(model.FindMesh(eles[i]).ParentBone); blockMesh.AppendModelMeshPart(model.FindMesh(eles[i]).MeshParts[0], matrix, false, false, false, false, Color.White); drawMesh.AppendBlockMesh(blockMesh); } }
public MekAdvanceSolarPanel(int id, string str) : base(id, str) { Model model = ContentManager.Get <Model>("Mekiasm/Models/AdvanceSolarPlane"); texture = ContentManager.Get <Texture2D>("Mekiasm/Textures/AdvanceSolarPlane"); for (int i = 0; i < eles.Count; i++) { BlockMesh blockMesh = new BlockMesh(); Matrix matrix = BlockMesh.GetBoneAbsoluteTransform(model.FindMesh(eles[i]).ParentBone); blockMesh.AppendModelMeshPart(model.FindMesh(eles[i]).MeshParts[0], matrix * Matrix.CreateScale(0.5f) * Matrix.CreateTranslation(0.5f, 0.5f, 0.5f), false, false, false, false, Color.White); mainMesh.AppendBlockMesh(blockMesh); boundingBoxes.Add(blockMesh.CalculateBoundingBox()); } }