diff options
Diffstat (limited to 'src/object')
-rw-r--r-- | src/object/auto/autoportico.cpp | 8 | ||||
-rw-r--r-- | src/object/brain.cpp | 1 | ||||
-rw-r--r-- | src/object/motion/motionvehicle.cpp | 41 | ||||
-rw-r--r-- | src/object/object.cpp | 42 |
4 files changed, 30 insertions, 62 deletions
diff --git a/src/object/auto/autoportico.cpp b/src/object/auto/autoportico.cpp index 3b3bf84..c0be784 100644 --- a/src/object/auto/autoportico.cpp +++ b/src/object/auto/autoportico.cpp @@ -398,7 +398,6 @@ Error CAutoPortico::GetError() void CAutoPortico::UpdateTrackMapping(float left, float right) { Gfx::Material mat; - float limit[2]; int rank; memset( &mat, 0, sizeof(Gfx::Material)); @@ -411,15 +410,12 @@ void CAutoPortico::UpdateTrackMapping(float left, float right) rank = m_object->GetObjectRank(0); - limit[0] = 0.0f; - limit[1] = 1000000.0f; - m_engine->TrackTextureMapping(rank, mat, Gfx::ENG_RSTATE_PART1, "lemt.png", "", - limit[0], limit[1], Gfx::ENG_TEX_MAPPING_X, + Gfx::LOD_Constant, Gfx::ENG_TEX_MAPPING_X, right, 8.0f, 8.0f, 192.0f, 256.0f); m_engine->TrackTextureMapping(rank, mat, Gfx::ENG_RSTATE_PART2, "lemt.png", "", - limit[0], limit[1], Gfx::ENG_TEX_MAPPING_X, + Gfx::LOD_Constant, Gfx::ENG_TEX_MAPPING_X, left, 8.0f, 8.0f, 192.0f, 256.0f); } diff --git a/src/object/brain.cpp b/src/object/brain.cpp index ef7309d..d3c0e0b 100644 --- a/src/object/brain.cpp +++ b/src/object/brain.cpp @@ -1947,6 +1947,7 @@ void CBrain::UpdateInterface(float rTime) if ( power == 0 ) { energy = 0.0f; + limit = 0.0f; } else { diff --git a/src/object/motion/motionvehicle.cpp b/src/object/motion/motionvehicle.cpp index 33e746f..3c95a27 100644 --- a/src/object/motion/motionvehicle.cpp +++ b/src/object/motion/motionvehicle.cpp @@ -1877,52 +1877,33 @@ bool CMotionVehicle::EventFrameCanoni(const Event &event) void CMotionVehicle::UpdateTrackMapping(float left, float right, ObjectType type) { - Gfx::Material mat; - float limit[4]; - int rRank, lRank, i; + Gfx::Material mat; + mat.diffuse = Gfx::Color(1.0f, 1.0f, 1.0f); // white + mat.ambient = Gfx::Color(0.5f, 0.5f, 0.5f); - memset( &mat, 0, sizeof(Gfx::Material) ); - mat.diffuse.r = 1.0f; - mat.diffuse.g = 1.0f; - mat.diffuse.b = 1.0f; // white - mat.ambient.r = 0.5f; - mat.ambient.g = 0.5f; - mat.ambient.b = 0.5f; + int rRank = m_object->GetObjectRank(6); + int lRank = m_object->GetObjectRank(7); - rRank = m_object->GetObjectRank(6); - lRank = m_object->GetObjectRank(7); - - - if ( type == OBJECT_MOBILEdr ) + if (type == OBJECT_MOBILEdr) { - limit[0] = 0.0f; - limit[1] = 1000000.0f; - limit[2] = limit[1]; - limit[3] = m_engine->GetLimitLOD(1); - m_engine->TrackTextureMapping(rRank, mat, Gfx::ENG_RSTATE_PART1, "drawer.png", "", - limit[0], limit[1], Gfx::ENG_TEX_MAPPING_X, + Gfx::LOD_Constant, Gfx::ENG_TEX_MAPPING_X, right, 1.0f, 8.0f, 192.0f, 256.0f); m_engine->TrackTextureMapping(lRank, mat, Gfx::ENG_RSTATE_PART2, "drawer.png", "", - limit[0], limit[1], Gfx::ENG_TEX_MAPPING_X, + Gfx::LOD_Constant, Gfx::ENG_TEX_MAPPING_X, left, 1.0f, 8.0f, 192.0f, 256.0f); } else { - limit[0] = 0.0f; - limit[1] = m_engine->GetLimitLOD(0); - limit[2] = limit[1]; - limit[3] = m_engine->GetLimitLOD(1); - - for ( i=0 ; i<2 ; i++ ) + for (int i = 0; i < 2; i++) { m_engine->TrackTextureMapping(rRank, mat, Gfx::ENG_RSTATE_PART1, "lemt.png", "", - limit[i*2+0], limit[i*2+1], Gfx::ENG_TEX_MAPPING_X, + (i == 0) ? Gfx::LOD_High : Gfx::LOD_Medium, Gfx::ENG_TEX_MAPPING_X, right, 1.0f, 8.0f, 192.0f, 256.0f); m_engine->TrackTextureMapping(lRank, mat, Gfx::ENG_RSTATE_PART2, "lemt.png", "", - limit[i*2+0], limit[i*2+1], Gfx::ENG_TEX_MAPPING_X, + (i == 0) ? Gfx::LOD_High : Gfx::LOD_Medium, Gfx::ENG_TEX_MAPPING_X, left, 1.0f, 8.0f, 192.0f, 256.0f); } } diff --git a/src/object/object.cpp b/src/object/object.cpp index 9615866..e2830c5 100644 --- a/src/object/object.cpp +++ b/src/object/object.cpp @@ -5811,21 +5811,16 @@ void CObject::FlatParent() void CObject::UpdateEnergyMapping() { - Gfx::Material mat; - float a, b, i, s, au, bu; - float limit[6]; - int j; + if (Math::IsEqual(m_energy, m_lastEnergy, 0.01f)) + return; - if ( fabs(m_energy-m_lastEnergy) < 0.01f ) return; m_lastEnergy = m_energy; - memset(&mat, 0, sizeof(mat)); - mat.diffuse.r = 1.0f; - mat.diffuse.g = 1.0f; - mat.diffuse.b = 1.0f; // white - mat.ambient.r = 0.5f; - mat.ambient.g = 0.5f; - mat.ambient.b = 0.5f; + Gfx::Material mat; + mat.diffuse = Gfx::Color(1.0f, 1.0f, 1.0f); // white + mat.ambient = Gfx::Color(0.5f, 0.5f, 0.5f); + + float a = 0.0f, b = 0.0f; if ( m_type == OBJECT_POWER || m_type == OBJECT_ATOMIC ) @@ -5833,35 +5828,30 @@ void CObject::UpdateEnergyMapping() a = 2.0f; b = 0.0f; // dimensions of the battery (according to y) } - if ( m_type == OBJECT_STATION ) + else if ( m_type == OBJECT_STATION ) { a = 10.0f; b = 4.0f; // dimensions of the battery (according to y) } - if ( m_type == OBJECT_ENERGY ) + else if ( m_type == OBJECT_ENERGY ) { a = 9.0f; b = 3.0f; // dimensions of the battery (according to y) } - i = 0.50f+0.25f*m_energy; // origin - s = i+0.25f; // width + float i = 0.50f+0.25f*m_energy; // origin + float s = i+0.25f; // width - au = (s-i)/(b-a); - bu = s-b*(s-i)/(b-a); + float au = (s-i)/(b-a); + float bu = s-b*(s-i)/(b-a); - limit[0] = 0.0f; - limit[1] = m_engine->GetLimitLOD(0); - limit[2] = limit[1]; - limit[3] = m_engine->GetLimitLOD(1); - limit[4] = limit[3]; - limit[5] = 1000000.0f; + Gfx::LODLevel lodLevels[3] = { Gfx::LOD_High, Gfx::LOD_Medium, Gfx::LOD_Low }; - for ( j=0 ; j<3 ; j++ ) + for (int j = 0; j < 3; j++) { m_engine->ChangeTextureMapping(m_objectPart[0].object, mat, Gfx::ENG_RSTATE_PART3, "lemt.png", "", - limit[j*2+0], limit[j*2+1], Gfx::ENG_TEX_MAPPING_1Y, + lodLevels[j], Gfx::ENG_TEX_MAPPING_1Y, au, bu, 1.0f, 0.0f); } } |