Todo: - Specific rendering mode for editor related rendering - Basic Editor gizmo for transformation i.e. translate/rotate/scale in world and local coordinates - Add warning to genie build script when running on windows and WindowsSdkVersion cannot be found. This happens when the script is not run from vcvarsall command prompt - Improve README and add a screenshot to make the repository ready for making it public - Refactor all global application state into 'Application_Context' struct. A single global instance of which is available everywhere ? Improve bounding sphere calculation - Change the way lights are set as uniforms to remove snprintf calls per frame for every light attribute - Screen mouse coordinates to world-coordinates for aiming - Player projectiles and sounds - Console commands - Console command history - Console command help - Space partitioning and scene handling - Move Gui_State and Editor_State into game_state and modify usage as needed - Get editor camera speed and other settings from config file - Recompile Soloud on windows to use static sdl2 backend - Figure out a way to reduce of remove snprintf calls from render code - Re-Implement saving/loading scene to/from files - Implement storing console's scroll location and restore it when console is toggled - Implement collision/physics data serialization, read and write. - Physics forces/torque etc - Implement physics debug visualizations for other primitives and tri mesh shapes - Serializing/Deserializing physics data - Proper implementation of Scene struct with per-scene settings and configurations that can be loaded/saved to file instead of just dumping entities into a file - Necessary basic editor additions like placing objects, scaling, rotating etc - Add fallback shader - Implement Game States - Store Materials in new format supported by parser - Add model description file which has the same syntax supported by parser and modify old blender exporter to conform to new standards - Fix bugs with sound sources not updating - Add creating distributable build and uploading to itch.io account support to GENie under windows and linux. - Remove hardcoded numerical values from sscanf and other format strings. ? Recalculated bounding boxes for rotated meshes ? Wrap malloc and free calls in custom functions to track usage ? File extension checking for asset loading ? Only allocate hashmap bucket when required - Mapping actions to keybindings, for example map action "Jump" to Space key etc ? Add marking or queuing up custom meshes for debug render with particular transform and color for rendering bounding spheres for example ? Interleaved vbos for meshes and changes to blender exporter accordingly - Enumerate and save all the uniform and attribute positions in shader when it is added and cache them in shader object? ? Better handling incase assets folder is not found - Write entity to/from file - Ogg format loading and playback - Sound streaming - Implment missing sound source properties (inner/outer cone, getting sound source data) - Shadow maps - Print processor stats and machine capabilites RAM etc on every run to log. - Do input maps really need to be queried by their string names? - Write default config/keybindings etc to file if none are found in preferences dir - Multisampled textures and framebuffers - Validate necessary assets at game launch - Gamma correctness - Log and debug/stats output in gui - Textual/Binary format for data serialization and persistance - Array based string type comptible with cstring(char*) - Reduce fps on window focus loss or minimization - ??? - Profit! Improvements: - Better naming semantics for examples, init/deinit for initialization and cleanup and create/destroy when memory is allocated or deallocated - Reset mouse cursor position to the center of the screen in editor mode after the right click is released - Categorized entity list in editor for example different subtree for lights and static meshes - Remove fixed editor windows locations and bring back floating windows Bugs: - Better handling of wav format checking at load time - Fix light rotation/direction bugs - Fix lights type not being correctly saved/loaded from file - Fix culling - Fix bounding boxes not aligning in editor - Investigate memory usage increase when window is maximized Done: * Input * Shaders * Geometry * change struct usage * change Array implementation * resolve vec-types sizes * Transform * Deltatime * Investigate about Exit() and at_exit() functions and whether to use them or not. * Fix readme markdown * Framebuffer and resolution independent rendering * A simpler build system without dependencies * Remove dependencies * Remove Kazmath dependency * Entity * Find a permanent solution for build system * Textures * Camera * Test render * Fix input lag and other framerate related issues * Materials * Mesh/Model * Add modifiers to input maps to enable combinations for example, c-x, m-k etc * Heirarchical Transforms * Materials with textures * Lights! * Fix problems with texture units * Fix problems with frustrum culling * Gui * Fix mouse bugs on windows * Configuration/Settings load/save handling * Fix mousewheel bugs and gui not responding to mousewheel input * Setup cross compilation with mingw or stick to msvc? * Toggleable debug drawing for meshes * Font selection * Font atlas proper cleanup * In second refactor pass, use entities everywhere, no need to pass in transform and model separately for example since they're both part of the same entity anyway * Show SDL dialogbox if we cannot launch at all? * Writing back to config file * Reading from config file * Variant -> String conversion procedure. Use in editor for debug var slots * Add strings and booleans to variant types * Fix Key release not being reported * OpenAL not working in releasebuilds * 3d sound using OpenAL * Fix frustum culling bugs * Array-based Hashmaps * Fix bugs with heirarchical transformations * Remove reduntant "settings" structures and move all configuration stuff to config variables * Log output to file on every run * Add option to specify where to read/write files from instead of being hard-coded assets dir * Fix input map bugs * Live data views in editor * Camera resize on window reisze * Resizable framebuffers and textures * Support for multiple color attachments in framebuffers? * Better way to store and manage textures attached to framebuffers * Variant type * Editor * Fix frustum culling sometimes not working * Compile and test on windows * Fix mouse bugs * Fix issues with opengl context showing 2.1 only * Improve this readme * Replace orgfile with simple text readme and reduce duplication * Fix camera acting all weird when right click is held * Fix README to conform with markdown syntax * Added video driver selection to make game launch under wayland or x11 on linux. * Separate game code into a dynamical library that can be reloaded at runtime. * Move game, common and game library related code into separate folders. * Fixed game crashing on exit after game library has been reloaded more than once. * Made game compile and run under windows with visual studio 2017 using GENie * Implemented file copy and file delete on windows and linux. * Implemented a work-around for dll locking on windows by creating a copy of the game lib at launch and when reloading, unloading the current dll, deleting it and creating new copy of the updated dll and loading that * Added file copy and delete to platform api * Made dll reloading workaround compatilble on linux * Default keybindings as fallback * Implemented writing scene to file * Fixed space not being added after light entities are written to file by adding missing new-line * Fixed error caused by the way eof was checked in scene file * Camera fbo params are now written to file when entity is saved * Fixed several bugs with entity loading * Removed duplicate parsing logic * Fixed bugs in stripping key name for input map * Modify entity loading logic to use the new parsing code by parsing all entity properties into a hashmap first then recreating entity from that * Implmented writing to file through the new Parser and Parser_Objects * Changed Config to read/write using new Parser and Parser_Objects * Implemented Reading/Writing keybindings using new parser object * Replaced OpenAL with Soloud with SDL2 backend * Implemented sound/listener loading from scene file * Finished loading scene from file * Initial implementation of immediate-mode batched sprite render * Fixed bugs with shader include file pre-processor * Fixed bugs with editor's camera property viewer * Fixed bugs related to changing camera projection * Fixed bugs with sprite batch renderer not working with projection matrix * Fixed broken orthographic camera * Implement necessary changes to run Soloud on linux * Moved third party libs/include directories into root/lib and root/include. Put common includes like header-only libs into root/include/common and others which require platform specific stuff into root/include/linux etc. * Got rid of pkg-confg and system-installed SDL2 dependancy on linux and instead put custom compiled SDL libs in libs folder similar to how we're handling it in windows * Proper physics time-step and speed * Proper handling of rigidbody associated with an entity and notifying it of movement or collision * Added physics spheres and other primitive shapes * Separated collision shape and rigidbody * Implemented Getting/Modifying primitive physics shapes' values like length, radius etc * Update physics if entity position/rotation/scale etc are changed * Implemented Physics raycasting * Implemented immediate mode renderer that can draw arbitrary points, lines and triangles * Converted IM_Vertex array to only be used as temporary storage for vertices between begin and end calls * Implemented Debug physics mesh drawing for box and sphere primitives * Completed Phase 1 of codebase refactoring * Improved editor camera handling * Re-implemented showing all the entities in the editor * Player init, update, visual representation and movement * Switching between editor and game mode/cameras * In-game basis for scrollable console/log-viewer * Console log output * Console error/warning output * Implemented Auto scrolling to the bottom in console * Implemented screen coordinate to ray conversion and ray-sphere collision * Split todo and readme into two files * Replace all renderer_check_gl calls with GL_CHECK macro * Fixed Console bug when enabled in editor mode * Migrated from bitbucket to github and from mercurial back to git * Removed the game executable and game library split. * Event Subsystem * Fixed mouse button press/release behaviour by using event callbacks for editor mouse picking * Ray picking for editor * Highlight entity selected in editor in a specific color * Deselect selected entity in editor when nothing is hit on click and an entity is already selected * Implemented showing a placeholder when an entity other than a static mesh is selected * Prevented ray casting when clicking on editor window and buttons * Implemented handling drawing other entity types that can be selected in the editor but are not static meshes