| 1213 | //---------------------------------------------------------------------------- |
| 1214 | |
| 1215 | void ShapeBase::processTick(const Move* move) |
| 1216 | { |
| 1217 | PROFILE_SCOPE( ShapeBase_ProcessTick ); |
| 1218 | |
| 1219 | // Energy management |
| 1220 | if (mDamageState == Enabled && mDataBlock->inheritEnergyFromMount == false) { |
| 1221 | F32 store = mEnergy; |
| 1222 | mEnergy += mRechargeRate; |
| 1223 | if (mEnergy > mDataBlock->maxEnergy) |
| 1224 | mEnergy = mDataBlock->maxEnergy; |
| 1225 | else |
| 1226 | if (mEnergy < 0) |
| 1227 | mEnergy = 0; |
| 1228 | |
| 1229 | // Virtual setEnergyLevel is used here by some derived classes to |
| 1230 | // decide whether they really want to set the energy mask bit. |
| 1231 | if (mEnergy != store) |
| 1232 | setEnergyLevel(mEnergy); |
| 1233 | } |
| 1234 | |
| 1235 | // Repair management |
| 1236 | if (mDataBlock->isInvincible == false) |
| 1237 | { |
| 1238 | F32 store = mDamage; |
| 1239 | mDamage -= mRepairRate; |
| 1240 | mDamage = mClampF(mDamage, 0.f, mDataBlock->maxDamage); |
| 1241 | |
| 1242 | if (mRepairReserve > mDamage) |
| 1243 | mRepairReserve = mDamage; |
| 1244 | if (mRepairReserve > 0.0) |
| 1245 | { |
| 1246 | F32 rate = getMin(mDataBlock->repairRate, mRepairReserve); |
| 1247 | mDamage -= rate; |
| 1248 | mRepairReserve -= rate; |
| 1249 | } |
| 1250 | |
| 1251 | if (store != mDamage) |
| 1252 | { |
| 1253 | updateDamageLevel(); |
| 1254 | if (isServerObject()) { |
| 1255 | setMaskBits(DamageMask); |
| 1256 | mDataBlock->onDamage_callback( this, mDamage - store ); |
| 1257 | } |
| 1258 | } |
| 1259 | } |
| 1260 | |
| 1261 | if (isServerObject()) { |
| 1262 | // Server only... |
| 1263 | advanceThreads(TickSec); |
| 1264 | updateServerAudio(); |
| 1265 | |
| 1266 | // update wet state |
| 1267 | setImageWetState(0, mWaterCoverage > 0.4); // more than 40 percent covered |
| 1268 | |
| 1269 | // update motion state |
| 1270 | mMoveMotion = false; |
| 1271 | if (move && (move->x || move->y || move->z)) |
| 1272 | { |
nothing calls this directly
no test coverage detected