Overte C++ Documentation
RenderableImageEntityItem.h
1 //
2 // Created by Sam Gondelman on 11/29/18
3 // Copyright 2018 High Fidelity, Inc.
4 // Copyright 2023 Overte e.V.
5 //
6 // Distributed under the Apache License, Version 2.0.
7 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
8 // SPDX-License-Identifier: Apache-2.0
9 //
10 
11 #ifndef hifi_RenderableImageEntityItem_h
12 #define hifi_RenderableImageEntityItem_h
13 
14 #include "RenderableEntityItem.h"
15 
16 #include <ImageEntityItem.h>
17 
18 #include <GeometryCache.h>
19 #include <procedural/Procedural.h>
20 
21 namespace render { namespace entities {
22 
23 class ImageEntityRenderer : public TypedEntityRenderer<ImageEntityItem> {
24  using Parent = TypedEntityRenderer<ImageEntityItem>;
25  using Pointer = std::shared_ptr<ImageEntityRenderer>;
26 public:
27  ImageEntityRenderer(const EntityItemPointer& entity);
28  ~ImageEntityRenderer();
29 
30  gpu::TexturePointer getTexture() override { return _texture ? _texture->getGPUTexture() : nullptr; }
31 
32 protected:
33  Item::Bound getBound(RenderArgs* args) override;
34  ShapeKey getShapeKey() override;
35 
36  bool isTransparent() const override;
37 
38 private:
39  virtual bool needsRenderUpdate() const override;
40  virtual void doRenderUpdateSynchronousTyped(const ScenePointer& scene, Transaction& transaction, const TypedEntityPointer& entity) override;
41  virtual void doRenderUpdateAsynchronousTyped(const TypedEntityPointer& entity) override;
42  virtual void doRender(RenderArgs* args) override;
43 
44  QString _imageURL;
45  NetworkTexturePointer _texture;
46  bool _textureIsLoaded { false };
47 
48  bool _emissive { false };
49  bool _keepAspectRatio { false };
50  QRect _subImage;
51 
52  std::shared_ptr<graphics::ProceduralMaterial> _material { std::make_shared<graphics::ProceduralMaterial>() };
53  glm::vec3 _color { NAN };
54  float _alpha { NAN };
55  Sampler _sampler;
56  PulsePropertyGroup _pulseProperties;
57 
58  FadeBuffers _fadeBuffers;
59 
60  int _geometryId { 0 };
61 };
62 
63 } }
64 #endif // hifi_RenderableImageEntityItem_h