// // RenderablePolyLineEntityItem.h // libraries/entities-renderer/src/ // // Created by Eric Levin on 6/22/15. // Copyright 2015 High Fidelity, Inc. // // Distributed under the Apache License, Version 2.0. // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // #ifndef hifi_RenderablePolyLineEntityItem_h #define hifi_RenderablePolyLineEntityItem_h #include "RenderableEntityItem.h" #include #include namespace render { namespace entities { class PolyLineEntityRenderer : public TypedEntityRenderer { using Parent = TypedEntityRenderer; friend class EntityRenderer; public: PolyLineEntityRenderer(const EntityItemPointer& entity); void updateModelTransformAndBound() override; virtual bool isTransparent() const override; protected: virtual bool needsRenderUpdate() const override; virtual bool needsRenderUpdateFromTypedEntity(const TypedEntityPointer& entity) const override; virtual void doRenderUpdateSynchronousTyped(const ScenePointer& scene, Transaction& transaction, const TypedEntityPointer& entity) override; virtual ItemKey getKey() override; virtual ShapeKey getShapeKey() override; virtual void doRender(RenderArgs* args) override; static void buildPipelines(); void updateGeometry(); void updateData(); QVector _points; QVector _normals; QVector _colors; glm::vec3 _color; QVector _widths; NetworkTexturePointer _texture; float _textureAspectRatio { 1.0f }; bool _textureLoaded { false }; bool _isUVModeStretch { false }; bool _faceCamera { false }; bool _glow { false }; size_t _numVertices { 0 }; gpu::BufferPointer _polylineDataBuffer; gpu::BufferPointer _polylineGeometryBuffer; static std::map, gpu::PipelinePointer> _pipelines; }; } } // namespace #endif // hifi_RenderablePolyLineEntityItem_h