mirror of
https://github.com/Relintai/pandemonium_engine.git
synced 2025-02-11 10:30:06 +01:00
Added a new helper method to TerrainWorld.
This commit is contained in:
parent
16d62d3a34
commit
17e048a044
@ -876,6 +876,18 @@ Ref<TerrainChunk> TerrainWorld::get_or_create_chunk_at_world_position(const Vect
|
||||
return chunk_get_or_create(x, z);
|
||||
}
|
||||
|
||||
Vector2i TerrainWorld::world_position_to_chunk_position(const Vector3 &p_world_position) {
|
||||
// TODO rework this so it works directly with ints.
|
||||
|
||||
Vector3 pos = p_world_position / get_voxel_scale();
|
||||
|
||||
//Note: floor is needed to handle negative numbers properly
|
||||
int x = static_cast<int>(Math::floor(pos.x / get_chunk_size_x()));
|
||||
int z = static_cast<int>(Math::floor(pos.z / get_chunk_size_z()));
|
||||
|
||||
return Vector2i(x, z);
|
||||
}
|
||||
|
||||
Vector2i TerrainWorld::world_position_to_world_data_position(const Vector3 &world_position) {
|
||||
Vector3 pos = world_position / get_voxel_scale();
|
||||
|
||||
@ -1567,6 +1579,7 @@ void TerrainWorld::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_voxel_at_world_position", "world_position", "data", "channel_index", "rebuild"), &TerrainWorld::set_voxel_at_world_position, DEFVAL(true));
|
||||
ClassDB::bind_method(D_METHOD("get_chunk_at_world_position", "world_position"), &TerrainWorld::get_chunk_at_world_position);
|
||||
ClassDB::bind_method(D_METHOD("get_or_create_chunk_at_world_position", "world_position"), &TerrainWorld::get_or_create_chunk_at_world_position);
|
||||
ClassDB::bind_method(D_METHOD("world_position_to_chunk_position", "world_position"), &TerrainWorld::world_position_to_chunk_position);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("world_position_to_world_data_position", "world_position"), &TerrainWorld::world_position_to_world_data_position);
|
||||
ClassDB::bind_method(D_METHOD("get_voxel_at_world_data_position", "world_data_position", "channel_index"), &TerrainWorld::get_voxel_at_world_data_position);
|
||||
|
@ -192,6 +192,7 @@ public:
|
||||
void set_voxel_at_world_position(const Vector3 &world_position, const uint8_t data, const int channel_index, const bool rebuild = true);
|
||||
Ref<TerrainChunk> get_chunk_at_world_position(const Vector3 &world_position);
|
||||
Ref<TerrainChunk> get_or_create_chunk_at_world_position(const Vector3 &world_position);
|
||||
Vector2i world_position_to_chunk_position(const Vector3 &p_world_position);
|
||||
|
||||
Vector2i world_position_to_world_data_position(const Vector3 &world_position);
|
||||
uint8_t get_voxel_at_world_data_position(const Vector2i &world_data_position, const int channel_index);
|
||||
|
Loading…
Reference in New Issue
Block a user