@@ -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]))) {
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 && 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