Files
Hasebe/Assets/Code/OfficeGame/BattleMode/Actions/ActionDatas/MovementBattleActionData.cs
T

59 lines
1.8 KiB
C#

using System;
using UnityEngine;
using UnityEngine.AI;
namespace Code.OfficeGame.BattleMode.Actions
{
public class MovementBattleActionData : BattleActionData
{
public bool WasStarted = false;
public Vector3 Position;
public Quaternion Rotation;
public NavMeshPath Path;
public Vector3[] Corners;
public int CurrentCornerIndex;
public bool IsRotateOnly;
public int CurrentFrame;
public override BattleActionData GetSnapshot()
{
Vector3[] cornersCopy = null;
if (Corners != null)
{
cornersCopy = new Vector3[Corners.Length];
Array.Copy(Corners, cornersCopy, Corners.Length);
}
return new MovementBattleActionData
{
TotalFrames = TotalFrames,
Position = Position,
Rotation = Rotation,
Path = Path,
Corners = cornersCopy,
CurrentCornerIndex = CurrentCornerIndex
};
}
public override void RestoreSnapshot(BattleActionData snapshot)
{
TotalFrames = snapshot.TotalFrames;
if (snapshot is not MovementBattleActionData moveSnapshot) return;
Position = moveSnapshot.Position;
Rotation = moveSnapshot.Rotation;
Path = moveSnapshot.Path;
CurrentCornerIndex = moveSnapshot.CurrentCornerIndex;
if (moveSnapshot.Corners != null)
{
if (Corners == null || Corners.Length != moveSnapshot.Corners.Length)
Corners = new Vector3[moveSnapshot.Corners.Length];
Array.Copy(moveSnapshot.Corners, Corners, moveSnapshot.Corners.Length);
}
else Corners = null;
}
}
}