Skip to content

Commit 817f020

Browse files
committed
Slight reorganization to avoid GetTerrMatter calls where not necessary
1 parent 1c906e8 commit 817f020

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

Source/System/Atom.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ bool Atom::StepForward(int numSteps) {
552552
g_SceneMan.WrapPosition(m_IntPos[X], m_IntPos[Y]);
553553

554554
// Detect terrain hits, if not disabled.
555-
if (g_MaterialAir != (m_TerrainMatHit = g_SceneMan.GetTerrMatter(m_IntPos[X], m_IntPos[Y])) && !m_OwnerMO->m_IgnoreTerrain) {
555+
if (!m_OwnerMO->m_IgnoreTerrain && g_MaterialAir != (m_TerrainMatHit = g_SceneMan.GetTerrMatter(m_IntPos[X], m_IntPos[Y]))) {
556556
// Check if we're temporarily disabled from hitting terrain
557557
if (!m_TerrainHitsDisabled) {
558558
m_OwnerMO->SetHitWhatTerrMaterial(m_TerrainMatHit);
@@ -766,7 +766,7 @@ int Atom::Travel(float travelTime, bool autoTravel, bool scenePreLocked) {
766766
// Bresenham's line drawing algorithm execution
767767
for (domSteps = 0; domSteps < delta[dom] && !(hit[X] || hit[Y]); ++domSteps) {
768768
// Check for the special case if the Atom is starting out embedded in terrain. This can happen if something large gets copied to the terrain and embeds some Atoms.
769-
if (domSteps == 0 && !m_OwnerMO->m_IgnoreTerrain && g_SceneMan.GetTerrMatter(intPos[X], intPos[Y]) != g_MaterialAir) {
769+
if (!m_OwnerMO->m_IgnoreTerrain && domSteps == 0 && g_SceneMan.GetTerrMatter(intPos[X], intPos[Y]) != g_MaterialAir) {
770770
++hitCount;
771771
hit[X] = hit[Y] = true;
772772
if (g_SceneMan.TryPenetrate(intPos[X], intPos[Y], velocity * mass * sharpness, velocity, retardation, 0.5F, m_NumPenetrations, removeOrphansRadius, removeOrphansMaxArea, removeOrphansRate)) {
@@ -902,7 +902,7 @@ int Atom::Travel(float travelTime, bool autoTravel, bool scenePreLocked) {
902902
// Atom-Terrain collision detection and response.
903903

904904
// If there was no MO collision detected, then check for terrain hits.
905-
else if ((hitMaterialID = g_SceneMan.GetTerrMatter(intPos[X], intPos[Y])) && !m_OwnerMO->m_IgnoreTerrain) {
905+
else if (!m_OwnerMO->m_IgnoreTerrain && (hitMaterialID = g_SceneMan.GetTerrMatter(intPos[X], intPos[Y]))) {
906906
if (hitMaterialID != g_MaterialAir) {
907907
m_OwnerMO->SetHitWhatTerrMaterial(hitMaterialID);
908908
}

0 commit comments

Comments
 (0)