Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
ChestBlock.cs
浏览该文件的文档.
1using Engine;
2
3namespace Game {
4 public class ChestBlock : CubeBlock {
5 public static int Index = 45;
6
7 public override int GetFaceTextureSlot(int face, int value) {
8 return face switch {
9 4 => 42,
10 5 => 42,
11 _ => Terrain.ExtractData(value) switch {
12 0 => face switch {
13 0 => 27,
14 2 => 26,
15 _ => 25
16 },
17 1 => face switch {
18 1 => 27,
19 3 => 26,
20 _ => 25
21 },
22 2 => face switch {
23 2 => 27,
24 0 => 26,
25 _ => 25
26 },
27 _ => face switch {
28 3 => 27,
29 1 => 26,
30 _ => 25
31 }
32 }
33 };
34 }
35
36 public override BlockPlacementData GetPlacementValue(SubsystemTerrain subsystemTerrain,
37 ComponentMiner componentMiner,
38 int value,
39 TerrainRaycastResult raycastResult) {
41 float num = Vector3.Dot(forward, Vector3.UnitZ);
42 float num2 = Vector3.Dot(forward, Vector3.UnitX);
43 float num3 = Vector3.Dot(forward, -Vector3.UnitZ);
44 float num4 = Vector3.Dot(forward, -Vector3.UnitX);
45 int data = num == MathUtils.Max(num, num2, num3, num4) ? 2 :
46 num2 == MathUtils.Max(num2, num3, num4) ? 3 :
47 num3 == Math.Max(num3, num4) ? 0 : 1;
48 BlockPlacementData result = default;
49 result.Value = Terrain.ReplaceData(Terrain.ReplaceContents(45), data);
50 result.CellFace = raycastResult.CellFace;
51 return result;
52 }
53 }
54}
static int Max(int x1, int x2)
override int GetFaceTextureSlot(int face, int value)
override BlockPlacementData GetPlacementValue(SubsystemTerrain subsystemTerrain, ComponentMiner componentMiner, int value, TerrainRaycastResult raycastResult)
方块放置方向
ComponentCreatureModel ComponentCreatureModel
ComponentCreature ComponentCreature
static int ReplaceData(int value, int data)
static int ReplaceContents(int value, int contents)
方块值的最低10位,替换为目标Content
static int ExtractData(int value)
static Matrix CreateFromQuaternion(Quaternion quaternion)
Vector3 Forward
static readonly Vector3 UnitX
static readonly Vector3 UnitZ
static float Dot(Vector3 v1, Vector3 v2)