From 0d9f0f609b3ca89fde62866684bf7cfcdaed6b9f Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Thu, 21 May 2015 16:22:23 -0700 Subject: [PATCH] first cut at RenderableEnitityItem payload --- libraries/entities-renderer/CMakeLists.txt | 2 +- .../src/EntityTreeRenderer.cpp | 13 +++++++++ .../src/EntityTreeRenderer.h | 29 +++++++++++++++++++ libraries/render/src/render/Scene.h | 1 + 4 files changed, 44 insertions(+), 1 deletion(-) diff --git a/libraries/entities-renderer/CMakeLists.txt b/libraries/entities-renderer/CMakeLists.txt index 6c7fa04a21..6a45b85271 100644 --- a/libraries/entities-renderer/CMakeLists.txt +++ b/libraries/entities-renderer/CMakeLists.txt @@ -12,4 +12,4 @@ find_package(Bullet REQUIRED) target_include_directories(${TARGET_NAME} SYSTEM PRIVATE ${BULLET_INCLUDE_DIRS}) target_link_libraries(${TARGET_NAME} ${BULLET_LIBRARIES}) -link_hifi_libraries(shared gpu script-engine render-utils) +link_hifi_libraries(shared gpu script-engine render render-utils) diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 23160be045..29d5bc7b11 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -1190,3 +1190,16 @@ void EntityTreeRenderer::entityCollisionWithEntity(const EntityItemID& idA, cons } } +template <> const render::Item::Key render::payloadGetKey(const RenderableEnitityItem* payload) { + return payload->getKey(); +} + +template <> const render::Item::Bound render::payloadGetBound(const RenderableEnitityItem* payload) { + return payload->getBounds(); +} + +template <> void render::payloadRender(const RenderableEnitityItem* payload, Context& context, RenderArgs* args) { + return payload->render(context, args); +} + + diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.h b/libraries/entities-renderer/src/EntityTreeRenderer.h index c42c628f57..943a555b17 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.h +++ b/libraries/entities-renderer/src/EntityTreeRenderer.h @@ -19,6 +19,7 @@ #include // for RayToEntityIntersectionResult #include #include +#include #include #include @@ -190,4 +191,32 @@ private: }; +class RenderableEnitityItem { +public: + RenderableEnitityItem(EntityItem* entity) { + _entity = entity; + } + + const render::Item::Key& getKey() const { + _myKey.set(render::Item::TYPE_SHAPE); + return _myKey; + } + + const render::Item::Bound getBounds() const { + return _entity->getAABox(); + } + + void render(render::Context& context, RenderArgs* args) const { + _entity->render(args); + } + +private: + mutable render::Item::Key _myKey; + EntityItem* _entity = nullptr; +}; + +typedef render::Payload RenderableEnitityItemPayload; + + + #endif // hifi_EntityTreeRenderer_h diff --git a/libraries/render/src/render/Scene.h b/libraries/render/src/render/Scene.h index 29aa061a9d..55ae1045d6 100644 --- a/libraries/render/src/render/Scene.h +++ b/libraries/render/src/render/Scene.h @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include