Drafting a solution to update the render items when ENtity is moving

This commit is contained in:
samcake 2016-02-09 18:29:22 -08:00
parent 8a4e2cb0c5
commit 5ef7a19d67

View file

@ -14,6 +14,8 @@
#include <render/Scene.h>
#include <EntityItem.h>
#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<RenderableEntityItemProxy> 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<RenderableEntityItemProxy>(_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<render::Scene> scene, render::PendingChanges& pendingChanges) override { return _renderHelper.addToScene(self, scene, pendingChanges); } \
virtual void removeFromScene(EntityItemPointer self, std::shared_ptr<render::Scene> scene, render::PendingChanges& pendingChanges) override { _renderHelper.removeFromScene(self, scene, pendingChanges); } \
virtual void locationChanged() override { EntityItem::locationChanged(); _renderHelper.notifyChanged(); } \
private: \
SimpleRenderableEntityItem _renderHelper;