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(); } }
private void DrawFilteringTab() { int sceneCount = SceneManager.sceneCount; m_SceneList.Clear(); for (int i = 0; i < sceneCount; ++i) { var scene = SceneManager.GetSceneAt(i); m_SceneList.Add(string.Format("{0} ", scene.name)); } var sceneArray = m_SceneList.ToArray(); int newPhysicsSceneMask = EditorGUILayout.MaskField(Style.showPhysicsScenes, PhysicsVisualizationSettings.GetShowPhysicsSceneMask(), sceneArray); int newUnitySceneMask = EditorGUILayout.MaskField(Style.showUnityScenes, PhysicsVisualizationSettings.GetShowUnitySceneMask(), sceneArray); PhysicsVisualizationSettings.SetShowPhysicsSceneMask(newPhysicsSceneMask); PhysicsVisualizationSettings.SetShowUnitySceneMask(newUnitySceneMask); // 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())); // Articulation Bodies PhysicsVisualizationSettings.SetShowArticulationBodies(EditorGUILayout.Toggle( Style.showArticulationBodies, PhysicsVisualizationSettings.GetShowArticulationBodies())); // Sleeping Bodies PhysicsVisualizationSettings.SetShowSleepingBodies(EditorGUILayout.Toggle( Style.showSleepingBodies, PhysicsVisualizationSettings.GetShowSleepingBodies())); m_ShowColliderTypeFoldout.value = EditorGUILayout.Foldout(m_ShowColliderTypeFoldout.value, Style.colliderTypes, true); if (m_ShowColliderTypeFoldout.value) { EditorGUI.indentLevel++; float oldWidth = EditorGUIUtility.labelWidth; EditorGUIUtility.labelWidth = 200f; // 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(4f); // Selection buttons GUILayout.BeginHorizontal(); bool selectNone = GUILayout.Button(Style.showNone); bool selectAll = GUILayout.Button(Style.showAll); if (selectNone || selectAll) { PhysicsVisualizationSettings.SetShowForAllFilters(selectAll); } GUILayout.EndHorizontal(); }