summaryrefslogtreecommitdiff
path: root/scene/3d/immediate_geometry.h
blob: 2db81134c6ce284bc83653fa1bd57fd831810d2f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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