11 #ifndef hifi_RenderableImageEntityItem_h
12 #define hifi_RenderableImageEntityItem_h
14 #include "RenderableEntityItem.h"
16 #include <ImageEntityItem.h>
18 #include <procedural/Procedural.h>
20 namespace render {
namespace entities {
22 class ImageEntityRenderer :
public TypedEntityRenderer<ImageEntityItem> {
23 using Parent = TypedEntityRenderer<ImageEntityItem>;
24 using Pointer = std::shared_ptr<ImageEntityRenderer>;
26 ImageEntityRenderer(
const EntityItemPointer& entity);
27 ~ImageEntityRenderer();
29 gpu::TexturePointer getTexture()
override {
return _texture ? _texture->getGPUTexture() :
nullptr; }
32 Item::Bound getBound(RenderArgs* args)
override;
33 ShapeKey getShapeKey()
override;
35 bool isTransparent()
const override;
38 virtual bool needsRenderUpdate()
const override;
39 virtual void doRenderUpdateSynchronousTyped(
const ScenePointer& scene, Transaction& transaction,
const TypedEntityPointer& entity)
override;
40 virtual void doRenderUpdateAsynchronousTyped(
const TypedEntityPointer& entity)
override;
41 virtual void doRender(RenderArgs* args)
override;
44 NetworkTexturePointer _texture;
45 bool _textureIsLoaded {
false };
47 bool _emissive {
false };
48 bool _keepAspectRatio {
false };
51 std::shared_ptr<graphics::ProceduralMaterial> _material { std::make_shared<graphics::ProceduralMaterial>() };
52 glm::vec3 _color { NAN };
54 PulsePropertyGroup _pulseProperties;
56 int _geometryId { 0 };