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