bool xDistributedInteger::updateValue(TNL::S32 value,xTimeType currentTime) { mLastTime = mCurrentTime; mCurrentTime = currentTime; mLastDeltaTime = mCurrentTime - mLastTime; mLastValue = mCurrentValue; mCurrentValue = value; mDifference = mCurrentValue - mLastValue; mThresoldTicker +=mLastDeltaTime; float lengthDiff = fabsf((float)mDifference +0.5f); int flags = getFlags(); flags =E_DP_OK; bool result = false; if ( lengthDiff > getPredictionSettings()->getMinDifference() ) { if (mThresoldTicker2 > getPredictionSettings()->getMinSendTime() ) { flags =E_DP_NEEDS_SEND; result = true ; } } float serverDiff = (float)(mCurrentValue-mLastServerValue); if ( fabsf( serverDiff + .5f) > getPredictionSettings()->getMinDifference() ) { if (mThresoldTicker2 > (getPredictionSettings()->getMinSendTime() * 0.2f) ) { flags =E_DP_NEEDS_SEND; result = true ; } } if (mThresoldTicker2 > getPredictionSettings()->getMinSendTime() ) { mThresoldTicker2 = 0 ; mThresoldTicker = 0; } setFlags(flags); return result; }
bool xDistributedPoint3F::updateValue(Point3F value,xTimeType currentTime) { mLastTime = mCurrentTime; mCurrentTime = currentTime; mLastDeltaTime = mCurrentTime - mLastTime; mLastValue = mCurrentValue; mCurrentValue = value; mDifference = mCurrentValue - mLastValue; mThresoldTicker +=mLastDeltaTime; float lengthDiff = fabsf(mDifference.len()); float timeDiffMs = ((float)mThresoldTicker) / 1000.f; int flags = getFlags(); flags =E_DP_OK; bool result = false; if (this->getPropertyInfo()->mPredictionType == E_PTYPE_PREDICTED) { if (lengthDiff > getPredictionSettings()->getMinDifference() ) { if (mThresoldTicker2 > getPredictionSettings()->getMinSendTime()) { flags =E_DP_NEEDS_SEND; result = true ; //xLogger::xLog(ELOGINFO,XL_START,"mThresoldTicker2: %f",mThresoldTicker2); } } Point3F serverDiff = mCurrentValue-mLastServerValue ; if ( fabsf( serverDiff.len()) > getPredictionSettings()->getMinDifference() ) { if (mThresoldTicker2 > (getPredictionSettings()->getMinSendTime() * 0.2f) ) { flags =E_DP_NEEDS_SEND; result = true ; //xLogger::xLog(ELOGINFO,XL_START,"mThresoldTicker2: %f",mThresoldTicker2); } } if (mThresoldTicker2 > getPredictionSettings()->getMinSendTime()) { mThresoldTicker2 = 0 ; mThresoldTicker = 0; } } if (getPropertyInfo()->mPredictionType == E_PTYPE_RELIABLE) { flags =E_DP_NEEDS_SEND; result = true ; mLastValue = value; mCurrentValue = value; } setFlags(flags); return result; }
bool xDistributedQuatF::updateValue(QuatF value,xTimeType currentTime) { bool result = false; mLastTime = mCurrentTime; mCurrentTime = currentTime; mLastDeltaTime = mCurrentTime - mLastTime; mLastValue = mCurrentValue; mCurrentValue = value; mDifference = mCurrentValue - mLastValue; mThresoldTicker +=mLastDeltaTime; float lengthDiff = fabsf(mCurrentValue.angleBetween(mLastValue)); float timeDiffMs = ((float)mThresoldTicker) / 1000.f; int flags = getFlags(); flags =E_DP_OK; if (this->getPropertyInfo()->mPredictionType == E_PTYPE_PREDICTED) { if (lengthDiff > getPredictionSettings()->getMinDifference() ) { if (mThresoldTicker2 > getPredictionSettings()->getMinSendTime()) { flags =E_DP_NEEDS_SEND; result = true ; } } QuatF serverDiff = mCurrentValue-mLastServerValue ; float serverDiff2 = fabsf(mCurrentValue.angleBetween(mLastServerValue)); if ( serverDiff2 > getPredictionSettings()->getMinDifference() ) { if (mThresoldTicker2 > (getPredictionSettings()->getMinSendTime() * 0.2f) ) { flags =E_DP_NEEDS_SEND; result = true ; } } if (mThresoldTicker2 > getPredictionSettings()->getMinSendTime()) { mThresoldTicker2 = 0 ; mThresoldTicker = 0; } } if (this->getPropertyInfo()->mPredictionType == E_PTYPE_RELIABLE) { flags =E_DP_NEEDS_SEND; result = true ; mLastValue = value; mCurrentValue = value; } setFlags(flags); return result; }