コード例 #1
0
 public void AddMotionControler(SpecialMotionControler _controler)
 {
     if (this.motionControlers.get_Count() <= 3)
     {
         this.motionControlers.Add(_controler);
     }
 }
コード例 #2
0
ファイル: GravityMovement.cs プロジェクト: isoundy000/wzry-1
        public void Move(int _deltaTime)
        {
            int motionDeltaDistance = 0;

            if (this.Movement.isFlying)
            {
                VInt3 location;
                if (this.motionControlers.Count != 0)
                {
                    for (int i = 0; i < this.motionControlers.Count; i++)
                    {
                        SpecialMotionControler controler = this.motionControlers[i];
                        motionDeltaDistance += controler.GetMotionDeltaDistance(_deltaTime);
                    }
                    location    = this.Movement.actor.location;
                    location.y += motionDeltaDistance;
                    if (this.Movement.actor.groundY.i > location.y)
                    {
                        location.y = this.Movement.actor.groundY.i;
                        this.Movement.actor.location = location;
                    }
                    else
                    {
                        this.Movement.actor.location = location;
                    }
                }
                else
                {
                    location = this.Movement.actor.location;
                    if (this.Movement.actor.groundY.i == this.Movement.actor.location.y)
                    {
                        this.Movement.isFlying = false;
                        this.gravityControler.ResetTime();
                    }
                    else if (this.Movement.actor.groundY.i > this.Movement.actor.location.y)
                    {
                        location.y = this.Movement.actor.groundY.i;
                        this.Movement.actor.location = location;
                        this.Movement.isFlying       = false;
                        this.gravityControler.ResetTime();
                    }
                    else
                    {
                        motionDeltaDistance = this.gravityControler.GetMotionDeltaDistance(_deltaTime);
                        location.y         += motionDeltaDistance;
                        if (this.Movement.actor.groundY.i > location.y)
                        {
                            location.y = this.Movement.actor.groundY.i;
                            this.Movement.actor.location = location;
                            this.Movement.isFlying       = false;
                            this.gravityControler.ResetTime();
                        }
                        else
                        {
                            this.Movement.actor.location = location;
                        }
                    }
                }
            }
        }
コード例 #3
0
ファイル: GravityMovement.cs プロジェクト: isoundy000/wzry-1
        public void GravityMoveLerp(int _deltaTime, bool bReset)
        {
            int     motionLerpDistance = 0;
            Vector3 zero = Vector3.zero;
            SpecialMotionControler controler = null;

            if (this.Movement != null)
            {
                VInt num2;
                if (this.motionControlers.Count != 0)
                {
                    this.Movement.isLerpFlying = true;
                    zero = this.Movement.actor.gameObject.transform.position;
                    PathfindingUtility.GetGroundY((VInt3)zero, out num2);
                    for (int i = 0; i < this.motionControlers.Count; i++)
                    {
                        controler           = this.motionControlers[i];
                        motionLerpDistance += controler.GetMotionLerpDistance(_deltaTime);
                    }
                    zero.y += ((float)motionLerpDistance) / 1000f;
                    if (((float)num2) > zero.y)
                    {
                        zero.y = (float)num2;
                        this.Movement.actor.gameObject.transform.position = zero;
                    }
                    else
                    {
                        this.Movement.actor.gameObject.transform.position = zero;
                    }
                }
                else if (this.Movement.isLerpFlying)
                {
                    zero = this.Movement.actor.gameObject.transform.position;
                    PathfindingUtility.GetGroundY((VInt3)zero, out num2);
                    if (((float)num2) >= zero.y)
                    {
                        zero.y = (float)num2;
                        this.Movement.actor.gameObject.transform.position = zero;
                        this.Movement.isLerpFlying = false;
                        this.gravityControler.ResetLerpTime();
                    }
                    else
                    {
                        motionLerpDistance = this.gravityControler.GetMotionLerpDistance(_deltaTime);
                        zero.y            += ((float)motionLerpDistance) / 1000f;
                        if (((float)num2) > zero.y)
                        {
                            zero.y = (float)num2;
                            this.Movement.actor.gameObject.transform.position = zero;
                            this.Movement.isLerpFlying = false;
                            this.gravityControler.ResetLerpTime();
                        }
                        else
                        {
                            this.Movement.actor.gameObject.transform.position = zero;
                        }
                    }
                }
            }
        }
