mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-14 11:46:34 +02:00
simple entity payload
This commit is contained in:
parent
25823bedd1
commit
0799670215
3 changed files with 26 additions and 72 deletions
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
*/
|
|
@ -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
|
||||
|
|
|
@ -424,7 +424,4 @@ protected:
|
|||
bool _simulated; // set by EntitySimulation
|
||||
};
|
||||
|
||||
typedef std::shared_ptr<EntityItem> EntityItemSharedPointer;
|
||||
|
||||
|
||||
#endif // hifi_EntityItem_h
|
||||
|
|
Loading…
Reference in a new issue