Commit ca6ec7f8 authored by hybrid's avatar hybrid

Minor code optimization, indentation fixes.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@4007 dfc29bdd-3216-0410-991c-e03cc46cb475
parent b5c7c969
...@@ -579,7 +579,7 @@ namespace scene ...@@ -579,7 +579,7 @@ namespace scene
void CTerrainSceneNode::preRenderCalculationsIfNeeded() void CTerrainSceneNode::preRenderCalculationsIfNeeded()
{ {
scene::ICameraSceneNode * camera = SceneManager->getActiveCamera(); scene::ICameraSceneNode * camera = SceneManager->getActiveCamera();
if(!camera) if (!camera)
return; return;
// Determine the camera rotation, based on the camera direction. // Determine the camera rotation, based on the camera direction.
...@@ -615,18 +615,15 @@ namespace scene ...@@ -615,18 +615,15 @@ namespace scene
OldCameraUp = cameraUp; OldCameraUp = cameraUp;
OldCameraFOV = CameraFOV; OldCameraFOV = CameraFOV;
preRenderLODCalculations(); preRenderLODCalculations();
preRenderIndicesCalculations(); preRenderIndicesCalculations();
} }
void CTerrainSceneNode::preRenderLODCalculations() void CTerrainSceneNode::preRenderLODCalculations()
{ {
scene::ICameraSceneNode * camera = SceneManager->getActiveCamera(); scene::ICameraSceneNode * camera = SceneManager->getActiveCamera();
if(!camera) if (!camera)
return; return;
const core::vector3df cameraPosition = camera->getAbsolutePosition(); const core::vector3df cameraPosition = camera->getAbsolutePosition();
...@@ -640,23 +637,16 @@ namespace scene ...@@ -640,23 +637,16 @@ namespace scene
{ {
if (frustum->getBoundingBox().intersectsWithBox(TerrainData.Patches[j].BoundingBox)) if (frustum->getBoundingBox().intersectsWithBox(TerrainData.Patches[j].BoundingBox))
{ {
const f32 distance = (cameraPosition.X - TerrainData.Patches[j].Center.X) * (cameraPosition.X - TerrainData.Patches[j].Center.X) + const f32 distance = cameraPosition.getDistanceFromSQ(TerrainData.Patches[j].Center);
(cameraPosition.Y - TerrainData.Patches[j].Center.Y) * (cameraPosition.Y - TerrainData.Patches[j].Center.Y) +
(cameraPosition.Z - TerrainData.Patches[j].Center.Z) * (cameraPosition.Z - TerrainData.Patches[j].Center.Z);
for (s32 i = TerrainData.MaxLOD - 1; i >= 0; --i) TerrainData.Patches[j].CurrentLOD = 0;
for (s32 i = TerrainData.MaxLOD - 1; i>0; --i)
{ {
if (distance >= TerrainData.LODDistanceThreshold[i]) if (distance >= TerrainData.LODDistanceThreshold[i])
{ {
TerrainData.Patches[j].CurrentLOD = i; TerrainData.Patches[j].CurrentLOD = i;
break; break;
} }
//else if (i == 0)
{
// If we've turned off a patch from viewing, because of the frustum, and now we turn around and it's
// too close, we need to turn it back on, at the highest LOD. The if above doesn't catch this.
TerrainData.Patches[j].CurrentLOD = 0;
}
} }
} }
else else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment