#if !COMBAT_SERVER
using UnityEngine;
using UnityEngine.Playables;
using UnityEngine.Timeline;
#endif
using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventLogic;
using Object = System.Object;
///
/// 播放特效
///
[System.Serializable]
public class TimeLinePlayFxSerializtion : TimeLineAssetSerialization
{
public string fxName;
public uint randomSeed;
public FXLocationType locationType;
public string targetSpecialDotName;
public string hitPointGroupName;
public bool isGround;
///
/// 是否跟随目标
///
public bool isFollowTarget;
public bool isFollowRootTarget;
///
/// 是否不旋转 (默认是跟随目标旋转)
///
public bool isNotRotate;
///
/// 是否跟随攻击速度进行播放te
///
public bool isAttSpeed;
public int CustomTargetPosIndex;
public bool isActivityCustomTargetPos;
///
/// 是否循环
///
public bool isLoop;
///
/// 循环独立
///
public bool loopAlone;
public float intervalTime;
public TimeLinePlayFxSerializtion()
{
}
#if !COMBAT_SERVER
public TimeLinePlayFxSerializtion(PlayableDirector playableDirector, GroupTrack groupTrack,
TimelineClip timelineClip) : base(groupTrack, timelineClip)
{
TimeLineParticleSystemAsset controlPlayableAsset = timelineClip.asset as TimeLineParticleSystemAsset;
if (controlPlayableAsset == null)
{
return;
}
GameObject go = null;
if (controlPlayableAsset.prefabGameObject != null)
{
go = controlPlayableAsset.prefabGameObject;
}
else if(playableDirector.playableGraph.GetResolver()!=null)
{
go= controlPlayableAsset.sourceGameObject.Resolve(playableDirector.playableGraph.GetResolver());
}
Object obj = controlPlayableAsset.sourceGameObject.defaultValue;
// Debug.Log(playableDirector.playableGraph.GetResolver());
if (go != null)
{
fxName =go.name;
randomSeed = controlPlayableAsset.particleRandomSeed;
locationType = controlPlayableAsset.LocationType;
targetSpecialDotName = controlPlayableAsset.targetSpecialDotName;
hitPointGroupName = controlPlayableAsset.hitPointGroupName;
isFollowTarget = controlPlayableAsset.isFollowTarget;
isFollowRootTarget = controlPlayableAsset.isFollowRootTarget;
isGround = controlPlayableAsset.isGround;
isNotRotate = controlPlayableAsset.isNotRotate;
isAttSpeed = controlPlayableAsset.isAttSpeed;
targetEntityType = controlPlayableAsset.targetType;
CustomTargetPosIndex = controlPlayableAsset.CustomTargetPosIndex;
isActivityCustomTargetPos = controlPlayableAsset.isActivityCustomTargetPos;
loopAlone = controlPlayableAsset.loopAlone;
isLoop=controlPlayableAsset.isLoop;
intervalTime=controlPlayableAsset.intervalTime;
}
}
#endif
public override TimeLineEventLogicBasic CreateLogic()
{
return new TimeLineEventParticleLogicBasic();
}
}