diff options
author | Juan Linietsky <reduzio@gmail.com> | 2014-08-01 22:10:38 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2014-08-01 22:10:38 -0300 |
commit | 678948068bbde7f12a9c5f28a467b6cf4d127851 (patch) | |
tree | 75572f3a5cc6089a6ca3046e9307d0a7c0b72c51 /scene/3d/navigation_mesh.h | |
parent | 9ff6d55822647c87eef392147ea15641d0922d47 (diff) | |
download | redot-engine-678948068bbde7f12a9c5f28a467b6cf4d127851.tar.gz |
Small Issues & Maintenance
-=-=-=-=-=-=-=-=-=-=-=-=-=
-Begin work on Navigation Meshes (simple pathfinding for now, will improve soon)
-More doc on theme overriding
-Upgraded OpenSSL to version without bugs
-Misc bugfixes
Diffstat (limited to 'scene/3d/navigation_mesh.h')
-rw-r--r-- | scene/3d/navigation_mesh.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/scene/3d/navigation_mesh.h b/scene/3d/navigation_mesh.h new file mode 100644 index 0000000000..fccf405f9d --- /dev/null +++ b/scene/3d/navigation_mesh.h @@ -0,0 +1,68 @@ +#ifndef NAVIGATION_MESH_H +#define NAVIGATION_MESH_H + +#include "scene/3d/spatial.h" +#include "scene/resources/mesh.h" + + +class NavigationMesh : public Resource { + + OBJ_TYPE( NavigationMesh, Resource ); + + DVector<Vector3> vertices; + struct Polygon { + Vector<int> indices; + }; + Vector<Polygon> polygons; + +protected: + + static void _bind_methods(); + + void _set_polygons(const Array& p_array); + Array _get_polygons() const; +public: + + void create_from_mesh(const Ref<Mesh>& p_mesh); + + void set_vertices(const DVector<Vector3>& p_vertices); + DVector<Vector3> get_vertices() const; + + void add_polygon(const Vector<int>& p_polygon); + int get_polygon_count() const; + Vector<int> get_polygon(int p_idx); + void clear_polygons(); + + NavigationMesh(); +}; + + +class Navigation; + +class NavigationMeshInstance : public Spatial { + + OBJ_TYPE(NavigationMeshInstance,Spatial); + + bool enabled; + int nav_id; + Navigation *navigation; + Ref<NavigationMesh> navmesh; +protected: + + void _notification(int p_what); + static void _bind_methods(); +public: + + + + void set_enabled(bool p_enabled); + bool is_enabled() const; + + void set_navigation_mesh(const Ref<NavigationMesh>& p_navmesh); + Ref<NavigationMesh> get_navigation_mesh() const; + + NavigationMeshInstance(); +}; + + +#endif // NAVIGATION_MESH_H |