void UpdatePositionOfRepresentationObjects()
 {
     foreach (var cpr in representationObjects)
     {
         cpr.gameObject.transform.position = RepresentationMapping.MapBoardPos2D(cpr.chessPiece.pos);
     }
 }
    GameObject CreateChessPieceRepresentationObject(ChessPiece piece)
    {
        GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);

        obj.name = piece.agent.name + " " + piece.Type.ToString();
        obj.transform.position   = RepresentationMapping.MapBoardPos2D(piece.pos);
        obj.transform.localScale = Vector3.one * 0.7f;
        obj.GetComponent <MeshRenderer>().material.color = piece.agent.color;

        GameObject head = GameObject.CreatePrimitive(PrimitiveType.Sphere);

        head.transform.position   = RepresentationMapping.MapBoardPos2D(piece.pos) + Vector3.up * 0.3f;
        head.transform.localScale = Vector3.one * 0.5f;
        head.GetComponent <MeshRenderer>().material.color = ColorFromPieceType(piece.Type);
        head.transform.SetParent(obj.transform);
        Destroy(head.GetComponent <SphereCollider>());


        ChessPieceRepresentation cpr = obj.AddComponent <ChessPieceRepresentation>();

        cpr.chessPiece = piece;
        representationObjects.Add(cpr);

        return(obj);
    }
    void InstatiateGameBoardObject()
    {
        GameObject parent = new GameObject("Schachbrett");

        ChessField[,] fields = ChessGameManager.Instance.chessBoard.chessFields;
        for (int x = 0; x < fields.GetLength(0); x++)
        {
            for (int y = 0; y < fields.GetLength(1); y++)
            {
                GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
                obj.transform.position = RepresentationMapping.MapBoardPos2D(new Pos2D(x, y)) + Vector3.down;
                obj.GetComponent <MeshRenderer>().material.color = (x + y) % 2 == 0 ? Color.black : Color.white;
                obj.transform.SetParent(parent.transform);
            }
        }
    }