Core/Movement: minor MotionMaster refactor
This commit is contained in:
@@ -181,6 +181,7 @@ namespace Game.Entities
|
|||||||
|
|
||||||
UpdateSplineMovement(diff);
|
UpdateSplineMovement(diff);
|
||||||
GetMotionMaster().UpdateMotion(diff);
|
GetMotionMaster().UpdateMotion(diff);
|
||||||
|
UpdateUnderwaterState(GetMap(), GetPositionX(), GetPositionY(), GetPositionZ());
|
||||||
}
|
}
|
||||||
void _UpdateSpells(uint diff)
|
void _UpdateSpells(uint diff)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -81,35 +81,14 @@ namespace Game.Movement
|
|||||||
Contract.Assert(!empty());
|
Contract.Assert(!empty());
|
||||||
|
|
||||||
_cleanFlag |= MMCleanFlag.Update;
|
_cleanFlag |= MMCleanFlag.Update;
|
||||||
if (!top().Update(_owner, diff))
|
bool isMoveGenUpdateSuccess = top().Update(_owner, diff);
|
||||||
{
|
_cleanFlag &= ~MMCleanFlag.Update;
|
||||||
_cleanFlag &= ~MMCleanFlag.Update;
|
|
||||||
|
if (!isMoveGenUpdateSuccess)
|
||||||
MovementExpired();
|
MovementExpired();
|
||||||
}
|
|
||||||
else
|
|
||||||
_cleanFlag &= ~MMCleanFlag.Update;
|
|
||||||
|
|
||||||
if (_expireList != null)
|
if (_expireList != null)
|
||||||
{
|
ClearExpireList();
|
||||||
for (int i = 0; i < _expireList.Count; ++i)
|
|
||||||
{
|
|
||||||
IMovementGenerator mg = _expireList[i];
|
|
||||||
DirectDelete(mg);
|
|
||||||
}
|
|
||||||
|
|
||||||
_expireList = null;
|
|
||||||
|
|
||||||
if (empty())
|
|
||||||
Initialize();
|
|
||||||
else if (NeedInitTop())
|
|
||||||
InitTop();
|
|
||||||
else if (Convert.ToBoolean(_cleanFlag & MMCleanFlag.Reset))
|
|
||||||
top().Reset(_owner);
|
|
||||||
|
|
||||||
_cleanFlag &= ~MMCleanFlag.Reset;
|
|
||||||
}
|
|
||||||
|
|
||||||
_owner.UpdateUnderwaterState(_owner.GetMap(), _owner.GetPositionX(), _owner.GetPositionY(), _owner.GetPositionZ());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Clear(bool reset = true)
|
public void Clear(bool reset = true)
|
||||||
@@ -126,6 +105,26 @@ namespace Game.Movement
|
|||||||
DirectClean(reset);
|
DirectClean(reset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ClearExpireList()
|
||||||
|
{
|
||||||
|
for (int i = 0; i < _expireList.Count; ++i)
|
||||||
|
{
|
||||||
|
IMovementGenerator mg = _expireList[i];
|
||||||
|
DirectDelete(mg);
|
||||||
|
}
|
||||||
|
|
||||||
|
_expireList = null;
|
||||||
|
|
||||||
|
if (empty())
|
||||||
|
Initialize();
|
||||||
|
else if (NeedInitTop())
|
||||||
|
InitTop();
|
||||||
|
else if (Convert.ToBoolean(_cleanFlag & MMCleanFlag.Reset))
|
||||||
|
top().Reset(_owner);
|
||||||
|
|
||||||
|
_cleanFlag &= ~MMCleanFlag.Reset;
|
||||||
|
}
|
||||||
|
|
||||||
public void MovementExpired(bool reset = true)
|
public void MovementExpired(bool reset = true)
|
||||||
{
|
{
|
||||||
if (Convert.ToBoolean(_cleanFlag & MMCleanFlag.Update))
|
if (Convert.ToBoolean(_cleanFlag & MMCleanFlag.Update))
|
||||||
|
|||||||
Reference in New Issue
Block a user