You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
mapbox-sdk/Unity/Editor/PropertyDrawers/ModelingSectionDrawer.cs

93 lines
3.1 KiB

namespace Mapbox.Editor
{
using UnityEngine;
using System;
using System.Collections;
using UnityEditor;
using Mapbox.Unity.Map;
using Mapbox.Editor;
using Mapbox.Unity.MeshGeneration.Modifiers;
public class ModelingSectionDrawer
{
private string objectId = "";
bool showModeling
{
get
{
return EditorPrefs.GetBool(objectId + "VectorSubLayerProperties_showModeling");
}
set
{
EditorPrefs.SetBool(objectId + "VectorSubLayerProperties_showModeling", value);
}
}
static float _lineHeight = EditorGUIUtility.singleLineHeight;
public void DrawUI(SerializedProperty subLayerCoreOptions, SerializedProperty layerProperty, VectorPrimitiveType primitiveTypeProp)
{
objectId = layerProperty.serializedObject.targetObject.GetInstanceID().ToString();
EditorGUILayout.BeginVertical();
showModeling = EditorGUILayout.Foldout(showModeling, new GUIContent { text = "Modeling", tooltip = "This section provides you with options to fine tune your meshes" });
if (showModeling)
{
GUILayout.Space(-_lineHeight);
EditorGUILayout.PropertyField(subLayerCoreOptions);
if (primitiveTypeProp == VectorPrimitiveType.Line)
{
GUILayout.Space(-_lineHeight);
var lineGeometryOptions = layerProperty.FindPropertyRelative("lineGeometryOptions");
EditorGUILayout.PropertyField(lineGeometryOptions);
}
if (primitiveTypeProp != VectorPrimitiveType.Point && primitiveTypeProp != VectorPrimitiveType.Custom)
{
GUILayout.Space(-_lineHeight);
var extrusionOptions = layerProperty.FindPropertyRelative("extrusionOptions");
extrusionOptions.FindPropertyRelative("_selectedLayerName").stringValue = subLayerCoreOptions.FindPropertyRelative("layerName").stringValue;
EditorGUILayout.PropertyField(extrusionOptions);
EditorGUI.BeginChangeCheck();
var snapToTerrainProperty = subLayerCoreOptions.FindPropertyRelative("snapToTerrain");
snapToTerrainProperty.boolValue = EditorGUILayout.Toggle(snapToTerrainProperty.displayName, snapToTerrainProperty.boolValue);
if (EditorGUI.EndChangeCheck())
{
EditorHelper.CheckForModifiedProperty(subLayerCoreOptions);
}
}
if (primitiveTypeProp != VectorPrimitiveType.Point)
{
EditorGUI.BeginChangeCheck();
var combineMeshesProperty = subLayerCoreOptions.FindPropertyRelative("combineMeshes");
combineMeshesProperty.boolValue = EditorGUILayout.Toggle(combineMeshesProperty.displayName, combineMeshesProperty.boolValue);
if (EditorGUI.EndChangeCheck())
{
EditorHelper.CheckForModifiedProperty(subLayerCoreOptions);
}
}
if (primitiveTypeProp != VectorPrimitiveType.Point && primitiveTypeProp != VectorPrimitiveType.Custom)
{
GUILayout.Space(-_lineHeight);
var colliderOptionsProperty = layerProperty.FindPropertyRelative("colliderOptions");
EditorGUI.BeginChangeCheck();
EditorGUILayout.PropertyField(colliderOptionsProperty);
if (EditorGUI.EndChangeCheck())
{
Debug.Log("Collider UI changed");
EditorHelper.CheckForModifiedProperty(colliderOptionsProperty);
}
}
}
EditorGUILayout.EndVertical();
}
}
}