Beispiel #1
0
        private void picWorld_SizeChanged(object sender, EventArgs e)
        {
            _worldScale = new WorldScale(1, picWorld.Width / 2, picWorld.Height / 2);

            //SetScreenSize(picWorld.Size);
            picWorld.Invalidate();
        }
Beispiel #2
0
        public override void Paint(Graphics g, WorldScale scale)
        {
            base.Paint(g, scale);
            double x  = (Owner == GameBoard.ColorLeftBlue ? 55 : 3000 - 55);
            double dx = (Owner == GameBoard.ColorLeftBlue ? 85 : -85);

            for (int i = 0; i < _loads.Count; i++)
            {
                for (int j = 0; j < _loads[i].Count; j++)
                {
                    new Circle(new RealPoint(x + dx * i, _position.Y - (j - 2) * 75), 36).Paint(g, Color.Black, 1, _loads[i][j], scale);
                }
            }

            x  = _position.X + (Owner == GameBoard.ColorLeftBlue ? -130 : 130);
            dx = (Owner == GameBoard.ColorLeftBlue ? 85 : -85);

            if (_loadOnTop != null)
            {
                for (int j = 0; j < _loadOnTop.Count; j++)
                {
                    new Circle(new RealPoint(x + dx * j, _position.Y - 280), 36).Paint(g, Color.Black, 1, _loadOnTop[j], scale);
                }
            }

            if (_loadOnBottom != null)
            {
                for (int j = 0; j < _loadOnBottom.Count; j++)
                {
                    new Circle(new RealPoint(x + dx * j, _position.Y + 280), 36).Paint(g, Color.Black, 1, _loadOnBottom[j], scale);
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// Dessine le polygone sur un Graphic
        /// </summary>
        /// <param name="g">Graphic sur lequel dessiner</param>
        /// <param name="outlineColor">Couleur du contour du polygone</param>
        /// <param name="outlineWidth">Epaisseur du contour</param>
        /// <param name="fillColor">Couleur de remplissage du polygone</param>
        /// <param name="scale">Echelle de conversion</param>
        public void Paint(Graphics g, Pen outline, Brush fill, WorldScale scale)
        {
            if (Sides.Count == 0)
            {
                return;
            }

            Point[] listePoints = new Point[Sides.Count + 1];

            listePoints[0] = scale.RealToScreenPosition(Sides[0].StartPoint);

            for (int i = 0; i < Sides.Count; i++)
            {
                Segment s = Sides[i];
                listePoints[i] = scale.RealToScreenPosition(s.EndPoint);
            }

            listePoints[listePoints.Length - 1] = listePoints[0];

            if (fill != null)
            {
                g.FillPolygon(fill, listePoints, System.Drawing.Drawing2D.FillMode.Winding);
            }

            if (outline != null)
            {
                g.DrawPolygon(outline, listePoints);
            }
        }
Beispiel #4
0
        /// <summary>
        /// Peint l'élément sur le Graphic donné à l'échelle donnée
        /// </summary>
        /// <param name="g">Graphic sur lequel peindre</param>
        /// <param name="scale">Echelle de peinture</param>
        public override void Paint(Graphics g, WorldScale scale)
        {
            Pen pBlack     = new Pen(Color.Black);
            Pen pWhite     = new Pen(Color.White);
            Pen pWhiteBold = new Pen(Color.White);

            pWhite.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
            pWhiteBold.Width = 3;

            Rectangle rect = new Rectangle(scale.RealToScreenPosition(Position.Translation(-HoverRadius, -HoverRadius)), scale.RealToScreenSize(new SizeF(HoverRadius * 2, HoverRadius * 2)));

            if (IsHover)
            {
                g.DrawEllipse(pWhiteBold, rect);
            }
            else
            {
                //g.DrawEllipse(pBlack, rect);
                //g.DrawEllipse(pWhite, rect);
            }

            pBlack.Dispose();
            pWhite.Dispose();
            pWhiteBold.Dispose();
        }
Beispiel #5
0
 public override void Paint(Graphics g, WorldScale scale)
 {
     if (_isAvailable)
     {
         Circle c = new Circle(_position, _hoverRadius);
         c.Paint(g, _isHover ? Color.White : Color.Black, 1, _color, scale);
     }
 }
Beispiel #6
0
        private void ZoomRight()
        {
            double dx = _worldScale.ScreenToRealDistance(picWorld.Height / 60f);
            double dy = 0;

            _worldScale = CreateWorldScale(_worldScale.Factor, RealPoint.Shift(GetCenter(), dx, dy));
            picWorld.Invalidate();
        }
        public override void Init()
        {
            base.Init();
            float scale = WorldScale.MaxComponent();

            m_scaledShape            = new SphereShape(Radius * Math.Abs(scale));
            m_scaledStaticCollidable = m_scaledShape.GetCollidableInstance();
        }
Beispiel #8
0
        private void WorldPanel_MouseDown(object sender, MouseEventArgs e)
        {
            _pointClicked  = Dimensions.WorldScale.ScreenToRealPosition(e.Location);
            _centerAtStart = Dimensions.WorldRect.Center();
            _scaleAtStart  = new WorldScale(Dimensions.WorldScale);

            OnStartMove();
        }
Beispiel #9
0
 public override void UpdateStaticCollider()
 {
     if (m_physicsMesh != null)
     {
         AffineTransform transform = new AffineTransform(WorldScale.ToBepu(), WorldRotation.ToBepu(), WorldPosition.ToBepu());
         m_physicsMesh.WorldTransform = transform;
     }
 }
Beispiel #10
0
        /// <summary>
        /// Peint le segment sur le Graphic donné
        /// </summary>
        /// <param name="g">Graphique sur lequel peindre</param>
        /// <param name="outlineColor">Couleur du contour</param>
        /// <param name="outlineWidth">Epaisseur du segment</param>
        /// <param name="fillColor">Couleur de remplissage</param>
        /// <param name="scale">Echelle de conversion</param>
        public override void Paint(Graphics g, Pen outline, Brush fill, WorldScale scale)
        {
            Point startPoint = scale.RealToScreenPosition(StartPoint);
            Point endPoint   = scale.RealToScreenPosition(EndPoint);

            if (outline != null)
            {
                g.DrawLine(outline, startPoint.X, startPoint.Y, endPoint.X, endPoint.Y);
            }
        }
Beispiel #11
0
        private void ZoomStep()
        {
            double dx = _worldScale.ScreenToRealDistance(picWorld.Height / 60f) * _moveHorizontal;
            double dy = _worldScale.ScreenToRealDistance(picWorld.Height / 60f) * _moveVertical;

            _worldScale = CreateWorldScale(_worldScale.Factor + _moveZoom, RealPoint.Shift(GetCenter(), dx, dy));
            //_worldScale = CreateWorldScale(_worldScale.Factor + _moveZoom, GetCenter());

            picWorld.Invalidate();
        }
Beispiel #12
0
 protected void SetPhysicsFromLoadedMesh()
 {
     if (m_physicsMesh != null)
     {
         m_physicsMesh.Shape     = m_meshAssetReference.GetAsset().GetPhysicsInstancedMesh();
         m_physicsMesh.Sidedness = TriangleSidedness.Clockwise;
     }
     else
     {
         m_physicsMesh = new InstancedMesh(m_meshAssetReference.GetAsset().GetPhysicsInstancedMesh());
     }
     m_physicsMesh.WorldTransform = new AffineTransform(WorldScale.ToBepu(), WorldRotation.ToBepu(), WorldPosition.ToBepu());
 }
Beispiel #13
0
        /// <summary>
        /// Dessine le cercle sur un Graphic
        /// </summary>
        /// <param name="g">Graphic sur lequel dessiner</param>
        /// <param name="outline">Pen utilisé pour dessiner le contour du cercle</param>
        /// <param name="fill">Brush utilisé pour remplissage du cercle</param>
        /// <param name="scale">Echelle de conversion</param>
        public void Paint(Graphics g, Pen outline, Brush fill, WorldScale scale)
        {
            Point screenPosition = scale.RealToScreenPosition(Center);
            int   screenRadius   = scale.RealToScreenDistance(Radius);

            if (fill != null)
            {
                g.FillEllipse(fill, new Rectangle(screenPosition.X - screenRadius, screenPosition.Y - screenRadius, screenRadius * 2, screenRadius * 2));
            }

            if (outline != null)
            {
                g.DrawEllipse(outline, new Rectangle(screenPosition.X - screenRadius, screenPosition.Y - screenRadius, screenRadius * 2, screenRadius * 2));
            }
        }
    public void ChangeWorldScale(WorldScale worldScale)
    {
        Physics.gravity = originalGravity * worldScale.scale;

        if (worldScale.sdkManager)
        {
            worldScale.sdkManager.LoadedSetupChanged += (s, e) =>
            {
                if (e.currentSetup == null)
                {
                    return;
                }

                VRTK.VRTK_DeviceFinder.HeadsetCamera().localScale = new Vector3(worldScale.scale, worldScale.scale, worldScale.scale);
            };
            //  worldScale.sdkManager.transform.localScale = new Vector3(worldScale.scale, worldScale.scale, worldScale.scale);
        }
    }
Beispiel #15
0
        public override void Paint(Graphics g, WorldScale scale)
        {
            base.Paint(g, scale);

            double x  = _position.X - 110;
            double y  = 2000 - 10 - 85 / 2;
            double dy = -85;

            if (_loadOnGreen != null)
            {
                for (int j = 0; j < _loadOnGreen.Count; j++)
                {
                    if (_loadOnGreen[j] != Color.Transparent)
                    {
                        new Circle(new RealPoint(x, y + dy * j), 36).Paint(g, Color.Black, 1, _loadOnGreen[j], scale);
                    }
                }
            }

            x = _position.X + 110;

            if (_loadOnRed != null)
            {
                for (int j = 0; j < _loadOnRed.Count; j++)
                {
                    if (_loadOnRed[j] != Color.Transparent)
                    {
                        new Circle(new RealPoint(x, y + dy * j), 36).Paint(g, Color.Black, 1, _loadOnRed[j], scale);
                    }
                }
            }

            if (_pendingLeft != Color.Transparent)
            {
                new Circle(_pendingLeftPos, 36).Paint(g, Color.Black, 1, _pendingLeft, scale);
            }

            if (_pendingRight != Color.Transparent)
            {
                new Circle(_pendingRightPos, 36).Paint(g, Color.Black, 1, _pendingRight, scale);
            }
        }
Beispiel #16
0
        /// <summary>
        /// Dessine la ligne sur un Graphic
        /// </summary>
        /// <param name="g">Graphic sur lequel dessiner</param>
        /// <param name="outline">Pen utilisé pour dessiner le contour de la ligne</param>
        /// <param name="fill">Brush utilisé pour remplissage de la ligne</param>
        /// <param name="scale">Echelle de conversion</param>
        public virtual void Paint(Graphics g, Pen outline, Brush fill, WorldScale scale)
        {
            // Un peu douteux mais bon
            RealPoint p1, p2;

            if (this.IsVertical)
            {
                p1 = GetCrossingPoints(new Line(new RealPoint(-100000, -100000), new RealPoint(+100000, -100000))).FirstOrDefault();
                p2 = GetCrossingPoints(new Line(new RealPoint(-100000, +100000), new RealPoint(+100000, +100000))).FirstOrDefault();
            }
            else
            {
                p1 = GetCrossingPoints(new Line(new RealPoint(-100000, -100000), new RealPoint(-100000, +100000))).FirstOrDefault();
                p2 = GetCrossingPoints(new Line(new RealPoint(+100000, -100000), new RealPoint(+100000, +100000))).FirstOrDefault();
            }

            if (p1 != null && p2 != null)
            {
                new Segment(p1, p2).Paint(g, outline, fill, scale);
            }
        }
Beispiel #17
0
        private void ZoomStepParam()
        {
            if (_step < 20)
            {
                _worldScale = CreateWorldScale(_worldScale.Factor, RealPoint.Shift(GetCenter(), _moveHorizontal, _moveVertical));
            }
            else if (_step < 40)
            {
                _worldScale = CreateWorldScale(_worldScale.Factor - _moveZoom, GetCenter());
            }

            _step++;
            if (_step == 40)
            {
                _moveHorizontal = 0;
                _moveVertical   = 0;
                _moveZoom       = 0;
            }

            picWorld.Invalidate();
        }
Beispiel #18
0
        public void Paint(Graphics g, WorldScale scale)
        {
            Point previousPoint = Points[0];

            using (Pen redPen = new Pen(Color.Red, 2), whitePen = new Pen(Color.White, 4))
            {
                for (int i = 0; i < Points.Count; i++)
                {
                    Point pointNode = scale.RealToScreenPosition(Points[i]);
                    if (i >= 1)
                    {
                        g.DrawLine(whitePen, pointNode, previousPoint);
                        g.DrawLine(redPen, pointNode, previousPoint);
                    }
                    previousPoint = pointNode;
                }
                for (int i = 0; i < Points.Count; i++)
                {
                    Point point = scale.RealToScreenPosition(Points[i]);
                    g.FillEllipse(Brushes.Red, new Rectangle(point.X - 4, point.Y - 4, 8, 8));
                    g.DrawEllipse(Pens.White, new Rectangle(point.X - 4, point.Y - 4, 8, 8));
                }
            }
        }
Beispiel #19
0
        private void picWorld_MouseUp(object sender, MouseEventArgs e)
        {
            if (_startPoint != null)
            {
                if (_shapeMode == ShapeMode.Zoom)
                {
                    double dx = _rectZoomFinal.Points.Max(pt => pt.X) - _rectZoomFinal.Points.Min(pt => pt.X);
                    //dx = _worldScale.RealToScreenDistance(dx);
                    WorldScale finalScale = CreateWorldScale(dx / picWorld.Width, _rectZoomFinal.Barycenter);

                    _moveZoom       = (_worldScale.Factor - finalScale.Factor) / 20;
                    _moveHorizontal = -finalScale.ScreenToRealDistance((finalScale.OffsetX - _worldScale.OffsetX) / 20);
                    _moveVertical   = -finalScale.ScreenToRealDistance((finalScale.OffsetY - _worldScale.OffsetY) / 20);

                    _step = 0;
                    ThreadManager.CreateThread(o => ZoomStepParam()).StartLoop(20, 40);
                    //_worldScale = finalScale;

                    _startPoint     = null;
                    _rectZoomFinal  = null;
                    _rectZoomOrg    = null;
                    _shapeMode      = ShapeMode.None;
                    btnZoom.Checked = false;
                }
                else if (_shapeMode != ShapeMode.None)
                {
                    _shapes.Add(BuildCurrentShape(_shapeMode, _startPoint, PicCoordinates()));
                    lblItem.Text = "";

                    _currentShape = null;
                    _startPoint   = null;
                }

                picWorld.Invalidate();
            }
        }
Beispiel #20
0
        public static void Paint(this IShape shape, Graphics g, Color outline, int outlineWidth, Color fill, WorldScale scale)
        {
            Pen   p = new Pen(outline, outlineWidth);
            Brush b = new SolidBrush(fill);

            shape.Paint(g, p, b, scale);

            p.Dispose();
            b.Dispose();
        }
        public override void DrawCollider()
        {
            float radiusScale = WorldScale.MaxComponent();

            CRenderer.Instance.ActiveScene.DebugRenderer.DrawSphere(WorldPosition, radiusScale * Radius, Color.Green.ToColor4(), 0.0f, EDebugDrawCommandFlags.Wireframe);
        }
 private void UpdateScaledShape()
 {
     m_scaledShape.Radius = Math.Abs(WorldScale.MaxComponent()) * Radius;
     Owner.MarkStaticColliderDirty();
 }
Beispiel #23
0
 private void btnOrigin_Click(object sender, EventArgs e)
 {
     _worldScale = CreateWorldScale(_worldScale.Factor, new RealPoint());
     picWorld.Invalidate();
 }
Beispiel #24
0
        /// <summary>
        /// Peint le mouvement en indiquant les différentes positions d'approche, la meilleure, et l'élément concerné
        /// </summary>
        /// <param name="g">Graphique sur lequel peindre</param>
        /// <param name="scale">Echelle de conversion</param>
        public void Paint(Graphics g, WorldScale scale)
        {
            Font font = new Font("Calibri", 8);

            Pen penRedDot = new Pen(Color.Red);

            penRedDot.DashStyle = DashStyle.Dot;

            Pen penBlackDot = new Pen(Color.Black);

            penBlackDot.DashStyle = DashStyle.Dot;

            Pen penTransparent = new Pen(Color.FromArgb(40, Color.Black));

            Brush brushTransparent = new SolidBrush(Color.FromArgb(40, Color.Black));

            Point point;

            if (Element != null)
            {
                Point pointElement = scale.RealToScreenPosition(Element.Position);

                if (GlobalCost != double.MaxValue && !double.IsInfinity(GlobalCost))
                {
                    Point pointProche = scale.RealToScreenPosition(BestPosition.Coordinates);

                    foreach (Position p in Positions)
                    {
                        point = scale.RealToScreenPosition(p.Coordinates);
                        if (point != pointProche)
                        {
                            g.FillEllipse(Brushes.Red, point.X - 2, point.Y - 2, 4, 4);
                            g.DrawLine(penRedDot, point, pointElement);
                        }
                    }

                    g.FillEllipse(Brushes.White, pointProche.X - 2, pointProche.Y - 2, 4, 4);
                    g.DrawLine(Pens.White, pointProche, pointElement);
                    g.DrawString((GlobalCost / DisplayCostFactor).ToString("0.00"), font, Brushes.White, pointProche);
                }
                else
                {
                    if (!IsCorrectColor())
                    {
                        foreach (Position p in Positions)
                        {
                            point = scale.RealToScreenPosition(p.Coordinates);
                            g.FillEllipse(brushTransparent, point.X - 2, point.Y - 2, 4, 4);
                            g.DrawLine(penTransparent, point, pointElement);
                        }
                    }
                    else
                    {
                        foreach (Position p in Positions)
                        {
                            point = scale.RealToScreenPosition(p.Coordinates);
                            g.FillEllipse(Brushes.Black, point.X - 2, point.Y - 2, 4, 4);
                            g.DrawLine(penBlackDot, point, pointElement);
                        }
                    }
                }
            }

            brushTransparent.Dispose();
            penTransparent.Dispose();
            penBlackDot.Dispose();
            penRedDot.Dispose();
            font.Dispose();
        }
Beispiel #25
0
 private void ZoomMinus()
 {
     _worldScale = CreateWorldScale(_worldScale.Factor * (1 / 0.97), GetCenter());
     picWorld.Invalidate();
 }
Beispiel #26
0
 private void ZoomPlus()
 {
     _worldScale = CreateWorldScale(_worldScale.Factor * 0.97, GetCenter());
     picWorld.Invalidate();
 }
Beispiel #27
0
 public override void Paint(Graphics g, WorldScale scale)
 {
     new Circle(new RealPoint(Position.X, Position.Y), _hoverRadius).Paint(g, Pens.Black, _enable ? Brushes.LimeGreen : Brushes.WhiteSmoke, scale);
 }
Beispiel #28
0
 private void MainForm_Load(object sender, EventArgs e)
 {
     _worldScale = new WorldScale(1, picWorld.Width / 2, picWorld.Height / 2);
 }
Beispiel #29
0
 /// <summary>
 /// Peint l'élément sur le Graphic donné à l'échelle donnée
 /// </summary>
 /// <param name="g">Graphic sur lequel peindre</param>
 /// <param name="scale">Echelle de peinture</param>
 public abstract void Paint(Graphics g, WorldScale scale);