2014-05-29 15:56:39 +02:00
|
|
|
#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();
|
|
|
|
|
2014-10-12 07:13:22 +02:00
|
|
|
|
|
|
|
void add_sphere(int p_lats,int p_lons,float p_radius);
|
|
|
|
|
|
|
|
|
|
|
|
|
2014-05-29 15:56:39 +02:00
|
|
|
virtual AABB get_aabb() const;
|
|
|
|
virtual DVector<Face3> get_faces(uint32_t p_usage_flags) const;
|
|
|
|
|
|
|
|
ImmediateGeometry();
|
|
|
|
~ImmediateGeometry();
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // IMMEDIATE_GEOMETRY_H
|