// Update
        //----------------------------------------------------------
        public void Update(float tDelta)
        {
            if (!_isAnyForceUnit)
            {
                return;
            }
            int         nForce       = _forceUnits.Count;
            apForceUnit curForce     = null;
            bool        isAnyRemoved = false;

            for (int i = 0; i < nForce; i++)
            {
                curForce = _forceUnits[i];
                if (curForce.Update(tDelta))
                {
                    isAnyRemoved = true;                    //뭔가 없애야 할게 있다.
                }
            }
            if (isAnyRemoved)
            {
                //업데이트가 종료되어 Live가 아닌 것들을 삭제하자
                _forceUnits.RemoveAll(delegate(apForceUnit a)
                {
                    return(!a.IsLive);
                });
            }

            //PulledTouch는 업데이트하지 않아요
        }
        public apForceUnit AddForce_Direction(Vector2 directionW, Vector2 waveSize, Vector2 waveTime)
        {
            apForceUnit newForce = apForceUnit.Make().SetShape(directionW, waveSize, waveTime);

            _forceUnits.Add(newForce);
            _isAnyForceUnit = true;
            return(newForce);
        }
        // Functions
        //----------------------------------------------------------
        // Make Force
        //----------------------------------------------------------
        public apForceUnit AddForce_Point(Vector2 pointPosW, float radius)
        {
            apForceUnit newForce = apForceUnit.Make().SetShape(pointPosW, radius);

            _forceUnits.Add(newForce);
            _isAnyForceUnit = true;
            return(newForce);
        }
        public Vector2 GetForce(Vector2 targetPosW)
        {
            if (!_isAnyForceUnit)
            {
                return(Vector2.zero);
            }

            _tmpF_Sum = Vector2.zero;
            int         nForce          = _forceUnits.Count;
            apForceUnit curForce        = null;
            Vector2     vecPower2Target = Vector2.zero;

            for (int i = 0; i < nForce; i++)
            {
                curForce = _forceUnits[i];
                if (!curForce.IsLive)
                {
                    continue;
                }

                if (curForce.ShapeType == apForceUnit.SHAPE_TYPE.Point)
                {
                    //Point 타입이면
                    //방향을 직접 계산해서 힘을 가해야한다.
                    //거리에 따라 멀어지면 힘이 선형으로 줄어든다..
                    if (curForce.PointRadius < 0.001f)
                    {
                        continue;
                    }
                    vecPower2Target = (targetPosW - curForce.PointPos);
                    float distItp = Mathf.Clamp01(1.0f - (vecPower2Target.magnitude / curForce.PointRadius));
                    float power   = curForce.Power * distItp;
                    _tmpF_Sum += vecPower2Target.normalized * power;
                }
                else
                {
                    //Direction 타입이면
                    //그냥 그 자체로 사용하면 된다.
                    _tmpF_Sum += curForce.Direction * curForce.Power;
                }
            }

            return(_tmpF_Sum);
        }