Overte C++ Documentation
EntityTreeHeadlessViewer.h
1 //
2 // EntityTreeHeadlessViewer.h
3 // libraries/models/src
4 //
5 // Created by Brad Hefta-Gaub on 2/26/14.
6 // Copyright 2014 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_EntityTreeHeadlessViewer_h
13 #define hifi_EntityTreeHeadlessViewer_h
14 
15 #include <udt/PacketHeaders.h>
16 #include <SharedUtil.h>
17 #include <Octree.h>
18 #include <OctreePacketData.h>
19 #include <ViewFrustum.h>
20 
21 #include "../octree/OctreeHeadlessViewer.h"
22 #include "EntityTree.h"
23 
24 class EntitySimulation;
25 
26 /*@jsdoc
27  * The <code>EntityViewer</code> API provides a headless viewer for assignment client scripts, so that they can "see" entities
28  * in order for them to be available in the {@link Entities} API.
29  *
30  * @namespace EntityViewer
31  *
32  * @hifi-assignment-client
33  */
34 // API functions are defined in OctreeHeadlessViewer.
35 
36 // Generic client side Octree renderer class.
37 class EntityTreeHeadlessViewer : public OctreeHeadlessViewer {
38  Q_OBJECT
39 public:
40  EntityTreeHeadlessViewer();
41  virtual ~EntityTreeHeadlessViewer();
42 
43  virtual char getMyNodeType() const override { return NodeType::EntityServer; }
44  virtual PacketType getMyQueryMessageType() const override { return PacketType::EntityQuery; }
45  virtual PacketType getExpectedPacketType() const override { return PacketType::EntityData; }
46 
47  void update();
48 
49  EntityTreePointer getTree() { return std::static_pointer_cast<EntityTree>(_tree); }
50 
51  void processEraseMessage(ReceivedMessage& message, const SharedNodePointer& sourceNode);
52 
53  virtual void init() override;
54 
55 protected:
56  virtual OctreePointer createTree() override {
57  EntityTreePointer newTree = std::make_shared<EntityTree>(true);
58  newTree->createRootElement();
59  return newTree;
60  }
61 
62  EntitySimulationPointer _simulation;
63 };
64 
65 #endif // hifi_EntityTreeHeadlessViewer_h