From dd7595a3475407a7fa96a97393bae8c5220e8762 Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Wed, 4 Jan 2012 18:41:13 +1000 Subject: Add the base Enlightenment Foundation Libraries - eina, eet, evas, ecore, embryo, and edje. Note that embryo wont be used, but I'm not sure yet if you can build edje without it. --- .../modules/engines/direct3d/evas_direct3d_scene.h | 63 ++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 libraries/evas/src/modules/engines/direct3d/evas_direct3d_scene.h (limited to 'libraries/evas/src/modules/engines/direct3d/evas_direct3d_scene.h') diff --git a/libraries/evas/src/modules/engines/direct3d/evas_direct3d_scene.h b/libraries/evas/src/modules/engines/direct3d/evas_direct3d_scene.h new file mode 100644 index 0000000..e2f5f94 --- /dev/null +++ b/libraries/evas/src/modules/engines/direct3d/evas_direct3d_scene.h @@ -0,0 +1,63 @@ +#ifndef __EVAS_DIRECT3D_SCENE_H__ +#define __EVAS_DIRECT3D_SCENE_H__ + +#include "evas_engine.h" + +#include +#include + +#include "ref.h" +#include "array.h" + +#include "evas_direct3d_object.h" + +class D3DDevice; + +class D3DScene : virtual public Referenc +{ +public: + D3DScene(); + + void FreeObjects(); + + inline void AddObject(D3DObject *object); + inline int GetObjectCount(); + void DeleteObject(D3DObject *object); + + void DrawAll(D3DDevice *d3d); + + template T *GetFreeObject() + { + for (int i = 0; i < _objects.Length(); i++) + { + if (typeid(T) == typeid(*_objects[i].Addr()) && _objects[i]->IsFree()) + return (T *)_objects[i].Addr(); + } + return NULL; + } + + template void GetObjectsOfType(TArray &res) + { + for (int i = 0; i < _objects.Length(); i++) + { + if (typeid(T) == typeid(*_objects[i].Addr())) + res.Add((T *)_objects[i].Addr()); + } + } + +private: + TArray > _objects; +}; + +void D3DScene::AddObject(D3DObject *object) +{ + assert(object != NULL); + _objects.Add(object); +} + +int D3DScene::GetObjectCount() +{ + return _objects.Length(); +} + +#endif // __EVAS_DIRECT3D_SCENE_H__ -- cgit v1.1