Overte C++ Documentation
RenderableGridEntityItem.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_RenderableGridEntityItem_h
12 #define hifi_RenderableGridEntityItem_h
13 
14 #include "RenderableEntityItem.h"
15 
16 #include <GridEntityItem.h>
17 
18 namespace render { namespace entities {
19 
20 class GridEntityRenderer : public TypedEntityRenderer<GridEntityItem> {
21  using Parent = TypedEntityRenderer<GridEntityItem>;
22  using Pointer = std::shared_ptr<GridEntityRenderer>;
23 public:
24  GridEntityRenderer(const EntityItemPointer& entity);
25  ~GridEntityRenderer();
26 
27  ComponentMode getFadeOutMode() const override { return ComponentMode::COMPONENT_MODE_DISABLED; }
28 
29 protected:
30  Item::Bound getBound(RenderArgs* args) override;
31  ShapeKey getShapeKey() override;
32 
33  bool isTransparent() const override;
34 
35 private:
36  virtual void doRenderUpdateSynchronousTyped(const ScenePointer& scene, Transaction& transaction, const TypedEntityPointer& entity) override;
37  virtual void doRenderUpdateAsynchronousTyped(const TypedEntityPointer& entity) override;
38  virtual void doRender(RenderArgs* args) override;
39 
40  glm::u8vec3 _color;
41  float _alpha { NAN };
42  PulsePropertyGroup _pulseProperties;
43 
44  bool _followCamera { false };
45  uint32_t _majorGridEvery;
46  float _minorGridEvery { false };
47 
48  glm::vec3 _dimensions;
49 
50  int _geometryId { 0 };
51 
52 };
53 
54 } }
55 #endif // hifi_RenderableGridEntityItem_h