Пример #1
0
        public PortalEntity(Guid id, Regulus.Types.Rect vision,string target_map, Types.Vector2 target_position)
            : base(id)
        {
            _TargetPosition = new Types.Vector2();
            _TargetPosition.X = target_position.X;
            _TargetPosition.Y = target_position.Y;
            _TargetMap = target_map;
            _Vision = vision;

            _Position = new Types.Vector2();
            _Position.X = (float)(_Vision.X + _Vision.Width /2);
            _Position.X = (float)(_Vision.Y + _Vision.Height / 2);
        }
Пример #2
0
 public PortalEntity()
 {
     Vision = new Types.Rect();
     TargetPosition = new Types.Vector2();
 }
Пример #3
0
 public EntityInfomation()
 {
     Position = new Types.Vector2();
 }
Пример #4
0
        public void Move(Types.Vector2 end, long time)
        {
            _Start = Regulus.Utility.ValueHelper.DeepCopy(_DBActorInfomation.Property.Position);
            _End = end;
            _BeginTime = time;

            float x = System.Math.Abs(_End.X - _Start.X);
            float y = System.Math.Abs(_End.Y - _Start.Y);
            _Distance = Math.Sqrt(x * x + y * y);

            _Vector.X = x ;
            _Vector.Y = y ;
            _TotalTime = _Distance / _DBActorInfomation.Property.Speed;
        }
Пример #5
0
        void _UpdateMover(long time, System.Collections.Generic.IEnumerable<Utility.OBB> obbs)
        {
            if (_MoveSpeed > 0)
            {
                var dt = (float)new System.TimeSpan(time - _CurrentTime).TotalSeconds;
                if (dt > 0)
                {
                    Regulus.Types.Vector2 moveVector = new Types.Vector2();
                    moveVector.X = _UnitVector.X * dt * _MoveSpeed;
                    moveVector.Y = _UnitVector.Y * dt * _MoveSpeed;

                    _CurrentTime = time;

                    Utility.OBB testobb = new Utility.OBB(_Obb.getX() + moveVector.X, _Obb.getY() + moveVector.Y, _Obb.getWidth(), _Obb.getHeight());
                    testobb.setRotation(_Obb.getRotation());
                    foreach (var obb in obbs)
                    {
                        if (testobb.isCollision(obb) == false)
                        {
                            continue;
                        }

                        Utility.OBB safeobb = new Utility.OBB(_Obb.getX() , _Obb.getY() , _Obb.getWidth(), _Obb.getHeight());
                        safeobb.setRotation(_Obb.getRotation());
                        do
                        {
                            moveVector.X += 0 - _UnitVector.X * dt * _MoveSpeed;
                            moveVector.Y += 0 - _UnitVector.Y * dt * _MoveSpeed;
                            safeobb.setXY(_Obb.getX() + moveVector.X, _Obb.getY() + moveVector.Y );
                        }
                        while (safeobb.isCollision(obb));

                        if (PositionEvent != null)
                            PositionEvent(time, moveVector);

                        _Act(ActionStatue.GangnamStyle, 0, 0);
                        return;
                    }

                    if (PositionEvent != null)
                        PositionEvent(time, moveVector);
                }

            }
            else
            {
                _Update = _Empty;
            }
        }
Пример #6
0
 public EntityPropertyInfomation()
 {
     Position = new Types.Vector2();
     Map = "";
 }