mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 03:37:49 +02:00
portals use exit as ignoreItem
This commit is contained in:
parent
a630a6f9c9
commit
3336efb6ee
12 changed files with 51 additions and 44 deletions
|
@ -226,7 +226,7 @@ bool EntityRenderer::passesZoneOcclusionTest(const std::unordered_set<QUuid>& co
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EntityRenderer::computeMirrorView(ViewFrustum& viewFrustum) const {
|
ItemID EntityRenderer::computeMirrorView(ViewFrustum& viewFrustum) const {
|
||||||
glm::vec3 inPropertiesPosition;
|
glm::vec3 inPropertiesPosition;
|
||||||
glm::quat inPropertiesRotation;
|
glm::quat inPropertiesRotation;
|
||||||
MirrorMode mirrorMode;
|
MirrorMode mirrorMode;
|
||||||
|
@ -237,11 +237,11 @@ void EntityRenderer::computeMirrorView(ViewFrustum& viewFrustum) const {
|
||||||
mirrorMode = _mirrorMode;
|
mirrorMode = _mirrorMode;
|
||||||
portalExitID = _portalExitID;
|
portalExitID = _portalExitID;
|
||||||
});
|
});
|
||||||
computeMirrorViewOperator(viewFrustum, inPropertiesPosition, inPropertiesRotation, mirrorMode, portalExitID);
|
return computeMirrorViewOperator(viewFrustum, inPropertiesPosition, inPropertiesRotation, mirrorMode, portalExitID);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EntityRenderer::computeMirrorViewOperator(ViewFrustum& viewFrustum, const glm::vec3& inPropertiesPosition, const glm::quat& inPropertiesRotation,
|
ItemID EntityRenderer::computeMirrorViewOperator(ViewFrustum& viewFrustum, const glm::vec3& inPropertiesPosition, const glm::quat& inPropertiesRotation,
|
||||||
MirrorMode mirrorMode, const QUuid& portalExitID) {
|
MirrorMode mirrorMode, const QUuid& portalExitID) {
|
||||||
glm::mat4 inToWorld = glm::translate(inPropertiesPosition) * glm::mat4_cast(inPropertiesRotation);
|
glm::mat4 inToWorld = glm::translate(inPropertiesPosition) * glm::mat4_cast(inPropertiesRotation);
|
||||||
glm::mat4 worldToIn = glm::inverse(inToWorld);
|
glm::mat4 worldToIn = glm::inverse(inToWorld);
|
||||||
|
|
||||||
|
@ -313,6 +313,8 @@ void EntityRenderer::computeMirrorViewOperator(ViewFrustum& viewFrustum, const g
|
||||||
projection[3][2] = c.w;
|
projection[3][2] = c.w;
|
||||||
|
|
||||||
viewFrustum.setProjection(projection, true);
|
viewFrustum.setProjection(projection, true);
|
||||||
|
|
||||||
|
return (mirrorMode == MirrorMode::PORTAL && !portalExitID.isNull()) ? DependencyManager::get<EntityTreeRenderer>()->renderableIdForEntityId(portalExitID) : Item::INVALID_ITEM_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
void EntityRenderer::render(RenderArgs* args) {
|
void EntityRenderer::render(RenderArgs* args) {
|
||||||
|
|
|
@ -75,9 +75,9 @@ public:
|
||||||
virtual uint32_t metaFetchMetaSubItems(ItemIDs& subItems) const override;
|
virtual uint32_t metaFetchMetaSubItems(ItemIDs& subItems) const override;
|
||||||
virtual Item::Bound getBound(RenderArgs* args) override;
|
virtual Item::Bound getBound(RenderArgs* args) override;
|
||||||
bool passesZoneOcclusionTest(const std::unordered_set<QUuid>& containingZones) const override;
|
bool passesZoneOcclusionTest(const std::unordered_set<QUuid>& containingZones) const override;
|
||||||
void computeMirrorView(ViewFrustum& viewFrustum) const override;
|
ItemID computeMirrorView(ViewFrustum& viewFrustum) const override;
|
||||||
static void computeMirrorViewOperator(ViewFrustum& viewFrustum, const glm::vec3& inPropertiesPosition, const glm::quat& inPropertiesRotation,
|
static ItemID computeMirrorViewOperator(ViewFrustum& viewFrustum, const glm::vec3& inPropertiesPosition, const glm::quat& inPropertiesRotation,
|
||||||
MirrorMode mirrorMode, const QUuid& portalExitID);
|
MirrorMode mirrorMode, const QUuid& portalExitID);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual bool needsRenderUpdateFromEntity() const final { return needsRenderUpdateFromEntity(_entity); }
|
virtual bool needsRenderUpdateFromEntity() const final { return needsRenderUpdateFromEntity(_entity); }
|
||||||
|
|
|
@ -199,8 +199,10 @@ void ImageEntityRenderer::doRender(RenderArgs* args) {
|
||||||
procedural->prepare(*batch, transform.getTranslation(), transform.getScale(), transform.getRotation(), _created, ProceduralProgramKey(transparent));
|
procedural->prepare(*batch, transform.getTranslation(), transform.getScale(), transform.getRotation(), _created, ProceduralProgramKey(transparent));
|
||||||
} else if (pipelineType == Pipeline::SIMPLE) {
|
} else if (pipelineType == Pipeline::SIMPLE) {
|
||||||
batch->setResourceTexture(0, _texture->getGPUTexture());
|
batch->setResourceTexture(0, _texture->getGPUTexture());
|
||||||
} else if (RenderPipelines::bindMaterials(materials, *batch, args->_renderMode, args->_enableTexturing)) {
|
} else if (pipelineType == Pipeline::MATERIAL) {
|
||||||
args->_details._materialSwitches++;
|
if (RenderPipelines::bindMaterials(materials, *batch, args->_renderMode, args->_enableTexturing)) {
|
||||||
|
args->_details._materialSwitches++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
DependencyManager::get<GeometryCache>()->renderQuad(
|
DependencyManager::get<GeometryCache>()->renderQuad(
|
||||||
|
|
|
@ -316,7 +316,7 @@ bool entities::TextPayload::passesZoneOcclusionTest(const std::unordered_set<QUu
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void entities::TextPayload::computeMirrorView(ViewFrustum& viewFrustum) const {
|
ItemID entities::TextPayload::computeMirrorView(ViewFrustum& viewFrustum) const {
|
||||||
auto entityTreeRenderer = DependencyManager::get<EntityTreeRenderer>();
|
auto entityTreeRenderer = DependencyManager::get<EntityTreeRenderer>();
|
||||||
if (entityTreeRenderer) {
|
if (entityTreeRenderer) {
|
||||||
auto renderable = entityTreeRenderer->renderableForEntityId(_entityID);
|
auto renderable = entityTreeRenderer->renderableForEntityId(_entityID);
|
||||||
|
@ -324,6 +324,7 @@ void entities::TextPayload::computeMirrorView(ViewFrustum& viewFrustum) const {
|
||||||
return renderable->computeMirrorView(viewFrustum);
|
return renderable->computeMirrorView(viewFrustum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return Item::INVALID_ITEM_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
void entities::TextPayload::render(RenderArgs* args) {
|
void entities::TextPayload::render(RenderArgs* args) {
|
||||||
|
@ -417,10 +418,11 @@ template <> bool payloadPassesZoneOcclusionTest(const entities::TextPayload::Poi
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <> void payloadComputeMirrorView(const entities::TextPayload::Pointer& payload, ViewFrustum& viewFrustum) {
|
template <> ItemID payloadComputeMirrorView(const entities::TextPayload::Pointer& payload, ViewFrustum& viewFrustum) {
|
||||||
if (payload) {
|
if (payload) {
|
||||||
payload->computeMirrorView(viewFrustum);
|
return payload->computeMirrorView(viewFrustum);
|
||||||
}
|
}
|
||||||
|
return Item::INVALID_ITEM_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,7 +101,7 @@ public:
|
||||||
ShapeKey getShapeKey() const;
|
ShapeKey getShapeKey() const;
|
||||||
void render(RenderArgs* args);
|
void render(RenderArgs* args);
|
||||||
bool passesZoneOcclusionTest(const std::unordered_set<QUuid>& containingZones) const;
|
bool passesZoneOcclusionTest(const std::unordered_set<QUuid>& containingZones) const;
|
||||||
void computeMirrorView(ViewFrustum& viewFrustum) const;
|
ItemID computeMirrorView(ViewFrustum& viewFrustum) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QUuid _entityID;
|
QUuid _entityID;
|
||||||
|
@ -118,7 +118,7 @@ namespace render {
|
||||||
template <> const ShapeKey shapeGetShapeKey(const entities::TextPayload::Pointer& payload);
|
template <> const ShapeKey shapeGetShapeKey(const entities::TextPayload::Pointer& payload);
|
||||||
template <> void payloadRender(const entities::TextPayload::Pointer& payload, RenderArgs* args);
|
template <> void payloadRender(const entities::TextPayload::Pointer& payload, RenderArgs* args);
|
||||||
template <> bool payloadPassesZoneOcclusionTest(const entities::TextPayload::Pointer& payload, const std::unordered_set<QUuid>& containingZones);
|
template <> bool payloadPassesZoneOcclusionTest(const entities::TextPayload::Pointer& payload, const std::unordered_set<QUuid>& containingZones);
|
||||||
template <> void payloadComputeMirrorView(const entities::TextPayload::Pointer& payload, ViewFrustum& viewFrustum);
|
template <> ItemID payloadComputeMirrorView(const entities::TextPayload::Pointer& payload, ViewFrustum& viewFrustum);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // hifi_RenderableTextEntityItem_h
|
#endif // hifi_RenderableTextEntityItem_h
|
||||||
|
|
|
@ -384,10 +384,10 @@ bool ModelMeshPartPayload::passesZoneOcclusionTest(const std::unordered_set<QUui
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModelMeshPartPayload::computeMirrorView(ViewFrustum& viewFrustum) const {
|
ItemID ModelMeshPartPayload::computeMirrorView(ViewFrustum& viewFrustum) const {
|
||||||
Transform transform = _parentTransform;
|
Transform transform = _parentTransform;
|
||||||
transform = transform.worldTransform(_localTransform);
|
transform = transform.worldTransform(_localTransform);
|
||||||
MirrorModeHelpers::computeMirrorView(viewFrustum, transform.getTranslation(), transform.getRotation(), _mirrorMode, _portalExitID);
|
return MirrorModeHelpers::computeMirrorView(viewFrustum, transform.getTranslation(), transform.getRotation(), _mirrorMode, _portalExitID);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModelMeshPartPayload::setBlendshapeBuffer(const std::unordered_map<int, gpu::BufferPointer>& blendshapeBuffers, const QVector<int>& blendedMeshSizes) {
|
void ModelMeshPartPayload::setBlendshapeBuffer(const std::unordered_map<int, gpu::BufferPointer>& blendshapeBuffers, const QVector<int>& blendedMeshSizes) {
|
||||||
|
@ -440,9 +440,10 @@ template <> bool payloadPassesZoneOcclusionTest(const ModelMeshPartPayload::Poin
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <> void payloadComputeMirrorView(const ModelMeshPartPayload::Pointer& payload, ViewFrustum& viewFrustum) {
|
template <> ItemID payloadComputeMirrorView(const ModelMeshPartPayload::Pointer& payload, ViewFrustum& viewFrustum) {
|
||||||
if (payload) {
|
if (payload) {
|
||||||
payload->computeMirrorView(viewFrustum);
|
return payload->computeMirrorView(viewFrustum);
|
||||||
}
|
}
|
||||||
|
return Item::INVALID_ITEM_ID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,7 +61,7 @@ public:
|
||||||
void setMirrorMode(MirrorMode mirrorMode) { _mirrorMode = mirrorMode; }
|
void setMirrorMode(MirrorMode mirrorMode) { _mirrorMode = mirrorMode; }
|
||||||
void setPortalExitID(const QUuid& portalExitID) { _portalExitID = portalExitID; }
|
void setPortalExitID(const QUuid& portalExitID) { _portalExitID = portalExitID; }
|
||||||
bool passesZoneOcclusionTest(const std::unordered_set<QUuid>& containingZones) const;
|
bool passesZoneOcclusionTest(const std::unordered_set<QUuid>& containingZones) const;
|
||||||
void computeMirrorView(ViewFrustum& viewFrustum) const;
|
render::ItemID computeMirrorView(ViewFrustum& viewFrustum) const;
|
||||||
|
|
||||||
void addMaterial(graphics::MaterialLayer material) { _drawMaterials.push(material); }
|
void addMaterial(graphics::MaterialLayer material) { _drawMaterials.push(material); }
|
||||||
void removeMaterial(graphics::MaterialPointer material) { _drawMaterials.remove(material); }
|
void removeMaterial(graphics::MaterialPointer material) { _drawMaterials.remove(material); }
|
||||||
|
@ -112,7 +112,7 @@ namespace render {
|
||||||
template <> const ShapeKey shapeGetShapeKey(const ModelMeshPartPayload::Pointer& payload);
|
template <> const ShapeKey shapeGetShapeKey(const ModelMeshPartPayload::Pointer& payload);
|
||||||
template <> void payloadRender(const ModelMeshPartPayload::Pointer& payload, RenderArgs* args);
|
template <> void payloadRender(const ModelMeshPartPayload::Pointer& payload, RenderArgs* args);
|
||||||
template <> bool payloadPassesZoneOcclusionTest(const ModelMeshPartPayload::Pointer& payload, const std::unordered_set<QUuid>& containingZones);
|
template <> bool payloadPassesZoneOcclusionTest(const ModelMeshPartPayload::Pointer& payload, const std::unordered_set<QUuid>& containingZones);
|
||||||
template <> void payloadComputeMirrorView(const ModelMeshPartPayload::Pointer& payload, ViewFrustum& viewFrustum);
|
template <> ItemID payloadComputeMirrorView(const ModelMeshPartPayload::Pointer& payload, ViewFrustum& viewFrustum);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -300,12 +300,12 @@ public:
|
||||||
_cachedArgsPointer->_ignoreItem = args->_ignoreItem;
|
_cachedArgsPointer->_ignoreItem = args->_ignoreItem;
|
||||||
_cachedArgsPointer->_mirrorDepth = args->_mirrorDepth;
|
_cachedArgsPointer->_mirrorDepth = args->_mirrorDepth;
|
||||||
|
|
||||||
args->_blitFramebuffer = _mirrorFramebuffer;
|
|
||||||
args->_ignoreItem = mirror.id;
|
|
||||||
args->_mirrorDepth = _depth;
|
|
||||||
|
|
||||||
ViewFrustum srcViewFrustum = args->getViewFrustum();
|
ViewFrustum srcViewFrustum = args->getViewFrustum();
|
||||||
args->_scene->getItem(mirror.id).computeMirrorView(srcViewFrustum);
|
ItemID portalExitID = args->_scene->getItem(mirror.id).computeMirrorView(srcViewFrustum);
|
||||||
|
|
||||||
|
args->_blitFramebuffer = _mirrorFramebuffer;
|
||||||
|
args->_ignoreItem = portalExitID != Item::INVALID_ITEM_ID ? portalExitID : mirror.id;
|
||||||
|
args->_mirrorDepth = _depth;
|
||||||
|
|
||||||
// Without calculating the bound planes, the mirror will use the same culling frustum as the main camera,
|
// Without calculating the bound planes, the mirror will use the same culling frustum as the main camera,
|
||||||
// which is not what we want here.
|
// which is not what we want here.
|
||||||
|
|
|
@ -161,10 +161,10 @@ namespace render {
|
||||||
return payload->passesZoneOcclusionTest(containingZones);
|
return payload->passesZoneOcclusionTest(containingZones);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <> void payloadComputeMirrorView(const PayloadProxyInterface::Pointer& payload, ViewFrustum& viewFrustum) {
|
template <> ItemID payloadComputeMirrorView(const PayloadProxyInterface::Pointer& payload, ViewFrustum& viewFrustum) {
|
||||||
if (!payload) {
|
if (!payload) {
|
||||||
return;
|
return Item::INVALID_ITEM_ID;
|
||||||
}
|
}
|
||||||
payload->computeMirrorView(viewFrustum);
|
return payload->computeMirrorView(viewFrustum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -450,7 +450,7 @@ public:
|
||||||
|
|
||||||
virtual bool passesZoneOcclusionTest(const std::unordered_set<QUuid>& containingZones) const = 0;
|
virtual bool passesZoneOcclusionTest(const std::unordered_set<QUuid>& containingZones) const = 0;
|
||||||
|
|
||||||
virtual void computeMirrorView(ViewFrustum& viewFrustum) const = 0;
|
virtual ItemID computeMirrorView(ViewFrustum& viewFrustum) const = 0;
|
||||||
|
|
||||||
~PayloadInterface() {}
|
~PayloadInterface() {}
|
||||||
|
|
||||||
|
@ -505,7 +505,7 @@ public:
|
||||||
|
|
||||||
bool passesZoneOcclusionTest(const std::unordered_set<QUuid>& containingZones) const { return _payload->passesZoneOcclusionTest(containingZones); }
|
bool passesZoneOcclusionTest(const std::unordered_set<QUuid>& containingZones) const { return _payload->passesZoneOcclusionTest(containingZones); }
|
||||||
|
|
||||||
void computeMirrorView(ViewFrustum& viewFrustum) const { _payload->computeMirrorView(viewFrustum); }
|
ItemID computeMirrorView(ViewFrustum& viewFrustum) const { return _payload->computeMirrorView(viewFrustum); }
|
||||||
|
|
||||||
// Access the status
|
// Access the status
|
||||||
const StatusPointer& getStatus() const { return _payload->getStatus(); }
|
const StatusPointer& getStatus() const { return _payload->getStatus(); }
|
||||||
|
@ -562,7 +562,7 @@ template <class T> uint32_t metaFetchMetaSubItems(const std::shared_ptr<T>& payl
|
||||||
template <class T> bool payloadPassesZoneOcclusionTest(const std::shared_ptr<T>& payloadData, const std::unordered_set<QUuid>& containingZones) { return true; }
|
template <class T> bool payloadPassesZoneOcclusionTest(const std::shared_ptr<T>& payloadData, const std::unordered_set<QUuid>& containingZones) { return true; }
|
||||||
|
|
||||||
// Mirror Interface
|
// Mirror Interface
|
||||||
template <class T> void payloadComputeMirrorView(const std::shared_ptr<T>& payloadData, ViewFrustum& viewFrustum) { return; }
|
template <class T> ItemID payloadComputeMirrorView(const std::shared_ptr<T>& payloadData, ViewFrustum& viewFrustum) { return Item::INVALID_ITEM_ID; }
|
||||||
|
|
||||||
// THe Payload class is the real Payload to be used
|
// THe Payload class is the real Payload to be used
|
||||||
// THis allow anything to be turned into a Payload as long as the required interface functions are available
|
// THis allow anything to be turned into a Payload as long as the required interface functions are available
|
||||||
|
@ -590,7 +590,7 @@ public:
|
||||||
|
|
||||||
virtual bool passesZoneOcclusionTest(const std::unordered_set<QUuid>& containingZones) const override { return payloadPassesZoneOcclusionTest<T>(_data, containingZones); }
|
virtual bool passesZoneOcclusionTest(const std::unordered_set<QUuid>& containingZones) const override { return payloadPassesZoneOcclusionTest<T>(_data, containingZones); }
|
||||||
|
|
||||||
virtual void computeMirrorView(ViewFrustum& viewFrustum) const override { return payloadComputeMirrorView<T>(_data, viewFrustum); }
|
virtual ItemID computeMirrorView(ViewFrustum& viewFrustum) const override { return payloadComputeMirrorView<T>(_data, viewFrustum); }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
DataPointer _data;
|
DataPointer _data;
|
||||||
|
@ -647,7 +647,7 @@ public:
|
||||||
virtual void render(RenderArgs* args) = 0;
|
virtual void render(RenderArgs* args) = 0;
|
||||||
virtual uint32_t metaFetchMetaSubItems(ItemIDs& subItems) const = 0;
|
virtual uint32_t metaFetchMetaSubItems(ItemIDs& subItems) const = 0;
|
||||||
virtual bool passesZoneOcclusionTest(const std::unordered_set<QUuid>& containingZones) const = 0;
|
virtual bool passesZoneOcclusionTest(const std::unordered_set<QUuid>& containingZones) const = 0;
|
||||||
virtual void computeMirrorView(ViewFrustum& viewFrustum) const = 0;
|
virtual ItemID computeMirrorView(ViewFrustum& viewFrustum) const = 0;
|
||||||
|
|
||||||
// FIXME: this isn't the best place for this since it's only used for ModelEntities, but currently all Entities use PayloadProxyInterface
|
// FIXME: this isn't the best place for this since it's only used for ModelEntities, but currently all Entities use PayloadProxyInterface
|
||||||
virtual void handleBlendedVertices(int blendshapeNumber, const QVector<BlendshapeOffset>& blendshapeOffsets,
|
virtual void handleBlendedVertices(int blendshapeNumber, const QVector<BlendshapeOffset>& blendshapeOffsets,
|
||||||
|
@ -660,7 +660,7 @@ template <> void payloadRender(const PayloadProxyInterface::Pointer& payload, Re
|
||||||
template <> uint32_t metaFetchMetaSubItems(const PayloadProxyInterface::Pointer& payload, ItemIDs& subItems);
|
template <> uint32_t metaFetchMetaSubItems(const PayloadProxyInterface::Pointer& payload, ItemIDs& subItems);
|
||||||
template <> const ShapeKey shapeGetShapeKey(const PayloadProxyInterface::Pointer& payload);
|
template <> const ShapeKey shapeGetShapeKey(const PayloadProxyInterface::Pointer& payload);
|
||||||
template <> bool payloadPassesZoneOcclusionTest(const PayloadProxyInterface::Pointer& payload, const std::unordered_set<QUuid>& containingZones);
|
template <> bool payloadPassesZoneOcclusionTest(const PayloadProxyInterface::Pointer& payload, const std::unordered_set<QUuid>& containingZones);
|
||||||
template <> void payloadComputeMirrorView(const PayloadProxyInterface::Pointer& payload, ViewFrustum& viewFrustum);
|
template <> ItemID payloadComputeMirrorView(const PayloadProxyInterface::Pointer& payload, ViewFrustum& viewFrustum);
|
||||||
|
|
||||||
typedef Item::PayloadPointer PayloadPointer;
|
typedef Item::PayloadPointer PayloadPointer;
|
||||||
typedef std::vector<PayloadPointer> Payloads;
|
typedef std::vector<PayloadPointer> Payloads;
|
||||||
|
|
|
@ -15,8 +15,8 @@ const char* MirrorModeNames[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const size_t MIRROR_MODE_NAMES = (sizeof(MirrorModeNames) / sizeof(MirrorModeNames[0]));
|
static const size_t MIRROR_MODE_NAMES = (sizeof(MirrorModeNames) / sizeof(MirrorModeNames[0]));
|
||||||
std::function<void(ViewFrustum&, const glm::vec3&, const glm::quat&, MirrorMode, const QUuid&)> MirrorModeHelpers::_computeMirrorViewOperator =
|
std::function<uint32_t(ViewFrustum&, const glm::vec3&, const glm::quat&, MirrorMode, const QUuid&)> MirrorModeHelpers::_computeMirrorViewOperator =
|
||||||
[](ViewFrustum&, const glm::vec3&, const glm::quat&, MirrorMode, const QUuid&) { return; };
|
[](ViewFrustum&, const glm::vec3&, const glm::quat&, MirrorMode, const QUuid&) { return 0; };
|
||||||
|
|
||||||
QString MirrorModeHelpers::getNameForMirrorMode(MirrorMode mode) {
|
QString MirrorModeHelpers::getNameForMirrorMode(MirrorMode mode) {
|
||||||
if (((int)mode <= 0) || ((int)mode >= (int)MIRROR_MODE_NAMES)) {
|
if (((int)mode <= 0) || ((int)mode >= (int)MIRROR_MODE_NAMES)) {
|
||||||
|
@ -26,11 +26,11 @@ QString MirrorModeHelpers::getNameForMirrorMode(MirrorMode mode) {
|
||||||
return MirrorModeNames[(int)mode];
|
return MirrorModeNames[(int)mode];
|
||||||
}
|
}
|
||||||
|
|
||||||
void MirrorModeHelpers::setComputeMirrorViewOperator(std::function<void(ViewFrustum&, const glm::vec3&, const glm::quat&, MirrorMode, const QUuid&)> computeMirrorViewOperator) {
|
void MirrorModeHelpers::setComputeMirrorViewOperator(std::function<uint32_t(ViewFrustum&, const glm::vec3&, const glm::quat&, MirrorMode, const QUuid&)> computeMirrorViewOperator) {
|
||||||
_computeMirrorViewOperator = computeMirrorViewOperator;
|
_computeMirrorViewOperator = computeMirrorViewOperator;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MirrorModeHelpers::computeMirrorView(ViewFrustum& viewFrustum, const glm::vec3& inPropertiesPosition, const glm::quat& inPropertiesRotation,
|
uint32_t MirrorModeHelpers::computeMirrorView(ViewFrustum& viewFrustum, const glm::vec3& inPropertiesPosition, const glm::quat& inPropertiesRotation,
|
||||||
MirrorMode mirrorMode, const QUuid& portalExitID) {
|
MirrorMode mirrorMode, const QUuid& portalExitID) {
|
||||||
_computeMirrorViewOperator(viewFrustum, inPropertiesPosition, inPropertiesRotation, mirrorMode, portalExitID);
|
return _computeMirrorViewOperator(viewFrustum, inPropertiesPosition, inPropertiesRotation, mirrorMode, portalExitID);
|
||||||
}
|
}
|
|
@ -40,12 +40,12 @@ class MirrorModeHelpers {
|
||||||
public:
|
public:
|
||||||
static QString getNameForMirrorMode(MirrorMode mode);
|
static QString getNameForMirrorMode(MirrorMode mode);
|
||||||
|
|
||||||
static void setComputeMirrorViewOperator(std::function<void(ViewFrustum&, const glm::vec3&, const glm::quat&, MirrorMode, const QUuid&)> computeMirrorViewOperator);
|
static void setComputeMirrorViewOperator(std::function<uint32_t(ViewFrustum&, const glm::vec3&, const glm::quat&, MirrorMode, const QUuid&)> computeMirrorViewOperator);
|
||||||
static void computeMirrorView(ViewFrustum& viewFrustum, const glm::vec3& inPropertiesPosition, const glm::quat& inPropertiesRotation,
|
static uint32_t computeMirrorView(ViewFrustum& viewFrustum, const glm::vec3& inPropertiesPosition, const glm::quat& inPropertiesRotation,
|
||||||
MirrorMode mirrorMode, const QUuid& portalExitID);
|
MirrorMode mirrorMode, const QUuid& portalExitID);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static std::function<void(ViewFrustum&, const glm::vec3&, const glm::quat&, MirrorMode, const QUuid&)> _computeMirrorViewOperator;
|
static std::function<uint32_t(ViewFrustum&, const glm::vec3&, const glm::quat&, MirrorMode, const QUuid&)> _computeMirrorViewOperator;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // hifi_MirrorMode_h
|
#endif // hifi_MirrorMode_h
|
||||||
|
|
Loading…
Reference in a new issue