Beispiel #1
0
        public override RotateParam SubmitRotate()
        {
            RotateParam param = new RotateParam();

            if (_reached)
            {
                return(param);
            }

            param = SingleManager <ControllerManager> .Get().CalculateRotate(UID, _target);

            if (Mathf.Abs(param.rotSpeed) < 0.0001f)
            {
                _reached = true;
            }
            return(param);
        }
Beispiel #2
0
        public RotateParam CalculateRotate(int uid, Vector3 target)
        {
            Snaker snake = SingleManager <SnakeManager> .Get().GetSnake(uid);

            RotateParam param = new RotateParam();

            if (snake != null)
            {
                float angle = Vector3.SignedAngle(snake.Direction, target - snake.GetPosition(), Vector3.up);
                if (angle > 0)
                {
                    param.rotSpeed = Mathf.Min(angle, snake.RotateSpeed);
                }
                else
                {
                    param.rotSpeed = Mathf.Max(angle, -snake.RotateSpeed);
                }
            }

            return(param);
        }
 public void Update()
 {
     InputCheck();
     _rotate = SubmitRotate();
 }
 public void Reset()
 {
     _rotate = new RotateParam();
 }
Beispiel #5
0
        public void Start()
        {
            var host = new Host();

            var lineHit = new LineHit();

            var propCache = new PropertyCache();

            var shapeSerializer = new ShapeSerializer(propCache);

            var sceneStore = new JsonSceneStore();

            var rotateParam = new RotateParam {
                Angle = 0
            };
            var rotateView = new IntInputView {
                DataContext = new RotateViewModel(rotateParam)
            };

            var thiknessParam = new ThiknessParam {
                Thikness = 5
            };
            var thiknessView = new IntInputView {
                DataContext = new ThiknessViewModel(thiknessParam)
            };

            var colorParam = new ColorParam {
                Color = Colors.Black
            };
            var colorView = new ColorView {
                DataContext = new ColorViewModel <IShapeObject>(colorParam)
            };

            var fillParam = new FillParam {
                Color = Colors.Transparent
            };
            var fillView = new ColorView {
                DataContext = new ColorViewModel <IFillObject>(fillParam)
            };


            var vm = new HostViewModel(
                host.Canvas,

                new List <ShapeToolParam> {
                new ShapeToolParam("Поворот", rotateView, rotateParam),
                new ShapeToolParam("Толщина", thiknessView, thiknessParam),
                new ShapeToolParam("Цвет", colorView, colorParam),
                new ShapeToolParam("Заливка", fillView, fillParam),
            },

                sceneStore,

                new ShapeTool(0, LoadImage("pack://application:,,,/Painter;component/Resources/Images/line.png"),
                              new PolyLineCreator(0, 50, Brushes.Black, 10, lineHit, shapeSerializer)),
                new ShapeTool(1, LoadImage("pack://application:,,,/Painter;component/Resources/Images/rectangle.png"),
                              new RectangleCreator(1, 50, 50, Brushes.Black, 10, Brushes.Transparent, lineHit, shapeSerializer))
                );

            host.DataContext = vm;


            App.Current.MainWindow = host;
            host.Show();
        }