diff options
author | Juan Linietsky <reduzio@gmail.com> | 2014-09-16 21:19:54 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2014-09-16 21:19:54 -0300 |
commit | f00f4b9296a827ac1014cc2cc84b0dfbb4cac497 (patch) | |
tree | 57da76829a89ceb42d258865a3a4afb3cf51d5d4 /scene/3d/collision_polygon.h | |
parent | 642c63319eb7471c9accc0c50dfffef5d72c0078 (diff) | |
download | redot-engine-f00f4b9296a827ac1014cc2cc84b0dfbb4cac497.tar.gz |
CollisionPolygon (3D)
Workaround for round() on PC.
Diffstat (limited to 'scene/3d/collision_polygon.h')
-rw-r--r-- | scene/3d/collision_polygon.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/scene/3d/collision_polygon.h b/scene/3d/collision_polygon.h new file mode 100644 index 0000000000..efb3666778 --- /dev/null +++ b/scene/3d/collision_polygon.h @@ -0,0 +1,50 @@ +#ifndef COLLISION_POLYGON_H +#define COLLISION_POLYGON_H + +#include "scene/3d/spatial.h" +#include "scene/resources/shape.h" + + + +class CollisionPolygon : public Spatial { + + OBJ_TYPE(CollisionPolygon,Spatial); +public: + + enum BuildMode { + BUILD_SOLIDS, + BUILD_TRIANGLES, + }; + +protected: + + + float depth; + AABB aabb; + BuildMode build_mode; + Vector<Point2> polygon; + + void _add_to_collision_object(Object *p_obj); + void _update_parent(); + +protected: + + void _notification(int p_what); + static void _bind_methods(); +public: + + void set_build_mode(BuildMode p_mode); + BuildMode get_build_mode() const; + + void set_depth(float p_depth); + float get_depth() const; + + void set_polygon(const Vector<Point2>& p_polygon); + Vector<Point2> get_polygon() const; + + virtual AABB get_item_rect() const; + CollisionPolygon(); +}; + +VARIANT_ENUM_CAST( CollisionPolygon::BuildMode ); +#endif // COLLISION_POLYGON_H |