Observable Entity

In order to detect a property reference change, Entity's Component
properties' notifySignal is connected to a slot. In turn that slot post
scene changes to the QChangeArbiter, allowing Observers to be notified
about the property change.

Change-Id: Ie76121b476e4df7e49822137794817bb6a31bdb5
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
MeshManager renamed to MeshDataManager

Some ground work to made to have a MeshManager of RenderMesh
Some comments and refactorings here and there

Change-Id: Ia4a2e5bc5b77fed2f57a022630d7e28e9690c609
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
RenderMesh and MeshManager

For each Entity with a Mesh property, a RenderMesh is created.
For each mesh source, a MeshData is created.
RenderCommand has a handle to a RenderMesh. That allows for a RenderMesh
and MeshData to be properly updated if a Mesh's source changes.

Change-Id: I98d38c81e1049ba6e1549fd6a4b26b45f4ad40d4
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
MatrixManager

RenderNode now uses a QHandle to a QMatrix4x4

Change-Id: Ib1a239dc8b08e3da5d68f447e3ef6f3b8ddd2f0d
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
VAOManager

One VAO is created and associated to a MeshData and a RenderShader.
A ShaderManager was added but default Material / Technique and Shader
are still being used. Small changes to how the RenderCommands are executed
and the RenderView processed. Nice performance improvement overall.
Also proceeded with the removal of most of the hacked renderer.

Change-Id: Ie99bea7863e979e3dd88c8599472d527bb24b28c
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Hookup Assimp scene loader

Assimp scene loadet hooked up.
Required a few changes to VAOManager and MeshDataManager.
MeshData aren't indexed by their sources any longer as a Mesh can set
its data either by having a source (obj scene file) or by a raw MeshData
(case of scene loaders). MeshData are now indexed by their frontend
Mesh's uuid.
The LoadMeshDataJobs and RenderSceneBuilder have been slightly modified
to incorporate those changes as well.

Note : VAOManager has to be a QArrayResourcesManager instead of a
QListResourcesManager.

Change-Id: Ia874e58871ab221636e0c5701d8a566642e663d2
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Slight changes to QChangeArbiter

QChangerArbiter now takes an int instead of a QChangeFlag when
registering an observer.
Completed unregister methods and changes are only forwarded to
observer that monitor that type of change.

Change-Id: I67600eaa2803e0a0b08f700a0cc789e64e807b4e
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Transform updates synched with QChangeArbiter

Transform monitor changes of each of its AbstractTransform objects.
On a change, it notifies the QChangeArbiter. The QChangeArbiter tells
the associated RenderNode about the change. The RenderNode updates its
localTransform matrix.

Small typo correction appendTransform instead of appendTransfrom.

Change-Id: I8613cda1b3c7b7211722f78585ac75736528f86a
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Handle Component property reference changes

A follow up patch with a reworked Entity / Component
composition will follow.

Change-Id: I7d89fc660f933b43345755529041a9909d1f83a5
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Added QmlEntity

QmlEntity is a subclass of Entity.
It contains a QmlListProperty of Components. It properly
separates the C++ from Qml.

Change-Id: I8004943e3a98fb3211309a38e022be71560f9951
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Hooked up QmlEntity

The simple_qml has been updated to use QmlEntity.
Only QmlEntity is instanciable on the Qml side. With the
use of a QmlListProperty we can easily monitor component changes.

Change-Id: Ie59258767450e842093bd76b0f55dfe31724c752
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>