Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class DynaMazeGen : MonoBehaviour
- {
- private int _mazeSizeX = 8;
- private int _mazeSizeY = 8;
- public int MazeSizeX
- {
- get => _mazeSizeX;
- set
- {
- _mazeSizeX = value;
- GenerateMaze();
- }
- }
- public int MazeSizeY
- {
- get => _mazeSizeY;
- set
- {
- _mazeSizeY = value;
- GenerateMaze();
- }
- }
- public const float GridOffset = 4;
- public GameObject Horizontal;
- public GameObject Vertical;
- public GameObject Corner;
- public GameObject Floor;
- internal ObjectGrid<GameObject> FloorGrid;
- internal ObjectGrid<GameObject> CornerGrid;
- internal ObjectGrid<GameObject> HorizontalWallGrid;
- internal ObjectGrid<GameObject> VerticalWallGrid;
- //Material Definition -- use scriptable objects for material sets ?
- public BoardMaterialSet Theme;
- void Start()
- {
- // Floors
- FloorGrid = new ObjectGrid<GameObject>(Floor, transform, MazeSizeX, MazeSizeY, GridOffset, -2, -2,
- SetFloorProperties);
- // Corners
- CornerGrid = new ObjectGrid<GameObject>(Corner, transform, MazeSizeX, MazeSizeY, GridOffset, 0, 0,
- SetCornerProperties);
- // Horizontal walls
- HorizontalWallGrid = new ObjectGrid<GameObject>(Horizontal, transform, MazeSizeX, MazeSizeY, GridOffset, -2,
- 0, SetHorizontalVerticalProperties);
- // Vertical walls
- VerticalWallGrid = new ObjectGrid<GameObject>(Vertical, transform, MazeSizeX, MazeSizeY, GridOffset, 0, -2,
- SetHorizontalVerticalProperties);
- }
- private void SetCornerProperties(WorldObject<GameObject> worldObject)
- {
- worldObject.Object.GetComponentInChildren<MeshRenderer>().material = Theme.WallMaterial;
- worldObject.Object.tag = Theme.ActiveBoardCornerTag;
- }
- private void SetHorizontalVerticalProperties(WorldObject<GameObject> worldObject)
- {
- worldObject.Object.GetComponentInChildren<MeshRenderer>().material = Theme.WallMaterial;
- worldObject.Object.tag = Theme.ActiveBoardWallTag;
- }
- private void SetFloorProperties(WorldObject<GameObject> worldObject)
- {
- worldObject.Object.GetComponentInChildren<MeshRenderer>().material = Theme.FloorMaterial;
- worldObject.Object.tag = Theme.ActiveBoardFloorTag;
- }
- /// <summary>
- /// Public Call
- /// </summary>
- public void GenerateMaze()
- {
- FloorGrid.UpdateGridSize();
- CornerGrid.UpdateGridSize();
- HorizontalWallGrid.UpdateGridSize();
- VerticalWallGrid.UpdateGridSize();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment