omg 💣
This commit is contained in:
@@ -169,31 +169,26 @@ void World::Update(Bullet* bullets[MAX_BULLETS], const Vector3f& player_pos, Blo
|
||||
UpdateWorld(player_pos, blockinfo);
|
||||
//TransposeWorld(player_pos, bullets);
|
||||
}
|
||||
//
|
||||
//void World::UpdateChunk(int& updates, unsigned int chx, unsigned int chy, BlockInfo* blockinfo[BTYPE_LAST]) {
|
||||
// if (updates == 0 && ChunkAt(chx, 1, chy) &&
|
||||
// ChunkAt(chx, 1, chy)->IsDirty()) {
|
||||
// ChunkAt(chx, 1, chy)->Update(blockinfo, this);
|
||||
// updates = FRAMES_UPDATE_CHUNKS;
|
||||
// }
|
||||
//
|
||||
//}
|
||||
|
||||
void World::ChangeBlockAtCursor(BlockType blockType, const Vector3f& player_pos, const Vector3f& player_dir, bool& block) {
|
||||
netprot::ChunkMod* World::ChangeBlockAtCursor(BlockType blockType, const Vector3f& player_pos, const Vector3f& player_dir, bool& block, bool net) {
|
||||
Vector3f currentPos = player_pos;
|
||||
Vector3f currentBlock = currentPos;
|
||||
Vector3f ray = player_dir;
|
||||
BlockType oldbtype;
|
||||
netprot::ChunkMod* cmod = nullptr;
|
||||
bool found = false;
|
||||
|
||||
if (block) return;
|
||||
if (block) return cmod;
|
||||
|
||||
while ((currentPos - currentBlock).Length() <= MAX_SELECTION_DISTANCE && !found) {
|
||||
currentBlock += ray / 10.f;
|
||||
|
||||
BlockType bt = BlockAt(currentBlock);
|
||||
|
||||
if (bt != BTYPE_AIR)
|
||||
if (bt != BTYPE_AIR) {
|
||||
found = true;
|
||||
oldbtype = bt;
|
||||
}
|
||||
}
|
||||
|
||||
if (found)
|
||||
@@ -219,21 +214,30 @@ void World::ChangeBlockAtCursor(BlockType blockType, const Vector3f& player_pos,
|
||||
(By == PyA ||
|
||||
By == PyB ||
|
||||
By == PyC) &&
|
||||
Bz == Pz))
|
||||
Bz == Pz)) {
|
||||
found = true;
|
||||
oldbtype = bt;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (found && (int)currentBlock.y < CHUNK_SIZE_Y) {
|
||||
if (net) {
|
||||
cmod = new netprot::ChunkMod();
|
||||
cmod->old_b_type = oldbtype;
|
||||
cmod->b_type = blockType;
|
||||
cmod->pos = currentBlock;
|
||||
}
|
||||
int bx = (int)currentBlock.x % CHUNK_SIZE_X;
|
||||
int by = (int)currentBlock.y % CHUNK_SIZE_Y;
|
||||
int bz = (int)currentBlock.z % CHUNK_SIZE_Z;
|
||||
|
||||
ChunkAt(currentBlock)->SetBlock(bx, by, bz, blockType, this);
|
||||
ChunkAt(currentBlock)->MakeModified();
|
||||
block = true;
|
||||
}
|
||||
|
||||
return cmod;
|
||||
}
|
||||
|
||||
void World::ChangeBlockAtPosition(BlockType blockType, Vector3f pos) {
|
||||
|
Reference in New Issue
Block a user