Overte C++ Documentation
LineEntityItem.h
1 //
2 // LineEntityItem.h
3 // libraries/entities/src
4 //
5 // Created by Seth Alves on 5/11/15.
6 // Copyright 2015 High Fidelity, Inc.
7 //
8 // Distributed under the Apache License, Version 2.0.
9 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10 //
11 
12 #ifndef hifi_LineEntityItem_h
13 #define hifi_LineEntityItem_h
14 
15 #include "EntityItem.h"
16 
17 class LineEntityItem : public EntityItem {
18  public:
19  static EntityItemPointer factory(const EntityItemID& entityID, const EntityItemProperties& properties);
20 
21  LineEntityItem(const EntityItemID& entityItemID);
22 
23  ALLOW_INSTANTIATION // This class can be instantiated
24 
25  // methods for getting/setting all properties of an entity
26  virtual EntityItemProperties getProperties(const EntityPropertyFlags& desiredProperties, bool allowEmptyDesiredProperties) const override;
27  virtual bool setSubClassProperties(const EntityItemProperties& properties) override;
28 
29  virtual EntityPropertyFlags getEntityProperties(EncodeBitstreamParams& params) const override;
30 
31  virtual void appendSubclassData(OctreePacketData* packetData, EncodeBitstreamParams& params,
32  EntityTreeElementExtraEncodeDataPointer modelTreeElementExtraEncodeData,
33  EntityPropertyFlags& requestedProperties,
34  EntityPropertyFlags& propertyFlags,
35  EntityPropertyFlags& propertiesDidntFit,
36  int& propertyCount,
37  OctreeElement::AppendState& appendState) const override;
38 
39  virtual int readEntitySubclassDataFromBuffer(const unsigned char* data, int bytesLeftToRead,
40  ReadBitstreamToTreeParams& args,
41  EntityPropertyFlags& propertyFlags, bool overwriteLocalData,
42  bool& somethingChanged) override;
43 
44  glm::u8vec3 getColor() const;
45  void setColor(const glm::u8vec3& value);
46 
47  bool setLinePoints(const QVector<glm::vec3>& points);
48  bool appendPoint(const glm::vec3& point);
49 
50  QVector<glm::vec3> getLinePoints() const;
51 
52  // never have a ray intersection pick a LineEntityItem.
53  virtual bool supportsDetailedIntersection() const override { return true; }
54  virtual bool findDetailedRayIntersection(const glm::vec3& origin, const glm::vec3& direction,
55  const glm::vec3& viewFrustumPos, OctreeElementPointer& element, float& distance,
56  BoxFace& face, glm::vec3& surfaceNormal,
57  QVariantMap& extraInfo,
58  bool precisionPicking) const override { return false; }
59  virtual bool findDetailedParabolaIntersection(const glm::vec3& origin, const glm::vec3& velocity,
60  const glm::vec3& acceleration, const glm::vec3& viewFrustumPos, OctreeElementPointer& element,
61  float& parabolicDistance, BoxFace& face, glm::vec3& surfaceNormal,
62  QVariantMap& extraInfo,
63  bool precisionPicking) const override { return false; }
64 
65  virtual void debugDump() const override;
66  static const int MAX_POINTS_PER_LINE;
67 
68  private:
69  glm::u8vec3 _color;
70  QVector<glm::vec3> _points;
71 };
72 
73 #endif // hifi_LineEntityItem_h
Definition: EntityItem.h:82
Abstract ID for editing model items. Used in EntityItem JS API.
Definition: EntityItemID.h:28
Definition: EntityItemProperties.h:106
Handles packing of the data portion of PacketType_OCTREE_DATA messages.
Definition: OctreePacketData.h:93