Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
GunpowderKegBlock.cs
浏览该文件的文档.
1using Engine;
3
4namespace Game {
5 public abstract class GunpowderKegBlock : Block, IElectricElementBlock {
7
8 public BlockMesh m_blockMesh = new();
9
11
12 public string m_modelName;
13
14 public bool m_isIncendiary;
15
16 public Vector3 FuseOffset { get; set; }
17
18 public GunpowderKegBlock(string modelName, bool isIncendiary) {
19 m_modelName = modelName;
20 m_isIncendiary = isIncendiary;
21 }
22
23 public override void Initialize() {
25 Matrix boneAbsoluteTransform = BlockMesh.GetBoneAbsoluteTransform(model.FindMesh("Keg").ParentBone);
27 BlockMesh blockMesh = new();
28 blockMesh.AppendModelMeshPart(
29 model.FindMesh("Keg").MeshParts[0],
30 boneAbsoluteTransform * Matrix.CreateTranslation(0.5f, 0f, 0.5f),
31 false,
32 false,
33 false,
34 false,
36 );
37 m_blockMesh.AppendBlockMesh(blockMesh);
38 if (m_isIncendiary) {
39 m_blockMesh.TransformTextureCoordinates(Matrix.CreateTranslation(-0.25f, 0f, 0f));
40 }
42 m_standaloneBlockMesh.AppendModelMeshPart(
43 model.FindMesh("Keg").MeshParts[0],
44 boneAbsoluteTransform * Matrix.CreateTranslation(0f, -0.5f, 0f),
45 false,
46 false,
47 false,
48 false,
50 );
51 if (m_isIncendiary) {
52 m_standaloneBlockMesh.TransformTextureCoordinates(Matrix.CreateTranslation(-0.25f, 0f, 0f));
53 }
54 base.Initialize();
55 }
56
57 public override void GenerateTerrainVertices(BlockGeometryGenerator generator, TerrainGeometry geometry, int value, int x, int y, int z) {
58 generator.GenerateMeshVertices(
59 this,
60 x,
61 y,
62 z,
65 null,
66 geometry.SubsetOpaque
67 );
68 generator.GenerateWireVertices(
69 value,
70 x,
71 y,
72 z,
73 4,
74 0.25f,
76 geometry.SubsetOpaque
77 );
78 }
79
80 public override void DrawBlock(PrimitivesRenderer3D primitivesRenderer,
81 int value,
82 Color color,
83 float size,
84 ref Matrix matrix,
85 DrawBlockEnvironmentData environmentData) {
86 BlocksManager.DrawMeshBlock(primitivesRenderer, m_standaloneBlockMesh, color, size, ref matrix, environmentData);
87 }
88
89 public override BoundingBox[] GetCustomCollisionBoxes(SubsystemTerrain terrain, int value) => m_collisionBoxes;
90
91 public ElectricElement CreateElectricElement(SubsystemElectricity subsystemElectricity, int value, int x, int y, int z) =>
92 new GunpowderKegElectricElement(subsystemElectricity, new CellFace(x, y, z, 4));
93
95 int value,
96 int face,
97 int connectorFace,
98 int x,
99 int y,
100 int z) {
101 if (face == 4) {
102 return ElectricConnectorType.Input;
103 }
104 return null;
105 }
106
107 public int GetConnectionMask(int value) => int.MaxValue;
108 }
109}
Engine.Vector3 Vector3
ModelMesh FindMesh(string name, bool throwIfNotFound=true)
ReadOnlyList< ModelMeshPart > MeshParts
virtual void GenerateMeshVertices(Block block, int x, int y, int z, BlockMesh blockMesh, Color color, Matrix? matrix, TerrainGeometrySubset subset)
virtual void GenerateWireVertices(int value, int x, int y, int z, int mountingFace, float centerBoxSize, Vector2 centerOffset, TerrainGeometrySubset subset)
virtual BoundingBox CalculateBoundingBox()
static Matrix GetBoneAbsoluteTransform(ModelBone modelBone)
virtual void AppendModelMeshPart(ModelMeshPart meshPart, Matrix matrix, bool makeEmissive, bool flipWindingOrder, bool doubleSided, bool flipNormals, Color color)
static void DrawMeshBlock(PrimitivesRenderer3D primitivesRenderer, BlockMesh blockMesh, float size, ref Matrix matrix, DrawBlockEnvironmentData environmentData)
static object Get(Type type, string name)
ElectricConnectorType? GetConnectorType(SubsystemTerrain terrain, int value, int face, int connectorFace, int x, int y, int z)
ElectricElement CreateElectricElement(SubsystemElectricity subsystemElectricity, int value, int x, int y, int z)
override void DrawBlock(PrimitivesRenderer3D primitivesRenderer, int value, Color color, float size, ref Matrix matrix, DrawBlockEnvironmentData environmentData)
GunpowderKegBlock(string modelName, bool isIncendiary)
override BoundingBox[] GetCustomCollisionBoxes(SubsystemTerrain terrain, int value)
override void GenerateTerrainVertices(BlockGeometryGenerator generator, TerrainGeometry geometry, int value, int x, int y, int z)
TerrainGeometrySubset SubsetOpaque
static Color White
static Matrix CreateTranslation(float x, float y, float z)
Vector3 Translation
static readonly Vector2 Zero