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