tweaks to view frustum delta code

This commit is contained in:
ZappoMan 2013-05-14 11:10:40 -07:00
parent 2c1518144a
commit 062c1b4c64
2 changed files with 22 additions and 12 deletions

View file

@ -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;
} }

View file

@ -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;