From 4bdeef76108e60d0bcb751a8d6e847ee809f9844 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Fri, 22 May 2015 14:54:30 -0700 Subject: [PATCH] checkpoint --- .../src/EntityTreeRenderer.cpp | 14 ---- .../src/EntityTreeRenderer.h | 27 ------- .../src/RenderableEntityItem.cpp | 30 ++++++++ .../src/RenderableEntityItem.h | 76 +++++++++++++++++++ libraries/entities/src/EntityItem.h | 3 + libraries/render/src/render/Scene.h | 2 - 6 files changed, 109 insertions(+), 43 deletions(-) create mode 100644 libraries/entities-renderer/src/RenderableEntityItem.cpp create mode 100644 libraries/entities-renderer/src/RenderableEntityItem.h diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 29d5bc7b11..02ace4fd0b 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -1189,17 +1189,3 @@ void EntityTreeRenderer::entityCollisionWithEntity(const EntityItemID& idA, cons entityScriptB.property("collisionWithEntity").call(entityScriptA, args); } } - -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 943a555b17..fa78b1dab1 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.h +++ b/libraries/entities-renderer/src/EntityTreeRenderer.h @@ -191,32 +191,5 @@ 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/entities-renderer/src/RenderableEntityItem.cpp b/libraries/entities-renderer/src/RenderableEntityItem.cpp new file mode 100644 index 0000000000..db77261b2f --- /dev/null +++ b/libraries/entities-renderer/src/RenderableEntityItem.cpp @@ -0,0 +1,30 @@ +// +// RenderableEntityItem.cpp +// interface/src +// +// Created by Brad Hefta-Gaub on 12/6/13. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + + +#include "RenderableEntityItem.h" + +/* + +template <> const render::ItemKey render::payloadGetKey(const std::shared_ptr& payload) { + return payload->getKey(); +} + +template <> const render::Item::Bound render::payloadGetBound(const std::shared_ptr& payload) { + return payload->getBounds(); +} + +template <> void render::payloadRender(const std::shared_ptr& payload, RenderArgs* args) { + return payload->render(args); +} + + +*/ \ No newline at end of file diff --git a/libraries/entities-renderer/src/RenderableEntityItem.h b/libraries/entities-renderer/src/RenderableEntityItem.h new file mode 100644 index 0000000000..f9b678e687 --- /dev/null +++ b/libraries/entities-renderer/src/RenderableEntityItem.h @@ -0,0 +1,76 @@ +// +// RenderableEntityItem.h +// interface/src +// +// Created by Brad Hefta-Gaub on 12/6/13. +// Copyright 2013 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_RenderableEntityItem_h +#define hifi_RenderableEntityItem_h + +/* + +#include +#include + +class RenderableEntityItemProxy { +public: + RenderableEntityItemProxy(EntityItem* entity) { + _entity = entity; + } + + const render::ItemKey& getKey() const { + _myKey = render::ItemKey::Builder().withTypeShape().build(); + return _myKey; + } + + const render::Item::Bound getBounds() const { + if (_entity) { + return _entity->getAABox(); + } + return render::Item::Bound(); + } + + void render(RenderArgs* args) const { + if (_entity) { + _entity->render(args); + } + } + + void clearEntity() { + _entity = nullptr; + } + +private: + mutable render::ItemKey _myKey; + EntityItem* _entity = nullptr; +}; + +typedef render::Payload RenderableEntityItemProxyPayload; + +class RenderableEntityItem { +public: + ~RenderableEntityItem() { + if (_proxy) { + _proxy->clearEntity(); + } + } + + RenderableEntityItemProxy* getRenderProxy() { + if (!_proxy) { + //_proxy = new RenderableEntityItemProxy(this); + } + return _proxy; + } +private: + RenderableEntityItemProxy* _proxy = nullptr; +}; + +*/ + + +#endif // hifi_RenderableEntityItem_h diff --git a/libraries/entities/src/EntityItem.h b/libraries/entities/src/EntityItem.h index 8f88b6de07..f2806b105a 100644 --- a/libraries/entities/src/EntityItem.h +++ b/libraries/entities/src/EntityItem.h @@ -424,4 +424,7 @@ protected: bool _simulated; // set by EntitySimulation }; +typedef std::shared_ptr EntityItemSharedPointer; + + #endif // hifi_EntityItem_h diff --git a/libraries/render/src/render/Scene.h b/libraries/render/src/render/Scene.h index 55ae1045d6..c85e5f8a41 100644 --- a/libraries/render/src/render/Scene.h +++ b/libraries/render/src/render/Scene.h @@ -106,8 +106,6 @@ public: } }; -class RenderArgs; - class Item { public: typedef std::vector Vector;