11 #include "RNPlatform/Inc/MemoryTracking.h"
12 #ifndef __DATABLOCK_PREDICT_FLOAT_H__
13 #define __DATABLOCK_PREDICT_FLOAT_H__
15 #include "RNReplicaNet/Inc/DataBlock.h"
16 #include "RNPlatform/Inc/RegistryManagerMap.h"
18 namespace RNReplicaNet
33 RN_CLASS_MINIMAL_RTTI();
44 virtual void Poll(
DataBlockReason *reason,
const bool discardOlderIncluded =
false,
const unsigned int discardOrder = 0);
58 virtual bool GetLastDelta(
bool &continuityBreak,
float &sample, SysTimeType &time,
float &delta);
123 mIsQuadratic =
false;
217 void ReplicaContinuityBreak(
const SysTimeType time,
const float sample,
const float delta,
const bool continuityBreak,
const bool ignoreTimeCheck =
false,
const bool clearPreviousUpdates =
false);
227 bool mContinuityBreak;
228 bool mIsDistanceBased;
234 bool mImplementTeleport;
241 float mInterpolationFilter;
250 unsigned int mDiscardOrder;
251 bool mContinuityBreak;
256 SysTimeType mSampleTime;
258 bool mImplementTeleport;
262 SysTimeType mLastUpdateSentLocalTime;
263 int mNumForcedUpdates;
271 bool mFirstTimeNotReset;
275 SysTimeType mSampleTime;
284 SysTimeType mSampleTime;
285 float mSampleHistory[2];
286 SysTimeType mSampleHistoryTime[2];
287 SysTimeType mSampleHistoryTimeLocal[2];
293 bool mDoneMasterPoll;
302 std::map<SysTimeType,ParsedData> mParsedByTime;
305 SysTimeType mFirstLaggedTime;
307 float mSnapToDifference;
309 bool mBoundaryEnable;
310 bool mBoundaryIsWrap;
311 float mBoundaryLower,mBoundaryUpper;
312 bool mBoundaryWriteBack;
314 float ApplyBoundaryToValue(
const float value)
const;
316 SysTimeType mLastGoodDataTime;
321 int AddDataBlockData(
DynamicMessageHelper *message,
const float sample,
const SysTimeType time,
const float delta);
325 void FreeSessionBlocks(
void);
333 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_VAR(x) \
335 RNReplicaNet::DataBlock_Predict_Float *datablock = 0; \
336 datablock = RNReplicaNet::DataBlock_Predict_Float::Register(&(basepoint->x)); \
337 _RO_DO_SETDATABLOCKVARIABLENAME(x);
341 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_SETMAXERROR(x) \
342 datablock->SetMaxError((float)x);
346 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_SETMINERROR(x) \
347 datablock->SetMinError((float)x);
351 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_SETERROR(x) \
352 datablock->SetMinError((float)x); \
353 datablock->SetMaxError((float)x);
357 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_SETMINDISTANCE(x) \
358 datablock->SetMinDistance((float)x);
362 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_SETMAXDISTANCE(x) \
363 datablock->SetMaxDistance((float)x);
367 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_SETINTERPOLATIONFILTER(x) \
368 datablock->SetInterpolationFilter((float)x);
372 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_SETLINEAR() \
373 datablock->SetLinear();
377 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_SETQUADRATIC() \
378 datablock->SetQuadratic();
382 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_SETLAGGED(x) \
383 datablock->SetLagged((float)x);
387 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_SETSNAPTODIFFERENCE(x) \
388 datablock->SetSnapToDifference((float)x);
392 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_BOUNDARYENABLE() \
393 datablock->BoundaryEnable();
397 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_BOUNDARYDISABLE() \
398 datablock->BoundaryDisable();
402 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_BOUNDARYWRAPAROUND() \
403 datablock->BoundaryWrapAround();
407 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_BOUNDARYCAPPED() \
408 datablock->BoundaryCapped();
412 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_BOUNDARYLOWERUPPER(x,y) \
413 datablock->BoundaryLowerUpper((float)x,(float)y);
417 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_BOUNDARYAPPLYTOMASTER() \
418 datablock->BoundaryApplyToMaster();
422 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_BOUNDARYDONOTAPPLYTOMASTER() \
423 datablock->BoundaryDoNotApplyToMaster();
429 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_SETVALUEFLOAT() \
430 datablock->SetValueFloat();
434 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_SETVALUESHORTFLOAT() \
435 datablock->SetValueShortFloat();
439 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_SETDELTAFLOAT() \
440 datablock->SetDeltaFloat();
444 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_SETDELTASHORTFLOAT() \
445 datablock->SetDeltaShortFloat();
449 #define _RO_DO_REGISTERBLOCK_PREDICT_FLOAT_SETTIMEDELTA(x) \
450 datablock->SetTimeDelta((float)x);
void SetMaxError(float maxerror=1.0f)
Definition: DataBlock_Predict_Float.h:244
Definition: DataBlock.h:357
virtual void Poll(DataBlockReason *reason, const bool discardOlderIncluded=false, const unsigned int discardOrder=0)
bool IsAttached(void *data)
virtual bool GetLastDelta(bool &continuityBreak, float &sample, SysTimeType &time, float &delta)
static DataBlock_Predict_Float * Register(float *data)
Definition: DataBlock_Predict_Float.h:280
void BoundaryApplyToMaster(void)
virtual void ContinuityBreak(unsigned char breakTypes)
void SetMaxDistance(float distance=1.0f)
virtual ~DataBlock_Predict_Float()
void SetDeltaShortFloat(void)
void SetMinDistance(float distance=0.1f)
Definition: DataBlock_Predict_Float.h:296
Definition: DataBlock_Predict_Float.h:30
void SetTimeDelta(const float timeDelta=0.0f)
void BoundaryCapped(void)
Definition: MessageHelper.h:35
virtual void ParseMessage(MessageHelper *message)
void BoundaryDoNotApplyToMaster(void)
void SetInterpolationFilter(float interpolation=0.1f)
void BoundaryEnable(void)
void SetMinError(float minerror=0.1f)
void SetQuadratic(void)
Definition: DataBlock_Predict_Float.h:113
DataBlock_Predict_Float()
void ReplicaContinuityBreak(const SysTimeType time, const float sample, const float delta, const bool continuityBreak, const bool ignoreTimeCheck=false, const bool clearPreviousUpdates=false)
Definition: RegistryManagerMap.h:25
static bool BoundaryApplyToValue(ReplicaObject *object, float &value)
Definition: ReplicaObject.h:43
void BoundaryDisable(void)
void SetSnapToDifference(const float difference=-1.0f)
virtual void GiveDeltaHint(void *pdata, int dataLen)
void BoundaryLowerUpper(const float lower, const float upper)
void BoundaryWrapAround(void)
Definition: MessageHelper.h:211
void SetValueShortFloat(void)
void RegisterInClassPointer(float *data)
Definition: DataBlock_Predict_Float.h:73
void SetLinear(void)
Definition: DataBlock_Predict_Float.h:121
Definition: DataBlock.h:47
void SetLagged(const float time=0.0f)
Definition: DataBlock_Predict_Float.h:268