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#
		
	
| 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();
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| } |