1 module unecht.core.components.editor.gismo;
2
3 version(UEIncludeEditor):
4
5 import unecht.core.component;
6 import unecht.gl.vertexBufferObject;
7 import unecht.gl.vertexArrayObject;
8
9 import unecht.core.entity;
10 import unecht.core.components.renderer;
11 import unecht.core.components.material;
12
13 import gl3n.linalg;
14
15 ///
16 final class UEEditorGismo : UEComponent {
17
18 mixin(UERegisterObject!());
19
20 override void onCreate() {
21 super.onCreate;
22
23 import unecht.core.components.misc;
24
25 entity.layer = UELayer.editor;
26
27 auto renderer = this.entity.addComponent!UERenderer;
28 auto mesh = this.entity.addComponent!UEMesh;
29
30 renderer.mesh = mesh;
31 auto material = renderer.material = this.entity.addComponent!UEMaterial;
32 material.setProgram(UEMaterial.vs_flatcolor,UEMaterial.fs_flatcolor, "flat colored");
33 material.depthTest = false;
34
35 mesh.vertexArrayObject = new GLVertexArrayObject();
36 mesh.vertexArrayObject.bind();
37
38 enum length = 2;
39 mesh.vertexBuffer = new GLVertexBufferObject([
40 vec3(0,0,0),
41 vec3(length,0,0),
42
43 vec3(0,0,0),
44 vec3(0,length,0),
45
46 vec3(0,0,0),
47 vec3(0,0,length),
48 ]);
49
50 mesh.colorBuffer = new GLVertexBufferObject([
51 vec3(1,0,0),
52 vec3(1,0,0),
53
54 vec3(0,1,0),
55 vec3(0,1,0),
56
57 vec3(0,0,1),
58 vec3(0,0,1),
59 ]);
60
61 mesh.indexBuffer = new GLVertexBufferObject([0,1, 2,3, 4,5]);
62 mesh.indexBuffer.primitiveType = GLRenderPrimitive.lines;
63
64 mesh.vertexArrayObject.unbind();
65 }
66 }