internal unsafe ChunkLiquid(byte* mh2oChunk, SMLiquidChunk* chunk) { if (AnyLiquidLayer(chunk)) { var instance = GetInstance(mh2oChunk, chunk); Flags = instance->liquidObjectId; Type = instance->liquidType; MinX = MinY = 0; MaxY = MaxX = 8; MinHeight = instance->minWaterHeight; MaxHeight = instance->maxWaterHeight; if (instance->liquidObjectId < 42) // most probably for wmos... { MinX = instance->xOffset; MinY = instance->yOffset; MaxX = instance->xOffset + instance->width; MaxY = instance->yOffset + instance->height; } ParseExistsTable(mh2oChunk, instance); ParseHeightMap(mh2oChunk, instance); } else { ExistsTable = EmptyExistsTable; HeightMap = null; } }
private static unsafe SMLiquidInstance* GetInstance(byte* mh2oChunk, SMLiquidChunk* chunk) { return (SMLiquidInstance*)(mh2oChunk + chunk->instanceOffset); }
private static unsafe bool AnyLiquidLayer(SMLiquidChunk* chunk) { return chunk->layerCount > 0; }