From 5ef7a19d67be3f0e49b4f77a6d56dfd0ff77c4ab Mon Sep 17 00:00:00 2001 From: samcake Date: Tue, 9 Feb 2016 18:29:22 -0800 Subject: [PATCH] Drafting a solution to update the render items when ENtity is moving --- .../src/RenderableEntityItem.h | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/libraries/entities-renderer/src/RenderableEntityItem.h b/libraries/entities-renderer/src/RenderableEntityItem.h index d7d8d65e3a..fc4d00f9a5 100644 --- a/libraries/entities-renderer/src/RenderableEntityItem.h +++ b/libraries/entities-renderer/src/RenderableEntityItem.h @@ -14,6 +14,8 @@ #include #include +#include "AbstractViewStateInterface.h" + // These or the icon "name" used by the render item status value, they correspond to the atlas texture used by the DrawItemStatus // job in the current rendering pipeline defined as of now (11/2015) in render-utils/RenderDeferredTask.cpp. @@ -35,6 +37,8 @@ public: typedef render::Payload Payload; typedef Payload::DataPointer Pointer; + int touch = 0; + EntityItemPointer entity; }; @@ -66,8 +70,23 @@ public: pendingChanges.removeItem(_myItem); } + void notifyChanged() { + if (_myItem == render::Item::INVALID_ITEM_ID) { + return; + } + + render::PendingChanges pendingChanges; + render::ScenePointer scene = AbstractViewStateInterface::instance()->getMain3DScene(); + + pendingChanges.updateItem(_myItem, [](RenderableEntityItemProxy& data) { + data.touch++; + }); + + scene->enqueuePendingChanges(pendingChanges); + } + private: - render::ItemID _myItem; + render::ItemID _myItem = render::Item::INVALID_ITEM_ID; }; @@ -75,6 +94,7 @@ private: public: \ virtual bool addToScene(EntityItemPointer self, std::shared_ptr scene, render::PendingChanges& pendingChanges) override { return _renderHelper.addToScene(self, scene, pendingChanges); } \ virtual void removeFromScene(EntityItemPointer self, std::shared_ptr scene, render::PendingChanges& pendingChanges) override { _renderHelper.removeFromScene(self, scene, pendingChanges); } \ + virtual void locationChanged() override { EntityItem::locationChanged(); _renderHelper.notifyChanged(); } \ private: \ SimpleRenderableEntityItem _renderHelper;