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 derelict.sdl2.sdl; 32 import derelict.sdl2.image; 33 import derelict.sdl2.mixer; 34 import derelict.sdl2.ttf; 35 import derelict.opengl3.gl3; 36 37 import gl3n.aabb; 38 import gl3n.frustum; 39 import gl3n.interpolate; 40 import gl3n.linalg; 41 import gl3n.plane; 42 import gl3n.util; 43 import gl3n.ext.matrixstack; 44 45 import std.math; 46 47 import d2d.core.bytestream; 48 import d2d.core.iverifiable; 49 import d2d.core.idisposable; 50 import d2d.core.transformable; 51 import d2d.core.color3; 52 import d2d.core.fpslimiter; 53 54 import d2d.window.window; 55 import d2d.window.windowevent; 56 import d2d.window.windowflags; 57 58 import d2d.rendering.irendertarget; 59 import d2d.rendering.mesh; 60 import d2d.rendering.idrawable; 61 import d2d.rendering.texture; 62 import d2d.rendering.bitmap; 63 import d2d.rendering.color; 64 import d2d.rendering.shader; 65 import d2d.rendering.shaderprogram; 66 import d2d.rendering.shape; 67 import d2d.rendering.rectangleshape; 68 69 import d2d.audio.music; 70 import d2d.audio.sound; 71 72 import d2d.font.ifont; 73 import d2d.font.itext; 74 import d2d.font.ttffont; 75 import d2d.font.ttftext; 76 77 import d2d.toolkit.game; 78 79 import std..string; 80 import std.typecons; 81 } 82 83 /// 2D rotation on a mat4. 84 pure mat4 rotate2d(mat4 mat, float alpha) 85 { 86 mat = mat.rotatez(alpha); 87 return mat; 88 } 89 90 /// 2D scale on a mat4. 91 pure mat4 scale2d(mat4 mat, float x, float y) 92 { 93 mat = mat.scale(x, y, 1); 94 return mat; 95 } 96 97 /// 2D translation on a mat4. 98 pure mat4 translate2d(mat4 mat, float x, float y) 99 { 100 mat = mat.translate(x, y, 0); 101 return mat; 102 } 103 104 /// Matrix stack for modelview (like glPopMatrix, glPushMatrix). 105 MatrixStack!mat4 matrixStack = gl3n.ext.matrixstack.matrixStack!mat4(); 106 /// Matrix stack for projection. 107 MatrixStack!mat4 projectionStack = gl3n.ext.matrixstack.matrixStack!mat4(); 108 109 /// Initializes matrix stacks 110 static this() 111 { 112 matrixStack.set(mat4.identity); 113 projectionStack.set(mat4.orthographic(0, 1, 1, 0, -1, 1)); 114 }