void OnGUI() { GUILayout.BeginHorizontal(); string[] guids1 = AssetDatabase.FindAssets("l:terrain"); GameObject[] tilesModels = new GameObject[guids1.Length]; scrollPosSelection = EditorGUILayout.BeginScrollView(scrollPosSelection, GUILayout.MaxWidth(margin)); if (GUILayout.Button("Delete", GUILayout.MaxWidth(margin - scrollBarSize), GUILayout.MaxHeight(100))) { selectedButton = -1; } for (var i = 0; i < guids1.Length; i++) { GameObject gameObject = (GameObject)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(guids1[i]), typeof(GameObject)); tilesModels[i] = gameObject; var preview = AssetPreview.GetAssetPreview(gameObject); if (i == selectedButton) { GUI.color = Color.green; } GUILayout.Label(gameObject.name, GUILayout.MaxWidth(margin - scrollBarSize), GUILayout.MaxHeight(100)); if (GUILayout.Button(preview, GUILayout.MaxWidth(75), GUILayout.MaxHeight(75))) { selectedButton = i; } GUI.color = Color.white; } GUILayout.EndScrollView(); scrollPosTileEditor = EditorGUILayout.BeginScrollView(scrollPosTileEditor, GUILayout.Width(position.width - margin), GUILayout.Height(position.height)); var decimals = 0; GUILayout.Label("", GUILayout.Width(mapSize * buttonSize), GUILayout.Height(mapSize * buttonSize)); for (var i = 0; i < mapSize; i++) { for (var j = 0; j < mapSize; j++) { if (tileMapper.GetTiles()[i + (j * mapSize)] != null) { GUI.color = Color.green; } if (GUI.Button(new Rect(i * buttonSize, j * buttonSize, buttonSize, buttonSize), (i + (j * mapSize)).ToString())) { if (selectedButton != -1) { GameObject clone = PrefabUtility.InstantiatePrefab(tilesModels[selectedButton] as GameObject) as GameObject; var gameObjectInstance = tileMapper.AddTile(i + (j * mapSize), clone, new Vector3(i * tileSize, 0, -j * tileSize)); if (clone.gameObject.GetComponent <TileData>().TileSize.x > 1) { tileMapper.AddExtraSpace((i + 1) + (j * mapSize), gameObjectInstance, new Vector3(i * tileSize, 0, -j * tileSize)); } if (clone.gameObject.GetComponent <TileData>().TileSize.y > 1) { tileMapper.AddExtraSpace(i + ((j + 1) * mapSize), gameObjectInstance, new Vector3(i * tileSize, 0, -j * tileSize)); } } else { tileMapper.RemoveTile(i + (j * mapSize)); } } GUI.color = Color.white; } decimals++; } GUILayout.EndScrollView(); GUILayout.EndHorizontal(); }
void OnGUI() { if (guids1 == null) { setTiles(); } //setTiles(); GUILayout.BeginHorizontal(); scrollPosSelection = EditorGUILayout.BeginScrollView(scrollPosSelection, GUILayout.MaxWidth(margin)); var deleteButtonSize = 30; var imageButtonSize = 75; var labelSise = 15; var marginSize = 10; var numberOfVisibleElements = 12; var blockSize = labelSise + imageButtonSize + marginSize; if (selectedButton == -1) { GUI.color = Color.red; } if (GUILayout.Button("Delete", GUILayout.MaxWidth(margin - scrollBarSize), GUILayout.Height(deleteButtonSize))) { selectedButton = -1; } GUI.color = Color.white; for (var i = 0; i < guids1.Length; i++) { if (i == selectedButton) { GUI.color = Color.green; } if (scrollPosSelection.y < (i * blockSize) + deleteButtonSize && scrollPosSelection.y > (i * blockSize) - blockSize * numberOfVisibleElements) { if (previews[i] == null && !AssetPreview.IsLoadingAssetPreviews()) { previews[i] = AssetPreview.GetAssetPreview(tilesModels[i]); } } else { previews[i] = null; } GUILayout.Label(tilesModels[i].name, GUILayout.MaxWidth(margin - scrollBarSize), GUILayout.Height(labelSise)); if (GUILayout.Button(previews[i], GUILayout.Height(imageButtonSize))) { selectedButton = i; } GUI.color = Color.white; } GUILayout.EndScrollView(); scrollPosTileEditor = EditorGUILayout.BeginScrollView(scrollPosTileEditor, GUILayout.Width(position.width - margin), GUILayout.Height(position.height)); var decimals = 0; GUILayout.Label("", GUILayout.Width(mapSize * buttonSize), GUILayout.Height(mapSize * buttonSize)); for (var i = 0; i < mapSize; i++) { for (var j = 0; j < mapSize; j++) { if (tileMapper.GetTiles()[i + (j * mapSize)] != null) { GUI.color = Color.green; } if (GUI.Button(new Rect(i * buttonSize, j * buttonSize, buttonSize, buttonSize), (i + (j * mapSize)).ToString())) { if (selectedButton != -1) { GameObject clone = PrefabUtility.InstantiatePrefab(tilesModels[selectedButton] as GameObject) as GameObject; var gameObjectInstance = tileMapper.AddTile(i + (j * mapSize), clone, new Vector3(i * tileSize, 0, -j * tileSize)); if (clone.gameObject.GetComponent <TileData>().TileSize.x > 1) { tileMapper.AddExtraSpace((i + 1) + (j * mapSize), gameObjectInstance, new Vector3(i * tileSize, 0, -j * tileSize)); } if (clone.gameObject.GetComponent <TileData>().TileSize.y > 1) { tileMapper.AddExtraSpace(i + ((j + 1) * mapSize), gameObjectInstance, new Vector3(i * tileSize, 0, -j * tileSize)); } } else { tileMapper.RemoveTile(i + (j * mapSize)); } } GUI.color = Color.white; } decimals++; } GUILayout.EndScrollView(); GUILayout.EndHorizontal(); }