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); }