using UnityEngine; using System; using System.Collections.Generic; using System.IO; namespace Thousandto.Cinematic { //事件数据 [Serializable] public class CinematicEventData : ICinematic { //[NonSerialized] public bool FoldOut = true; //界面上控制折叠 public int EventType; public KeyFrameEvent EventTypeEx; public WrapMode WrapMode; public float[] PositionV3 = new float[3]; public float[] RotationV3 = new float[3]; public float[] ScaleV3 = new float[3]; //模型、声音、特效的路径,根据事件类型,有不同意义 public string Param = ""; //编辑器模式下配置的模型路径 public string EditorParam = ""; public bool IsLocalPlayer = false; //使用曲线 public bool UseCurve = true; [NonSerialized] public GameObject ParentGo; //当前事件所在的GameObject [NonSerialized] public CinematicObj CinematicObj; //当前事件所在的类对象 [NonSerialized] public float AnimDuration; //动作播放间隔,,在触发PlayAnimByFrame的时候需要设置 public Vector3 Position { get { return new Vector3(PositionV3[0], PositionV3[1], PositionV3[2]); } set { PositionV3[0] = value.x; PositionV3[1] = value.y; PositionV3[2] = value.z; } } public Vector3 Rotation { get { return new Vector3(RotationV3[0], RotationV3[1], RotationV3[2]); } set { RotationV3[0] = value.x; RotationV3[1] = value.y; RotationV3[2] = value.z; } } public Vector3 Scale { get { return new Vector3(ScaleV3[0], ScaleV3[1], ScaleV3[2]); } set { ScaleV3[0] = value.x; ScaleV3[1] = value.y; ScaleV3[2] = value.z; } } public override void WriteAll(BinaryWriter bw) { PrepareWriter(bw); WriteInt(EventType); WriteInt((int)EventTypeEx); WriteInt((int)WrapMode); WriteVector3(PositionV3); WriteVector3(RotationV3); WriteVector3(ScaleV3); WriteString(Param); WriteString(EditorParam); WriteBool(IsLocalPlayer); WriteBool(UseCurve); } public override void ReadAll(BinaryReader rd) { PrepareReader(rd); EventType = ReadInt(); EventTypeEx = (KeyFrameEvent) ReadInt(); WrapMode = (WrapMode)ReadInt(); PositionV3 = ReadVector3(); RotationV3 = ReadVector3(); ScaleV3 = ReadVector3(); Param = ReadString(); EditorParam = ReadString(); IsLocalPlayer = ReadBool(); UseCurve = ReadBool(); } public CinematicEventData() { } public CinematicEventData(KeyFrameEvent e) { EventTypeEx = e; } public CinematicEventData Clone() { CinematicEventData data = new CinematicEventData(); data.EventType = EventType; data.Position = Position; data.Rotation = Rotation; data.Scale = Scale; data.EditorParam = EditorParam; data.EventTypeEx = EventTypeEx; data.WrapMode = WrapMode; data.Param = Param; data.EditorParam = EditorParam; return data; } } }