int SortACT(GOEActComponent a, GOEActComponent b) { if (a is GOEActTurnToTarget) { if (b is GOEActTurnToTarget) { return(0); } else { return(-1); } } else { if (b is GOEActTurnToTarget) { return(1); } else { return(0); } } }
internal override void Start() { base.Start(); for (int i = 0; i < ListComponent.Count; ++i) { GOEActComponent comp = ListComponent[i]; comp.Start(); } setFilters(); }
internal void EnableAct <T>(bool bEnable) where T : GOEActComponent { for (int i = 0; i < ListComponent.Count; ++i) { GOEActComponent comp = ListComponent[i]; if (comp as T != null) { comp.Enable = bEnable; } } }
internal override void Update() { base.Update(); if (this.Entity.ResStatus != ResStatus.OK) { mWaitForOneFrame = true; return; } // OnloadGameObject有些是异步消息// if (mWaitForOneFrame) { mWaitForOneFrame = false; return; } mLocalTime = GOERoot.RealTime.DeltaTime * ActSpeed + mLocalTime; for (int i = 0; i < ListComponent.Count; ++i) { GOEActComponent comp = ListComponent[i]; comp.LocalTime = mLocalTime; comp.CheckTrigger(); if (comp.Enable) { comp.Update(); } if (comp.LifeOver) { comp.OnDestroy(); comp.Enable = false; } } if (mLifeTime > 0 && mLocalTime > mLifeTime) { Enable = false; if (!GOERoot.IsEditor) { Stop(); this.LifeOver = true; } else { DestroyActComponent(true); } } }
public T[] GetComponent <T>() where T : GOEActComponent { List <T> listT = new List <T>(); for (int i = 0; i < ListComponent.Count; ++i) { GOEActComponent comp = ListComponent[i]; T temp = comp as T; if (temp != null) { listT.Add(temp); } } return(listT.ToArray()); }
public void play() { this.LifeOver = false; this.LocalTime = 0; Start(); Enable = true; if (ImmediatelyRun) { if (this.Entity.ResStatus != ResStatus.OK) { return; } for (int i = 0; i < ListComponent.Count; ++i) { GOEActComponent comp = ListComponent[i]; comp.LocalTime = mLocalTime; comp.CheckTrigger(); } } }
public void AddComponent(GOEActComponent comp) { comp.EntityAct = this; ListComponent.Add(comp); }