1using System.Reflection;
16 for (
int i = 0; i < 16; i++) {
25 TypeInfo typeInfo =
null;
26 TypeInfo typeInfo2 = GetType().GetTypeInfo();
27 while (typeInfo2 !=
null) {
28 if (typeInfo2.BaseType == typeof(
FluidBlock)) {
32 typeInfo2 = typeInfo2.BaseType.GetTypeInfo();
34 if (typeInfo ==
null) {
35 throw new InvalidOperationException(
"Fluid type not found.");
41 || block.GetType().GetTypeInfo().IsSubclassOf(typeInfo.AsType());
102 overrideTopTextureSlot,
146 result.CellFace = raycastResult.
CellFace;
168 return base.ShouldGenerateFace(
196 public static int GetLevel(
int data) => data & 0xF;
198 public static int SetLevel(
int data,
int level) => (data & -16) | (level & 0xF);
200 public static bool GetIsTop(
int data) => (data & 0x10) != 0;
static float Saturate(float x)
static int Max(int x1, int x2)
virtual void GenerateCubeVertices(Block block, int value, int x, int y, int z, Color color, TerrainGeometrySubset[] subsetsByFace)
override BoundingBox[] GetCustomCollisionBoxes(SubsystemTerrain terrain, int value)
override bool IsHeatBlocker(int value)
static float ZeroSubst(float v, float subst)
float CalculateNeighborHeight(int value)
static float CalculateFluidVertexHeight(float h1, float h2, float h3, float h4)
static bool GetIsTop(int data)
override void Initialize()
bool[] m_theSameFluidsByIndex
override bool ShouldGenerateFace(SubsystemTerrain subsystemTerrain, int face, int value, int neighborValue, int x, int y, int z)
static int GetLevel(int data)
static int SetLevel(int data, int level)
bool IsTheSameFluid(int contents)
void GenerateFluidTerrainVertices(BlockGeometryGenerator generator, int value, int x, int y, int z, Color sideColor, Color topColor, TerrainGeometrySubset[] subset)
override int GetFaceTextureSlot(int face, int value)
override BlockPlacementData GetPlacementValue(SubsystemTerrain subsystemTerrain, ComponentMiner componentMiner, int value, TerrainRaycastResult raycastResult)
方块放置方向
BoundingBox[][] m_boundingBoxesByLevel
override bool IsCollapseDestructibleBlock(int value)
float GetLevelHeight(int level)
static int SetIsTop(int data, bool isTop)
static int ExtractContents(int value)
static int ReplaceData(int value, int data)
virtual int GetCellValueFast(int x, int y, int z)
static int ReplaceContents(int value, int contents)
方块值的最低10位,替换为目标Content
static int ExtractData(int value)