diff options
Diffstat (limited to 'game.cpp')
| -rw-r--r-- | game.cpp | 22 | 
1 files changed, 20 insertions, 2 deletions
| @@ -171,9 +171,20 @@ void Game::handle_object() {  		std::cerr << "got object for non-existing chunk, discarding" << std::endl;  		return;  	} -  	pos.y = chunk->find(pos.x, pos.z)->get_height(pos.x, pos.z); -	chunk->objects.push_back(Terrain::Chunk::ObjectPair(scene->tree, pos)); + +	int64_t x = pos.x; +	x -= x % Terrain::chunk_size; + +	int64_t z = pos.z; +	z -= z % Terrain::chunk_size; + +	TerrainCacheObject::p ob = scene->terrain->tc->get_chunk(x, z, Terrain::chunk_size_total, Terrain::chunk_size_total); +	ob->objects.push_back(pos); + +	models::ModelManager& model_mgr = models::ModelManager::get_instance(); + +	chunk->objects.push_back(Terrain::Chunk::ObjectPair(model_mgr.get_model("tree"), pos));  }  Game& Game::get_instance() { @@ -181,3 +192,10 @@ Game& Game::get_instance() {  		game = new Game();  	return *game;  } + +void Game::free() { +	if(game) { +		delete game; +		game = NULL; +	} +} | 
