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