void DoPropertiesGUI(TiledMapComponent _tiledMapComponent, int layerNumber, Dictionary <int, List <Property> > properties, bool[] foldout) { if (properties == null || properties[layerNumber] == null || properties[layerNumber].Count < 1) { return; } EditorGUI.indentLevel++; foldout[layerNumber] = EditorGUILayout.Foldout(foldout[layerNumber], new GUIContent("Properties")); if (foldout[layerNumber]) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Name", EditorStyles.boldLabel, GUILayout.MaxWidth(150.0f)); EditorGUILayout.LabelField("Value", EditorStyles.boldLabel, GUILayout.MaxWidth(150.0f)); EditorGUILayout.EndHorizontal(); foreach (var property in properties[layerNumber]) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.SelectableLabel(property.Name, GUILayout.MaxHeight(20)); EditorGUILayout.SelectableLabel(property.RawValue, GUILayout.MaxHeight(20)); EditorGUILayout.EndHorizontal(); } } EditorGUI.indentLevel--; EditorGUILayout.Space(); }
private void DoClearMapButtonGUI(TiledMapComponent TMComponent) { if (GUILayout.Button("Clear Tile Map")) { ClearCurrentmap(TMComponent); Debug.Log("Map cleared!"); } }
private void ClearCurrentmap(TiledMapComponent TMComponent) { // Destroy any previous map entities var children = new List<GameObject>(); foreach (Transform child in TMComponent.transform) children.Add(child.gameObject); children.ForEach(child => DestroyImmediate(child, true)); MeshFilter filter = TMComponent.GetComponent<MeshFilter>(); if (filter) DestroyImmediate(filter, true); }
private void DoImportMapButtonGUI(TiledMapComponent TMComponent) { if (GUILayout.Button("Import as static Tile Map")) { ClearCurrentmap(TMComponent); if (TMComponent.Initialize()) { Debug.Log("Map sucessfull loaded!"); } } }
private void ClearCurrentmap(TiledMapComponent TMComponent) { // Destroy any previous map entities var children = new List <GameObject>(); foreach (Transform child in TMComponent.transform) { children.Add(child.gameObject); } children.ForEach(child => DestroyImmediate(child, true)); MeshFilter filter = TMComponent.GetComponent <MeshFilter>(); if (filter) { DestroyImmediate(filter, true); } }
public override void OnInspectorGUI() { serializedObject.Update(); TiledMapComponent TMComponent = (TiledMapComponent)target; TMComponent.isToLoadOnStart = EditorGUILayout.Toggle("Load this on awake?", TMComponent.isToLoadOnStart); TMComponent.MakeUniqueTiles = EditorGUILayout.Toggle("Make unique tiles?", TMComponent.MakeUniqueTiles); TMComponent.DefaultSortingOrder = EditorGUILayout.IntField("Default Sorting Order", TMComponent.DefaultSortingOrder); //TMComponent.materialDefaultFile = EditorGUILayout.TextField("Default material tile map, don't put .mat extension:", TMComponent.materialDefaultFile); TMComponent.materialDefaultFile = (Material)EditorGUILayout.ObjectField("Default material tile map", TMComponent.materialDefaultFile, typeof(Material), true); TMComponent.MapTMX = (TextAsset)EditorGUILayout.ObjectField("Map xml:", TMComponent.MapTMX, typeof(TextAsset), true); TMComponent.MapTMXPath = EditorGUILayout.TextField("Map path name: ", TMComponent.MapTMXPath); DoCollidersGUI(TMComponent); DoImportMapButtonGUI(TMComponent); DoClearMapButtonGUI(TMComponent); }
void OnEnable() { _tiledMapComponent = (TiledMapComponent)target; DirectoryInfo rootDir = new DirectoryInfo(Application.dataPath); FileInfo[] files = rootDir.GetFiles("TiledMapComponentEditor.cs", SearchOption.AllDirectories); string editorIconPath = Path.GetDirectoryName(files[0].FullName.Replace("\\", "/").Replace(Application.dataPath, "Assets")); editorIconPath = editorIconPath + "/Icons"; imageIcon = (Texture2D)AssetDatabase.LoadMainAssetAtPath(editorIconPath + "/layer-image.png"); objectIcon = (Texture2D)AssetDatabase.LoadMainAssetAtPath(editorIconPath + "/layer-object.png"); layerIcon = (Texture2D)AssetDatabase.LoadMainAssetAtPath(editorIconPath + "/layer-tile.png"); componentIcon = (Texture2D)AssetDatabase.LoadMainAssetAtPath(editorIconPath + "/TiledMapComponent Icon.png"); objectTypeIcon_Box = (Texture2D)AssetDatabase.LoadMainAssetAtPath(editorIconPath + "/insert-rectangle.png"); objectTypeIcon_Ellipse = (Texture2D)AssetDatabase.LoadMainAssetAtPath(editorIconPath + "/insert-ellipse.png"); objectTypeIcon_Polyline = (Texture2D)AssetDatabase.LoadMainAssetAtPath(editorIconPath + "/insert-polyline.png"); objectTypeIcon_Polygon = (Texture2D)AssetDatabase.LoadMainAssetAtPath(editorIconPath + "/insert-polygon.png"); // Serializable properties setup materialDefaultFile = serializedObject.FindProperty("materialDefaultFile"); DefaultSortingOrder = serializedObject.FindProperty("DefaultSortingOrder"); isToLoadOnStart = serializedObject.FindProperty("isToLoadOnStart"); tileObjectElipsePrecision = serializedObject.FindProperty("tileObjectElipsePrecision"); simpleTileObjectCalculation = serializedObject.FindProperty("simpleTileObjectCalculation"); clipperArcTolerance = serializedObject.FindProperty("clipperArcTolerance"); clipperMiterLimit = serializedObject.FindProperty("clipperMiterLimit"); clipperJoinType = serializedObject.FindProperty("clipperJoinType"); clipperEndType = serializedObject.FindProperty("clipperEndType"); clipperDeltaOffset = serializedObject.FindProperty("clipperDeltaOffset"); GenerateTileCollisions = serializedObject.FindProperty("GenerateTileCollisions"); foldoutTileCollisions = serializedObject.FindProperty("foldoutTileCollisions"); TileCollisionsZDepth = serializedObject.FindProperty("TileCollisionsZDepth"); TileCollisionsWidth = serializedObject.FindProperty("TileCollisionsWidth"); TileCollisionsIsInner = serializedObject.FindProperty("TileCollisionsIsInner"); TileCollisionsIsTrigger = serializedObject.FindProperty("TileCollisionsIsTrigger"); TileCollisionsIs2D = serializedObject.FindProperty("TileCollisionsIs2D"); }
public override void OnInspectorGUI() { //base.OnInspectorGUI(); //DrawDefaultInspector(); serializedObject.Update(); EditorGUIUtility.LookLikeInspector(); TiledMapComponent TMEditor = (TiledMapComponent)target; TMEditor.MapTMX = (TextAsset)EditorGUILayout.ObjectField("Tiled Map", TMEditor.MapTMX, typeof(TextAsset)); TMEditor.GenerateCollider = EditorGUILayout.BeginToggleGroup("Generate Colliders", TMEditor.GenerateCollider); //TMEditor.CollidersZDepth = EditorGUILayout.FloatField("Colliders Z Depth", TMEditor.CollidersZDepth); //TMEditor.CollidersWidth = EditorGUILayout.FloatField("Colliders Width", TMEditor.CollidersWidth); foldout = EditorGUILayout.Foldout(foldout, "Colliders Layers"); if (foldout) { if (TMEditor.CollidersLayerName != null && TMEditor.CollidersLayerName.Length > 0) { arraySize = TMEditor.CollidersLayerName.Length; } arraySize = EditorGUILayout.IntField("Colliders Layers Number", arraySize); int i = 0; if (collidersLayers.Count < arraySize) { while (collidersLayers.Count < arraySize) { collidersLayers.Add("Collider_" + i); i++; } TMEditor.CollidersLayerName = new string[arraySize]; TMEditor.CollidersWidth = new float[arraySize]; TMEditor.CollidersZDepth = new float[arraySize]; TMEditor.CollidersIsInner = new bool[arraySize]; } else if (collidersLayers.Count > arraySize) { while (collidersLayers.Count > arraySize) { collidersLayers.RemoveAt(collidersLayers.Count - 1); } TMEditor.CollidersLayerName = new string[arraySize]; TMEditor.CollidersWidth = new float[arraySize]; TMEditor.CollidersZDepth = new float[arraySize]; TMEditor.CollidersIsInner = new bool[arraySize]; } for (i = 0; i < arraySize; i++) { collidersLayers[i] = EditorGUILayout.TextField("Collider Layer " + i, collidersLayers[i]); TMEditor.CollidersWidth[i] = EditorGUILayout.FloatField("Collider " + i + " Width", TMEditor.CollidersWidth[i]); TMEditor.CollidersZDepth[i] = EditorGUILayout.FloatField("Collider " + i + " Z Depth", TMEditor.CollidersZDepth[i]); TMEditor.CollidersIsInner[i] = EditorGUILayout.Toggle("Collider " + i + " Is Inner Collisions", TMEditor.CollidersIsInner[i]); TMEditor.CollidersLayerName[i] = collidersLayers[i]; } } EditorGUILayout.EndToggleGroup(); if (GUILayout.Button("Import Tile Map")) { // Destroy any previous map entities var children = new List <GameObject>(); foreach (Transform child in TMEditor.transform) { children.Add(child.gameObject); } children.ForEach(child => DestroyImmediate(child, true)); MeshFilter filter = TMEditor.GetComponent <MeshFilter>(); if (filter) { DestroyImmediate(filter, true); } string fullPath = Path.GetDirectoryName(AssetDatabase.GetAssetPath(TMEditor.MapTMX)); string mapPath = ""; string[] splittedFullPath = fullPath.Split(new string[] { "Assets/Resources/" }, StringSplitOptions.None); if (splittedFullPath.Length > 1) { mapPath = splittedFullPath[1] + "/"; } //if (mapPath.LastIndexOf('/') == -1) // means it only returned a filename // mapPath = ""; // so set the path to an empty string //else // mapPath = mapPath.Remove(mapPath.LastIndexOf('/')); // otherwise eleminate the filename and store the relative path TMEditor.Initialize(fullPath, mapPath); if (TMEditor.GenerateCollider) { TMEditor.GenerateColliders(); } } } //*/
private void DoCollidersGUI(TiledMapComponent TMComponent) { TMComponent.GenerateCollider = EditorGUILayout.BeginToggleGroup("Generate Colliders", TMComponent.GenerateCollider); foldoutColliders = EditorGUILayout.Foldout(foldoutColliders, "Colliders Layers"); if (foldoutColliders) { TMComponent.addTileNameToColliderName = EditorGUILayout.Toggle("Add tile name to collidder name?", TMComponent.addTileNameToColliderName); TMComponent.is2DCollider = EditorGUILayout.Toggle("Create Colliders 2D?", TMComponent.is2DCollider); if (TMComponent.CollidersLayerName != null && TMComponent.CollidersLayerName.Length > 0) { arraySize = TMComponent.CollidersLayerName.Length; } arraySize = EditorGUILayout.IntField("Colliders Layers Number", arraySize); if (arraySize < 1) { arraySize = 1; } int i = collidersLayers.Count; if (collidersLayers.Count < arraySize) { while (collidersLayers.Count < arraySize) { if (TMComponent.CollidersLayerName != null && TMComponent.CollidersLayerName.Length > i && TMComponent.CollidersLayerName[i].Length > 0) { collidersLayers.Add(TMComponent.CollidersLayerName[i]); collidersWidth.Add(TMComponent.CollidersWidth[i]); collidersZDepth.Add(TMComponent.CollidersZDepth[i]); collidersIsInner.Add(TMComponent.CollidersIsInner[i]); collidersIsTrigger.Add(TMComponent.CollidersIsTrigger[i]); } else { collidersLayers.Add("Collider_" + i); if (i > 0) { collidersWidth.Add(collidersWidth[0]); collidersZDepth.Add(collidersZDepth[0]); collidersIsInner.Add(collidersIsInner[0]); collidersIsTrigger.Add(collidersIsTrigger[0]); } else { collidersWidth.Add(1); collidersZDepth.Add(0); collidersIsInner.Add(false); collidersIsTrigger.Add(false); } } i++; } } else { if (collidersLayers.Count > arraySize) { while (collidersLayers.Count > arraySize) { collidersLayers.RemoveAt(collidersLayers.Count - 1); collidersWidth.RemoveAt(collidersLayers.Count - 1); collidersZDepth.RemoveAt(collidersLayers.Count - 1); collidersIsInner.RemoveAt(collidersLayers.Count - 1); collidersIsTrigger.RemoveAt(collidersLayers.Count - 1); } } } for (i = 0; i < arraySize; i++) { collidersLayers[i] = EditorGUILayout.TextField("Collider Layer " + i, collidersLayers[i]); if (!TMComponent.is2DCollider) { collidersWidth[i] = EditorGUILayout.FloatField(collidersLayers[i] + " Width", collidersWidth[i]); collidersZDepth[i] = EditorGUILayout.FloatField(collidersLayers[i] + " Z Depth", collidersZDepth[i]); collidersIsInner[i] = EditorGUILayout.Toggle(collidersLayers[i] + " Is Inner Collisions", collidersIsInner[i]); } collidersIsTrigger[i] = EditorGUILayout.Toggle(collidersLayers[i] + " Is Trigger", collidersIsTrigger[i]); } TMComponent.CollidersLayerName = collidersLayers.ToArray(); TMComponent.CollidersWidth = collidersWidth.ToArray(); TMComponent.CollidersZDepth = collidersZDepth.ToArray(); TMComponent.CollidersIsInner = collidersIsInner.ToArray(); TMComponent.CollidersIsTrigger = collidersIsTrigger.ToArray(); } EditorGUILayout.EndToggleGroup(); }
void OnEnable() { _tiledMapComponent = (TiledMapComponent)target; DirectoryInfo rootDir = new DirectoryInfo(Application.dataPath); FileInfo[] files = rootDir.GetFiles("TiledMapComponentEditor.cs", SearchOption.AllDirectories); string editorIconPath = Path.GetDirectoryName(files[0].FullName.Replace("\\", "/").Replace(Application.dataPath, "Assets")); editorIconPath = editorIconPath + "/Icons"; imageIcon = (Texture2D)AssetDatabase.LoadMainAssetAtPath( editorIconPath + "/layer-image.png"); objectIcon = (Texture2D)AssetDatabase.LoadMainAssetAtPath( editorIconPath + "/layer-object.png"); layerIcon = (Texture2D)AssetDatabase.LoadMainAssetAtPath( editorIconPath + "/layer-tile.png"); componentIcon = (Texture2D)AssetDatabase.LoadMainAssetAtPath( editorIconPath + "/TiledMapComponent Icon.png"); objectTypeIcon_Box = (Texture2D)AssetDatabase.LoadMainAssetAtPath(editorIconPath + "/insert-rectangle.png"); objectTypeIcon_Ellipse = (Texture2D)AssetDatabase.LoadMainAssetAtPath(editorIconPath + "/insert-ellipse.png"); objectTypeIcon_Polyline = (Texture2D)AssetDatabase.LoadMainAssetAtPath(editorIconPath + "/insert-polyline.png"); objectTypeIcon_Polygon = (Texture2D)AssetDatabase.LoadMainAssetAtPath(editorIconPath + "/insert-polygon.png"); // Serializable properties setup materialDefaultFile = serializedObject.FindProperty("materialDefaultFile"); DefaultSortingOrder = serializedObject.FindProperty("DefaultSortingOrder"); isToLoadOnStart = serializedObject.FindProperty("isToLoadOnStart"); tileObjectElipsePrecision = serializedObject.FindProperty("tileObjectElipsePrecision"); simpleTileObjectCalculation = serializedObject.FindProperty("simpleTileObjectCalculation"); clipperArcTolerance = serializedObject.FindProperty("clipperArcTolerance"); clipperMiterLimit = serializedObject.FindProperty("clipperMiterLimit"); clipperJoinType = serializedObject.FindProperty("clipperJoinType"); clipperEndType = serializedObject.FindProperty("clipperEndType"); clipperDeltaOffset = serializedObject.FindProperty("clipperDeltaOffset"); GenerateTileCollisions = serializedObject.FindProperty("GenerateTileCollisions"); foldoutTileCollisions = serializedObject.FindProperty("foldoutTileCollisions"); TileCollisionsZDepth = serializedObject.FindProperty("TileCollisionsZDepth"); TileCollisionsWidth = serializedObject.FindProperty("TileCollisionsWidth"); TileCollisionsIsInner = serializedObject.FindProperty("TileCollisionsIsInner"); TileCollisionsIsTrigger = serializedObject.FindProperty("TileCollisionsIsTrigger"); TileCollisionsIs2D = serializedObject.FindProperty("TileCollisionsIs2D"); }
void DoTileLayerPropertyGUI(TiledMapComponent _tiledMapComponent, int layerNumber) { DoPropertiesGUI(_tiledMapComponent, layerNumber, _tiledMapComponent.tileLayersProperties, _tiledMapComponent.tileLayersFoldoutProperties); }
void DoPropertiesGUI(TiledMapComponent _tiledMapComponent, int layerNumber, Dictionary<int, List<Property>> properties, bool[] foldout) { if (properties == null || properties[layerNumber] == null || properties[layerNumber].Count < 1) return; EditorGUI.indentLevel++; foldout[layerNumber] = EditorGUILayout.Foldout(foldout[layerNumber], new GUIContent("Properties")); if (foldout[layerNumber]) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Name", EditorStyles.boldLabel, GUILayout.MaxWidth(150.0f)); EditorGUILayout.LabelField("Value", EditorStyles.boldLabel, GUILayout.MaxWidth(150.0f)); EditorGUILayout.EndHorizontal(); foreach (var property in properties[layerNumber]) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.SelectableLabel(property.Name, GUILayout.MaxHeight(20)); EditorGUILayout.SelectableLabel(property.RawValue, GUILayout.MaxHeight(20)); EditorGUILayout.EndHorizontal(); } } EditorGUI.indentLevel--; EditorGUILayout.Space(); }
private void DoCollidersGUI(TiledMapComponent TMComponent) { TMComponent.GenerateCollider = EditorGUILayout.BeginToggleGroup("Generate Colliders", TMComponent.GenerateCollider); foldoutColliders = EditorGUILayout.Foldout(foldoutColliders, "Colliders Layers"); if (foldoutColliders) { TMComponent.addTileNameToColliderName = EditorGUILayout.Toggle("Add tile name to collidder name?", TMComponent.addTileNameToColliderName); TMComponent.is2DCollider = EditorGUILayout.Toggle("Create Colliders 2D?", TMComponent.is2DCollider); if (TMComponent.CollidersLayerName != null && TMComponent.CollidersLayerName.Length > 0) { arraySize = TMComponent.CollidersLayerName.Length; } arraySize = EditorGUILayout.IntField("Colliders Layers Number", arraySize); if (arraySize < 1) arraySize = 1; int i = collidersLayers.Count; if (collidersLayers.Count < arraySize) { while (collidersLayers.Count < arraySize) { if (TMComponent.CollidersLayerName != null && TMComponent.CollidersLayerName.Length > i && TMComponent.CollidersLayerName[i].Length > 0) { collidersLayers.Add(TMComponent.CollidersLayerName[i]); collidersWidth.Add(TMComponent.CollidersWidth[i]); collidersZDepth.Add(TMComponent.CollidersZDepth[i]); collidersIsInner.Add(TMComponent.CollidersIsInner[i]); collidersIsTrigger.Add(TMComponent.CollidersIsTrigger[i]); } else { collidersLayers.Add("Collider_" + i); if (i > 0) { collidersWidth.Add(collidersWidth[0]); collidersZDepth.Add(collidersZDepth[0]); collidersIsInner.Add(collidersIsInner[0]); collidersIsTrigger.Add(collidersIsTrigger[0]); } else { collidersWidth.Add(1); collidersZDepth.Add(0); collidersIsInner.Add(false); collidersIsTrigger.Add(false); } } i++; } } else { if (collidersLayers.Count > arraySize) { while (collidersLayers.Count > arraySize) { collidersLayers.RemoveAt(collidersLayers.Count - 1); collidersWidth.RemoveAt(collidersLayers.Count - 1); collidersZDepth.RemoveAt(collidersLayers.Count - 1); collidersIsInner.RemoveAt(collidersLayers.Count - 1); collidersIsTrigger.RemoveAt(collidersLayers.Count - 1); } } } for (i = 0; i < arraySize; i++) { collidersLayers[i] = EditorGUILayout.TextField("Collider Layer " + i, collidersLayers[i]); if (!TMComponent.is2DCollider) { collidersWidth[i] = EditorGUILayout.FloatField(collidersLayers[i] + " Width", collidersWidth[i]); collidersZDepth[i] = EditorGUILayout.FloatField(collidersLayers[i] + " Z Depth", collidersZDepth[i]); collidersIsInner[i] = EditorGUILayout.Toggle(collidersLayers[i] + " Is Inner Collisions", collidersIsInner[i]); } collidersIsTrigger[i] = EditorGUILayout.Toggle(collidersLayers[i] + " Is Trigger", collidersIsTrigger[i]); } TMComponent.CollidersLayerName = collidersLayers.ToArray(); TMComponent.CollidersWidth = collidersWidth.ToArray(); TMComponent.CollidersZDepth = collidersZDepth.ToArray(); TMComponent.CollidersIsInner = collidersIsInner.ToArray(); TMComponent.CollidersIsTrigger = collidersIsTrigger.ToArray(); } EditorGUILayout.EndToggleGroup(); }
void DoImageLayerPropertyGUI(TiledMapComponent _tiledMapComponent, int layerNumber) { DoPropertiesGUI(_tiledMapComponent, layerNumber, _tiledMapComponent.imageLayersProperties, _tiledMapComponent.imageLayersFoldoutProperties); }