コード例 #1
0
 public void Draw(DetectionResult markerResult, Vector3 position)
 {
     if (!isTaken())
     {
         if (getType() == ChessPiece.Piece.KNIGHT)
         {
             if (getPlayer() == ChessPiece.Color.BLACK)
             {
                 ModelDrawer.Draw(markerResult, mModel, (int)position.X, (int)position.Y, .2, -1.5707f); //rotated by -90 degress
             }
             else
             {
                 ModelDrawer.Draw(markerResult, mModel, (int)position.X, (int)position.Y, .2, 1.5707f); //rotated by 90 degress
             }
         }
         else if (getType() == ChessPiece.Piece.BISHOP)
         {
             if (getPlayer() == ChessPiece.Color.BLACK)
             {
                 ModelDrawer.Draw(markerResult, mModel, (int)position.X, (int)position.Y, .2, -3.1414f); //rotated by -90 degress
             }
             else
             {
                 ModelDrawer.Draw(markerResult, mModel, (int)position.X, (int)position.Y, .2, 0.0f); //rotated by 90 degress
             }
         }
         else
         {
             ModelDrawer.Draw(markerResult, mModel, (int)position.X, (int)position.Y, 0.2);
         }
     }
 }
コード例 #2
0
 public void DrawAtLocation(DetectionResult markerResult, Vector2 positionToDrawAt)
 {
     if (!isTaken())
     {
         if (getType() == ChessPiece.Piece.KNIGHT)
         {
             if (getPlayer() == ChessPiece.Color.BLACK)
             {
                 ModelDrawer.Draw(markerResult, mModel, positionToDrawAt.X, positionToDrawAt.Y, .2, -1.5707f, true); //rotated by -90 degress
             }
             else
             {
                 ModelDrawer.Draw(markerResult, mModel, positionToDrawAt.X, positionToDrawAt.Y, .2, 1.5707f, true); //rotated by 90 degress
             }
         }
         else if (getType() == ChessPiece.Piece.BISHOP)
         {
             if (getPlayer() == ChessPiece.Color.BLACK)
             {
                 ModelDrawer.Draw(markerResult, mModel, positionToDrawAt.X, positionToDrawAt.Y, .2, -3.1414f, true); //rotated by -90 degress
             }
             else
             {
                 ModelDrawer.Draw(markerResult, mModel, positionToDrawAt.X, positionToDrawAt.Y, .2, 0.0f, true); //rotated by 90 degress
             }
         }
         else
         {
             ModelDrawer.Draw(markerResult, mModel, positionToDrawAt.X, positionToDrawAt.Y, 0.2, 0.0f, true);
         }
     }
 }
コード例 #3
0
ファイル: ChessBoard.cs プロジェクト: ARChess/ARChess
 /// <summary>
 /// Method the draws out model
 /// </summary>
 /// <param name="graphics"></param>
 public void Draw()
 {
     if (mBoardMarker != null) //Only draw the model if the marker is found
     {
         for (int i = 0; i < 8; ++i)
         {
             for (int j = 0; j < 8; ++j)
             {
                 ModelDrawer.Draw(mBoardMarker, selectModel(i, j), i, j, 0);
             }
         }
     }
 }
コード例 #4
0
ファイル: PieceSelector.cs プロジェクト: ARChess/ARChess
        public void Draw()
        {
            if (mDetectionResult != null)
            {
                if ((mBoardMarker != null))
                {
                    Microsoft.Xna.Framework.Matrix boardMat    = mBoardMarker.Transformation.ToXnaMatrix(),
                                                   selectorMat = mDetectionResult.Transformation.ToXnaMatrix(),
                                                   boardMat_inv;

                    boardMat_inv = Microsoft.Xna.Framework.Matrix.Invert(boardMat);

                    Vector3 position  = new Vector3(0, 0, 0);
                    Vector3 direction = new Vector3(0, -1, -1);
                    position = Vector3.Transform(position, selectorMat * boardMat_inv);
                    //direction = Vector3.Transform(direction, selectorMat * boardMat_inv);
                    position = position / 31;
                    //direction = direction / 31;
                    //System.Diagnostics.Debug.WriteLine(position);
                    Vector3 boardCoord = (position + direction * position.Z) + new Vector3(8.5f, 8.5f, 0);


                    int x = (int)(boardCoord.X < 5 ? (4 - boardCoord.X) * -1 : boardCoord.X - 4),
                        y = (int)(boardCoord.Y < 5 ? (4 - boardCoord.Y) * -1 : boardCoord.Y - 4);



                    if ((x >= 0) && (x <= 7) && (y >= 0) && (y <= 7))
                    {
                        // Selection is on board
                        if (mPosition != new Vector2(x, y))
                        {
                            // Selection has changed
                            selectedSince = DateTime.Now;
                            mPosition.X   = x;
                            mPosition.Y   = y;
                            mSelected     = false;
                        }
                        else
                        {
                            // Selection has been held
                            DateTime time         = DateTime.Now;
                            long     elapsedTicks = time.Ticks - selectedSince.Ticks;
                            TimeSpan elapsedSpan  = new TimeSpan(elapsedTicks);
                            if (elapsedSpan.TotalSeconds > 2.0)
                            {
                                // Selection has been held 1 second
                                //mSelected = true;
                                selectedSince = DateTime.Now;
                                GameState state = GameState.getInstance();
                                state.setSelected(mPosition);
                            }
                        }
                    }


                    direction = direction * 15;
                    ModelDrawer.DrawLine(mBoardMarker, position, position + direction);
                    ModelDrawer.Draw(mBoardMarker, ModelSelector.getModel(ModelSelector.Pieces.RED_SQUARE), x, y, 0.2);
                }
            }
        }