simple entity payload

This commit is contained in:
ZappoMan 2015-05-26 16:27:00 -07:00
parent 25823bedd1
commit 0799670215
3 changed files with 26 additions and 72 deletions

View file

@ -12,19 +12,25 @@
#include "RenderableEntityItem.h"
/*
template <> const render::ItemKey render::payloadGetKey(const std::shared_ptr<RenderableEntityItem>& payload) {
return payload->getKey();
// For Ubuntu, the compiler want's the Payload's functions to be specialized in the "render" namespace explicitely...
namespace render {
template <> const ItemKey payloadGetKey(const RenderableEntityItem::Pointer& entity) {
return ItemKey::Builder::opaqueShape();
}
template <> const Item::Bound payloadGetBound(const RenderableEntityItem::Pointer& entity) {
if (entity) {
return entity->getAABox();
}
return render::Item::Bound();
}
template <> void payloadRender(const RenderableEntityItem::Pointer& entity, RenderArgs* args) {
if (args) {
args->_elementsTouched++;
if (entity) {
entity->render(args);
}
}
}
}
template <> const render::Item::Bound render::payloadGetBound(const std::shared_ptr<RenderableEntityItem>& payload) {
return payload->getBounds();
}
template <> void render::payloadRender(const std::shared_ptr<RenderableEntityItem>& payload, RenderArgs* args) {
return payload->render(args);
}
*/

View file

@ -12,65 +12,16 @@
#ifndef hifi_RenderableEntityItem_h
#define hifi_RenderableEntityItem_h
/*
#include <render/Scene.h>
#include <EntityItem.h>
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<RenderableEntityItemProxy> RenderableEntityItemProxyPayload;
class RenderableEntityItem {
public:
~RenderableEntityItem() {
if (_proxy) {
_proxy->clearEntity();
}
}
RenderableEntityItemProxy* getRenderProxy() {
if (!_proxy) {
//_proxy = new RenderableEntityItemProxy(this);
}
return _proxy;
}
private:
RenderableEntityItemProxy* _proxy = nullptr;
typedef render::Payload<RenderableEntityItem> Payload;
typedef std::shared_ptr<render::Item::PayloadInterface> PayloadPointer;
//typedef Payload::DataPointer Pointer;
typedef EntityItemPointer Pointer;
};
*/
#endif // hifi_RenderableEntityItem_h

View file

@ -424,7 +424,4 @@ protected:
bool _simulated; // set by EntitySimulation
};
typedef std::shared_ptr<EntityItem> EntityItemSharedPointer;
#endif // hifi_EntityItem_h