You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
	
	
		
			65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C#
		
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			C#
		
	
| 
											2 years ago
										 | using Entitas; | ||
|  | using UnityEngine; | ||
|  | using Game; | ||
|  | public class TimelineSystem : IExecuteSystem, IInitializeSystem | ||
|  | { | ||
|  |     private IGroup<GameEntity> _entities; | ||
|  |     public void Initialize() | ||
|  |     { | ||
|  |         _entities = Util.GetGroup(GameMatcher.Timeline); | ||
|  |     } | ||
|  |     public void Execute() | ||
|  |     { | ||
|  |         foreach (var entity in _entities) | ||
|  |         { | ||
|  |             var timeline = entity.timeline; | ||
|  |             if (!timeline.IsRunning) | ||
|  |                 continue; | ||
|  |             if (timeline.IsPause) | ||
|  |                 continue; | ||
|  |             UpdateCheckEnd(entity); | ||
|  |             UpdateTimeline(timeline); | ||
|  |         } | ||
|  |     } | ||
|  |     public void UpdateCheckEnd(GameEntity entity) | ||
|  |     { | ||
|  |         var timeline = entity.timeline; | ||
|  |         timeline.TimePast += Time.deltaTime; | ||
|  |         if (timeline.TimePast >= timeline.TimeMax) | ||
|  |         { | ||
|  |             Util.EndSkillTimeline(entity); | ||
|  |             return; | ||
|  |         } | ||
|  |     } | ||
|  |     public void UpdateTimeline(TimelineComponent timeline) | ||
|  |     { | ||
|  |         // if (timeline.timePast == 0) | ||
|  |         // { | ||
|  |         //     return; | ||
|  |         // } | ||
|  |         foreach (var clip in timeline.Timeline.MClips) | ||
|  |         { | ||
|  |             var clipReal = clip.Clip; | ||
|  |             var isOpenTime = timeline.TimePast >= clipReal.StartTime && timeline.TimePast < clipReal.EndTime; | ||
|  |             if (clipReal.IsAlive && !isOpenTime) | ||
|  |             { | ||
|  |                 clipReal.OnLeave(); | ||
|  |                 clipReal.IsAlive = false; | ||
|  |             } | ||
|  |         } | ||
|  |         foreach (var clip in timeline.Timeline.MClips) | ||
|  |         { | ||
|  |             var clipReal = clip.Clip; | ||
|  |             var isOpenTime = timeline.TimePast >= clipReal.StartTime && timeline.TimePast < clipReal.EndTime; | ||
|  |             if (!clipReal.IsAlive && isOpenTime) | ||
|  |             { | ||
|  |                 clipReal.OnEnter(); | ||
|  |                 clipReal.IsAlive = true; | ||
|  |             } | ||
|  |             if (clipReal.IsAlive && isOpenTime) | ||
|  |             { | ||
|  |                 clipReal.OnStay(); | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | } |