first commit
This commit is contained in:
62
Minecraft.World/DataLayer.cpp
Normal file
62
Minecraft.World/DataLayer.cpp
Normal file
@@ -0,0 +1,62 @@
|
||||
#include "stdafx.h"
|
||||
#include "DataLayer.h"
|
||||
|
||||
DataLayer::DataLayer(int length, int depthBits) : depthBits(depthBits), depthBitsPlusFour(depthBits + 4)
|
||||
{
|
||||
data = byteArray(length >> 1);
|
||||
}
|
||||
|
||||
DataLayer::DataLayer(byteArray data, int depthBits) : depthBits(depthBits), depthBitsPlusFour(depthBits + 4)
|
||||
{
|
||||
this->data = data;
|
||||
}
|
||||
|
||||
DataLayer::~DataLayer()
|
||||
{
|
||||
delete[] data.data;
|
||||
}
|
||||
|
||||
int DataLayer::get(int x, int y, int z)
|
||||
{
|
||||
int pos = (x << depthBitsPlusFour | z << depthBits | y);
|
||||
int slot = pos >> 1;
|
||||
int part = pos & 1;
|
||||
|
||||
if (part == 0)
|
||||
{
|
||||
return data[slot] & 0xf;
|
||||
} else
|
||||
{
|
||||
return (data[slot] >> 4) & 0xf;
|
||||
}
|
||||
}
|
||||
|
||||
void DataLayer::set(int x, int y, int z, int val)
|
||||
{
|
||||
int pos = (x << depthBitsPlusFour | z << depthBits | y);
|
||||
|
||||
int slot = pos >> 1;
|
||||
int part = pos & 1;
|
||||
|
||||
if (part == 0)
|
||||
{
|
||||
data[slot] = (byte) ((data[slot] & 0xf0) | (val & 0xf));
|
||||
} else
|
||||
{
|
||||
data[slot] = (byte) ((data[slot] & 0x0f) | ((val & 0xf) << 4));
|
||||
}
|
||||
}
|
||||
|
||||
bool DataLayer::isValid()
|
||||
{
|
||||
return data.data != NULL;
|
||||
}
|
||||
|
||||
void DataLayer::setAll(int br)
|
||||
{
|
||||
byte val = (byte) (br & (br << 4));
|
||||
for (unsigned int i = 0; i < data.length; i++)
|
||||
{
|
||||
data[i] = val;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user