From bb145d27787e6d54cb4bf0995cf11a41d1c9e67d Mon Sep 17 00:00:00 2001
From: yyl <yyl>
Date: 星期五, 05 九月 2025 15:25:28 +0800
Subject: [PATCH] 125 【战斗】战斗系统 强制结束战斗(haverest)
---
Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs | 5
Main/System/Battle/SkillEffect/NormalSkillEffect.cs | 8 +
Main/System/Battle/BattleManager.cs | 14 ++
Main/System/Battle/BattleUtility.cs | 6 +
Main/System/Battle/Skill/RebornSkill.cs | 24 ----
Main/System/Battle/SkillEffect/SkillEffect.cs | 21 +++
Main/System/Battle/SkillEffect/BulletSkillEffect.cs | 15 ++
Main/System/Battle/BattleField/BattleField.cs | 7
Main/System/Battle/RecordPlayer/RecordAction.cs | 15 +
Main/System/Battle/RecordPlayer/RecordPlayer.cs | 26 +++-
Main/System/Battle/BattleField/RecordActions/BuffMountAction.cs | 16 +
Main/System/Battle/BattleField/RecordActions/BattleEndAction.cs | 6 +
Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs | 17 ++
Main/System/Battle/Skill/SkillBase.cs | 87 +++++++++-----
Main/System/Battle/Skill/DirectlyHealSkill.cs | 43 ++----
Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs | 18 ++-
Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs | 1
Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs | 17 ++
18 files changed, 228 insertions(+), 118 deletions(-)
diff --git a/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs b/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs
index 8f49ec0..e2c67d4 100644
--- a/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs
+++ b/Main/Core/NetworkPackage/DTCFile/ServerPack/H04_Scene/DTC0418_tagObjInfoRefresh.cs
@@ -30,6 +30,7 @@
{
battleField.DistributeNextPackage();
}
+
}
diff --git a/Main/System/Battle/BattleField/BattleField.cs b/Main/System/Battle/BattleField/BattleField.cs
index 0d0be34..912190c 100644
--- a/Main/System/Battle/BattleField/BattleField.cs
+++ b/Main/System/Battle/BattleField/BattleField.cs
@@ -508,12 +508,11 @@
public virtual void HaveRest()
{
// 浼戞伅鐘舵��
- battleObjMgr.HaveRest(BattleCamp.Red);
- battleObjMgr.DestroyTeam(BattleCamp.Blue);
-
battleEffectMgr.HaveRest();
battleTweenMgr.HaveRest();
-
+ recordPlayer.HaveRest();
+ battleObjMgr.HaveRest(BattleCamp.Red);
+ battleObjMgr.DestroyTeam(BattleCamp.Blue);
SetBattleMode(BattleMode.Stop);
}
diff --git a/Main/System/Battle/BattleField/RecordActions/BattleEndAction.cs b/Main/System/Battle/BattleField/RecordActions/BattleEndAction.cs
index 6daa870..453baad 100644
--- a/Main/System/Battle/BattleField/RecordActions/BattleEndAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/BattleEndAction.cs
@@ -27,6 +27,12 @@
isFinish = true;
}
+ public override void ForceFinish()
+ {
+ onComplete?.Invoke();
+ base.ForceFinish();
+ }
+
public override bool IsFinished()
{
return isFinish;
diff --git a/Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs b/Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs
index c60825a..879d478 100644
--- a/Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/BattleStartAction.cs
@@ -8,7 +8,7 @@
public BattleStartAction(BattleField _battleField)
: base(RecordActionType.BattleStart, _battleField, null)
{
-
+
}
public override bool IsFinished()
@@ -17,9 +17,9 @@
}
- public override void Run()
- {
- base.Run();
+ public override void Run()
+ {
+ base.Run();
if (isRun)
return;
@@ -37,5 +37,14 @@
});
isRun = true;
+ }
+
+ public override void ForceFinish()
+ {
+ //姝e父寮�濮嬩箣鍚庡埌鐣岄潰鍑虹幇涔嬪墠閮界偣涓嶄簡 鎵�浠ヨ繖杈逛笉鐢ㄥ己鍒跺畬鎴� 鎺ュ彛鐣欑潃
+
+ base.ForceFinish();
+ // 瀹屾垚灏卞紑濮嬫樉绀篣I
+
}
}
\ No newline at end of file
diff --git a/Main/System/Battle/BattleField/RecordActions/BuffMountAction.cs b/Main/System/Battle/BattleField/RecordActions/BuffMountAction.cs
index 388779d..7f3ce1b 100644
--- a/Main/System/Battle/BattleField/RecordActions/BuffMountAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/BuffMountAction.cs
@@ -16,10 +16,10 @@
onComplete = _onComplete;
}
- public override bool IsFinished()
- {
- return isFinish;
- }
+ public override bool IsFinished()
+ {
+ return isFinish;
+ }
public override void Run()
@@ -43,6 +43,12 @@
isFinish = true;
return;
}
-
+
+ }
+
+ public override void ForceFinish()
+ {
+ // 1甯у氨缁撴潫浜� 涓嶇
+ base.ForceFinish();
}
}
\ No newline at end of file
diff --git a/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs b/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
index af95296..482218f 100644
--- a/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/DeathRecordAction.cs
@@ -12,10 +12,10 @@
deadPackList = _deadPackList;
}
- public override bool IsFinished()
- {
- return isFinish;
- }
+ public override bool IsFinished()
+ {
+ return isFinish;
+ }
public override void Run()
@@ -39,13 +39,13 @@
if (isLastOne)
{
- isFinish = true;
+ isFinish = true;
}
});
}
return;
}
-
+
}
private void OnDeathAnimationEnd(BattleObject deadObj)
@@ -56,4 +56,10 @@
deadObj.PerformDrop();
}
}
+
+ public override void ForceFinish()
+ {
+ // 璁剧疆缁撴潫flag 璁板緱娓呯┖motionBase閲岀殑浜嬩欢
+ base.ForceFinish();
+ }
}
\ No newline at end of file
diff --git a/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs b/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs
index e56eb36..1608714 100644
--- a/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs
+++ b/Main/System/Battle/BattleField/RecordActions/SkillRecordAction.cs
@@ -22,10 +22,19 @@
return skillBase.IsFinished();
}
-
- public override void Run()
+ public override void ForceFinish()
{
- base.Run();
+ // 璁剧疆缁撴潫flag 璁板緱娓呯┖motionBase閲岀殑浜嬩欢
+ if (null != skillBase)
+ {
+ skillBase.ForceFinished();
+ }
+ base.ForceFinish();
+ }
+
+ public override void Run()
+ {
+ base.Run();
if (null == skillBase)
{
@@ -43,5 +52,5 @@
skillBase.Cast();
isCast = true;
- }
+ }
}
\ No newline at end of file
diff --git a/Main/System/Battle/BattleManager.cs b/Main/System/Battle/BattleManager.cs
index 177c95e..c695c77 100644
--- a/Main/System/Battle/BattleManager.cs
+++ b/Main/System/Battle/BattleManager.cs
@@ -159,6 +159,8 @@
}
}
+
+
// 鍚堝苟鎵�鏈夌浉鍏冲寘
CustomB421ActionPack actionPack = CustomB421ActionPack.CreateB421ActionPack(GetGUID(b421Pack.packUID), b421PackList);
@@ -191,7 +193,17 @@
// b421璺焍426鐨勫寘宸茬粡澶勭悊瀹屼簡
- packQueue = new Queue<GameNetPackBasic>(newPackList);
+ packQueue.Clear();
+ for (int i = 0; i < newPackList.Count; i++)
+ {
+ var pack = newPackList[i];
+
+ packQueue.Enqueue(pack);
+ }
+
+
+
+ // packQueue = new Queue<GameNetPackBasic>(newPackList);
DistributeNextPackage();
}
diff --git a/Main/System/Battle/BattleUtility.cs b/Main/System/Battle/BattleUtility.cs
index 6f54c56..c37887b 100644
--- a/Main/System/Battle/BattleUtility.cs
+++ b/Main/System/Battle/BattleUtility.cs
@@ -251,6 +251,12 @@
else if (_num == 109) return config.nums[12]; // 'm'
else if (_num == 98) return config.nums[13]; // 'b'
else if (_num == 116) return config.nums[14]; // 't'
+ int targetNum = _num - 48;
+ if (targetNum >= config.nums.Length || targetNum < 0)
+ {
+ Debug.LogError("damage config " + config.TypeID + " _num is " + _num + " out of range");
+ return _num;
+ }
return config.nums[_num - 48];
}
diff --git a/Main/System/Battle/RecordPlayer/RecordAction.cs b/Main/System/Battle/RecordPlayer/RecordAction.cs
index f5fc24a..7a992ab 100644
--- a/Main/System/Battle/RecordPlayer/RecordAction.cs
+++ b/Main/System/Battle/RecordPlayer/RecordAction.cs
@@ -14,12 +14,12 @@
protected bool isRunOnce = false;
- public RecordAction(RecordActionType _actionType, BattleField _battleField, BattleObject _battleObj)
- {
- actionType = _actionType;
+ public RecordAction(RecordActionType _actionType, BattleField _battleField, BattleObject _battleObj)
+ {
+ actionType = _actionType;
battleField = _battleField;
battleObject = _battleObj;
- }
+ }
public RecordActionType actionType;
@@ -30,7 +30,12 @@
public virtual void Run()
{
-
+
+ }
+
+ public virtual void ForceFinish()
+ {
+ isFinish = true;
}
}
\ No newline at end of file
diff --git a/Main/System/Battle/RecordPlayer/RecordPlayer.cs b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
index 14376d4..18fa70a 100644
--- a/Main/System/Battle/RecordPlayer/RecordPlayer.cs
+++ b/Main/System/Battle/RecordPlayer/RecordPlayer.cs
@@ -72,14 +72,13 @@
for (int i = immediatelyActionList.Count - 1; i >= 0; i--)
{
var action = immediatelyActionList[i];
- if (action.IsFinished())
- {
- removeIndexList.Add(i);
- }
- else
+ if (!action.IsFinished())
{
action.Run();
+ continue;
}
+
+ removeIndexList.Add(i);
}
for (int i = removeIndexList.Count - 1; i >= 0; i--)
@@ -154,8 +153,23 @@
public void HaveRest()
{
+ for (int i = 0; i < immediatelyActionList.Count; i++)
+ {
+ immediatelyActionList[i].ForceFinish();
+ }
+
+ immediatelyActionList.Clear();
+
+ if (currentRecordAction != null)
+ {
+ currentRecordAction.ForceFinish();
+ }
currentRecordAction = null;
- recordActionQueue.Clear();
+
+ while (recordActionQueue.Count > 0)
+ {
+ recordActionQueue.Dequeue().ForceFinish();
+ }
}
public void Release()
diff --git a/Main/System/Battle/Skill/DirectlyHealSkill.cs b/Main/System/Battle/Skill/DirectlyHealSkill.cs
index cefe803..0df1017 100644
--- a/Main/System/Battle/Skill/DirectlyHealSkill.cs
+++ b/Main/System/Battle/Skill/DirectlyHealSkill.cs
@@ -15,33 +15,24 @@
}
- public override void Run()
- {
- if (null != skillEffect)
- {
- skillEffect.Run();
- }
- base.Run();
- }
+ // // 鍓嶆憞缁撴潫
+ // public override void OnStartSkillFrameEnd()
+ // {
+ // skillEffect = SkillEffectFactory.CreateSkillEffect(
+ // caster,
+ // skillConfig,
+ // tagUseSkillAttack
+ // );
+ // if (skillEffect != null)
+ // {
+ // skillEffect.Play(OnHitTargets);
+ // }
+ // }
- // 鍓嶆憞缁撴潫
- public override void OnStartSkillFrameEnd()
- {
- skillEffect = SkillEffectFactory.CreateSkillEffect(
- caster,
- skillConfig,
- tagUseSkillAttack
- );
- if (skillEffect != null)
- {
- skillEffect.Play(OnHitTargets);
- }
- }
-
- protected override void OnHitTargets(int _healIndex, List<HB427_tagSCUseSkill.tagSCUseSkillHurt> healList)
- {
- base.OnHitTargets(_healIndex, healList);
- }
+ // protected override void OnHitTargets(int _healIndex, List<HB427_tagSCUseSkill.tagSCUseSkillHurt> healList)
+ // {
+ // base.OnHitTargets(_healIndex, healList);
+ // }
}
\ No newline at end of file
diff --git a/Main/System/Battle/Skill/RebornSkill.cs b/Main/System/Battle/Skill/RebornSkill.cs
index 5443761..fefbc14 100644
--- a/Main/System/Battle/Skill/RebornSkill.cs
+++ b/Main/System/Battle/Skill/RebornSkill.cs
@@ -6,7 +6,6 @@
public class RebornSkill : SkillBase
{
- protected SkillEffect skillEffect;
public RebornSkill(BattleObject _caster, SkillConfig _skillCfg,
HB427_tagSCUseSkill _vNetData, List<GameNetPackBasic> _packList, BattleField _battleField)
@@ -15,29 +14,6 @@
}
- public override void Run()
- {
- if (null != skillEffect)
- {
- skillEffect.Run();
- }
-
- base.Run();
- }
-
- // 鍓嶆憞缁撴潫
- public override void OnStartSkillFrameEnd()
- {
- skillEffect = SkillEffectFactory.CreateSkillEffect(
- caster,
- skillConfig,
- tagUseSkillAttack
- );
- if (skillEffect != null)
- {
- skillEffect.Play(OnHitTargets);
- }
- }
diff --git a/Main/System/Battle/Skill/SkillBase.cs b/Main/System/Battle/Skill/SkillBase.cs
index 247d755..46a4383 100644
--- a/Main/System/Battle/Skill/SkillBase.cs
+++ b/Main/System/Battle/Skill/SkillBase.cs
@@ -106,7 +106,7 @@
switch (skillConfig.castMode)
{
case SkillCastMode.Self:
- CastImpl();
+ CastImpl(OnAttackFinish);
break;
case SkillCastMode.Enemy:
CastToEnemy();
@@ -175,12 +175,8 @@
() =>
{
// 鍥炲埌鍘熸潵鐨勪綅缃�
- MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, () =>
- {
- TurnBack(null, 1f);
- caster.motionBase.PlayAnimation(MotionName.idle, true);
- OnAllAttackMoveFinished();
- });
+ MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime,
+ OnAttackFinish);
}
, -1f);
});
@@ -200,17 +196,13 @@
return;
}
- var mainHurt = tagUseSkillAttack.HurtList[0];
+ int mainTargetPosNum = BattleUtility.GetMainTargetPositionNum(caster, tagUseSkillAttack.HurtList.ToList(), skillConfig);
- BattleObject mainTarget = battleField.battleObjMgr.GetBattleObject((int)mainHurt.ObjID);
- if (mainTarget == null)
- {
- Debug.LogError("鐩爣涓虹┖ mainTarget == null ObjID : " + mainHurt.ObjID);
- OnSkillFinished();
- return;
- }
+ BattleCamp battleCamp = skillConfig.TagFriendly != 0 ? caster.Camp : caster.GetEnemyCamp();
- MoveToTarget(mainTarget.heroRectTrans, new Vector2(skillConfig.CastDistance, 0), moveTime, () =>
+ RectTransform targetTrans = battleField.GetTeamNode(battleCamp, mainTargetPosNum);
+
+ MoveToTarget(targetTrans, new Vector2(skillConfig.CastDistance, 0), moveTime, () =>
{
// 鍒颁綅缃浆韬�(涓嶄竴瀹氶潪瑕佽浆韬� 浣嗘槸娴佺▼瑕佸啓)
TurnBack(() =>
@@ -222,12 +214,8 @@
() =>
{
// 鍥炲埌鍘熸潵鐨勪綅缃�
- MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, () =>
- {
- TurnBack(null, 1f);
- caster.motionBase.PlayAnimation(MotionName.idle, true);
- OnAllAttackMoveFinished();
- });
+ MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime,
+ OnAttackFinish);
}
, -1f);
});
@@ -256,17 +244,20 @@
() =>
{
// 鍥炲埌鍘熸潵鐨勪綅缃�
- MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum), Vector2.zero, moveTime, () =>
- {
- TurnBack(null, 1f);
- caster.motionBase.PlayAnimation(MotionName.idle, true);
- OnAllAttackMoveFinished();
- });
+ MoveToTarget(battleField.GetTeamNode(caster.Camp, caster.teamHero.positionNum),
+ Vector2.zero, moveTime, OnAttackFinish);
}
, -1f);
});
}, -1f);
});
+ }
+
+ protected void OnAttackFinish()
+ {
+ TurnBack(null, 1f);
+ OnAllAttackMoveFinished();
+ caster.motionBase.PlayAnimation(MotionName.idle, true);
}
@@ -294,7 +285,7 @@
skillConfig,
tagUseSkillAttack
);
- if (skillEffect != null)
+ // if (skillEffect != null)
{
skillEffect.Play(OnHitTargets);
}
@@ -315,7 +306,7 @@
/// <param name="times"></param>
public virtual void OnMiddleFrameStart(int times)
{
- if (skillEffect != null)
+ // if (skillEffect != null)
{
skillEffect.OnMiddleFrameStart(times);
}
@@ -323,7 +314,7 @@
public virtual void OnMiddleFrameEnd(int times, int hitIndex)
{
- if (skillEffect != null)
+ // if (skillEffect != null)
{
skillEffect.OnMiddleFrameEnd(times, hitIndex);
}
@@ -334,7 +325,10 @@
/// </summary>
public virtual void OnFinalFrameStart()
{
-
+ // if (skillEffect != null)
+ {
+ skillEffect.OnFinalFrameStart();
+ }
}
/// <summary>
@@ -342,7 +336,12 @@
/// </summary>
public virtual void OnFinalFrameEnd()
{
+ // if (skillEffect != null)
+ {
+ skillEffect.OnFinalFrameEnd();
+ }
+ HandleDead();
}
@@ -375,7 +374,7 @@
OnHitEachTarget(_hitIndex, target, hurt);
}
- HandleDead();
+
}
@@ -587,7 +586,29 @@
public virtual void ForceFinished()
{
+ skillEffect?.ForceFinished();
isFinished = true;
+
+ while (packList.Count > 0)
+ {
+ var pack = packList[0];
+ packList.RemoveAt(0);
+
+ if (pack is CustomHB426CombinePack)
+ {
+ var combinePack = pack as CustomHB426CombinePack;
+ if (combinePack.startTag.Tag.StartsWith("Skill_"))
+ {
+ BattleDebug.LogError("other skill casting " + combinePack.startTag.Tag);
+ otherSkillAction = combinePack.CreateSkillAction();
+
+ // 寮哄埗缁撴潫鍏朵粬鎶�鑳�
+ otherSkillAction.ForceFinish();
+ return;
+ }
+ }
+ PackageRegedit.Distribute(pack);
+ }
}
public void OnSkillFinished()
diff --git a/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
index 8e77a6c..7f1bcd3 100644
--- a/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
+++ b/Main/System/Battle/SkillEffect/BulletCurve/BulletCurve.cs
@@ -74,5 +74,10 @@
caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, bulletEffect);
}
+ public virtual void ForceFinish()
+ {
+ finished = true;
+ }
+
public bool IsFinished => finished;
}
\ No newline at end of file
diff --git a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
index c4112d5..cfa0549 100644
--- a/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/BulletSkillEffect.cs
@@ -127,6 +127,8 @@
var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target, tagUseSkillAttack, (index, hitList) =>
{
+ if (isFinish)
+ return;
// 鍑讳腑灏遍攢姣佸瓙寮�
caster.battleField.battleEffectMgr.RemoveEffect(skillConfig.BulletEffectId, effectPlayer);
// 鎾斁瀛愬脊鐖嗙偢鐗规晥
@@ -165,6 +167,10 @@
var bulletCurve = BulletCurveFactory.CreateBulletCurve(caster, skillConfig, effectPlayer, target.heroRectTrans, tagUseSkillAttack, (index, hitList) =>
{
+ if (isFinish)
+ return;
+
+
foreach (var hurt in hitList)
{
BattleObject targetObj = caster.battleField.battleObjMgr.GetBattleObject((int)hurt.ObjID);
@@ -218,6 +224,15 @@
}
}
+ public override void ForceFinished()
+ {
+ base.ForceFinished();
+ foreach (var bulletCurve in bulletCurves)
+ {
+ bulletCurve.ForceFinish();
+ }
+ }
+
public override bool IsFinished()
{
bool isCurveFinish = false;
diff --git a/Main/System/Battle/SkillEffect/NormalSkillEffect.cs b/Main/System/Battle/SkillEffect/NormalSkillEffect.cs
index be52bf9..a124a4a 100644
--- a/Main/System/Battle/SkillEffect/NormalSkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/NormalSkillEffect.cs
@@ -47,6 +47,14 @@
}
onHit?.Invoke(hitIndex, tagUseSkillAttack.HurtList.ToList());
+ }
+
+ /// <summary>
+ /// 鍚庢憞缁撴潫
+ /// </summary>
+ public override void OnFinalFrameEnd()
+ {
+ base.OnFinalFrameEnd();
isFinish = true;
}
}
\ No newline at end of file
diff --git a/Main/System/Battle/SkillEffect/SkillEffect.cs b/Main/System/Battle/SkillEffect/SkillEffect.cs
index cb0c311..5acf824 100644
--- a/Main/System/Battle/SkillEffect/SkillEffect.cs
+++ b/Main/System/Battle/SkillEffect/SkillEffect.cs
@@ -51,8 +51,29 @@
caster.battleField.battleEffectMgr.PlayEffect(caster.ObjID, skillConfig.MStartEffectId, caster.heroGo.transform, caster.Camp);
}
+ /// <summary>
+ /// 鍚庢憞寮�濮�
+ /// </summary>
+ public virtual void OnFinalFrameStart()
+ {
+
+ }
+
+ /// <summary>
+ /// 鍚庢憞缁撴潫
+ /// </summary>
+ public virtual void OnFinalFrameEnd()
+ {
+
+ }
+
public virtual bool IsFinished()
{
return isFinish;
}
+
+ public virtual void ForceFinished()
+ {
+ isFinish = true;
+ }
}
\ No newline at end of file
--
Gitblit v1.8.0