diff options
Diffstat (limited to 'modules/gridmap/grid_map.h')
| -rw-r--r-- | modules/gridmap/grid_map.h | 88 |
1 files changed, 40 insertions, 48 deletions
diff --git a/modules/gridmap/grid_map.h b/modules/gridmap/grid_map.h index 3863c337b..afa827911 100644 --- a/modules/gridmap/grid_map.h +++ b/modules/gridmap/grid_map.h @@ -29,26 +29,23 @@ #ifndef GRID_MAP_H #define GRID_MAP_H - -#include "scene/resources/mesh_library.h" -#include "scene/3d/spatial.h" #include "scene/3d/navigation.h" +#include "scene/3d/spatial.h" +#include "scene/resources/mesh_library.h" #include "scene/resources/multimesh.h" //heh heh, godotsphir!! this shares no code and the design is completely different with previous projects i've done.. //should scale better with hardware that supports instancing - class BakedLightInstance; class GridMap : public Spatial { - - OBJ_TYPE( GridMap, Spatial ); + OBJ_TYPE(GridMap, Spatial); enum { - MAP_DIRTY_TRANSFORMS=1, - MAP_DIRTY_INSTANCES=2, + MAP_DIRTY_TRANSFORMS = 1, + MAP_DIRTY_INSTANCES = 2, }; union IndexKey { @@ -60,12 +57,12 @@ class GridMap : public Spatial { }; uint64_t key; - _FORCE_INLINE_ bool operator<(const IndexKey& p_key) const { + _FORCE_INLINE_ bool operator<(const IndexKey &p_key) const { return key < p_key.key; } - IndexKey() { key=0; } + IndexKey() { key = 0; } }; /** @@ -75,12 +72,16 @@ class GridMap : public Spatial { struct { unsigned int item : 16; - unsigned int rot:5; - unsigned int layer:8; + unsigned int rot : 5; + unsigned int layer : 8; }; uint32_t cell; - Cell() { item=0; rot=0; layer=0; } + Cell() { + item = 0; + rot = 0; + layer = 0; + } }; /** @@ -110,8 +111,8 @@ class GridMap : public Spatial { bool dirty; RID static_body; - Map<int,ItemInstances> items; - Map<IndexKey,NavMesh> navmesh_ids; + Map<int, ItemInstances> items; + Map<IndexKey, NavMesh> navmesh_ids; }; union OctantKey { @@ -125,13 +126,13 @@ class GridMap : public Spatial { uint64_t key; - _FORCE_INLINE_ bool operator<(const OctantKey& p_key) const { + _FORCE_INLINE_ bool operator<(const OctantKey &p_key) const { return key < p_key.key; } //OctantKey(const IndexKey& p_k, int p_item) { indexkey=p_k.key; item=p_item; } - OctantKey() { key=0; } + OctantKey() { key = 0; } }; Transform last_transform; @@ -139,7 +140,7 @@ class GridMap : public Spatial { bool _in_tree; float cell_size; int octant_size; - bool center_x,center_y,center_z; + bool center_x, center_y, center_z; bool bake; float cell_scale; Navigation *navigation; @@ -150,7 +151,6 @@ class GridMap : public Spatial { bool baked_lock; Vector3::Axis clip_axis; - /** * @brief An Area is something like a room: it has doors, and Octants can choose to belong to it. */ @@ -177,11 +177,9 @@ class GridMap : public Spatial { Ref<MeshLibrary> theme; - Map<OctantKey,Octant*> octant_map; - Map<IndexKey,Cell> cell_map; - Map<int,Area*> area_map; - - + Map<OctantKey, Octant *> octant_map; + Map<IndexKey, Cell> cell_map; + Map<int, Area *> area_map; void _recreate_octant_data(); @@ -193,11 +191,11 @@ class GridMap : public Spatial { float param[VS::LIGHT_PARAM_MAX]; }; - _FORCE_INLINE_ int _find_area(const IndexKey& p_pos) const; + _FORCE_INLINE_ int _find_area(const IndexKey &p_pos) const; _FORCE_INLINE_ Vector3 _octant_get_offset(const OctantKey &p_key) const { - return Vector3(p_key.x,p_key.y,p_key.z)*cell_size*octant_size; + return Vector3(p_key.x, p_key.y, p_key.z) * cell_size * octant_size; } void _octant_enter_world(const OctantKey &p_key); @@ -206,46 +204,41 @@ class GridMap : public Spatial { void _octant_update(const OctantKey &p_key); void _octant_transform(const OctantKey &p_key); void _octant_clear_baked(const OctantKey &p_key); - void _octant_clear_navmesh(const GridMap::OctantKey&); - void _octant_bake(const OctantKey &p_key,const Ref<TriangleMesh>& p_tmesh=RES(),const Vector<BakeLight> &p_lights=Vector<BakeLight>(),List<Vector3> *r_prebake=NULL); + void _octant_clear_navmesh(const GridMap::OctantKey &); + void _octant_bake(const OctantKey &p_key, const Ref<TriangleMesh> &p_tmesh = RES(), const Vector<BakeLight> &p_lights = Vector<BakeLight>(), List<Vector3> *r_prebake = NULL); bool awaiting_update; void _queue_dirty_map(); void _update_dirty_map_callback(); - void resource_changed(const RES& p_res); - + void resource_changed(const RES &p_res); void _update_areas(); void _update_area_instances(); - void _clear_internal(bool p_keep_areas=false); + void _clear_internal(bool p_keep_areas = false); BakedLightInstance *baked_light_instance; bool use_baked_light; void _find_baked_light(); void _baked_light_changed(); - Array _get_baked_light_meshes(); protected: - - bool _set(const StringName& p_name, const Variant& p_value); - bool _get(const StringName& p_name,Variant &r_ret) const; - void _get_property_list( List<PropertyInfo> *p_list) const; + bool _set(const StringName &p_name, const Variant &p_value); + bool _get(const StringName &p_name, Variant &r_ret) const; + void _get_property_list(List<PropertyInfo> *p_list) const; void _notification(int p_what); static void _bind_methods(); - public: - enum { - INVALID_CELL_ITEM=-1 + INVALID_CELL_ITEM = -1 }; - void set_theme(const Ref<MeshLibrary>& p_theme); + void set_theme(const Ref<MeshLibrary> &p_theme); Ref<MeshLibrary> get_theme() const; void set_cell_size(float p_size); @@ -254,7 +247,6 @@ public: void set_octant_size(int p_size); int get_octant_size() const; - void set_center_x(bool p_enable); bool get_center_x() const; void set_center_y(bool p_enable); @@ -262,16 +254,16 @@ public: void set_center_z(bool p_enable); bool get_center_z() const; - void set_cell_item(int p_x,int p_y,int p_z, int p_item,int p_orientation=0); - int get_cell_item(int p_x,int p_y,int p_z) const; - int get_cell_item_orientation(int p_x,int p_y,int p_z) const; + void set_cell_item(int p_x, int p_y, int p_z, int p_item, int p_orientation = 0); + int get_cell_item(int p_x, int p_y, int p_z) const; + int get_cell_item_orientation(int p_x, int p_y, int p_z) const; - void set_clip(bool p_enabled, bool p_clip_above=true, int p_floor=0, Vector3::Axis p_axis=Vector3::AXIS_X); + void set_clip(bool p_enabled, bool p_clip_above = true, int p_floor = 0, Vector3::Axis p_axis = Vector3::AXIS_X); - Error create_area(int p_id,const AABB& p_area); + Error create_area(int p_id, const AABB &p_area); AABB area_get_bounds(int p_area) const; - void area_set_exterior_portal(int p_area,bool p_enable); - void area_set_name(int p_area,const String& p_name); + void area_set_exterior_portal(int p_area, bool p_enable); + void area_set_name(int p_area, const String &p_name); String area_get_name(int p_area) const; bool area_is_exterior_portal(int p_area) const; void area_set_portal_disable_distance(int p_area, float p_distance); |
