@startuml
'left to right direction
hide members
hide methods
class Root
package SceneManagement {
    MovableObject <|-- Entity
    MovableObject <|-- Camera
    MovableObject <|-- Light
    class SceneNode
    class SceneManager
}
package Plugin as Plugin1 #DDD {
    SceneManager <|-- OctreeSceneManager
}
package "Resource Management" {
    class ResourceGroupManager
    class ResourceManager
    class ImageCodec
    class Mesh
    class Material
    class GpuProgram
    class Texture
}
package Plugin as Plugin2 #DDD {
    ImageCodec <|-down- FreeImageCodec
}
package Rendering {
    class RenderWindow
    class Renderable
    class RenderSystem
    class HardwareBufferManager
}
package Plugin as Plugin3 #DDD {
    Texture <|-- GLTexture
    RenderSystem <|-- GLRenderSystem
}

'some dummy connection to get the desired layout
Root -right[hidden]- SceneManagement
Light -down[hidden]- Rendering
Light -down[hidden] "Resource Management"
ResourceGroupManager -down[hidden]- Texture
ResourceGroupManager -down[hidden]- ImageCodec
HardwareBufferManager -down[hidden]- RenderSystem
@enduml 

