/*
     * public override List<Cell> GenerateGrid() {
     *  CellsParent.rotation = Quaternion.identity;
     *
     *  var ret = base.GenerateGrid();
     *
     *  CellsParent.rotation = Quaternion.Euler(-90, 0, 0);
     *
     *  return ret;
     * }
     */

    public override List <Cell> GenerateGrid()
    {
        CellsParent.rotation = Quaternion.identity;

        var ret = new List <Cell>();

        if (SquarePrefab.GetComponent <Square>() == null)
        {
            Debug.LogError("Invalid square cell prefab provided");
            return(ret);
        }

        for (int i = -Width / 2; i < Width / 2; i++)
        {
            for (int j = -Height / 2; j < Height / 2; j++)
            {
                var square     = Instantiate(SquarePrefab);
                var squareSize = square.GetComponent <Cell>().GetCellDimensions();

                square.transform.position = new Vector3(i * squareSize.x + squareSize.x / 2, 0, j * squareSize.z + squareSize.z / 2);
                square.GetComponent <Cell>().OffsetCoord  = new Vector2(i, j);
                square.GetComponent <Cell>().MovementCost = 1;
                ret.Add(square.GetComponent <Cell>());

                square.transform.parent = CellsParent;
            }
        }

        CellsParent.rotation = Quaternion.Euler(-90, 0, 0);

        return(ret);
    }
        public override List <Cell> GenerateGrid()
        {
            if (SquarePrefab == null)
            {
                return(null);
            }
            var position = Entity.Transform.Position;
            var material = Content.Load <Material>("Materials/Ground Material");
            //var squareSize = GetDimensions();

            //var shape = Content.Load<ColliderShapeAssetDesc>("TileCollider");
            var ret = new List <Cell>();

            for (int i = 0; i < Width; i++)
            {
                for (int j = 0; j < Height; j++)
                {
                    Entity prefabEntity = SquarePrefab.Instantiate().First();
                    var    cell         = prefabEntity.Get <Cell>();
                    var    squareSize   = cell.GetCellDimensions(prefabEntity);
                    cell.OffsetCoord  = new Vector2(i, j);
                    cell.MovementCost = 1;
                    cell.UnMark();
                    var model = prefabEntity.Get <ModelComponent>();
                    model.Materials.Add(0, material);
                    prefabEntity.Transform.Position = new Vector3(i * squareSize.X + position.X, 0.5f + position.Y, j * squareSize.Z + position.Z);
                    SceneSystem.SceneInstance.Scene.Entities.Add(prefabEntity);
                    ret.Add(cell);

                    //var tileEntity = new Entity(new Vector3(i * squareSize.X + position.X, 0.5f + position.Y, j * squareSize.Z + position.Z), $"Tile_{i}");
                    //var modelComponent = new ModelComponent(SquareModel);
                    //var material = Content.Load<Material>("Materials/Ground Material");
                    //modelComponent.Materials.Add(0, material);
                    //tileEntity.Add(modelComponent);
                    //var cell = new MySquare
                    //{
                    //    OffsetCoord = new Vector2(i, j),
                    //    MovementCost = 1,
                    //    DefaultMaterial = Content.Load<Material>("Materials/Ground Material"),
                    //    ReachableMaterial = Content.Load<Material>("Materials/Sphere Material"),
                    //    PathMaterial = Content.Load<Material>("Materials/GreenMaterial"),
                    //    HighlightedMaterial = Content.Load<Material>("Materials/HighlightedMaterial")
                    //};
                    //tileEntity.Add(cell);
                    //var collider = new StaticColliderComponent
                    //{
                    //    CollisionGroup = CollisionFilterGroups.CustomFilter1,
                    //    CanSleep = true,
                    //    Friction = 0.5f
                    //};
                    //collider.ColliderShapes.Add(new StaticPlaneColliderShapeDesc());
                    //tileEntity.Add(collider);
                    //SceneSystem.SceneInstance.Scene.Entities.Add(tileEntity);
                    //ret.Add(cell);
                }
            }
            return(ret);
        }