Studying previous code to design engine framework.
Possibly: A Game (framework) class which is initialised and called by the main() loop. But we'll see...
1 GameEngine* game = new GameEngine; 2 game->LoadShader...
I don't necessarily want a new game environment all being created in main().
Inheritance could work:
GameEngine (windowing loop and defines scenegraph, renderer classes) GameWorld (inherits from GameEngine and allows for scene creation, key handling, renderer selection) SoftwareTitle.cpp -> Contains ``main()`` Starts GameWorld init and GameLoop. OpenGL + windowing init. (phoxtrace.cpp)
Each object will contain its own shader program, presumably. Pipelining might make this more efficient.
Renderer (Buffers, Transformation, Shaderprogram) GraphNode SceneGraph (overall transforms, contains nodes) SceneNode (objects inherit from this) Transform : SceneGraph Model : SceneNode Light : SceneNode
Framework is overrided by a custom game world using object-oriented inheritance.
The Scene Graph
All inherit from GraphNode abstract (as in aforementioned project).
SceneGraphs contain objects, SceneNodes are leafs.
Could create lineage of specialised nodes using object-oriented design:
- TransformationNode(Graph) For entire branch transforms
- MoveableSceneNode(Node) For a moveable node
- TexturedCubeNode(Node) Inherits from MoveableSceneNode.
Hey, this kinda works for skeletons. Each bone inherits from a moveable bone node which keeps track of its own transformations. I reckon... they'd have to be graphs, though. This is very confusing.