This is a whiteboard for how the classes are arranged in the code
core/
- soy.Color
- soy.Scene
- soy.Window
audio/
- soy.audio [module]
- soy.audio.Sound (child of soy.bodies.* instance)
- soy.audio.Music
bodies/
- soy.bodies [module]
- soy.bodies.Body (child of soy.Scene instance)
- soy.bodies.Camera (inherits soy.physics.Body, adds opengl camera)
- soy.bodies.Light (inherits soy.physics.Body, adds opengl light)
- soy.bodies.Mesh (inherits soy.physics.Body, adds mesh rendering)
widgets/
- soy.widgets [module]
- soy.widgets.Widget
- soy.widgets.Projector (inherits soy.widgets.Widget)
We should prevent recursive inheritance - every submodule is expected to have inherited from core, some submodules will inherit from other submodules (ie, audio inherits bodies), but core should not inherit classes from submodules.
