public static void PrepareScene() { GameObject rig = AssetDatabase.LoadAssetAtPath <GameObject>("Assets/Prefabs/Cameras.prefab"); GameObject walls = AssetDatabase.LoadAssetAtPath <GameObject>("Assets/Prefabs/Walls.prefab"); GameObject floor = AssetDatabase.LoadAssetAtPath <GameObject>("Assets/Prefabs/Floor.prefab"); GameObject hero = AssetDatabase.LoadAssetAtPath <GameObject>("Assets/Prefabs/Hero.prefab"); GameObject gameState = AssetDatabase.LoadAssetAtPath <GameObject>("Assets/Prefabs/Game state manager.prefab"); GameObject canvas = AssetDatabase.LoadAssetAtPath <GameObject>("Assets/Prefabs/Canvas stack.prefab"); GameObject start = AssetDatabase.LoadAssetAtPath <GameObject>("Assets/Prefabs/Level Start.prefab"); GameObject goal = AssetDatabase.LoadAssetAtPath <GameObject>("Assets/Prefabs/Level Goal.prefab"); GameObject swarmSpawner = AssetDatabase.LoadAssetAtPath <GameObject>("Assets/Prefabs/Swarm Spawner.prefab"); GameObject tintTextureGenerator = AssetDatabase.LoadAssetAtPath <GameObject>("Assets/Prefabs/Tint Texture Generator.prefab"); if (rig != null && walls != null && floor != null && hero != null && gameState != null && canvas != null && start != null && goal != null && swarmSpawner != null) { RenderSettings.ambientLight = Color.white; foreach (var cam in Object.FindObjectsOfType <Camera>()) { Object.DestroyImmediate(cam.gameObject, false); } Grid grid = BrushUtility.GetRootGrid(true); PrefabUtility.InstantiatePrefab(rig); GameObject wallsGo = PrefabUtility.InstantiatePrefab(walls) as GameObject; PrefabUtility.UnpackPrefabInstance(wallsGo, PrefabUnpackMode.Completely, InteractionMode.AutomatedAction); wallsGo.transform.SetParent(grid.transform); GameObject floorGo = PrefabUtility.InstantiatePrefab(floor) as GameObject; PrefabUtility.UnpackPrefabInstance(floorGo, PrefabUnpackMode.Completely, InteractionMode.AutomatedAction); floorGo.transform.SetParent(grid.transform); PrefabUtility.InstantiatePrefab(gameState); PrefabUtility.InstantiatePrefab(swarmSpawner); GameObject canvasObject = PrefabUtility.InstantiatePrefab(canvas) as GameObject; canvasObject.GetComponentInChildren <UIRenderTextureCamera>().UpdateCamera(); GameObject startGo = PrefabUtility.InstantiatePrefab(start) as GameObject; startGo.transform.SetParent(grid.transform); startGo.transform.position = grid.GetCellCenterWorld(new Vector3Int(-6, 1, 0)); GameObject goalGo = PrefabUtility.InstantiatePrefab(goal) as GameObject; goalGo.transform.SetParent(grid.transform); goalGo.transform.position = grid.GetCellCenterWorld(new Vector3Int(5, -2, 0)); GameObject swarmSpawnerGo = PrefabUtility.InstantiatePrefab(swarmSpawner) as GameObject; swarmSpawnerGo.transform.SetParent(grid.transform); grid.gameObject.AddComponent <GridInformation>(); GameObject tintTextureGo = PrefabUtility.InstantiatePrefab(tintTextureGenerator) as GameObject; tintTextureGo.transform.SetParent(grid.transform); LevelBrush.ResetLevelCache(); TintTextureGenerator.RefreshTintmap(); } else { Debug.LogWarning("Some prefabs for initializing the scene are missing."); } }
public override void OnInspectorGUI() { EditorGUI.BeginChangeCheck(); base.OnInspectorGUI(); if (GUILayout.Button("Refresh") || EditorGUI.EndChangeCheck()) { LevelBrush.ResetLevelCache(); TintTextureGenerator.RefreshTintmap(); } }
public override void Erase(GridLayout grid, GameObject layer, Vector3Int position) { GridInformation info = BrushUtility.GetRootGridInformation(true); info.ErasePositionProperty(position, k_TintColorPropertyName); if (generator == null) { generator = FindObjectOfType <TintTextureGenerator>(); } TintTextureGenerator.RefreshTintmap(position); }
public override void Paint(GridLayout grid, GameObject layer, Vector3Int position) { GridInformation info = BrushUtility.GetRootGridInformation(true); Color oldColor = info.GetPositionProperty(position, k_TintColorPropertyName, FindObjectOfType <TintTextureGenerator>().defaultColor); info.ErasePositionProperty(position, k_TintColorPropertyName); Color newColor = oldColor * (1 - m_Blend) + m_Color * m_Blend; info.SetPositionProperty(position, k_TintColorPropertyName, newColor); TintTextureGenerator.RefreshTintmap(position); }
public override void Erase(GridLayout grid, GameObject layer, Vector3Int position) { Tilemap walls = GetWall(); Tilemap floor = GetFloor(); if (walls != null && floor != null) { EraseInternal(position, floor, walls); TintTextureGenerator.RefreshTintmap(position); } }
public override void BoxErase(GridLayout grid, GameObject layer, BoundsInt position) { Tilemap walls = GetWall(); Tilemap floor = GetFloor(); if (walls != null && floor != null) { foreach (var pos in position.allPositionsWithin) { EraseInternal(pos, floor, walls); } TintTextureGenerator.RefreshTintmap(position); } }
private void UndoRedoPerformed() { LevelBrush.ResetLevelCache(); TintTextureGenerator.RefreshTintmap(); }