|
| 1 | +# GA::kit |
| 2 | + |
| 3 | +| [GA::kit Repo](https://github.com/gallagher-tech/GAkit/) | [ofxGAkit Repo](https://github.com/gallagher-tech/ofxGAkit) | [Documentation](https://gallagher-tech.github.io/GAkit-doc/) | |
| 4 | + |
| 5 | +`GA::kit` is G&A's in-house C++ application framework for building interactive experiences. |
| 6 | +We use it to create anything from 2D UI prototypes to high-performance 3D immersive installations. |
| 7 | + |
| 8 | +We designed it from scratch to be: |
| 9 | + |
| 10 | +- _fast_ - |
| 11 | + Our scenegraph lets you intuitively craft complex 3D scenes without sacrificing performance. |
| 12 | + |
| 13 | +- _flexible_ - |
| 14 | + Every app is different. We use modular components, templated classes, and helpful utilities to support iterative, agile development. |
| 15 | + |
| 16 | +- _familiar_ - |
| 17 | + As creative coders, we love the clarity and efficacy of existing toolkits like openFrameworks and Cinder. |
| 18 | + That's why we designed `GA::kit` to work as an oF addon - and a Cinder Block is on the roadmap. |
| 19 | + Or bring your own rendering engine - we strive to be framework agnostic. |
| 20 | + |
| 21 | +## How To Use |
| 22 | + |
| 23 | +### ofxGAkit openFrameworks addon |
| 24 | + |
| 25 | +Currently, the simplest way to use `GA::kit` is through [ofxGAkit](https://github.com/gallagher-tech/ofxGAkit) openFrameworks addon. |
| 26 | + |
| 27 | +Simply `git clone --recursive` the addon repo inside of your `openFrameworks/addons/` directory, then use the oF Project Generator to generate a project with the addon selected. |
| 28 | + |
| 29 | +Full setup instructions can be found [here](https://github.com/gallagher-tech/ofxGAkit). |
| 30 | + |
| 31 | +In this case, openFrameworks provides the windowing and rendering system (`glfw / openGL`), and automatically includes the necessary `nlohmann::json` and `glm` libraries. |
| 32 | + |
| 33 | +### Bring Your Own Backend |
| 34 | + |
| 35 | +We aim to make `GA::kit` "framework agnostic". This means that we would like it to play nicely with other C++ creative coding frameworks like Cinder - or it could be used on its own by including a few supporting libraries. |
| 36 | + |
| 37 | +The only requirements beyond C++11 are including the `glm` and `nlohmann::json` libraries, and adding an openGL windowing library, like `glfw`. |
| 38 | + |
| 39 | +We could use your help: |
| 40 | + |
| 41 | +- creating a Cinder block. _Todo: Cinder block repo link_ |
| 42 | +- creating a "framework-free" example project, showing how to include `glm`, `nlohman::json` and `glfw` |
| 43 | + |
| 44 | +## Features |
| 45 | + |
| 46 | +- Hierarchical 3D **Scenegraph** with `Scene`, `Node`, and `Component` classes |
| 47 | +- Innovative **tween animation system** with `Tween`, `Timeline` and easing functions |
| 48 | +- `Timer` and `Timeout` classes for triggering timed callbacks |
| 49 | +- Universal app **asset management** with templated `ResourceCache` class |
| 50 | +- `KeyEvent`, `MouseEvent` and `TouchEvent` handling |
| 51 | +- **Layout** utitilies to automatically align and scale to fit |
| 52 | +- Math utilities built on [**glm**](https://github.com/g-truc/glm) |
| 53 | +- JSON serialization, using [**nlohmann::json**](https://github.com/nlohmann/json) |
| 54 | +- Signal-based event system, using [**sigslot**](https://github.com/palacaze/sigslot) (included) |
| 55 | +- Universal Unique ID system, using [**crossguid**](https://github.com/graeme-hill/crossguid) (included) |
| 56 | + |
| 57 | +## Todo |
| 58 | + |
| 59 | +- GLSL `Shader` class |
| 60 | +- `Material` (shader + textures + parameters) component |
| 61 | +- `Mesh` VBO component |
| 62 | +- Cinder block |
| 63 | +- Framework-free example using GLFW |
| 64 | + |
| 65 | +## Requirements |
| 66 | + |
| 67 | +- C++11 |
| 68 | +- OpenGL 3+ |
| 69 | +- [**glm**](https://github.com/g-truc/glm) |
| 70 | +- [**nlohmann::json**](https://github.com/nlohmann/json) |
| 71 | + |
| 72 | +## About G&A |
| 73 | +We are the industry’s best strategic problem solvers. A team of boundless creative individuals. As experts in our own craft, relentless curiosity fuels our passion for working with the best partners to build community experiences led by their profound stories. Bring your story and become part of ours. |
| 74 | + |
| 75 | +Visit G&A [website](https://gallagherdesign.com/) |
0 commit comments