mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 13:18:38 +02:00
tweaks to view frustum delta code
This commit is contained in:
parent
2c1518144a
commit
062c1b4c64
2 changed files with 22 additions and 12 deletions
|
@ -51,23 +51,30 @@ VoxelAgentData* VoxelAgentData::clone() const {
|
||||||
return new VoxelAgentData(*this);
|
return new VoxelAgentData(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VoxelAgentData::updateViewFrustum() {
|
bool VoxelAgentData::updateCurrentViewFrustum() {
|
||||||
// save our currentViewFrustum into our lastKnownViewFrustum
|
bool currentViewFrustumChanged = false;
|
||||||
_lastKnownViewFrustum = _currentViewFrustum;
|
ViewFrustum newestViewFrustum;
|
||||||
|
|
||||||
// get position and orientation details from the camera
|
// get position and orientation details from the camera
|
||||||
_currentViewFrustum.setPosition(getCameraPosition());
|
newestViewFrustum.setPosition(getCameraPosition());
|
||||||
_currentViewFrustum.setOrientation(getCameraDirection(), getCameraUp(), getCameraRight());
|
newestViewFrustum.setOrientation(getCameraDirection(), getCameraUp(), getCameraRight());
|
||||||
|
|
||||||
// Also make sure it's got the correct lens details from the camera
|
// Also make sure it's got the correct lens details from the camera
|
||||||
_currentViewFrustum.setFieldOfView(getCameraFov());
|
newestViewFrustum.setFieldOfView(getCameraFov());
|
||||||
_currentViewFrustum.setAspectRatio(getCameraAspectRatio());
|
newestViewFrustum.setAspectRatio(getCameraAspectRatio());
|
||||||
_currentViewFrustum.setNearClip(getCameraNearClip());
|
newestViewFrustum.setNearClip(getCameraNearClip());
|
||||||
_currentViewFrustum.setFarClip(getCameraFarClip());
|
newestViewFrustum.setFarClip(getCameraFarClip());
|
||||||
|
|
||||||
// if there has been a change, then recalculate
|
// if there has been a change, then recalculate
|
||||||
if (!_lastKnownViewFrustum.matches(_currentViewFrustum)) {
|
if (!newestViewFrustum.matches(_currentViewFrustum)) {
|
||||||
|
_currentViewFrustum = newestViewFrustum;
|
||||||
_currentViewFrustum.calculate();
|
_currentViewFrustum.calculate();
|
||||||
|
currentViewFrustumChanged = true;
|
||||||
}
|
}
|
||||||
|
return currentViewFrustumChanged;
|
||||||
|
}
|
||||||
|
|
||||||
|
void VoxelAgentData::updateLastKnownViewFrustum() {
|
||||||
|
// save our currentViewFrustum into our lastKnownViewFrustum
|
||||||
|
_lastKnownViewFrustum = _currentViewFrustum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,7 +44,10 @@ public:
|
||||||
ViewFrustum& getCurrentViewFrustum() { return _currentViewFrustum; };
|
ViewFrustum& getCurrentViewFrustum() { return _currentViewFrustum; };
|
||||||
ViewFrustum& getLastKnownViewFrustum() { return _lastKnownViewFrustum; };
|
ViewFrustum& getLastKnownViewFrustum() { return _lastKnownViewFrustum; };
|
||||||
|
|
||||||
void updateViewFrustum();
|
// These are not classic setters because they are calculating and maintaining state
|
||||||
|
// which is set asynchronously through the network receive
|
||||||
|
bool updateCurrentViewFrustum();
|
||||||
|
void updateLastKnownViewFrustum();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
unsigned char* _voxelPacket;
|
unsigned char* _voxelPacket;
|
||||||
|
|
Loading…
Reference in a new issue