private void DrawObjectHeader(RenderedTransform renderedTransform) { var locked = m_LockedObjects.ContainsKey(renderedTransform.Transform); var lockedPrev = locked; EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("GameObject: " + renderedTransform.Transform.name); GUILayout.FlexibleSpace(); var state = locked ? m_LockedObjects[renderedTransform.Transform] : VisualisationState.None; var statePrev = state; EditorGUIUtility.labelWidth = 50f; EditorGUILayout.LabelField(Style.drawGizmosFor, Style.notExpandWidth); EditorGUIUtility.labelWidth = 0f; state = (VisualisationState)EditorGUILayout.EnumPopup(state); if (locked) { m_LockedObjects[renderedTransform.Transform] = state; renderedTransform.State = state; } else if (state != statePrev) { locked = true; lockedPrev = false; } if (state != statePrev) { RepaintSceneAndGameViews(); } locked = EditorGUILayout.ToggleLeft(Style.lockToggle, locked, Style.maxWidth50); EditorGUILayout.EndHorizontal(); if (locked != lockedPrev) { if (locked) { m_ObjectsToAdd.AddLast(new RenderedTransform(renderedTransform.Transform, state)); } else { m_ObjectsToRemove.AddLast(renderedTransform.Transform); } RepaintSceneAndGameViews(); } }
private void DrawSingleInfoItem(RenderedTransform tr) { if (tr == null) { return; } if (!tr.IsValid()) { m_ObjectsToRemove.AddLast(tr.Transform); return; } DrawObjectHeader(tr); tr.DrawInfoTable(); }
private void UpdateSelection() { var selection = Selection.GetTransforms(SelectionMode.Unfiltered); m_TemporarySelection.Clear(); // Adds rendered transforms that are not part of the m_LockedObjects set foreach (var tr in m_TransformsToRender) { if (!m_LockedObjects.ContainsKey(tr.Transform)) { m_TemporarySelection.Add(tr.Transform); } } var addedTransforms = selection.Except(m_TemporarySelection); var removedTransforms = m_TemporarySelection.Except(selection); foreach (var tr in addedTransforms) { var newItem = new RenderedTransform(tr); if (!m_TransformsToRender.Contains(newItem) && newItem.HasBody) { m_TransformsToRender.Add(newItem); } } foreach (var tr in removedTransforms) { if (!m_LockedObjects.ContainsKey(tr)) { m_TransformsToRender.Remove(tr); } } Repaint(); }