mirror of
https://github.com/Relintai/voxelman.git
synced 2024-11-12 10:15:12 +01:00
Added WorldArea.
This commit is contained in:
parent
7ee2017568
commit
f0cd4008fc
2
SCsub
2
SCsub
@ -59,3 +59,5 @@ env.add_source_files(env.modules_sources,"world_generator/data/world_generator_p
|
|||||||
|
|
||||||
env.add_source_files(env.modules_sources,"world_generator/world_generator.cpp")
|
env.add_source_files(env.modules_sources,"world_generator/world_generator.cpp")
|
||||||
|
|
||||||
|
env.add_source_files(env.modules_sources,"areas/world_area.cpp")
|
||||||
|
|
||||||
|
65
areas/world_area.cpp
Normal file
65
areas/world_area.cpp
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
#include "world_area.h"
|
||||||
|
|
||||||
|
AABB WorldArea::get_aabb() const {
|
||||||
|
return _aabb;
|
||||||
|
}
|
||||||
|
void WorldArea::set_aabb(const AABB value) {
|
||||||
|
_aabb = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ref<Texture> WorldArea::get_map_texture() const {
|
||||||
|
return _map_texture;
|
||||||
|
}
|
||||||
|
void WorldArea::set_map_texture(const Ref<Texture> value) {
|
||||||
|
_map_texture = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ref<Texture> WorldArea::get_fov_texture() const {
|
||||||
|
return _fov_texture;
|
||||||
|
}
|
||||||
|
void WorldArea::set_fov_texture(const Ref<Texture> value) {
|
||||||
|
_fov_texture = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
String WorldArea::get_name() const {
|
||||||
|
return _name;
|
||||||
|
}
|
||||||
|
void WorldArea::set_name(const String value) {
|
||||||
|
_name = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
int WorldArea::get_level() const {
|
||||||
|
return _level;
|
||||||
|
}
|
||||||
|
void WorldArea::set_level(const int level) {
|
||||||
|
_level = level;
|
||||||
|
}
|
||||||
|
|
||||||
|
WorldArea::WorldArea() {
|
||||||
|
_level = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
WorldArea::~WorldArea() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void WorldArea::_bind_methods() {
|
||||||
|
ClassDB::bind_method(D_METHOD("get_aabb"), &WorldArea::get_aabb);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_aabb"), &WorldArea::set_aabb);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::AABB, "aabb"), "set_aabb", "get_aabb");
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("get_map_texture"), &WorldArea::get_map_texture);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_map_texture"), &WorldArea::set_map_texture);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "map_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_map_texture", "get_map_texture");
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("get_fov_texture"), &WorldArea::get_fov_texture);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_fov_texture"), &WorldArea::set_fov_texture);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "fov_texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), "set_fov_texture", "get_fov_texture");
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("get_name"), &WorldArea::get_name);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_name"), &WorldArea::set_name);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::STRING, "name"), "set_name", "get_name");
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("get_level"), &WorldArea::get_level);
|
||||||
|
ClassDB::bind_method(D_METHOD("set_level"), &WorldArea::set_level);
|
||||||
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "level"), "set_level", "get_level");
|
||||||
|
}
|
43
areas/world_area.h
Normal file
43
areas/world_area.h
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#ifndef WORLD_AREA_H
|
||||||
|
#define WORLD_AREA_H
|
||||||
|
|
||||||
|
#include "core/reference.h"
|
||||||
|
|
||||||
|
#include "core/ustring.h"
|
||||||
|
#include "core/math/aabb.h"
|
||||||
|
#include "scene/resources/texture.h"
|
||||||
|
|
||||||
|
class WorldArea : public Reference {
|
||||||
|
GDCLASS(WorldArea, Reference);
|
||||||
|
|
||||||
|
public:
|
||||||
|
AABB get_aabb() const;
|
||||||
|
void set_aabb(const AABB value);
|
||||||
|
|
||||||
|
Ref<Texture> get_map_texture() const;
|
||||||
|
void set_map_texture(const Ref<Texture> value);
|
||||||
|
|
||||||
|
Ref<Texture> get_fov_texture() const;
|
||||||
|
void set_fov_texture(const Ref<Texture> value);
|
||||||
|
|
||||||
|
String get_name() const;
|
||||||
|
void set_name(const String value);
|
||||||
|
|
||||||
|
int get_level() const;
|
||||||
|
void set_level(const int value);
|
||||||
|
|
||||||
|
WorldArea();
|
||||||
|
~WorldArea();
|
||||||
|
|
||||||
|
private:
|
||||||
|
static void _bind_methods();
|
||||||
|
|
||||||
|
private:
|
||||||
|
AABB _aabb;
|
||||||
|
Ref<Texture> _map_texture;
|
||||||
|
Ref<Texture> _fov_texture;
|
||||||
|
String _name;
|
||||||
|
int _level;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
@ -49,6 +49,8 @@
|
|||||||
|
|
||||||
#include "world_generator/world_generator.h"
|
#include "world_generator/world_generator.h"
|
||||||
|
|
||||||
|
#include "areas/world_area.h"
|
||||||
|
|
||||||
|
|
||||||
void register_voxelman_types() {
|
void register_voxelman_types() {
|
||||||
ClassDB::register_class<VoxelMesher>();
|
ClassDB::register_class<VoxelMesher>();
|
||||||
@ -100,6 +102,8 @@ void register_voxelman_types() {
|
|||||||
ClassDB::register_class<Planet>();
|
ClassDB::register_class<Planet>();
|
||||||
|
|
||||||
ClassDB::register_class<WorldGenerator>();
|
ClassDB::register_class<WorldGenerator>();
|
||||||
|
|
||||||
|
ClassDB::register_class<WorldArea>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void unregister_voxelman_types() {
|
void unregister_voxelman_types() {
|
||||||
|
@ -69,6 +69,26 @@ void VoxelWorld::set_player_bind(Node *player) {
|
|||||||
set_player(Object::cast_to<Spatial>(player));
|
set_player(Object::cast_to<Spatial>(player));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ref<WorldArea> VoxelWorld::get_world_area(const int index) const {
|
||||||
|
ERR_FAIL_INDEX_V(index, _world_areas.size(), Ref<WorldArea>());
|
||||||
|
|
||||||
|
return _world_areas.get(index);
|
||||||
|
}
|
||||||
|
void VoxelWorld::add_world_area(Ref<WorldArea> area) {
|
||||||
|
_world_areas.push_back(area);
|
||||||
|
}
|
||||||
|
void VoxelWorld::remove_world_area(const int index) {
|
||||||
|
ERR_FAIL_INDEX(index, _world_areas.size());
|
||||||
|
|
||||||
|
_world_areas.remove(index);
|
||||||
|
}
|
||||||
|
void VoxelWorld::clear_world_areas() {
|
||||||
|
_world_areas.clear();
|
||||||
|
}
|
||||||
|
int VoxelWorld::get_world_area_count() const {
|
||||||
|
return _world_areas.size();
|
||||||
|
}
|
||||||
|
|
||||||
void VoxelWorld::add_chunk(VoxelChunk *chunk, const int x, const int y, const int z) {
|
void VoxelWorld::add_chunk(VoxelChunk *chunk, const int x, const int y, const int z) {
|
||||||
chunk->set_chunk_position(x, y, z);
|
chunk->set_chunk_position(x, y, z);
|
||||||
|
|
||||||
@ -135,6 +155,7 @@ VoxelWorld::VoxelWorld() {
|
|||||||
VoxelWorld ::~VoxelWorld() {
|
VoxelWorld ::~VoxelWorld() {
|
||||||
_chunks.clear();
|
_chunks.clear();
|
||||||
_chunks_vector.clear();
|
_chunks_vector.clear();
|
||||||
|
_world_areas.clear();
|
||||||
|
|
||||||
_library.unref();
|
_library.unref();
|
||||||
}
|
}
|
||||||
@ -176,6 +197,12 @@ void VoxelWorld::_bind_methods() {
|
|||||||
ClassDB::bind_method(D_METHOD("set_player", "player"), &VoxelWorld::set_player_bind);
|
ClassDB::bind_method(D_METHOD("set_player", "player"), &VoxelWorld::set_player_bind);
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "player", PROPERTY_HINT_RESOURCE_TYPE, "Spatial"), "set_player", "get_player");
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "player", PROPERTY_HINT_RESOURCE_TYPE, "Spatial"), "set_player", "get_player");
|
||||||
|
|
||||||
|
ClassDB::bind_method(D_METHOD("get_world_area", "index"), &VoxelWorld::get_world_area);
|
||||||
|
ClassDB::bind_method(D_METHOD("add_world_area", "area"), &VoxelWorld::add_world_area);
|
||||||
|
ClassDB::bind_method(D_METHOD("remove_world_area", "index"), &VoxelWorld::remove_world_area);
|
||||||
|
ClassDB::bind_method(D_METHOD("clear_world_areas"), &VoxelWorld::clear_world_areas);
|
||||||
|
ClassDB::bind_method(D_METHOD("get_world_area_count"), &VoxelWorld::get_world_area_count);
|
||||||
|
|
||||||
ClassDB::bind_method(D_METHOD("add_chunk", "chunk", "x", "y", "z"), &VoxelWorld::add_chunk_bind);
|
ClassDB::bind_method(D_METHOD("add_chunk", "chunk", "x", "y", "z"), &VoxelWorld::add_chunk_bind);
|
||||||
ClassDB::bind_method(D_METHOD("get_chunk", "x", "y", "z"), &VoxelWorld::get_chunk);
|
ClassDB::bind_method(D_METHOD("get_chunk", "x", "y", "z"), &VoxelWorld::get_chunk);
|
||||||
ClassDB::bind_method(D_METHOD("remove_chunk", "x", "y", "z"), &VoxelWorld::remove_chunk);
|
ClassDB::bind_method(D_METHOD("remove_chunk", "x", "y", "z"), &VoxelWorld::remove_chunk);
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
#include "../library/voxelman_library.h"
|
#include "../library/voxelman_library.h"
|
||||||
#include "../level_generator/voxelman_level_generator.h"
|
#include "../level_generator/voxelman_level_generator.h"
|
||||||
#include "voxel_buffer.h"
|
#include "voxel_buffer.h"
|
||||||
|
#include "../areas/world_area.h"
|
||||||
|
|
||||||
class VoxelChunk;
|
class VoxelChunk;
|
||||||
|
|
||||||
@ -43,6 +44,12 @@ public:
|
|||||||
void set_player(Spatial *player);
|
void set_player(Spatial *player);
|
||||||
void set_player_bind(Node *player);
|
void set_player_bind(Node *player);
|
||||||
|
|
||||||
|
Ref<WorldArea> get_world_area(const int index) const;
|
||||||
|
void add_world_area(Ref<WorldArea> area);
|
||||||
|
void remove_world_area(const int index);
|
||||||
|
void clear_world_areas();
|
||||||
|
int get_world_area_count() const;
|
||||||
|
|
||||||
void add_chunk(VoxelChunk *chunk, const int x, const int y, const int z);
|
void add_chunk(VoxelChunk *chunk, const int x, const int y, const int z);
|
||||||
void add_chunk_bind(Node *chunk, const int x, const int y, const int z);
|
void add_chunk_bind(Node *chunk, const int x, const int y, const int z);
|
||||||
VoxelChunk *get_chunk(const int x, const int y, const int z) const;
|
VoxelChunk *get_chunk(const int x, const int y, const int z) const;
|
||||||
@ -69,6 +76,8 @@ private:
|
|||||||
HashMap<Vector3i, VoxelChunk *, Vector3iHasher> _chunks;
|
HashMap<Vector3i, VoxelChunk *, Vector3iHasher> _chunks;
|
||||||
Vector<VoxelChunk *> _chunks_vector;
|
Vector<VoxelChunk *> _chunks_vector;
|
||||||
|
|
||||||
|
Vector<Ref<WorldArea> > _world_areas;
|
||||||
|
|
||||||
NodePath _player_path;
|
NodePath _player_path;
|
||||||
Spatial *_player;
|
Spatial *_player;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user