コード例 #4
0
        public void GravityMoveLerp(int _deltaTime, bool bReset)
        {
            int     num      = 0;
            Vector3 position = Vector3.zero;

            if (this.Movement == null || this.Movement.actor.ActorControl.GetNoAbilityFlag(ObjAbilityType.ObjAbility_Freeze))
            {
                return;
            }
            if (this.motionControlers.get_Count() != 0)
            {
                this.Movement.isLerpFlying = true;
                position = this.Movement.actor.myTransform.position;
                VInt vInt;
                PathfindingUtility.GetGroundY(this.Movement.actor.location, out vInt);
                for (int i = 0; i < this.motionControlers.get_Count(); i++)
                {
                    SpecialMotionControler specialMotionControler = this.motionControlers.get_Item(i);
                    num += specialMotionControler.GetMotionLerpDistance(_deltaTime);
                }
                position.y += (float)num / 1000f;
                if ((float)vInt > position.y)
                {
                    position.y = (float)vInt;
                    this.Movement.actor.myTransform.position = position;
                }
                else
                {
                    this.Movement.actor.myTransform.position = position;
                }
            }
            else if (this.Movement.isLerpFlying)
            {
                position = this.Movement.actor.myTransform.position;
                VInt vInt;
                PathfindingUtility.GetGroundY(this.Movement.actor.location, out vInt);
                if ((float)vInt >= position.y)
                {
                    position.y = (float)vInt;
                    this.Movement.actor.myTransform.position = position;
                    this.Movement.isLerpFlying = false;
                    this.gravityControler.ResetLerpTime();
                }
                else
                {
                    num         = this.gravityControler.GetMotionLerpDistance(_deltaTime);
                    position.y += (float)num / 1000f;
                    if ((float)vInt > position.y)
                    {
                        position.y = (float)vInt;
                        this.Movement.actor.myTransform.position = position;
                        this.Movement.isLerpFlying = false;
                        this.gravityControler.ResetLerpTime();
                    }
                    else
                    {
                        this.Movement.actor.myTransform.position = position;
                    }
                }
            }
        }
コード例 #5
0
 public void RemoveMotionControler(SpecialMotionControler _controler)
 {
     this.motionControlers.Remove(_controler);
 }
コード例 #6
0
        public void Move(int _deltaTime)
        {
            int num = 0;

            if (!this.Movement.isFlying || this.Movement.actor.ActorControl.GetNoAbilityFlag(ObjAbilityType.ObjAbility_Freeze))
            {
                return;
            }
            if (this.motionControlers.get_Count() != 0)
            {
                for (int i = 0; i < this.motionControlers.get_Count(); i++)
                {
                    SpecialMotionControler specialMotionControler = this.motionControlers.get_Item(i);
                    num += specialMotionControler.GetMotionDeltaDistance(_deltaTime);
                }
                VInt3 location = this.Movement.actor.location;
                location.y += num;
                if (this.Movement.actor.groundY.i > location.y)
                {
                    location.y = this.Movement.actor.groundY.i;
                    this.Movement.actor.location = location;
                }
                else
                {
                    this.Movement.actor.location = location;
                }
            }
            else
            {
                VInt3 location = this.Movement.actor.location;
                if (this.Movement.actor.groundY.i == this.Movement.actor.location.y)
                {
                    this.Movement.isFlying = false;
                    this.gravityControler.ResetTime();
                    return;
                }
                if (this.Movement.actor.groundY.i > this.Movement.actor.location.y)
                {
                    location.y = this.Movement.actor.groundY.i;
                    this.Movement.actor.location = location;
                    this.Movement.isFlying       = false;
                    this.gravityControler.ResetTime();
                }
                else
                {
                    num         = this.gravityControler.GetMotionDeltaDistance(_deltaTime);
                    location.y += num;
                    if (this.Movement.actor.groundY.i > location.y)
                    {
                        location.y = this.Movement.actor.groundY.i;
                        this.Movement.actor.location = location;
                        this.Movement.isFlying       = false;
                        this.gravityControler.ResetTime();
                    }
                    else
                    {
                        this.Movement.actor.location = location;
                    }
                }
            }
        }