summaryrefslogtreecommitdiff
path: root/scene/3d/immediate_geometry.h
diff options
context:
space:
mode:
Diffstat (limited to 'scene/3d/immediate_geometry.h')
-rw-r--r--scene/3d/immediate_geometry.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/scene/3d/immediate_geometry.h b/scene/3d/immediate_geometry.h
new file mode 100644
index 0000000000..2db81134c6
--- /dev/null
+++ b/scene/3d/immediate_geometry.h
@@ -0,0 +1,41 @@
+#ifndef IMMEDIATE_GEOMETRY_H
+#define IMMEDIATE_GEOMETRY_H
+
+#include "scene/3d/visual_instance.h"
+#include "scene/resources/mesh.h"
+
+class ImmediateGeometry : public GeometryInstance {
+
+ OBJ_TYPE(ImmediateGeometry,GeometryInstance);
+
+
+ RID im;
+ List<Ref<Texture> > cached_textures;
+ bool empty;
+ AABB aabb;
+protected:
+
+ static void _bind_methods();
+public:
+
+
+ void begin(Mesh::PrimitiveType p_primitive,const Ref<Texture>& p_texture);
+ void set_normal(const Vector3& p_normal);
+ void set_tangent(const Plane& p_tangent);
+ void set_color(const Color& p_color);
+ void set_uv(const Vector2& tex_uv);
+ void set_uv2(const Vector2& tex_uv);
+
+ void add_vertex(const Vector3& p_vertex);
+
+ void end();
+ void clear();
+
+ virtual AABB get_aabb() const;
+ virtual DVector<Face3> get_faces(uint32_t p_usage_flags) const;
+
+ ImmediateGeometry();
+ ~ImmediateGeometry();
+};
+
+#endif // IMMEDIATE_GEOMETRY_H