private object ResolveTargetAnimator(object arg)
        {
            var obj = _targetAnimator.GetTarget <UnityEngine.Object>(arg);

            ISPAnimationSource src    = null;
            ISPAnimator        spanim = null;
            Animation          anim   = null;

            if (ObjUtil.GetAsFromSource <ISPAnimationSource>(obj, out src))
            {
                return(src);
            }
            if (ObjUtil.GetAsFromSource <ISPAnimator>(obj, out spanim))
            {
                return(spanim);
            }
            if (ObjUtil.GetAsFromSource <Animation>(obj, out anim))
            {
                return(anim);
            }

            if (_targetAnimator.ImplicityReducesEntireEntity)
            {
                var go = GameObjectUtil.FindRoot(GameObjectUtil.GetGameObjectFromSource(obj));
                if (go == null)
                {
                    return(null);
                }

                SPLegacyAnimController spcont;
                if (go.FindComponent <SPLegacyAnimController>(out spcont))
                {
                    return(spcont);
                }

                if (go.FindComponent <Animation>(out anim))
                {
                    return(anim);
                }
            }

            return(null);
        }
        private object ResolveTargetAnimator(object arg)
        {
            var obj = _targetAnimator.GetTarget <UnityEngine.Object>(arg);

            ISPAnimationSource src    = null;
            ISPAnimator        spanim = null;
            Animation          anim   = null;

            if (ObjUtil.GetAsFromSource <ISPAnimationSource>(obj, out src))
            {
                return(src);
            }
            if (ObjUtil.GetAsFromSource <ISPAnimator>(obj, out spanim))
            {
                return(spanim);
            }
            if (ObjUtil.GetAsFromSource <Animation>(obj, out anim))
            {
                return(anim);
            }

            if (_targetAnimator.SearchesScene || _targetAnimator.TargetsTriggerArg)
            {
                var go = GameObjectUtil.FindRoot(GameObjectUtil.GetGameObjectFromSource(obj));
                if (go == null)
                {
                    return(null);
                }

                SPAnimationController spcont;
                if (go.FindComponent <SPAnimationController>(out spcont))
                {
                    return(spcont);
                }

                if (go.FindComponent <Animation>(out anim))
                {
                    return(anim);
                }
            }

            /*
             * if(obj == null || obj is ISPAnimationSource || obj is ISPAnimator || obj is Animation)
             * {
             *  return obj;
             * }
             * else if (_targetAnimator.Find != TriggerableTargetObject.FindCommand.Direct || _targetAnimator.TargetsTriggerArg)
             * {
             *  var go = GameObjectUtil.FindRoot(GameObjectUtil.GetGameObjectFromSource(obj));
             *  if (go == null) return null;
             *
             *  SPAnimationController spcont;
             *  if (go.FindComponent<SPAnimationController>(out spcont))
             *      return spcont;
             *
             *  Animation anim;
             *  if (go.FindComponent<Animation>(out anim))
             *      return anim;
             * }
             */

            return(null);
        }
        private object ResolveTargetAnimator(object arg)
        {
            var obj = _targetAnimator.GetTarget <UnityEngine.Object>(arg);

            ISPAnimationSource src    = null;
            ISPAnimator        spanim = null;
            Animation          anim   = null;

            if (ObjUtil.GetAsFromSource <ISPAnimationSource>(obj, out src))
            {
                return(src);
            }
            if (ObjUtil.GetAsFromSource <ISPAnimator>(obj, out spanim))
            {
                return(spanim);
            }
            if (ObjUtil.GetAsFromSource <Animation>(obj, out anim))
            {
                return(anim);
            }

            if (obj is SPEntity || _targetAnimator.ImplicityReducesEntireEntity)
            {
                var go = obj is SPEntity ? (obj as SPEntity).gameObject : GameObjectUtil.FindRoot(GameObjectUtil.GetGameObjectFromSource(obj));
                if (go == null)
                {
                    return(null);
                }

                SPAnimationController spcont;
                if (go.FindComponent <SPAnimationController>(out spcont))
                {
                    return(spcont);
                }

                if (go.FindComponent <Animation>(out anim))
                {
                    return(anim);
                }
            }

            /*
             * var obj = _targetAnimator.GetTarget<UnityEngine.Object>(arg);
             * if (obj == null || obj is SPAnimationController || obj is Animation)
             * {
             *  return obj;
             * }
             * else if (_targetAnimator.ImplicityReducesEntireEntity)
             * {
             *  var go = GameObjectUtil.FindRoot(GameObjectUtil.GetGameObjectFromSource(obj));
             *  if (go == null) return null;
             *
             *  SPAnimationController spcont;
             *  if (go.FindComponent<SPAnimationController>(out spcont))
             *      return spcont;
             *
             *  Animation anim;
             *  if (go.FindComponent<Animation>(out anim))
             *      return anim;
             * }
             */

            return(null);
        }