Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
MusketBlock.cs
浏览该文件的文档.
1using Engine;
3
4namespace Game {
5 public class MusketBlock : Block {
6 [Flags]
13
14 public static int Index = 212;
15
17
19
20 public override void Initialize() {
21 Model model = ContentManager.Get<Model>("Models/Musket");
22 Matrix boneAbsoluteTransform = BlockMesh.GetBoneAbsoluteTransform(model.FindMesh("Musket").ParentBone);
23 Matrix boneAbsoluteTransform2 = BlockMesh.GetBoneAbsoluteTransform(model.FindMesh("Hammer").ParentBone);
25 m_standaloneBlockMeshUnloaded.AppendModelMeshPart(
26 model.FindMesh("Musket").MeshParts[0],
27 boneAbsoluteTransform,
28 false,
29 false,
30 false,
31 false,
33 );
34 m_standaloneBlockMeshUnloaded.AppendModelMeshPart(
35 model.FindMesh("Hammer").MeshParts[0],
36 boneAbsoluteTransform2,
37 false,
38 false,
39 false,
40 false,
42 );
44 m_standaloneBlockMeshLoaded.AppendModelMeshPart(
45 model.FindMesh("Musket").MeshParts[0],
46 boneAbsoluteTransform,
47 false,
48 false,
49 false,
50 false,
52 );
53 m_standaloneBlockMeshLoaded.AppendModelMeshPart(
54 model.FindMesh("Hammer").MeshParts[0],
55 Matrix.CreateRotationX(0.7f) * boneAbsoluteTransform2,
56 false,
57 false,
58 false,
59 false,
61 );
62 base.Initialize();
63 }
64
65 public override void GenerateTerrainVertices(BlockGeometryGenerator generator, TerrainGeometry geometry, int value, int x, int y, int z) { }
66
67 public override void DrawBlock(PrimitivesRenderer3D primitivesRenderer,
68 int value,
69 Color color,
70 float size,
71 ref Matrix matrix,
72 DrawBlockEnvironmentData environmentData) {
74 BlocksManager.DrawMeshBlock(primitivesRenderer, m_standaloneBlockMeshLoaded, color, 2f * size, ref matrix, environmentData);
75 }
76 else {
77 BlocksManager.DrawMeshBlock(primitivesRenderer, m_standaloneBlockMeshUnloaded, color, 2f * size, ref matrix, environmentData);
78 }
79 }
80
81 public override bool IsSwapAnimationNeeded(int oldValue, int newValue) {
82 if (Terrain.ExtractContents(oldValue) != BlockIndex) {
83 return true;
84 }
85 int data = Terrain.ExtractData(oldValue);
86 return SetHammerState(Terrain.ExtractData(newValue), true) != SetHammerState(data, true);
87 }
88
89 public override int GetDamage(int value) => (Terrain.ExtractData(value) >> 8) & 0xFF;
90
91 public override int SetDamage(int value, int damage) {
92 int num = Terrain.ExtractData(value);
93 num &= -65281;
94 num |= Math.Clamp(damage, 0, 255) << 8;
95 return Terrain.ReplaceData(value, num);
96 }
97
98 public static LoadState GetLoadState(int data) => (LoadState)(data & 3);
99
100 public static int SetLoadState(int data, LoadState loadState) => (data & -4) | (int)(loadState & LoadState.Loaded);
101
102 public static bool GetHammerState(int data) => (data & 4) != 0;
103
104 public static int SetHammerState(int data, bool state) => (data & -5) | ((state ? 1 : 0) << 2);
105
106 public static BulletBlock.BulletType? GetBulletType(int data) {
107 int num = (data >> 4) & 0xF;
108 if (num != 0) {
109 return (BulletBlock.BulletType)(num - 1);
110 }
111 return null;
112 }
113
114 public static int SetBulletType(int data, BulletBlock.BulletType? bulletType) {
115 int num = (int)(bulletType.HasValue ? bulletType.Value + 1 : BulletBlock.BulletType.MusketBall);
116 return (data & -241) | ((num & 0xF) << 4);
117 }
118 }
119}
ModelMesh FindMesh(string name, bool throwIfNotFound=true)
ReadOnlyList< ModelMeshPart > MeshParts
int BlockIndex
定义 Block.cs:6
static Matrix GetBoneAbsoluteTransform(ModelBone modelBone)
static void DrawMeshBlock(PrimitivesRenderer3D primitivesRenderer, BlockMesh blockMesh, float size, ref Matrix matrix, DrawBlockEnvironmentData environmentData)
static object Get(Type type, string name)
override int GetDamage(int value)
override void DrawBlock(PrimitivesRenderer3D primitivesRenderer, int value, Color color, float size, ref Matrix matrix, DrawBlockEnvironmentData environmentData)
static int SetLoadState(int data, LoadState loadState)
override bool IsSwapAnimationNeeded(int oldValue, int newValue)
override int SetDamage(int value, int damage)
BlockMesh m_standaloneBlockMeshLoaded
override void Initialize()
override void GenerateTerrainVertices(BlockGeometryGenerator generator, TerrainGeometry geometry, int value, int x, int y, int z)
static LoadState GetLoadState(int data)
BlockMesh m_standaloneBlockMeshUnloaded
static BulletBlock.? BulletType GetBulletType(int data)
static int SetHammerState(int data, bool state)
static int SetBulletType(int data, BulletBlock.BulletType? bulletType)
static bool GetHammerState(int data)
static int ExtractContents(int value)
static int ReplaceData(int value, int data)
static int ExtractData(int value)
static Color White
static Matrix CreateRotationX(float radians)