예제 #1
0
 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;
     }
 }
예제 #2
0
 private static unsafe SMLiquidInstance* GetInstance(byte* mh2oChunk, SMLiquidChunk* chunk)
 {
     return (SMLiquidInstance*)(mh2oChunk + chunk->instanceOffset);
 }
예제 #3
0
 private static unsafe bool AnyLiquidLayer(SMLiquidChunk* chunk)
 {
     return chunk->layerCount > 0;
 }