void Start()
    {
        TextureToMap();

        GetGroundFromMap();
        GetWallsFromMap();

        groundMeshObject = new MeshObject((grounds.Count * 4), grounds.Count * 2 * 3);
        wallMeshObject   = new MeshObject(walls.Count * 4, walls.Count * 2 * 3);

        DrawGround();
        DrawWalls();
        DrawCeil();

        CombineInstance[] combineMesh = new CombineInstance[3];
        combineMesh[0].mesh = groundMeshObject.GenerateMesh();
        combineMesh[1].mesh = wallMeshObject.GenerateMesh();
        combineMesh[2].mesh = ceilMeshObject.GenerateMesh();

        Mesh generatedMesh = new Mesh();

        generatedMesh.CombineMeshes(combineMesh, false, false);

        GetComponent <MeshFilter>().sharedMesh   = generatedMesh;
        GetComponent <MeshCollider>().sharedMesh = generatedMesh;

        player.transform.position = new Vector3(((origin.x * 2) + 1) * scale, height * scale / 2, ((origin.y * 2) + 1) * scale);
        float angle = Mathf.Atan2(originDirection.x, originDirection.y) * Mathf.Rad2Deg;

        player.transform.eulerAngles = new Vector3(0, angle, 0);

        goal.transform.position = new Vector3(((end.x * 2) + 1) * scale, 0, ((end.y * 2) + 1) * scale);
        //endDirection = new Vector2(1,1);
        angle = Mathf.Atan2(endDirection.x, endDirection.y) * Mathf.Rad2Deg;
        goal.transform.eulerAngles = new Vector3(0, angle, 0);

        if (Game.enemies)
        {
            GameObject enemy = Instantiate(enemyType);
            enemy.transform.position    = GridF.TransformGridToPoint(end * 2 + Vector2.one + endDirection / 2);
            enemy.transform.eulerAngles = new Vector3(0, angle, 0);
        }
    }