private MagicMoveRecord CalcNextMMR(MagicMoveRecord last, float dirX, float dirZ, SpeedChangeType speedType, long time, int index, MagicMoveRecord newRecord = null) { //MagicMoveRecord newRecord = null; SkillVector3 curDir = last.GetDir(); float curSpeed = last.GetSpeed(); if (newRecord == null) { newRecord = GetNewRecord(); } if (speedType != SpeedChangeType.None) { SkillVector3 beginPos = new SkillVector3(); last.GetNextPos_2D(time, ref beginPos); //newRecord = GetNewRecord(); newRecord.SetInitPos(beginPos.x, beginPos.z, time, curDir.x, curDir.z, CalcSpeed(speedType, curSpeed), time, MinX, MaxX, MinZ, MaxZ, speedType, index); //FixMMRs(newRecord); Log(index + " Speed Changed : " + curSpeed + "---->>>----" + newRecord.GetSpeed() + " BeginPos:" + beginPos.ToString() + " NowPos:" + NextPos.ToString() + " Time:" + newRecord.GetTime()); } else { SkillVector3 beginPos = new SkillVector3(); if (last.GetTime() == newRecord.GetTime()) { return(null); } long nextTime = last.GetNextMagicPosAndTime_2D(time, ref beginPos); //newRecord = GetNewRecord(); newRecord.SetInitPos(beginPos.x, beginPos.z, nextTime, dirX, dirZ, last.GetSpeed(), time, MinX, MaxX, MinZ, MaxZ, speedType, index); Log(index + " Dir Changed : " + "(" + curDir.x + "," + curDir.z + ")" + "---->>>----" + "(" + dirX + "," + dirZ + ")" + " BeginPos:" + beginPos.ToString() + " NowPos:" + NextPos.ToString() + " Time:" + newRecord.GetTime()); } return(newRecord); }
public bool CalcNextPos(long NowTime_Ms_Long) { BacktrackingPoints.Clear(); TrackingPoints.Clear(); //检查当前的命令序列,是否有需要执行的,有几个需要执行 FindNeedExeMove(NowTime_Ms_Long); //由于有可能有回退的点,所以这里需要计算一下 CalcPoints(); bool bBacktracking = BacktrackingPoints.Count > 0; CurMagicRecord.GetNextPos_2D(NowTime_Ms_Long, ref NextPos); NextPosTime = NowTime_Ms_Long; TrackingPoints.Add(NextPos); return(bBacktracking); }