mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-06-20 20:09:20 +02:00
119 lines
4.4 KiB
C++
119 lines
4.4 KiB
C++
//
|
|
// OctreeQuery.h
|
|
// libraries/octree/src
|
|
//
|
|
// Created by Stephen Birarda on 4/9/13.
|
|
// Copyright 2013 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_OctreeQuery_h
|
|
#define hifi_OctreeQuery_h
|
|
|
|
/* VS2010 defines stdint.h, but not inttypes.h */
|
|
#if defined(_MSC_VER)
|
|
typedef signed char int8_t;
|
|
typedef signed short int16_t;
|
|
typedef signed int int32_t;
|
|
typedef unsigned char uint8_t;
|
|
typedef unsigned short uint16_t;
|
|
typedef unsigned int uint32_t;
|
|
typedef signed long long int64_t;
|
|
typedef unsigned long long quint64;
|
|
#define PRId64 "I64d"
|
|
#else
|
|
#include <inttypes.h>
|
|
#endif
|
|
|
|
|
|
#include <glm/glm.hpp>
|
|
#include <glm/gtc/quaternion.hpp>
|
|
|
|
#include <NodeData.h>
|
|
|
|
// First bitset
|
|
const int WANT_LOW_RES_MOVING_BIT = 0;
|
|
const int WANT_COLOR_AT_BIT = 1;
|
|
const int WANT_DELTA_AT_BIT = 2;
|
|
const int WANT_OCCLUSION_CULLING_BIT = 3;
|
|
const int WANT_COMPRESSION = 4; // 5th bit
|
|
|
|
class OctreeQuery : public NodeData {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
OctreeQuery();
|
|
virtual ~OctreeQuery();
|
|
|
|
int getBroadcastData(unsigned char* destinationBuffer);
|
|
int parseData(const QByteArray& packet);
|
|
|
|
// getters for camera details
|
|
const glm::vec3& getCameraPosition() const { return _cameraPosition; }
|
|
const glm::quat& getCameraOrientation() const { return _cameraOrientation; }
|
|
float getCameraFov() const { return _cameraFov; }
|
|
float getCameraAspectRatio() const { return _cameraAspectRatio; }
|
|
float getCameraNearClip() const { return _cameraNearClip; }
|
|
float getCameraFarClip() const { return _cameraFarClip; }
|
|
const glm::vec3& getCameraEyeOffsetPosition() const { return _cameraEyeOffsetPosition; }
|
|
|
|
glm::vec3 calculateCameraDirection() const;
|
|
|
|
// setters for camera details
|
|
void setCameraPosition(const glm::vec3& position) { _cameraPosition = position; }
|
|
void setCameraOrientation(const glm::quat& orientation) { _cameraOrientation = orientation; }
|
|
void setCameraFov(float fov) { _cameraFov = fov; }
|
|
void setCameraAspectRatio(float aspectRatio) { _cameraAspectRatio = aspectRatio; }
|
|
void setCameraNearClip(float nearClip) { _cameraNearClip = nearClip; }
|
|
void setCameraFarClip(float farClip) { _cameraFarClip = farClip; }
|
|
void setCameraEyeOffsetPosition(const glm::vec3& eyeOffsetPosition) { _cameraEyeOffsetPosition = eyeOffsetPosition; }
|
|
|
|
// related to Octree Sending strategies
|
|
bool getWantColor() const { return _wantColor; }
|
|
bool getWantDelta() const { return _wantDelta; }
|
|
bool getWantLowResMoving() const { return _wantLowResMoving; }
|
|
bool getWantOcclusionCulling() const { return _wantOcclusionCulling; }
|
|
bool getWantCompression() const { return _wantCompression; }
|
|
int getMaxOctreePacketsPerSecond() const { return _maxOctreePPS; }
|
|
float getOctreeSizeScale() const { return _octreeElementSizeScale; }
|
|
int getBoundaryLevelAdjust() const { return _boundaryLevelAdjust; }
|
|
|
|
public slots:
|
|
void setWantLowResMoving(bool wantLowResMoving) { _wantLowResMoving = wantLowResMoving; }
|
|
void setWantColor(bool wantColor) { _wantColor = wantColor; }
|
|
void setWantDelta(bool wantDelta) { _wantDelta = wantDelta; }
|
|
void setWantOcclusionCulling(bool wantOcclusionCulling) { _wantOcclusionCulling = wantOcclusionCulling; }
|
|
void setWantCompression(bool wantCompression) { _wantCompression = wantCompression; }
|
|
void setMaxOctreePacketsPerSecond(int maxOctreePPS) { _maxOctreePPS = maxOctreePPS; }
|
|
void setOctreeSizeScale(float octreeSizeScale) { _octreeElementSizeScale = octreeSizeScale; }
|
|
void setBoundaryLevelAdjust(int boundaryLevelAdjust) { _boundaryLevelAdjust = boundaryLevelAdjust; }
|
|
|
|
protected:
|
|
// camera details for the avatar
|
|
glm::vec3 _cameraPosition;
|
|
glm::quat _cameraOrientation;
|
|
float _cameraFov;
|
|
float _cameraAspectRatio;
|
|
float _cameraNearClip;
|
|
float _cameraFarClip;
|
|
glm::vec3 _cameraEyeOffsetPosition;
|
|
|
|
// octree server sending items
|
|
bool _wantColor;
|
|
bool _wantDelta;
|
|
bool _wantLowResMoving;
|
|
bool _wantOcclusionCulling;
|
|
bool _wantCompression;
|
|
int _maxOctreePPS;
|
|
float _octreeElementSizeScale; /// used for LOD calculations
|
|
int _boundaryLevelAdjust; /// used for LOD calculations
|
|
|
|
private:
|
|
// privatize the copy constructor and assignment operator so they cannot be called
|
|
OctreeQuery(const OctreeQuery&);
|
|
OctreeQuery& operator= (const OctreeQuery&);
|
|
};
|
|
|
|
#endif // hifi_OctreeQuery_h
|