void OnGUI()
{
var dirtyCount = PhysicsVisualizationSettings.dirtyCount;
EditorGUILayout.BeginHorizontal(EditorStyles.toolbar);
GUILayout.FlexibleSpace();
if (GUILayout.Button("Reset", EditorStyles.toolbarButton))
{
PhysicsVisualizationSettings.Reset();
}
EditorGUILayout.EndHorizontal();
m_MainScrollPos = GUILayout.BeginScrollView(m_MainScrollPos);
{
EditorGUILayout.Space();
m_ShowInfoFoldout.value = EditorGUILayout.Foldout(m_ShowInfoFoldout.value, Style.selectedObjectInfo);
if (m_ShowInfoFoldout.value)
{
EditorGUI.indentLevel++;
EditorGUILayout.Space();
EditorGUI.BeginDisabledGroup(true);
var transforms = Selection.transforms;
if (transforms.Length > 0)
{
foreach (var tr in transforms)
{
EditorGUILayout.TextField(Style.gameObject, tr.name);
EditorGUILayout.TextField(Style.scene, tr.gameObject.scene.name);
}
}
EditorGUI.EndDisabledGroup();
Repaint();
EditorGUI.indentLevel--;
}
}
GUILayout.Space(4);
int sceneCount = SceneManager.sceneCount;
List <string> options = new List <string>();
for (int i = 0; i < sceneCount; ++i)
{
var scene = SceneManager.GetSceneAt(i);
options.Add(string.Format("{0} ", scene.name));
}
int newPhysicsSceneMask = EditorGUILayout.MaskField(Style.showPhysicsScenes, PhysicsVisualizationSettings.GetShowPhysicsSceneMask(), options.ToArray());
PhysicsVisualizationSettings.SetShowPhysicsSceneMask(newPhysicsSceneMask);
// Layers
int oldConcatenatedMask = InternalEditorUtility.LayerMaskToConcatenatedLayersMask(
PhysicsVisualizationSettings.GetShowCollisionLayerMask());
int newConcatenatedMask = EditorGUILayout.MaskField(
Style.showLayers, oldConcatenatedMask, InternalEditorUtility.layers);
PhysicsVisualizationSettings.SetShowCollisionLayerMask(
(int)InternalEditorUtility.ConcatenatedLayersMaskToLayerMask(newConcatenatedMask));
// Static Colliders
PhysicsVisualizationSettings.SetShowStaticColliders(EditorGUILayout.Toggle(
Style.showStaticCollider, PhysicsVisualizationSettings.GetShowStaticColliders()));
// Triggers
PhysicsVisualizationSettings.SetShowTriggers(EditorGUILayout.Toggle(
Style.showTriggers, PhysicsVisualizationSettings.GetShowTriggers()));
// Rigidbodies
PhysicsVisualizationSettings.SetShowRigidbodies(EditorGUILayout.Toggle(
Style.showRigibodies, PhysicsVisualizationSettings.GetShowRigidbodies()));
// Kinematic Bodies
PhysicsVisualizationSettings.SetShowKinematicBodies(EditorGUILayout.Toggle(
Style.showKinematicBodies, PhysicsVisualizationSettings.GetShowKinematicBodies()));
// Sleeping Bodies
PhysicsVisualizationSettings.SetShowSleepingBodies(EditorGUILayout.Toggle(
Style.showSleepingBodies, PhysicsVisualizationSettings.GetShowSleepingBodies()));
m_ShowColliderTypeFoldout.value = EditorGUILayout.Foldout(m_ShowColliderTypeFoldout.value, Style.colliderTypes);
if (m_ShowColliderTypeFoldout.value)
{
EditorGUI.indentLevel++;
float oldWidth = EditorGUIUtility.labelWidth;
EditorGUIUtility.labelWidth = 200;
// BoxCollider
PhysicsVisualizationSettings.SetShowBoxColliders(EditorGUILayout.Toggle(
Style.showBoxCollider, PhysicsVisualizationSettings.GetShowBoxColliders()));
// SphereCollider
PhysicsVisualizationSettings.SetShowSphereColliders(EditorGUILayout.Toggle(
Style.showSphereCollider, PhysicsVisualizationSettings.GetShowSphereColliders()));
// CapsuleCollider
PhysicsVisualizationSettings.SetShowCapsuleColliders(EditorGUILayout.Toggle(
Style.showCapsuleCollider, PhysicsVisualizationSettings.GetShowCapsuleColliders()));
// MeshCollider convex
PhysicsVisualizationSettings.SetShowMeshColliders(PhysicsVisualizationSettings.MeshColliderType.Convex, EditorGUILayout.Toggle(
Style.showConvexMeshCollider, PhysicsVisualizationSettings.GetShowMeshColliders(PhysicsVisualizationSettings.MeshColliderType.Convex)));
// MeshCollider non-convex
PhysicsVisualizationSettings.SetShowMeshColliders(PhysicsVisualizationSettings.MeshColliderType.NonConvex, EditorGUILayout.Toggle(
Style.showConcaveMeshCollider, PhysicsVisualizationSettings.GetShowMeshColliders(PhysicsVisualizationSettings.MeshColliderType.NonConvex)));
// TerrainCollider
PhysicsVisualizationSettings.SetShowTerrainColliders(EditorGUILayout.Toggle(
Style.showTerrainCollider, PhysicsVisualizationSettings.GetShowTerrainColliders()));
EditorGUIUtility.labelWidth = oldWidth;
EditorGUI.indentLevel--;
}
GUILayout.Space(4);
// Selection buttons
GUILayout.BeginHorizontal();
bool selectNone = GUILayout.Button(Style.showNone);
bool selectAll = GUILayout.Button(Style.showAll);
if (selectNone || selectAll)
{
PhysicsVisualizationSettings.SetShowForAllFilters(selectAll);
}
GUILayout.EndHorizontal();
m_ColorFoldout.value = EditorGUILayout.Foldout(m_ColorFoldout.value, Style.colors);
if (m_ColorFoldout.value)
{
EditorGUI.indentLevel++;
PhysicsVisualizationSettings.staticColor =
EditorGUILayout.ColorField(Style.staticColor, PhysicsVisualizationSettings.staticColor);
PhysicsVisualizationSettings.triggerColor =
EditorGUILayout.ColorField(Style.triggerColor, PhysicsVisualizationSettings.triggerColor);
PhysicsVisualizationSettings.rigidbodyColor =
EditorGUILayout.ColorField(Style.rigidbodyColor, PhysicsVisualizationSettings.rigidbodyColor);
PhysicsVisualizationSettings.kinematicColor =
EditorGUILayout.ColorField(Style.kinematicColor, PhysicsVisualizationSettings.kinematicColor);
PhysicsVisualizationSettings.sleepingBodyColor =
EditorGUILayout.ColorField(Style.sleepingBodyColor, PhysicsVisualizationSettings.sleepingBodyColor);
PhysicsVisualizationSettings.colorVariance =
EditorGUILayout.Slider(Style.colorVariaition, PhysicsVisualizationSettings.colorVariance, 0f, 1f);
EditorGUI.indentLevel--;
}
m_RenderingFoldout.value = EditorGUILayout.Foldout(m_RenderingFoldout.value, Style.rendering);
if (m_RenderingFoldout.value)
{
EditorGUI.indentLevel++;
PhysicsVisualizationSettings.baseAlpha = 1f - EditorGUILayout.Slider(Style.transparency
, 1f - PhysicsVisualizationSettings.baseAlpha, 0f, 1f);
PhysicsVisualizationSettings.forceOverdraw = EditorGUILayout.Toggle(Style.forceOverdraw
, PhysicsVisualizationSettings.forceOverdraw);
PhysicsVisualizationSettings.viewDistance = EditorGUILayout.FloatField(Style.viewDistance
, PhysicsVisualizationSettings.viewDistance);
PhysicsVisualizationSettings.terrainTilesMax = EditorGUILayout.IntField(Style.terrainTilesMax
, PhysicsVisualizationSettings.terrainTilesMax);
EditorGUI.indentLevel--;
}
if (Unsupported.IsDeveloperMode() || PhysicsVisualizationSettings.devOptions)
{
PhysicsVisualizationSettings.devOptions = EditorGUILayout.Toggle(Style.devOptions
, PhysicsVisualizationSettings.devOptions);
}
if (PhysicsVisualizationSettings.devOptions)
{
PhysicsVisualizationSettings.dotAlpha = EditorGUILayout.Slider(Style.dotAlpha
, PhysicsVisualizationSettings.dotAlpha, -1f, 1f);
PhysicsVisualizationSettings.forceDot = EditorGUILayout.Toggle(Style.forceDot
, PhysicsVisualizationSettings.forceDot);
Tools.hidden = EditorGUILayout.Toggle(Style.toolsHidden
, Tools.hidden);
}
GUILayout.EndScrollView();
if (dirtyCount != PhysicsVisualizationSettings.dirtyCount)
{
RepaintSceneAndGameViews();
}
}