-added 'dot' function to vector math -fixed Circle tool rendering -fixed some potentiall memory leaks -added 'collision' module which now separates ShootGrid from SpaceInvaders demo -separate some systems from demos to 'basic' module to better demos functionality sharing -slow down snake -added new graphics -BrickBreaker demo now works (without blocks breaking and with bugged collision detection) -some bug fixes
53 lines
No EOL
1.4 KiB
D
53 lines
No EOL
1.4 KiB
D
module gui.tool_circle;
|
|
|
|
import ecs_utils.gfx.buffer;
|
|
import ecs_utils.gfx.shader;
|
|
import ecs_utils.gfx.config;
|
|
import ecs_utils.gfx.renderer;
|
|
|
|
import ecs_utils.math.vector;
|
|
|
|
version(WebAssembly)import glad.gl.gles2;
|
|
else version(Android)import glad.gl.gles2;
|
|
else import glad.gl.gl;
|
|
|
|
struct ToolCircle
|
|
{
|
|
//Buffer vbo;
|
|
//Buffer ibo;
|
|
|
|
uint material_id = 1;
|
|
uint mesh_id = 0;
|
|
|
|
/*/void generate()
|
|
{
|
|
ushort[]
|
|
}*/
|
|
|
|
void draw(Renderer* renderer, vec2 position, float size, float edge = 1)
|
|
{
|
|
glDisable(GL_DEPTH_TEST);
|
|
position = position * renderer.view_size + renderer.view_pos;
|
|
vec2 sizes = renderer.view_size * size;
|
|
vec2 sizes2 = vec2(edge,0);
|
|
|
|
import core.stdc.string;
|
|
ubyte[32] uniform_block;
|
|
void* ptr = uniform_block.ptr;
|
|
*cast(float*)(ptr) = sizes.x;
|
|
*cast(float*)(ptr+4) = 0;
|
|
*cast(float*)(ptr+8) = 0;
|
|
*cast(float*)(ptr+12) = sizes.y;
|
|
memcpy(ptr+16,position.data.ptr,8);
|
|
memcpy(ptr+24,sizes2.data.ptr,8);
|
|
glEnableVertexAttribArray(0);
|
|
|
|
GfxConfig.meshes[mesh_id].bind();
|
|
GfxConfig.materials[material_id].bind();
|
|
GfxConfig.materials[material_id].pushBindings();
|
|
GfxConfig.materials[material_id].pushUniforms(uniform_block.ptr);
|
|
//glDisable(GL_DEPTH_TEST);
|
|
|
|
glDrawElements(GL_TRIANGLES,6,GL_UNSIGNED_SHORT,null);
|
|
}
|
|
} |