1 /** Module for including all D2DGame components. 2 * Examples: 3 * --- 4 * import D2D; 5 * 6 * void main() 7 * { 8 * Window window = new Window(); 9 * 10 * Event event; // Or WindowEvent 11 * while(window.open) 12 * { 13 * while (window.pollEvent(event)) 14 * { 15 * if(event.type == Event.Type.Quit) 16 * window.close(); 17 * } 18 * window.clear(); 19 * 20 * // Update & Render here 21 * 22 * window.display(); 23 * } 24 * } 25 * --- 26 */ 27 module d2d; 28 29 public 30 { 31 import bindbc.sdl; 32 import bindbc.sdl.image; 33 import bindbc.sdl.mixer; 34 import bindbc.sdl.ttf; 35 36 import bindbc.opengl; 37 38 import soloader = bindbc.loader.sharedlib; 39 40 import gl3n.aabb; 41 import gl3n.ext.matrixstack; 42 import gl3n.frustum; 43 import gl3n.interpolate; 44 import gl3n.linalg; 45 import gl3n.plane; 46 import gl3n.util; 47 48 import std.math; 49 50 import d2d.core.bytestream; 51 import d2d.core.color3; 52 import d2d.core.fpslimiter; 53 import d2d.core.idisposable; 54 import d2d.core.iverifiable; 55 import d2d.core.quadtree; 56 import d2d.core.transformable; 57 import d2d.core.utils; 58 59 import d2d.window.window; 60 import d2d.window.windowevent; 61 import d2d.window.windowflags; 62 63 import d2d.rendering.bitmap; 64 import d2d.rendering.color; 65 import d2d.rendering.idrawable; 66 import d2d.rendering.irendertarget; 67 import d2d.rendering.mesh; 68 import d2d.rendering.rectangleshape; 69 import d2d.rendering.shader; 70 import d2d.rendering.shaderprogram; 71 import d2d.rendering.shape; 72 import d2d.rendering.spritebatch; 73 import d2d.rendering.spritesheet; 74 import d2d.rendering.texture; 75 76 import d2d.audio.music; 77 import d2d.audio.sound; 78 79 import d2d.font.bmfont; 80 import d2d.font.bmtext; 81 import d2d.font.ifont; 82 import d2d.font.itext; 83 import d2d.font.ttffont; 84 import d2d.font.ttftext; 85 86 import d2d.toolkit.game; 87 import d2d.toolkit.input.keyboard; 88 import d2d.toolkit.input.mouse; 89 90 import std.string; 91 import std.meta : AliasSeq; 92 } 93 94 /// 2D rotation on a mat4. 95 pure mat4 rotate2d(mat4 mat, float alpha) 96 { 97 mat = mat.rotatez(alpha); 98 return mat; 99 } 100 101 /// 2D scale on a mat4. 102 pure mat4 scale2d(mat4 mat, float x, float y) 103 { 104 mat = mat.scale(x, y, 1); 105 return mat; 106 } 107 108 /// 2D translation on a mat4. 109 pure mat4 translate2d(mat4 mat, float x, float y) 110 { 111 mat = mat.translate(x, y, 0); 112 return mat; 113 } 114 115 /// Matrix stack for modelview (like glPopMatrix, glPushMatrix). 116 MatrixStack!mat4 matrixStack = gl3n.ext.matrixstack.matrixStack!mat4(); 117 /// Matrix stack for projection. 118 MatrixStack!mat4 projectionStack = gl3n.ext.matrixstack.matrixStack!mat4(); 119 120 /// Initializes matrix stacks 121 static this() 122 { 123 matrixStack.set(mat4.identity); 124 projectionStack.set(mat4.orthographic(0, 1, 1, 0, -1, 1)); 125 }