diff --git a/Plugins/RuntimeInspector/ExternalResources/ColorWheel/ColorWheelControl.cs b/Plugins/RuntimeInspector/ExternalResources/ColorWheel/ColorWheelControl.cs index 4b232b0..319ce23 100644 --- a/Plugins/RuntimeInspector/ExternalResources/ColorWheel/ColorWheelControl.cs +++ b/Plugins/RuntimeInspector/ExternalResources/ColorWheel/ColorWheelControl.cs @@ -54,6 +54,7 @@ private set private int pointerId = -98765; public delegate void OnColorChangedDelegate( Color32 color ); + public delegate void OnColorCanceledDelegate(); public event OnColorChangedDelegate OnColorChanged; private void Awake() @@ -204,4 +205,4 @@ private void UpdateSelectors() SelectorIn.anchoredPosition = new Vector2( innerSquareHalfSize - inner.x * halfSize, innerSquareHalfSize - inner.y * halfSize ); } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/ArrayField.prefab b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/ArrayField.prefab index 75549ed..20b8819 100644 --- a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/ArrayField.prefab +++ b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/ArrayField.prefab @@ -79,6 +79,23 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &1442605026386866 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224791495359974916} + - component: {fileID: 222724314086852112} + - component: {fileID: 114187166180589176} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1598535024382584 GameObject: m_ObjectHideFlags: 0 @@ -180,7 +197,7 @@ GameObject: - component: {fileID: 222369372132554910} - component: {fileID: 114453996035429050} m_Layer: 5 - m_Name: Text + m_Name: MultiValueText m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -257,6 +274,40 @@ MonoBehaviour: m_PreferredHeight: -1 m_FlexibleWidth: 1 m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &114187166180589176 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1442605026386866} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0 --- !u!114 &114225805896485200 MonoBehaviour: m_ObjectHideFlags: 1 @@ -268,6 +319,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114453996035429050} --- !u!114 &114275421205922078 MonoBehaviour: m_ObjectHideFlags: 1 @@ -370,7 +422,7 @@ MonoBehaviour: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1945068286606850} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -386,7 +438,7 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 12 - m_FontStyle: 0 + m_FontStyle: 2 m_BestFit: 0 m_MinSize: 1 m_MaxSize: 40 @@ -471,7 +523,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114529708751299698} - m_TextComponent: {fileID: 114453996035429050} + m_TextComponent: {fileID: 114187166180589176} m_Placeholder: {fileID: 0} m_ContentType: 2 m_InputType: 0 @@ -516,6 +568,7 @@ MonoBehaviour: m_PreferredHeight: 30 m_FlexibleWidth: -1 m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!114 &114720385070111894 MonoBehaviour: m_ObjectHideFlags: 1 @@ -556,6 +609,7 @@ MonoBehaviour: m_PreferredHeight: -1 m_FlexibleWidth: 1 m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!114 &114756943421610846 MonoBehaviour: m_ObjectHideFlags: 1 @@ -653,6 +707,12 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1062827927879770} +--- !u!222 &222724314086852112 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1442605026386866} --- !u!224 &224176835372005776 RectTransform: m_ObjectHideFlags: 1 @@ -779,6 +839,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224791495359974916} - {fileID: 224927031305913784} m_Father: {fileID: 224514342426570322} m_RootOrder: 2 @@ -788,6 +849,24 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224791495359974916 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1442605026386866} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224766801875445446} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224877475860292282 RectTransform: m_ObjectHideFlags: 1 @@ -812,12 +891,12 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1945068286606850} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224766801875445446} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} diff --git a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/BoolField.prefab b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/BoolField.prefab index b69c0fb..8a3ce30 100644 --- a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/BoolField.prefab +++ b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/BoolField.prefab @@ -22,7 +22,7 @@ GameObject: - component: {fileID: 222134047083143524} - component: {fileID: 114035442555116538} m_Layer: 5 - m_Name: Checkmark + m_Name: Multiple Values m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -113,13 +113,30 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &1980094496858922 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224153647610241276} + - component: {fileID: 222404792447351432} + - component: {fileID: 114274794239922194} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!114 &114035442555116538 MonoBehaviour: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1141577743683944} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -132,9 +149,9 @@ MonoBehaviour: m_Calls: [] m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 21300000, guid: f3e870073e8920542bbcc6ed001b6536, type: 3} + m_Sprite: {fileID: 21300000, guid: 796112823cc06244c9a472de097830dd, type: 3} m_Type: 0 - m_PreserveAspect: 1 + m_PreserveAspect: 0 m_FillCenter: 1 m_FillMethod: 4 m_FillAmount: 1 @@ -158,6 +175,34 @@ MonoBehaviour: m_PreferredHeight: 30 m_FlexibleWidth: -1 m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &114274794239922194 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1980094496858922} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.2794118, g: 0.2629758, b: 0.2629758, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: f3e870073e8920542bbcc6ed001b6536, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 --- !u!114 &114392269213132144 MonoBehaviour: m_ObjectHideFlags: 1 @@ -208,6 +253,7 @@ MonoBehaviour: visibleArea: {fileID: 114850040097317468} toggleBackground: {fileID: 114669642334063456} input: {fileID: 114536213069398136} + multiValueImage: {fileID: 114035442555116538} --- !u!114 &114536213069398136 MonoBehaviour: m_ObjectHideFlags: 1 @@ -245,7 +291,7 @@ MonoBehaviour: m_Interactable: 1 m_TargetGraphic: {fileID: 114669642334063456} toggleTransition: 0 - graphic: {fileID: 114035442555116538} + graphic: {fileID: 114274794239922194} m_Group: {fileID: 0} onValueChanged: m_PersistentCalls: @@ -344,12 +390,18 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1141577743683944} ---- !u!224 &224421057578685482 +--- !u!222 &222404792447351432 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1980094496858922} +--- !u!224 &224153647610241276 RectTransform: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1141577743683944} + m_GameObject: {fileID: 1980094496858922} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} @@ -362,6 +414,24 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224421057578685482 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1141577743683944} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224554607098213544} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 8, y: 1} + m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224445183667736922 RectTransform: m_ObjectHideFlags: 1 @@ -411,6 +481,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224153647610241276} - {fileID: 224421057578685482} m_Father: {fileID: 224605210325885518} m_RootOrder: 0 diff --git a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/BoundsField.prefab b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/BoundsField.prefab index 02a52a3..5b5a52a 100644 --- a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/BoundsField.prefab +++ b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/BoundsField.prefab @@ -94,7 +94,7 @@ GameObject: - component: {fileID: 222945206328888462} - component: {fileID: 114352066062635742} m_Layer: 5 - m_Name: Text + m_Name: Multiple Values m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -170,6 +170,23 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &1223593793596666 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224668339740071086} + - component: {fileID: 222650949971052274} + - component: {fileID: 114026568273735410} + m_Layer: 5 + m_Name: Multiple Values + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1246678468924652 GameObject: m_ObjectHideFlags: 1 @@ -255,6 +272,23 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &1399293181032872 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224994870884087692} + - component: {fileID: 222035110115158146} + - component: {fileID: 114901380307785010} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1458717949134302 GameObject: m_ObjectHideFlags: 0 @@ -271,6 +305,23 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &1482806020178366 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224701405833138624} + - component: {fileID: 222052978684887900} + - component: {fileID: 114050759769237776} + m_Layer: 5 + m_Name: Multiple Values + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1530807653223560 GameObject: m_ObjectHideFlags: 1 @@ -282,7 +333,7 @@ GameObject: - component: {fileID: 222119897316309336} - component: {fileID: 114450829785541304} m_Layer: 5 - m_Name: Text + m_Name: Multiple Values m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -305,6 +356,23 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &1575870288377720 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224986170971760922} + - component: {fileID: 222821487197317330} + - component: {fileID: 114902758773120740} + m_Layer: 5 + m_Name: Multiple Values + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1582369411831946 GameObject: m_ObjectHideFlags: 1 @@ -352,6 +420,23 @@ GameObject: - component: {fileID: 222558017704345528} - component: {fileID: 114966902808640640} m_Layer: 5 + m_Name: Multiple Values + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1676179184053028 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224731557921969582} + - component: {fileID: 222012682626062768} + - component: {fileID: 114109412910140602} + m_Layer: 5 m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} @@ -426,6 +511,23 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &1842779733665650 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224389946009065786} + - component: {fileID: 222498797733917840} + - component: {fileID: 114184403813805818} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1847771735877762 GameObject: m_ObjectHideFlags: 1 @@ -513,6 +615,39 @@ MonoBehaviour: m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: Variable +--- !u!114 &114026568273735410 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1223593793596666} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: --- !u!114 &114029476566299022 MonoBehaviour: m_ObjectHideFlags: 1 @@ -532,6 +667,39 @@ MonoBehaviour: m_Calls: [] m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &114050759769237776 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1482806020178366} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: --- !u!114 &114055606913449932 MonoBehaviour: m_ObjectHideFlags: 1 @@ -568,7 +736,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114335771829431722} - m_TextComponent: {fileID: 114966902808640640} + m_TextComponent: {fileID: 114901380307785010} m_Placeholder: {fileID: 0} m_ContentType: 3 m_InputType: 0 @@ -595,6 +763,39 @@ MonoBehaviour: m_CaretBlinkRate: 0.85 m_CaretWidth: 1 m_ReadOnly: 0 +--- !u!114 &114109412910140602 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1676179184053028} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: --- !u!114 &114134249215877538 MonoBehaviour: m_ObjectHideFlags: 1 @@ -639,6 +840,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114966902808640640} --- !u!114 &114147682948153138 MonoBehaviour: m_ObjectHideFlags: 1 @@ -671,6 +873,40 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114902758773120740} +--- !u!114 &114184403813805818 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1842779733665650} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: --- !u!114 &114190805665524210 MonoBehaviour: m_ObjectHideFlags: 1 @@ -703,7 +939,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: --- !u!114 &114213846257233314 MonoBehaviour: m_ObjectHideFlags: 1 @@ -715,6 +951,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114450829785541304} --- !u!114 &114259268299294706 MonoBehaviour: m_ObjectHideFlags: 1 @@ -877,7 +1114,7 @@ MonoBehaviour: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1120424472129546} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -893,7 +1130,7 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 12 - m_FontStyle: 0 + m_FontStyle: 2 m_BestFit: 0 m_MinSize: 1 m_MaxSize: 40 @@ -903,7 +1140,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: --- !u!114 &114361039051293932 MonoBehaviour: m_ObjectHideFlags: 1 @@ -922,6 +1159,7 @@ MonoBehaviour: m_PreferredHeight: 90 m_FlexibleWidth: -1 m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!114 &114365500883117848 MonoBehaviour: m_ObjectHideFlags: 1 @@ -1048,7 +1286,7 @@ MonoBehaviour: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1530807653223560} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -1064,7 +1302,7 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 12 - m_FontStyle: 0 + m_FontStyle: 2 m_BestFit: 0 m_MinSize: 1 m_MaxSize: 40 @@ -1074,7 +1312,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: --- !u!114 &114515268287708124 MonoBehaviour: m_ObjectHideFlags: 1 @@ -1308,7 +1546,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: --- !u!114 &114672237646355086 MonoBehaviour: m_ObjectHideFlags: 1 @@ -1405,7 +1643,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114788104262272420} - m_TextComponent: {fileID: 114352066062635742} + m_TextComponent: {fileID: 114184403813805818} m_Placeholder: {fileID: 0} m_ContentType: 3 m_InputType: 0 @@ -1557,7 +1795,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: --- !u!114 &114788104262272420 MonoBehaviour: m_ObjectHideFlags: 1 @@ -1602,6 +1840,72 @@ MonoBehaviour: visibleArea: {fileID: 114029476566299022} inputCenter: {fileID: 114521410507127272} inputExtents: {fileID: 114147682948153138} +--- !u!114 &114901380307785010 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1399293181032872} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!114 &114902758773120740 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1575870288377720} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: --- !u!114 &114925707431254752 MonoBehaviour: m_ObjectHideFlags: 1 @@ -1613,6 +1917,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114026568273735410} --- !u!114 &114928288700428870 MonoBehaviour: m_ObjectHideFlags: 1 @@ -1624,6 +1929,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114050759769237776} --- !u!114 &114961557658533666 MonoBehaviour: m_ObjectHideFlags: 1 @@ -1660,7 +1966,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114365500883117848} - m_TextComponent: {fileID: 114450829785541304} + m_TextComponent: {fileID: 114109412910140602} m_Placeholder: {fileID: 0} m_ContentType: 3 m_InputType: 0 @@ -1693,7 +1999,7 @@ MonoBehaviour: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1641444793329472} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -1709,7 +2015,7 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 12 - m_FontStyle: 0 + m_FontStyle: 2 m_BestFit: 0 m_MinSize: 1 m_MaxSize: 40 @@ -1719,7 +2025,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: --- !u!114 &114967156303060704 MonoBehaviour: m_ObjectHideFlags: 1 @@ -1731,6 +2037,25 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114352066062635742} +--- !u!222 &222012682626062768 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1676179184053028} +--- !u!222 &222035110115158146 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1399293181032872} +--- !u!222 &222052978684887900 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1482806020178366} --- !u!222 &222100440482833354 CanvasRenderer: m_ObjectHideFlags: 1 @@ -1803,6 +2128,12 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1065238761702608} +--- !u!222 &222498797733917840 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1842779733665650} --- !u!222 &222503552924466336 CanvasRenderer: m_ObjectHideFlags: 1 @@ -1833,6 +2164,12 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1721813669425916} +--- !u!222 &222650949971052274 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1223593793596666} --- !u!222 &222674614172947052 CanvasRenderer: m_ObjectHideFlags: 1 @@ -1857,6 +2194,12 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1847771735877762} +--- !u!222 &222821487197317330 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1575870288377720} --- !u!222 &222903736636081602 CanvasRenderer: m_ObjectHideFlags: 1 @@ -1971,12 +2314,12 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1641444793329472} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] - m_Father: {fileID: 224752043986739126} - m_RootOrder: 0 + m_Father: {fileID: 224219808835786270} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2012,6 +2355,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 224766581398746504} + - {fileID: 224193792167558442} m_Father: {fileID: 224763940306421690} m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -2056,7 +2400,8 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - - {fileID: 224897689256755830} + - {fileID: 224389946009065786} + - {fileID: 224986170971760922} m_Father: {fileID: 224304948086074508} m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -2076,6 +2421,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 224068219549843746} + - {fileID: 224897689256755830} m_Father: {fileID: 224763940306421690} m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -2084,6 +2430,24 @@ RectTransform: m_AnchoredPosition: {x: 5, y: 0} m_SizeDelta: {x: -10, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224389946009065786 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1842779733665650} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224362526517553988} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224408981205060130 RectTransform: m_ObjectHideFlags: 1 @@ -2134,7 +2498,8 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - - {fileID: 224873283063211684} + - {fileID: 224731557921969582} + - {fileID: 224668339740071086} m_Father: {fileID: 224304948086074508} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -2215,6 +2580,60 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 1, y: 0.5} +--- !u!224 &224668339740071086 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1223593793596666} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224494494639413506} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224701405833138624 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1482806020178366} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224752043986739126} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224731557921969582 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1676179184053028} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224494494639413506} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224752043986739126 RectTransform: m_ObjectHideFlags: 1 @@ -2225,7 +2644,8 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - - {fileID: 224193792167558442} + - {fileID: 224994870884087692} + - {fileID: 224701405833138624} m_Father: {fileID: 224304948086074508} m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -2338,12 +2758,12 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1530807653223560} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] - m_Father: {fileID: 224494494639413506} - m_RootOrder: 0 + m_Father: {fileID: 224908803743889544} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2356,12 +2776,12 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1120424472129546} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] - m_Father: {fileID: 224362526517553988} - m_RootOrder: 0 + m_Father: {fileID: 224363364145662452} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -2379,6 +2799,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 224781264660964982} + - {fileID: 224873283063211684} m_Father: {fileID: 224763940306421690} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -2387,3 +2808,39 @@ RectTransform: m_AnchoredPosition: {x: 5, y: 0} m_SizeDelta: {x: -10, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224986170971760922 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1575870288377720} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224362526517553988} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224994870884087692 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1399293181032872} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224752043986739126} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/ColorField.prefab b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/ColorField.prefab index f820cda..6a48ee8 100644 --- a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/ColorField.prefab +++ b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/ColorField.prefab @@ -81,6 +81,23 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &1426964625615318 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224301254229814318} + - component: {fileID: 222190239802760858} + - component: {fileID: 114644642171927958} + m_Layer: 5 + m_Name: Multiple Values + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1679574766137816 GameObject: m_ObjectHideFlags: 0 @@ -213,6 +230,39 @@ MonoBehaviour: m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: Variable +--- !u!114 &114644642171927958 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1426964625615318} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Multiple Values --- !u!114 &114671372104132192 MonoBehaviour: m_ObjectHideFlags: 1 @@ -258,6 +308,7 @@ MonoBehaviour: m_PreferredHeight: 30 m_FlexibleWidth: -1 m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!114 &114715017607215960 MonoBehaviour: m_ObjectHideFlags: 1 @@ -313,12 +364,19 @@ MonoBehaviour: visibleArea: {fileID: 114671372104132192} colorPickerArea: {fileID: 224554945129696172} inputColor: {fileID: 114715017607215960} + multiValueText: {fileID: 114644642171927958} --- !u!222 &222051398513448336 CanvasRenderer: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1148050516598388} +--- !u!222 &222190239802760858 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1426964625615318} --- !u!222 &222375078608078674 CanvasRenderer: m_ObjectHideFlags: 1 @@ -382,6 +440,24 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224301254229814318 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1426964625615318} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224554945129696172} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224495929638887596 RectTransform: m_ObjectHideFlags: 1 @@ -412,6 +488,7 @@ RectTransform: m_Children: - {fileID: 224916674887825828} - {fileID: 224495929638887596} + - {fileID: 224301254229814318} m_Father: {fileID: 224279120792953014} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/EnumField.prefab b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/EnumField.prefab index a18118e..b47302d 100644 --- a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/EnumField.prefab +++ b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/EnumField.prefab @@ -61,6 +61,23 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &1387377326639322 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224439289795867088} + - component: {fileID: 222720240364842176} + - component: {fileID: 114584467764881216} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1456809758303490 GameObject: m_ObjectHideFlags: 1 @@ -169,7 +186,7 @@ GameObject: - component: {fileID: 222767189529501638} - component: {fileID: 114219520815773778} m_Layer: 5 - m_Name: Label + m_Name: Multiple Values m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -324,6 +341,7 @@ MonoBehaviour: m_PreferredHeight: 30 m_FlexibleWidth: -1 m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!114 &114098797441886034 MonoBehaviour: m_ObjectHideFlags: 1 @@ -433,7 +451,7 @@ MonoBehaviour: m_Interactable: 1 m_TargetGraphic: {fileID: 114405046876110564} m_Template: {fileID: 224854286026678716} - m_CaptionText: {fileID: 114219520815773778} + m_CaptionText: {fileID: 114584467764881216} m_CaptionImage: {fileID: 0} m_ItemText: {fileID: 114253684249676600} m_ItemImage: {fileID: 0} @@ -548,6 +566,7 @@ MonoBehaviour: templateCheckmark: {fileID: 114317618226792586} templateText: {fileID: 114253684249676600} input: {fileID: 114133384512514130} + multiValueText: {fileID: 114219520815773778} --- !u!114 &114198838805767348 MonoBehaviour: m_ObjectHideFlags: 1 @@ -581,7 +600,7 @@ MonoBehaviour: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1705535794490596} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -597,7 +616,7 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 12 - m_FontStyle: 0 + m_FontStyle: 2 m_BestFit: 0 m_MinSize: 1 m_MaxSize: 40 @@ -607,7 +626,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: Option A + m_Text: Multiple Values --- !u!114 &114253684249676600 MonoBehaviour: m_ObjectHideFlags: 1 @@ -755,6 +774,39 @@ MonoBehaviour: m_FillAmount: 1 m_FillClockwise: 1 m_FillOrigin: 0 +--- !u!114 &114584467764881216 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1387377326639322} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Option A --- !u!114 &114601778108122522 MonoBehaviour: m_ObjectHideFlags: 1 @@ -833,6 +885,12 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1800583833829656} +--- !u!222 &222720240364842176 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1387377326639322} --- !u!222 &222767189529501638 CanvasRenderer: m_ObjectHideFlags: 1 @@ -955,6 +1013,24 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224439289795867088 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1387377326639322} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224485359870051676} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: 0} + m_SizeDelta: {x: -35, y: -4} + m_Pivot: {x: 0, y: 0.5} --- !u!224 &224476851360896102 RectTransform: m_ObjectHideFlags: 1 @@ -983,9 +1059,10 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - - {fileID: 224673874819871544} + - {fileID: 224439289795867088} - {fileID: 224792848389184348} - {fileID: 224854286026678716} + - {fileID: 224673874819871544} m_Father: {fileID: 224526477923251334} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -1077,17 +1154,17 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1705535794490596} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224485359870051676} - m_RootOrder: 0 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 10, y: 0} - m_SizeDelta: {x: -35, y: -4} + m_SizeDelta: {x: -12, y: -4} m_Pivot: {x: 0, y: 0.5} --- !u!224 &224688293831919758 RectTransform: diff --git a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/NumberField.prefab b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/NumberField.prefab index a7c2f00..eb77360 100644 --- a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/NumberField.prefab +++ b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/NumberField.prefab @@ -58,7 +58,7 @@ GameObject: - component: {fileID: 222402326274376618} - component: {fileID: 114866404084585718} m_Layer: 5 - m_Name: Text + m_Name: Multiple Values m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -81,6 +81,23 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &1728139060907174 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224844373660811794} + - component: {fileID: 222322966617520084} + - component: {fileID: 114115602586896324} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1940609639517178 GameObject: m_ObjectHideFlags: 0 @@ -116,6 +133,40 @@ MonoBehaviour: m_PreferredHeight: 30 m_FlexibleWidth: -1 m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &114115602586896324 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1728139060907174} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: --- !u!114 &114392269213132144 MonoBehaviour: m_ObjectHideFlags: 1 @@ -212,7 +263,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114396120391300790} - m_TextComponent: {fileID: 114866404084585718} + m_TextComponent: {fileID: 114115602586896324} m_Placeholder: {fileID: 0} m_ContentType: 2 m_InputType: 0 @@ -277,6 +328,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114866404084585718} --- !u!114 &114833464836618182 MonoBehaviour: m_ObjectHideFlags: 1 @@ -299,7 +351,7 @@ MonoBehaviour: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1376877634659378} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -315,7 +367,7 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 12 - m_FontStyle: 0 + m_FontStyle: 2 m_BestFit: 0 m_MinSize: 1 m_MaxSize: 40 @@ -325,13 +377,19 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: Multiple Values --- !u!222 &222133981671437382 CanvasRenderer: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1643231647150954} +--- !u!222 &222322966617520084 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1728139060907174} --- !u!222 &222402326274376618 CanvasRenderer: m_ObjectHideFlags: 1 @@ -356,12 +414,12 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1376877634659378} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224596619684407090} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -417,6 +475,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224844373660811794} - {fileID: 224020715454831392} m_Father: {fileID: 224526477923251334} m_RootOrder: 2 @@ -444,3 +503,21 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 1, y: 0.5} +--- !u!224 &224844373660811794 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1728139060907174} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224596619684407090} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/NumberRangeField.prefab b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/NumberRangeField.prefab index d712a6e..a6fa291 100644 --- a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/NumberRangeField.prefab +++ b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/NumberRangeField.prefab @@ -80,6 +80,23 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &1247268830628742 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224829862136549430} + - component: {fileID: 222520880656008872} + - component: {fileID: 114869763494195500} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1286474427938238 GameObject: m_ObjectHideFlags: 0 @@ -110,7 +127,7 @@ GameObject: - component: {fileID: 222402326274376618} - component: {fileID: 114866404084585718} m_Layer: 5 - m_Name: Text + m_Name: Multiple Values m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -185,6 +202,7 @@ MonoBehaviour: m_PreferredHeight: 30 m_FlexibleWidth: -1 m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!114 &114392269213132144 MonoBehaviour: m_ObjectHideFlags: 1 @@ -308,7 +326,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114396120391300790} - m_TextComponent: {fileID: 114866404084585718} + m_TextComponent: {fileID: 114869763494195500} m_Placeholder: {fileID: 0} m_ContentType: 2 m_InputType: 0 @@ -492,12 +510,46 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114866404084585718} --- !u!114 &114866404084585718 MonoBehaviour: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1376877634659378} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: '-' +--- !u!114 &114869763494195500 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1247268830628742} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} @@ -524,7 +576,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: --- !u!114 &114932249639052388 MonoBehaviour: m_ObjectHideFlags: 1 @@ -557,6 +609,12 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1376877634659378} +--- !u!222 &222520880656008872 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1247268830628742} --- !u!222 &222757270367772148 CanvasRenderer: m_ObjectHideFlags: 1 @@ -587,12 +645,12 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1376877634659378} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224596619684407090} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -653,7 +711,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 21, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224526005705776804 RectTransform: @@ -724,6 +782,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224829862136549430} - {fileID: 224020715454831392} m_Father: {fileID: 224526477923251334} m_RootOrder: 3 @@ -751,3 +810,21 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 1, y: 0.5} +--- !u!224 &224829862136549430 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1247268830628742} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224596619684407090} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/RectField.prefab b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/RectField.prefab index cc97ab1..5eda2f6 100644 --- a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/RectField.prefab +++ b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/RectField.prefab @@ -22,6 +22,40 @@ GameObject: - component: {fileID: 222181732576251360} - component: {fileID: 114941499582219442} m_Layer: 5 + m_Name: Multiple Values + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1039301001222894 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224032033408581066} + - component: {fileID: 222191834188109910} + - component: {fileID: 114551286591503858} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1045556806768590 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224952173729017506} + - component: {fileID: 222168064180978854} + - component: {fileID: 114999966583975478} + m_Layer: 5 m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} @@ -126,6 +160,23 @@ GameObject: - component: {fileID: 222457643284040478} - component: {fileID: 114710439323140872} m_Layer: 5 + m_Name: Multiple Values + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1535066230494762 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224805321188492866} + - component: {fileID: 222640647304863976} + - component: {fileID: 114954200453121836} + m_Layer: 5 m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} @@ -143,7 +194,7 @@ GameObject: - component: {fileID: 222714858170274312} - component: {fileID: 114166027975421514} m_Layer: 5 - m_Name: Text + m_Name: Multiple Values m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -240,6 +291,23 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &1897459089302612 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224870654508567672} + - component: {fileID: 222135850587721036} + - component: {fileID: 114463095299583594} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1900475058963456 GameObject: m_ObjectHideFlags: 1 @@ -251,7 +319,7 @@ GameObject: - component: {fileID: 222095905876431434} - component: {fileID: 114787362990059292} m_Layer: 5 - m_Name: Text + m_Name: Multiple Values m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -318,13 +386,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114787362990059292} --- !u!114 &114166027975421514 MonoBehaviour: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1611280290957366} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -340,7 +409,7 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 12 - m_FontStyle: 0 + m_FontStyle: 2 m_BestFit: 0 m_MinSize: 1 m_MaxSize: 40 @@ -350,7 +419,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: Multiple Values --- !u!114 &114184647969537138 MonoBehaviour: m_ObjectHideFlags: 1 @@ -385,6 +454,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114166027975421514} --- !u!114 &114210769224921834 MonoBehaviour: m_ObjectHideFlags: 1 @@ -456,6 +526,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114941499582219442} --- !u!114 &114361039051293932 MonoBehaviour: m_ObjectHideFlags: 1 @@ -474,6 +545,7 @@ MonoBehaviour: m_PreferredHeight: 60 m_FlexibleWidth: -1 m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!114 &114412592979172050 MonoBehaviour: m_ObjectHideFlags: 1 @@ -501,6 +573,39 @@ MonoBehaviour: m_FillAmount: 1 m_FillClockwise: 1 m_FillOrigin: 0 +--- !u!114 &114463095299583594 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1897459089302612} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: --- !u!114 &114464853246074690 MonoBehaviour: m_ObjectHideFlags: 1 @@ -564,7 +669,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114658872597759408} - m_TextComponent: {fileID: 114941499582219442} + m_TextComponent: {fileID: 114463095299583594} m_Placeholder: {fileID: 0} m_ContentType: 3 m_InputType: 0 @@ -618,6 +723,39 @@ MonoBehaviour: m_FillAmount: 1 m_FillClockwise: 1 m_FillOrigin: 0 +--- !u!114 &114551286591503858 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1039301001222894} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: --- !u!114 &114658872597759408 MonoBehaviour: m_ObjectHideFlags: 1 @@ -651,7 +789,7 @@ MonoBehaviour: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1379564540242972} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -667,7 +805,7 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 12 - m_FontStyle: 0 + m_FontStyle: 2 m_BestFit: 0 m_MinSize: 1 m_MaxSize: 40 @@ -677,7 +815,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: Multiple Values --- !u!114 &114737955006361974 MonoBehaviour: m_ObjectHideFlags: 1 @@ -722,6 +860,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114710439323140872} --- !u!114 &114780910944277900 MonoBehaviour: m_ObjectHideFlags: 1 @@ -791,7 +930,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114464853246074690} - m_TextComponent: {fileID: 114710439323140872} + m_TextComponent: {fileID: 114551286591503858} m_Placeholder: {fileID: 0} m_ContentType: 3 m_InputType: 0 @@ -824,7 +963,7 @@ MonoBehaviour: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1900475058963456} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -840,7 +979,7 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 12 - m_FontStyle: 0 + m_FontStyle: 2 m_BestFit: 0 m_MinSize: 1 m_MaxSize: 40 @@ -850,7 +989,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: Multiple Values --- !u!114 &114808905084786712 MonoBehaviour: m_ObjectHideFlags: 1 @@ -920,7 +1059,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114210769224921834} - m_TextComponent: {fileID: 114787362990059292} + m_TextComponent: {fileID: 114954200453121836} m_Placeholder: {fileID: 0} m_ContentType: 3 m_InputType: 0 @@ -983,7 +1122,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114412592979172050} - m_TextComponent: {fileID: 114166027975421514} + m_TextComponent: {fileID: 114999966583975478} m_Placeholder: {fileID: 0} m_ContentType: 3 m_InputType: 0 @@ -1016,6 +1155,39 @@ MonoBehaviour: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1008762132115182} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Multiple Values +--- !u!114 &114954200453121836 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1535066230494762} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} @@ -1042,25 +1214,76 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: +--- !u!114 &114999966583975478 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1045556806768590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: --- !u!222 &222095905876431434 CanvasRenderer: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1900475058963456} +--- !u!222 &222135850587721036 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1897459089302612} --- !u!222 &222147072476600412 CanvasRenderer: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1793314642395648} +--- !u!222 &222168064180978854 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1045556806768590} --- !u!222 &222181732576251360 CanvasRenderer: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1008762132115182} +--- !u!222 &222191834188109910 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1039301001222894} --- !u!222 &222289058978744004 CanvasRenderer: m_ObjectHideFlags: 1 @@ -1097,6 +1320,12 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1226669742999036} +--- !u!222 &222640647304863976 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1535066230494762} --- !u!222 &222709620941666268 CanvasRenderer: m_ObjectHideFlags: 1 @@ -1127,6 +1356,24 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1820922636172836} +--- !u!224 &224032033408581066 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1039301001222894} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224873305848310042} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224042620805961560 RectTransform: m_ObjectHideFlags: 1 @@ -1151,12 +1398,12 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1900475058963456} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224768393137514980} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1187,12 +1434,12 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1008762132115182} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224642533607496354} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1209,6 +1456,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224952173729017506} - {fileID: 224462967269047724} m_Father: {fileID: 224408981205060130} m_RootOrder: 9 @@ -1252,12 +1500,12 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1611280290957366} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224248655432618556} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1310,6 +1558,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224870654508567672} - {fileID: 224129401627401748} m_Father: {fileID: 224408981205060130} m_RootOrder: 3 @@ -1325,12 +1574,12 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1379564540242972} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224873305848310042} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1365,6 +1614,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224805321188492866} - {fileID: 224058025790986986} m_Father: {fileID: 224408981205060130} m_RootOrder: 7 @@ -1374,6 +1624,42 @@ RectTransform: m_AnchoredPosition: {x: 5, y: 0} m_SizeDelta: {x: -10, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224805321188492866 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1535066230494762} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224768393137514980} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224870654508567672 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1897459089302612} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224642533607496354} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224873305848310042 RectTransform: m_ObjectHideFlags: 1 @@ -1384,6 +1670,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224032033408581066} - {fileID: 224654663665922646} m_Father: {fileID: 224408981205060130} m_RootOrder: 5 @@ -1411,3 +1698,21 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0} m_SizeDelta: {x: 10, y: 0} m_Pivot: {x: 0, y: 0.5} +--- !u!224 &224952173729017506 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1045556806768590} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224248655432618556} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/StringField.prefab b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/StringField.prefab index 9beab80..34d7cce 100644 --- a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/StringField.prefab +++ b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/StringField.prefab @@ -11,6 +11,23 @@ Prefab: m_ParentPrefab: {fileID: 0} m_RootGameObject: {fileID: 1796896974564444} m_IsPrefabParent: 1 +--- !u!1 &1224228375111294 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224982522955079528} + - component: {fileID: 222078438352862420} + - component: {fileID: 114431970923371918} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1511741054932864 GameObject: m_ObjectHideFlags: 0 @@ -56,7 +73,7 @@ GameObject: - component: {fileID: 222414506726248156} - component: {fileID: 114935810533729036} m_Layer: 5 - m_Name: Text + m_Name: Multiple Values m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -131,6 +148,39 @@ MonoBehaviour: m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: Variable +--- !u!114 &114431970923371918 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1224228375111294} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: --- !u!114 &114575060057000574 MonoBehaviour: m_ObjectHideFlags: 1 @@ -142,6 +192,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114935810533729036} --- !u!114 &114763654470415506 MonoBehaviour: m_ObjectHideFlags: 1 @@ -205,7 +256,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114763654470415506} - m_TextComponent: {fileID: 114935810533729036} + m_TextComponent: {fileID: 114431970923371918} m_Placeholder: {fileID: 0} m_ContentType: 0 m_InputType: 0 @@ -250,6 +301,7 @@ MonoBehaviour: m_PreferredHeight: 30 m_FlexibleWidth: -1 m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!114 &114857758294968686 MonoBehaviour: m_ObjectHideFlags: 1 @@ -299,7 +351,7 @@ MonoBehaviour: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1713459586382418} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -315,7 +367,7 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 12 - m_FontStyle: 0 + m_FontStyle: 2 m_BestFit: 0 m_MinSize: 1 m_MaxSize: 40 @@ -325,7 +377,13 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: + m_Text: Multiple Values +--- !u!222 &222078438352862420 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1224228375111294} --- !u!222 &222131981297470150 CanvasRenderer: m_ObjectHideFlags: 1 @@ -360,6 +418,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224982522955079528} - {fileID: 224187196061978012} m_Father: {fileID: 224369845103786022} m_RootOrder: 2 @@ -375,12 +434,12 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1713459586382418} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224016399384397056} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -444,3 +503,21 @@ RectTransform: m_AnchoredPosition: {x: -2.5, y: 0} m_SizeDelta: {x: 5, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224982522955079528 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1224228375111294} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224016399384397056} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} diff --git a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/TextureReferenceField.prefab b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/TextureReferenceField.prefab index 9236527..70a6680 100644 --- a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/TextureReferenceField.prefab +++ b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/TextureReferenceField.prefab @@ -11,6 +11,23 @@ Prefab: m_ParentPrefab: {fileID: 0} m_RootGameObject: {fileID: 1165314373957364} m_IsPrefabParent: 1 +--- !u!1 &1035436505881954 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224009693478993426} + - component: {fileID: 222653541550919088} + - component: {fileID: 114558449660129940} + m_Layer: 5 + m_Name: ReferenceName + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1071523626071690 GameObject: m_ObjectHideFlags: 0 @@ -56,7 +73,7 @@ GameObject: - component: {fileID: 222402326274376618} - component: {fileID: 114866404084585718} m_Layer: 5 - m_Name: ReferenceName + m_Name: Multiple Values m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -133,6 +150,7 @@ MonoBehaviour: m_PreferredHeight: 60 m_FlexibleWidth: -1 m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!114 &114355892243437938 MonoBehaviour: m_ObjectHideFlags: 1 @@ -206,6 +224,39 @@ MonoBehaviour: m_FillAmount: 1 m_FillClockwise: 1 m_FillOrigin: 0 +--- !u!114 &114558449660129940 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1035436505881954} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 12 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: None --- !u!114 &114611434882133494 MonoBehaviour: m_ObjectHideFlags: 1 @@ -248,11 +299,13 @@ MonoBehaviour: variableNameText: {fileID: 114392269213132144} variableNameMask: {fileID: 114611434882133494} visibleArea: {fileID: 114611434882133494} + referencePickerArea: {fileID: 0} input: {fileID: 114822539259664032} inspectReferenceButton: {fileID: 0} background: {fileID: 114467808597019330} - referenceNameText: {fileID: 114866404084585718} + referenceNameText: {fileID: 114558449660129940} referencePreview: {fileID: 114938622967388140} + multiValueText: {fileID: 114866404084585718} --- !u!114 &114822539259664032 MonoBehaviour: m_ObjectHideFlags: 1 @@ -270,7 +323,7 @@ MonoBehaviour: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1376877634659378} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -285,10 +338,10 @@ MonoBehaviour: Version=1.0.0.0, Culture=neutral, PublicKeyToken=null m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 12 - m_FontStyle: 0 + m_FontSize: 11 + m_FontStyle: 2 m_BestFit: 1 - m_MinSize: 10 + m_MinSize: 1 m_MaxSize: 12 m_Alignment: 1 m_AlignByGeometry: 0 @@ -296,7 +349,7 @@ MonoBehaviour: m_HorizontalOverflow: 0 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: None + m_Text: Multiple Values --- !u!114 &114938622967388140 MonoBehaviour: m_ObjectHideFlags: 1 @@ -347,18 +400,24 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1376877634659378} +--- !u!222 &222653541550919088 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1035436505881954} --- !u!222 &222968206659602502 CanvasRenderer: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1789352874964354} ---- !u!224 &224020715454831392 +--- !u!224 &224009693478993426 RectTransform: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1376877634659378} + m_GameObject: {fileID: 1035436505881954} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} @@ -371,6 +430,24 @@ RectTransform: m_AnchoredPosition: {x: -2, y: -1.5} m_SizeDelta: {x: -4, y: -3} m_Pivot: {x: 1, y: 0.5} +--- !u!224 &224020715454831392 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1376877634659378} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224824289045617610} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224526477923251334 RectTransform: m_ObjectHideFlags: 1 @@ -457,6 +534,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 224713015777195320} + - {fileID: 224009693478993426} - {fileID: 224020715454831392} m_Father: {fileID: 224526477923251334} m_RootOrder: 2 diff --git a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/Vector2Field.prefab b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/Vector2Field.prefab index 5c9dcf1..8f21e8d 100644 --- a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/Vector2Field.prefab +++ b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/Vector2Field.prefab @@ -56,7 +56,7 @@ GameObject: - component: {fileID: 222706576259915428} - component: {fileID: 114106142625821738} m_Layer: 5 - m_Name: Text + m_Name: Multiple Values m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -126,7 +126,7 @@ GameObject: - component: {fileID: 222165401071646268} - component: {fileID: 114722250403402168} m_Layer: 5 - m_Name: Text + m_Name: Multiple Values m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -168,12 +168,79 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &1892170137997372 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224054505011564878} + - component: {fileID: 222094715834413884} + - component: {fileID: 114343051951438206} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1926707827140976 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224273446395797322} + - component: {fileID: 222884107223345648} + - component: {fileID: 114156898496112258} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!114 &114106142625821738 MonoBehaviour: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1077241982334262} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: '-' +--- !u!114 &114156898496112258 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1926707827140976} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} @@ -200,7 +267,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: --- !u!114 &114170592490784388 MonoBehaviour: m_ObjectHideFlags: 1 @@ -219,6 +286,7 @@ MonoBehaviour: m_PreferredHeight: 30 m_FlexibleWidth: -1 m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!114 &114173402164302364 MonoBehaviour: m_ObjectHideFlags: 1 @@ -255,7 +323,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114227106180913062} - m_TextComponent: {fileID: 114722250403402168} + m_TextComponent: {fileID: 114156898496112258} m_Placeholder: {fileID: 0} m_ContentType: 3 m_InputType: 0 @@ -328,6 +396,39 @@ MonoBehaviour: inputY: {fileID: 114427113921810874} labelX: {fileID: 114582959836502706} labelY: {fileID: 114550132594519094} +--- !u!114 &114343051951438206 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1892170137997372} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: --- !u!114 &114375112436890190 MonoBehaviour: m_ObjectHideFlags: 1 @@ -366,6 +467,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114106142625821738} --- !u!114 &114405066482997374 MonoBehaviour: m_ObjectHideFlags: 1 @@ -402,7 +504,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114942695691034814} - m_TextComponent: {fileID: 114106142625821738} + m_TextComponent: {fileID: 114343051951438206} m_Placeholder: {fileID: 0} m_ContentType: 3 m_InputType: 0 @@ -440,6 +542,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114722250403402168} --- !u!114 &114550132594519094 MonoBehaviour: m_ObjectHideFlags: 1 @@ -512,7 +615,7 @@ MonoBehaviour: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1214990594695896} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -528,7 +631,7 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 12 - m_FontStyle: 0 + m_FontStyle: 2 m_BestFit: 0 m_MinSize: 1 m_MaxSize: 40 @@ -538,7 +641,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: '-' --- !u!114 &114845183321476876 MonoBehaviour: m_ObjectHideFlags: 1 @@ -599,6 +702,12 @@ MonoBehaviour: m_FillAmount: 1 m_FillClockwise: 1 m_FillOrigin: 0 +--- !u!222 &222094715834413884 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1892170137997372} --- !u!222 &222150256298741346 CanvasRenderer: m_ObjectHideFlags: 1 @@ -641,6 +750,12 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1163162860911098} +--- !u!222 &222884107223345648 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1926707827140976} --- !u!222 &222999649884296094 CanvasRenderer: m_ObjectHideFlags: 1 @@ -657,6 +772,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224273446395797322} - {fileID: 224213042468250146} m_Father: {fileID: 224116249800391798} m_RootOrder: 5 @@ -666,6 +782,24 @@ RectTransform: m_AnchoredPosition: {x: 5, y: 0} m_SizeDelta: {x: -10, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224054505011564878 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1892170137997372} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224939705176792394} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224116249800391798 RectTransform: m_ObjectHideFlags: 1 @@ -696,12 +830,12 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1214990594695896} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224045246434838664} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -726,18 +860,36 @@ RectTransform: m_AnchoredPosition: {x: -2.5, y: 0} m_SizeDelta: {x: 5, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224273446395797322 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1926707827140976} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224045246434838664} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224667072733422862 RectTransform: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1077241982334262} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224939705176792394} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -808,6 +960,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224054505011564878} - {fileID: 224667072733422862} m_Father: {fileID: 224116249800391798} m_RootOrder: 3 diff --git a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/Vector3Field.prefab b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/Vector3Field.prefab index 31beab1..e1cd186 100644 --- a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/Vector3Field.prefab +++ b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/Vector3Field.prefab @@ -22,7 +22,7 @@ GameObject: - component: {fileID: 222181732576251360} - component: {fileID: 114941499582219442} m_Layer: 5 - m_Name: Text + m_Name: Multiple Values m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -81,6 +81,23 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &1289386535095554 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224523722031014594} + - component: {fileID: 222544275547325274} + - component: {fileID: 114318895849243014} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1379313149709716 GameObject: m_ObjectHideFlags: 0 @@ -126,7 +143,7 @@ GameObject: - component: {fileID: 222714858170274312} - component: {fileID: 114166027975421514} m_Layer: 5 - m_Name: Text + m_Name: Multiple Values m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -204,6 +221,23 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &1872843815581888 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224392904002390642} + - component: {fileID: 222834025649609454} + - component: {fileID: 114794803633566748} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1900475058963456 GameObject: m_ObjectHideFlags: 1 @@ -215,6 +249,23 @@ GameObject: - component: {fileID: 222095905876431434} - component: {fileID: 114787362990059292} m_Layer: 5 + m_Name: Multiple Values + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1933061262058300 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224112600368833712} + - component: {fileID: 222894913694297814} + - component: {fileID: 114454358974222848} + m_Layer: 5 m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} @@ -265,13 +316,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114787362990059292} --- !u!114 &114166027975421514 MonoBehaviour: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1611280290957366} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -287,7 +339,7 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 12 - m_FontStyle: 0 + m_FontStyle: 2 m_BestFit: 0 m_MinSize: 1 m_MaxSize: 40 @@ -297,7 +349,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: '-' --- !u!114 &114195659406816988 MonoBehaviour: m_ObjectHideFlags: 1 @@ -309,6 +361,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114166027975421514} --- !u!114 &114210769224921834 MonoBehaviour: m_ObjectHideFlags: 1 @@ -380,6 +433,40 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114941499582219442} +--- !u!114 &114318895849243014 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1289386535095554} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: --- !u!114 &114361039051293932 MonoBehaviour: m_ObjectHideFlags: 1 @@ -398,6 +485,7 @@ MonoBehaviour: m_PreferredHeight: 30 m_FlexibleWidth: -1 m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!114 &114412592979172050 MonoBehaviour: m_ObjectHideFlags: 1 @@ -425,6 +513,39 @@ MonoBehaviour: m_FillAmount: 1 m_FillClockwise: 1 m_FillOrigin: 0 +--- !u!114 &114454358974222848 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1933061262058300} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: --- !u!114 &114473680750511270 MonoBehaviour: m_ObjectHideFlags: 1 @@ -461,7 +582,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114658872597759408} - m_TextComponent: {fileID: 114941499582219442} + m_TextComponent: {fileID: 114794803633566748} m_Placeholder: {fileID: 0} m_ContentType: 3 m_InputType: 0 @@ -635,6 +756,39 @@ MonoBehaviour: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1900475058963456} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: '-' +--- !u!114 &114794803633566748 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1872843815581888} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} @@ -661,7 +815,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: --- !u!114 &114843304169978494 MonoBehaviour: m_ObjectHideFlags: 1 @@ -698,7 +852,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114210769224921834} - m_TextComponent: {fileID: 114787362990059292} + m_TextComponent: {fileID: 114318895849243014} m_Placeholder: {fileID: 0} m_ContentType: 3 m_InputType: 0 @@ -761,7 +915,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114412592979172050} - m_TextComponent: {fileID: 114166027975421514} + m_TextComponent: {fileID: 114454358974222848} m_Placeholder: {fileID: 0} m_ContentType: 3 m_InputType: 0 @@ -794,7 +948,7 @@ MonoBehaviour: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1008762132115182} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -810,7 +964,7 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 12 - m_FontStyle: 0 + m_FontStyle: 2 m_BestFit: 0 m_MinSize: 1 m_MaxSize: 40 @@ -820,7 +974,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: '-' --- !u!222 &222095905876431434 CanvasRenderer: m_ObjectHideFlags: 1 @@ -863,6 +1017,12 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1226669742999036} +--- !u!222 &222544275547325274 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1289386535095554} --- !u!222 &222709620941666268 CanvasRenderer: m_ObjectHideFlags: 1 @@ -887,6 +1047,18 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1820922636172836} +--- !u!222 &222834025649609454 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1872843815581888} +--- !u!222 &222894913694297814 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1933061262058300} --- !u!224 &224042620805961560 RectTransform: m_ObjectHideFlags: 1 @@ -911,12 +1083,12 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1900475058963456} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224768393137514980} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -959,18 +1131,36 @@ RectTransform: m_AnchoredPosition: {x: -2.5, y: 0} m_SizeDelta: {x: 5, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224112600368833712 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1933061262058300} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224248655432618556} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224129401627401748 RectTransform: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1008762132115182} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224642533607496354} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -987,6 +1177,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224112600368833712} - {fileID: 224462967269047724} m_Father: {fileID: 224408981205060130} m_RootOrder: 7 @@ -996,6 +1187,24 @@ RectTransform: m_AnchoredPosition: {x: 5, y: 0} m_SizeDelta: {x: -10, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224392904002390642 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1872843815581888} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224642533607496354} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224408981205060130 RectTransform: m_ObjectHideFlags: 1 @@ -1028,11 +1237,29 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1611280290957366} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224248655432618556} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224523722031014594 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1289386535095554} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224768393137514980} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -1086,6 +1313,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224392904002390642} - {fileID: 224129401627401748} m_Father: {fileID: 224408981205060130} m_RootOrder: 3 @@ -1105,6 +1333,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224523722031014594} - {fileID: 224058025790986986} m_Father: {fileID: 224408981205060130} m_RootOrder: 5 diff --git a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/Vector4Field.prefab b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/Vector4Field.prefab index cba053a..718d43e 100644 --- a/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/Vector4Field.prefab +++ b/Plugins/RuntimeInspector/Prefabs/RuntimeInspector/Fields/Vector4Field.prefab @@ -22,7 +22,7 @@ GameObject: - component: {fileID: 222181732576251360} - component: {fileID: 114941499582219442} m_Layer: 5 - m_Name: Text + m_Name: Multiple Values m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -143,6 +143,40 @@ GameObject: - component: {fileID: 222457643284040478} - component: {fileID: 114710439323140872} m_Layer: 5 + m_Name: Multiple Values + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1434384301518326 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224942377130063670} + - component: {fileID: 222239358228481112} + - component: {fileID: 114450853799574496} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1547566143766940 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224047792016696452} + - component: {fileID: 222729776553318832} + - component: {fileID: 114827713642233154} + m_Layer: 5 m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} @@ -160,6 +194,23 @@ GameObject: - component: {fileID: 222714858170274312} - component: {fileID: 114166027975421514} m_Layer: 5 + m_Name: Multiple Values + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &1675554786598924 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224790004481185700} + - component: {fileID: 222362725507384438} + - component: {fileID: 114638733156419462} + m_Layer: 5 m_Name: Text m_TagString: Untagged m_Icon: {fileID: 0} @@ -223,6 +274,23 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &1791634719618848 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 224732266199570520} + - component: {fileID: 222606255578655292} + - component: {fileID: 114670454555534956} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1793314642395648 GameObject: m_ObjectHideFlags: 0 @@ -268,7 +336,7 @@ GameObject: - component: {fileID: 222095905876431434} - component: {fileID: 114787362990059292} m_Layer: 5 - m_Name: Text + m_Name: Multiple Values m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -368,13 +436,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114787362990059292} --- !u!114 &114166027975421514 MonoBehaviour: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1611280290957366} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -390,7 +459,7 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 12 - m_FontStyle: 0 + m_FontStyle: 2 m_BestFit: 0 m_MinSize: 1 m_MaxSize: 40 @@ -400,7 +469,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: '-' --- !u!114 &114195659406816988 MonoBehaviour: m_ObjectHideFlags: 1 @@ -412,6 +481,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114166027975421514} --- !u!114 &114210769224921834 MonoBehaviour: m_ObjectHideFlags: 1 @@ -483,6 +553,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114941499582219442} --- !u!114 &114361039051293932 MonoBehaviour: m_ObjectHideFlags: 1 @@ -501,6 +572,7 @@ MonoBehaviour: m_PreferredHeight: 60 m_FlexibleWidth: -1 m_FlexibleHeight: -1 + m_LayoutPriority: 1 --- !u!114 &114412592979172050 MonoBehaviour: m_ObjectHideFlags: 1 @@ -528,6 +600,39 @@ MonoBehaviour: m_FillAmount: 1 m_FillClockwise: 1 m_FillOrigin: 0 +--- !u!114 &114450853799574496 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1434384301518326} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: --- !u!114 &114464853246074690 MonoBehaviour: m_ObjectHideFlags: 1 @@ -591,7 +696,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114658872597759408} - m_TextComponent: {fileID: 114941499582219442} + m_TextComponent: {fileID: 114670454555534956} m_Placeholder: {fileID: 0} m_ContentType: 3 m_InputType: 0 @@ -618,6 +723,39 @@ MonoBehaviour: m_CaretBlinkRate: 0.85 m_CaretWidth: 1 m_ReadOnly: 0 +--- !u!114 &114638733156419462 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1675554786598924} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: --- !u!114 &114658872597759408 MonoBehaviour: m_ObjectHideFlags: 1 @@ -645,12 +783,12 @@ MonoBehaviour: m_FillAmount: 1 m_FillClockwise: 1 m_FillOrigin: 0 ---- !u!114 &114710439323140872 +--- !u!114 &114670454555534956 MonoBehaviour: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1379564540242972} + m_GameObject: {fileID: 1791634719618848} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} @@ -677,7 +815,40 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: +--- !u!114 &114710439323140872 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1379564540242972} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: '-' --- !u!114 &114737955006361974 MonoBehaviour: m_ObjectHideFlags: 1 @@ -722,6 +893,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6552c30232f0f104bbd7c08ece928f95, type: 3} m_Name: m_EditorClassIdentifier: + multiValueText: {fileID: 114710439323140872} --- !u!114 &114780910944277900 MonoBehaviour: m_ObjectHideFlags: 1 @@ -791,7 +963,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114464853246074690} - m_TextComponent: {fileID: 114710439323140872} + m_TextComponent: {fileID: 114638733156419462} m_Placeholder: {fileID: 0} m_ContentType: 3 m_InputType: 0 @@ -824,7 +996,7 @@ MonoBehaviour: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1900475058963456} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -840,7 +1012,7 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 12 - m_FontStyle: 0 + m_FontStyle: 2 m_BestFit: 0 m_MinSize: 1 m_MaxSize: 40 @@ -850,7 +1022,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: '-' --- !u!114 &114808905084786712 MonoBehaviour: m_ObjectHideFlags: 1 @@ -884,6 +1056,39 @@ MonoBehaviour: m_VerticalOverflow: 0 m_LineSpacing: 1 m_Text: Y +--- !u!114 &114827713642233154 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1547566143766940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 12 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: --- !u!114 &114843304169978494 MonoBehaviour: m_ObjectHideFlags: 1 @@ -920,7 +1125,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114210769224921834} - m_TextComponent: {fileID: 114787362990059292} + m_TextComponent: {fileID: 114450853799574496} m_Placeholder: {fileID: 0} m_ContentType: 3 m_InputType: 0 @@ -983,7 +1188,7 @@ MonoBehaviour: m_DisabledTrigger: Disabled m_Interactable: 1 m_TargetGraphic: {fileID: 114412592979172050} - m_TextComponent: {fileID: 114166027975421514} + m_TextComponent: {fileID: 114827713642233154} m_Placeholder: {fileID: 0} m_ContentType: 3 m_InputType: 0 @@ -1016,7 +1221,7 @@ MonoBehaviour: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1008762132115182} - m_Enabled: 1 + m_Enabled: 0 m_EditorHideFlags: 0 m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} m_Name: @@ -1032,7 +1237,7 @@ MonoBehaviour: m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} m_FontSize: 12 - m_FontStyle: 0 + m_FontStyle: 2 m_BestFit: 0 m_MinSize: 1 m_MaxSize: 40 @@ -1042,7 +1247,7 @@ MonoBehaviour: m_HorizontalOverflow: 1 m_VerticalOverflow: 0 m_LineSpacing: 1 - m_Text: 0 + m_Text: '-' --- !u!222 &222095905876431434 CanvasRenderer: m_ObjectHideFlags: 1 @@ -1067,6 +1272,12 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1265980652199668} +--- !u!222 &222239358228481112 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1434384301518326} --- !u!222 &222289058978744004 CanvasRenderer: m_ObjectHideFlags: 1 @@ -1091,6 +1302,12 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1058741070651900} +--- !u!222 &222362725507384438 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1675554786598924} --- !u!222 &222457643284040478 CanvasRenderer: m_ObjectHideFlags: 1 @@ -1103,6 +1320,12 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1226669742999036} +--- !u!222 &222606255578655292 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1791634719618848} --- !u!222 &222709620941666268 CanvasRenderer: m_ObjectHideFlags: 1 @@ -1115,6 +1338,12 @@ CanvasRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1611280290957366} +--- !u!222 &222729776553318832 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1547566143766940} --- !u!222 &222755841729379886 CanvasRenderer: m_ObjectHideFlags: 1 @@ -1145,18 +1374,36 @@ RectTransform: m_AnchoredPosition: {x: 0, y: 0.0000076293945} m_SizeDelta: {x: 10, y: -0.000015258789} m_Pivot: {x: 0, y: 0.5} +--- !u!224 &224047792016696452 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1547566143766940} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224248655432618556} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224058025790986986 RectTransform: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1900475058963456} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224768393137514980} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1205,12 +1452,12 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1008762132115182} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224642533607496354} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1227,6 +1474,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224047792016696452} - {fileID: 224462967269047724} m_Father: {fileID: 224408981205060130} m_RootOrder: 9 @@ -1270,12 +1518,12 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1611280290957366} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224248655432618556} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} @@ -1328,6 +1576,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224732266199570520} - {fileID: 224129401627401748} m_Father: {fileID: 224408981205060130} m_RootOrder: 3 @@ -1343,11 +1592,29 @@ RectTransform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1379564540242972} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 224873305848310042} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224732266199570520 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1791634719618848} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224642533607496354} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -1365,6 +1632,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224942377130063670} - {fileID: 224058025790986986} m_Father: {fileID: 224408981205060130} m_RootOrder: 7 @@ -1374,6 +1642,24 @@ RectTransform: m_AnchoredPosition: {x: 5, y: 0} m_SizeDelta: {x: -10, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224790004481185700 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1675554786598924} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224873305848310042} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224873305848310042 RectTransform: m_ObjectHideFlags: 1 @@ -1384,6 +1670,7 @@ RectTransform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: + - {fileID: 224790004481185700} - {fileID: 224654663665922646} m_Father: {fileID: 224408981205060130} m_RootOrder: 5 @@ -1393,6 +1680,24 @@ RectTransform: m_AnchoredPosition: {x: 5, y: 0} m_SizeDelta: {x: -10, y: 0} m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &224942377130063670 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1434384301518326} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 224768393137514980} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0.75, y: 0} + m_SizeDelta: {x: -5.5, y: -4} + m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224947809516212722 RectTransform: m_ObjectHideFlags: 1 diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeHierarchy.cs b/Plugins/RuntimeInspector/Scripts/RuntimeHierarchy.cs index 774a6ac..aecae18 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeHierarchy.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeHierarchy.cs @@ -284,15 +284,7 @@ public RuntimeInspector ConnectedInspector if( m_connectedInspector != value ) { m_connectedInspector = value; - - for( int i = m_currentSelection.Count - 1; i >= 0; i-- ) - { - if( m_currentSelection[i] ) - { - m_connectedInspector.Inspect( m_currentSelection[i].gameObject ); - break; - } - } + m_connectedInspector.Inspect( m_currentSelection.Select( t => t.gameObject ) ); } } } @@ -1410,16 +1402,7 @@ private void OnCurrentSelectionChanged() #endif if( m_connectedInspector ) - { - for( int i = m_currentSelection.Count - 1; i >= 0; i-- ) - { - if( m_currentSelection[i] ) - { - m_connectedInspector.Inspect( m_currentSelection[i].gameObject ); - break; - } - } - } + m_connectedInspector.Inspect( m_currentSelection.Select( t => t.gameObject ) ); if( OnSelectionChanged != null ) OnSelectionChanged( m_currentSelection.AsReadOnly() ); @@ -1680,4 +1663,4 @@ RecycledListItem IListViewAdapter.CreateItem( Transform parent ) return result; } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector.cs index 44dd732..90b1fe6 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector.cs @@ -1,5 +1,7 @@ using System; +using System.Collections; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Reflection; using UnityEngine; using UnityEngine.EventSystems; @@ -15,7 +17,9 @@ public enum HeaderVisibility { Collapsible = 0, AlwaysVisible = 1, Hidden = 2 }; private const string POOL_OBJECT_NAME = "RuntimeInspectorPool"; - public delegate object InspectedObjectChangingDelegate( object previousInspectedObject, object newInspectedObject ); + public delegate IEnumerable InspectedObjectChangingDelegate( + ReadOnlyCollection previousInspectedObjects, + ReadOnlyCollection newInspectedObjects); public delegate void ComponentFilterDelegate( GameObject gameObject, List components ); #pragma warning disable 0649 @@ -163,8 +167,8 @@ public HeaderVisibility InspectedObjectHeaderVisibility { m_inspectedObjectHeaderVisibility = value; - if( currentDrawer != null && currentDrawer is ExpandableInspectorField ) - ( (ExpandableInspectorField) currentDrawer ).HeaderVisibility = m_inspectedObjectHeaderVisibility; + if( currentDrawer != null && currentDrawer is IExpandableInspectorField ) + ( (IExpandableInspectorField) currentDrawer ).HeaderVisibility = m_inspectedObjectHeaderVisibility; } } } @@ -220,10 +224,10 @@ public bool IsLocked private bool inspectLock = false; private bool isDirty = false; - private object m_inspectedObject; - public object InspectedObject { get { return m_inspectedObject; } } + private ReadOnlyCollection m_inspectedObjects; + public ReadOnlyCollection InspectedObjects { get { return m_inspectedObjects; } } - public bool IsBound { get { return !m_inspectedObject.IsNull(); } } + public bool IsBound { get { return m_inspectedObjects != null && m_inspectedObjects.Count > 0; } } private Canvas m_canvas; public Canvas Canvas { get { return m_canvas; } } @@ -352,9 +356,9 @@ protected override void Update() if( isDirty ) { // Rebind to refresh the exposed variables in Inspector - object inspectedObject = m_inspectedObject; + IList inspectedObjects = m_inspectedObjects; StopInspectInternal(); - InspectInternal( inspectedObject ); + InspectInternal( inspectedObjects ); isDirty = false; nextRefreshTime = time + m_refreshInterval; @@ -377,7 +381,7 @@ public void Refresh() if( IsBound ) { if( currentDrawer == null ) - m_inspectedObject = null; + m_inspectedObjects = null; else currentDrawer.Refresh(); } @@ -423,13 +427,13 @@ protected override void RefreshSkin() currentDrawer.Skin = Skin; } - public void Inspect( object obj ) + public void Inspect( IList obj ) where T : class { if( !m_isLocked ) InspectInternal( obj ); } - internal void InspectInternal( object obj ) + internal void InspectInternal( IList obj ) where T : class { if( inspectLock ) return; @@ -438,62 +442,81 @@ internal void InspectInternal( object obj ) Initialize(); if( OnInspectedObjectChanging != null ) - obj = OnInspectedObjectChanging( m_inspectedObject, obj ); + { + IEnumerable changed = OnInspectedObjectChanging( + m_inspectedObjects, + obj.Cast().AsReadOnly()); - if( m_inspectedObject == obj ) - return; + if( m_inspectedObjects == changed ) + return; + + if( changed is IList ) + obj = (IList) changed; + else + return; + } StopInspectInternal(); inspectLock = true; try { - m_inspectedObject = obj; - - if( obj.IsNull() ) - return; + m_inspectedObjects = obj.Cast().AsReadOnly(); -#if UNITY_EDITOR || !NETFX_CORE - if( obj.GetType().IsValueType ) -#else - if( obj.GetType().GetTypeInfo().IsValueType ) -#endif - { - m_inspectedObject = null; - Debug.LogError( "Can't inspect a value type!" ); + if( obj == null || obj.Count == 0 ) return; - } - //if( !gameObject.activeSelf ) - //{ - // m_inspectedObject = null; - // Debug.LogError( "Can't inspect while Inspector is inactive!" ); - // return; - //} + Type elemType = obj.GetType(); + if( elemType.IsArray ) + elemType = elemType.GetElementType(); + else + elemType = elemType.GetGenericArguments()[0]; - InspectorField inspectedObjectDrawer = CreateDrawerForType( obj.GetType(), drawArea, 0, false ); + InspectorField inspectedObjectDrawer = CreateDrawerForType( elemType, drawArea, 0, false ); if( inspectedObjectDrawer != null ) { - inspectedObjectDrawer.BindTo( obj.GetType(), string.Empty, () => m_inspectedObject, ( value ) => m_inspectedObject = value ); + inspectedObjectDrawer.BindTo( + elemType, + string.Empty, + () => m_inspectedObjects.Cast().AsReadOnly(), + value => m_inspectedObjects = value.Cast().AsReadOnly()); inspectedObjectDrawer.NameRaw = obj.GetNameWithType(); inspectedObjectDrawer.Refresh(); - if( inspectedObjectDrawer is ExpandableInspectorField ) - ( (ExpandableInspectorField) inspectedObjectDrawer ).IsExpanded = true; + if( inspectedObjectDrawer is IExpandableInspectorField ) + ( (IExpandableInspectorField) inspectedObjectDrawer ).IsExpanded = true; currentDrawer = inspectedObjectDrawer; - if( currentDrawer is ExpandableInspectorField ) - ( (ExpandableInspectorField) currentDrawer ).HeaderVisibility = m_inspectedObjectHeaderVisibility; - - GameObject go = m_inspectedObject as GameObject; - if( !go && m_inspectedObject as Component ) - go = ( (Component) m_inspectedObject ).gameObject; + if( currentDrawer is IExpandableInspectorField ) + ( (IExpandableInspectorField) currentDrawer ).HeaderVisibility = m_inspectedObjectHeaderVisibility; - if( ConnectedHierarchy && go && !ConnectedHierarchy.Select( go.transform, RuntimeHierarchy.SelectOptions.FocusOnSelection ) ) - ConnectedHierarchy.Deselect(); + if( ConnectedHierarchy ) + { + bool success = true; + var options = RuntimeHierarchy.SelectOptions.FocusOnSelection; + + if( m_inspectedObjects is IList ) + { + // Beware: these are two complete unrelated Select() methods! + // One selects objects in the hierarchy, the other is named + // after the Linq function. + success = ConnectedHierarchy.Select( + ( (IList) m_inspectedObjects ).Select( go => go.transform ), + options); + } + else if( m_inspectedObjects is IList ) + { + success = ConnectedHierarchy.Select( + ( (IList) m_inspectedObjects ).Select( comp => comp.transform ), + options); + } + + if( !success ) + ConnectedHierarchy.Deselect(); + } } else - m_inspectedObject = null; + m_inspectedObjects = null; } finally { @@ -518,7 +541,7 @@ internal void StopInspectInternal() currentDrawer = null; } - m_inspectedObject = null; + m_inspectedObjects = null; scrollView.verticalNormalizedPosition = 1f; ColorPicker.Instance.Close(); @@ -567,7 +590,7 @@ private InspectorField InstantiateDrawer( InspectorField drawer, Transform drawe } } - InspectorField newDrawer = (InspectorField) Instantiate( drawer, drawerParent, false ); + InspectorField newDrawer = Instantiate( drawer, drawerParent, false ); newDrawer.Initialize(); return newDrawer; } @@ -581,7 +604,7 @@ private InspectorField[] GetDrawersForType( Type type, bool drawObjectsAsFields ( !searchReferenceFields && typeToDrawers.TryGetValue( type, out cachedResult ) ) ) return cachedResult; - Dictionary drawersDict = searchReferenceFields ? typeToReferenceDrawers : typeToDrawers; + var drawersDict = searchReferenceFields ? typeToReferenceDrawers : typeToDrawers; eligibleDrawers.Clear(); for( int i = settings.Length - 1; i >= 0; i-- ) @@ -652,4 +675,4 @@ internal ExposedVariablesEnumerator GetExposedVariablesForType( Type type ) return new ExposedVariablesEnumerator( allVariables, hiddenVariablesForType, exposedVariablesForType, m_exposeFields, m_exposeProperties ); } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ArrayField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ArrayField.cs index 8d4a7cd..815613d 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ArrayField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ArrayField.cs @@ -10,7 +10,7 @@ namespace RuntimeInspectorNamespace { - public class ArrayField : ExpandableInspectorField, IDropHandler + public class ArrayField : ExpandableInspectorField, IDropHandler { #pragma warning disable 0649 [SerializeField] @@ -32,20 +32,13 @@ protected override int Length { get { - if( isArray ) - { - Array array = (Array) Value; - if( array != null ) - return array.Length; - } - else - { - IList list = (IList) Value; - if( list != null ) - return list.Count; - } + if( BoundValues.Count == 0 ) + return 0; - return 0; + int minCount = int.MaxValue; + foreach( var item in BoundValues ) + minCount = Math.Min( minCount, BoundValues.Count ); + return minCount; } } @@ -74,8 +67,24 @@ protected override void OnBound( MemberInfo variable ) { base.OnBound( variable ); - isArray = BoundVariableType.IsArray; - elementType = isArray ? BoundVariableType.GetElementType() : BoundVariableType.GetGenericArguments()[0]; + isArray = m_boundVariableType.IsArray; + elementType = isArray ? m_boundVariableType.GetElementType() : m_boundVariableType.GetGenericArguments()[0]; + UpdateSizeInputText(); + } + + private void UpdateSizeInputText() + { + if( BoundValues == null || BoundValues.Count == 0 ) + return; + + int firstCount = BoundValues[0].Count; + if( BoundValues.Any( x => x.Count != firstCount ) ) + sizeInput.HasMultipleValues = true; + else + { + sizeInput.HasMultipleValues = false; + sizeInput.Text = firstCount.ToString( RuntimeInspectorUtils.numberFormat ); + } } protected override void OnUnbound() @@ -110,66 +119,48 @@ protected override void ClearElements() { elementsExpandedStates.Clear(); for( int i = 0; i < elements.Count; i++ ) - elementsExpandedStates.Add( ( elements[i] is ExpandableInspectorField ) ? ( (ExpandableInspectorField) elements[i] ).IsExpanded : false ); + elementsExpandedStates.Add( ( elements[i] is IExpandableInspectorField ) ? ( (IExpandableInspectorField) elements[i] ).IsExpanded : false ); base.ClearElements(); } protected override void GenerateElements() { - if( Value == null ) - return; - - if( isArray ) + int minElemCount = Length; + for( int i = 0; i < minElemCount; i++ ) { - Array array = (Array) Value; - for( int i = 0; i < array.Length; i++ ) - { - InspectorField elementDrawer = Inspector.CreateDrawerForType( elementType, drawArea, Depth + 1 ); - if( elementDrawer == null ) - break; - - int j = i; - elementDrawer.BindTo( elementType, string.Empty, () => ( (Array) Value ).GetValue( j ), ( value ) => - { - Array _array = (Array) Value; - _array.SetValue( value, j ); - Value = _array; - } ); + InspectorField elementDrawer = Inspector.CreateDrawerForType( elementType, drawArea, Depth + 1 ); + if( elementDrawer == null ) + break; - if( i < elementsExpandedStates.Count && elementsExpandedStates[i] && elementDrawer is ExpandableInspectorField ) - ( (ExpandableInspectorField) elementDrawer ).IsExpanded = true; + var everyIth = new List(); + foreach( IList list in BoundValues ) + everyIth.Add( list[i] ); - elementDrawer.NameRaw = Inspector.ArrayIndicesStartAtOne ? ( ( i + 1 ) + ":" ) : ( i + ":" ); - elements.Add( elementDrawer ); - } - } - else - { - IList list = (IList) Value; - for( int i = 0; i < list.Count; i++ ) - { - InspectorField elementDrawer = Inspector.CreateDrawerForType( elementType, drawArea, Depth + 1 ); - if( elementDrawer == null ) - break; - - int j = i; + int i_copy = i; string variableName = Inspector.ArrayIndicesStartAtOne ? ( ( i + 1 ) + ":" ) : ( i + ":" ); - elementDrawer.BindTo( elementType, variableName, () => ( (IList) Value )[j], ( value ) => - { - IList _list = (IList) Value; - _list[j] = value; - Value = _list; - } ); + elementDrawer.BindTo( + variableType: elementType, + variableName: variableName, + getter: () => everyIth.AsReadOnly(), + setter: everyNewIth => + { + int minCount = Math.Min( BoundValues.Count, everyNewIth.Count ); + for( int j = 0; j < minCount; j++ ) + BoundValues[j][i_copy] = everyNewIth[j]; - if( i < elementsExpandedStates.Count && elementsExpandedStates[i] && elementDrawer is ExpandableInspectorField ) - ( (ExpandableInspectorField) elementDrawer ).IsExpanded = true; + // Trigger setter + BoundValues = BoundValues; + } ); - elements.Add( elementDrawer ); - } + if( i < elementsExpandedStates.Count && elementsExpandedStates[i] && elementDrawer is IExpandableInspectorField ) + ( (IExpandableInspectorField) elementDrawer ).IsExpanded = true; + + elementDrawer.NameRaw = Inspector.ArrayIndicesStartAtOne ? ( ( i + 1 ) + ":" ) : ( i + ":" ); + elements.Add( elementDrawer ); } - sizeInput.Text = Length.ToString( RuntimeInspectorUtils.numberFormat ); + UpdateSizeInputText(); elementsExpandedStates.Clear(); } @@ -178,27 +169,19 @@ void IDropHandler.OnDrop( PointerEventData eventData ) object[] assignableObjects = RuntimeInspectorUtils.GetAssignableObjectsFromDraggedReferenceItem( eventData, elementType ); if( assignableObjects != null && assignableObjects.Length > 0 ) { - int prevLength = Length; - if( !OnSizeChanged( null, ( prevLength + assignableObjects.Length ).ToString( RuntimeInspectorUtils.numberFormat ) ) ) - return; - - if( isArray ) + var newBoundValues = new List(); + foreach( IList list in BoundValues ) { - Array _array = (Array) Value; - for( int i = 0; i < assignableObjects.Length; i++ ) - _array.SetValue( assignableObjects[i], prevLength + i ); + int oldCount = list.Count; + IList current = ChangeSizeOfList( list, oldCount + assignableObjects.Length ); - Value = _array; - } - else - { - IList _list = (IList) Value; for( int i = 0; i < assignableObjects.Length; i++ ) - _list[prevLength + i] = assignableObjects[i]; + current[oldCount + i] = assignableObjects[i]; - Value = _list; + newBoundValues.Add( current ); } + BoundValues = newBoundValues.AsReadOnly(); if( !IsExpanded ) IsExpanded = true; } @@ -213,76 +196,80 @@ private bool OnSizeInputBeingChanged( BoundInputField source, string input ) return false; } - private bool OnSizeChanged( BoundInputField source, string input ) + private IList ChangeSizeOfList( IList list, int newLength ) { - int value; - if( int.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out value ) && value >= 0 ) + int curLength = list.Count; + if( curLength != newLength ) { - int currLength = Length; - if( currLength != value ) + if( list is Array ) { - if( isArray ) + Array oldArray = (Array) list; + Array newArray = Array.CreateInstance( m_boundVariableType.GetElementType(), newLength ); + if( newLength > curLength ) { - Array array = (Array) Value; - Array newArray = Array.CreateInstance( BoundVariableType.GetElementType(), value ); - if( value > currLength ) + if( oldArray != null ) + Array.ConstrainedCopy( oldArray, 0, newArray, 0, curLength ); + + for( int i = curLength; i < newLength; i++ ) { - if( array != null ) - Array.ConstrainedCopy( array, 0, newArray, 0, currLength ); - - for( int i = currLength; i < value; i++ ) - { - object template = GetTemplateElement( array ); - if( template != null ) - newArray.SetValue( template, i ); - } + object template = GetTemplateElement( oldArray ); + if( template != null ) + newArray.SetValue( template, i ); } - else - Array.ConstrainedCopy( array, 0, newArray, 0, value ); - - Value = newArray; } else - { - IList list = (IList) Value; - int deltaLength = value - currLength; - if( deltaLength > 0 ) - { - if( list == null ) - list = (IList) Activator.CreateInstance( typeof( List<> ).MakeGenericType( BoundVariableType.GetGenericArguments()[0] ) ); + Array.ConstrainedCopy( oldArray, 0, newArray, 0, newLength ); - for( int i = 0; i < deltaLength; i++ ) - list.Add( GetTemplateElement( list ) ); - } - else - { - for( int i = 0; i > deltaLength; i-- ) - list.RemoveAt( list.Count - 1 ); - } + list = newArray; + } + else + { + int deltaLength = newLength - curLength; + if( deltaLength > 0 ) + { + if( list == null ) + list = (IList) Activator.CreateInstance( + typeof( List<> ).MakeGenericType( m_boundVariableType.GetGenericArguments()[0] ) ); - Value = list; + for( int i = 0; i < deltaLength; i++ ) + list.Add( GetTemplateElement( list ) ); + } + else + { + for( int i = 0; i > deltaLength; i-- ) + list.RemoveAt( list.Count - 1 ); } - - Inspector.RefreshDelayed(); } - - return true; } + return list; + } - return false; + private bool OnSizeChanged( BoundInputField source, string input ) + { + int newLength; + if( !int.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out newLength ) || newLength < 0 ) + return false; + + var newBoundValues = new List(); + foreach( IList list in BoundValues ) + newBoundValues.Add( ChangeSizeOfList( list, newLength ) ); + + BoundValues = newBoundValues.AsReadOnly(); + Inspector.RefreshDelayed(); + return true; } - private object GetTemplateElement( object value ) + private object GetTemplateElement( IList value ) { Array array = null; IList list = null; if( isArray ) array = (Array) value; else - list = (IList) value; + list = value; object template = null; - Type elementType = isArray ? BoundVariableType.GetElementType() : BoundVariableType.GetGenericArguments()[0]; + Type elementType = isArray ? m_boundVariableType.GetElementType() : m_boundVariableType.GetGenericArguments()[0]; #if UNITY_EDITOR || !NETFX_CORE if( elementType.IsValueType ) #else @@ -319,4 +306,4 @@ private object GetTemplateElement( object value ) return template; } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/BoolField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/BoolField.cs index c7894ee..0d02915 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/BoolField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/BoolField.cs @@ -1,10 +1,9 @@ -using System; -using UnityEngine; +using UnityEngine; using UnityEngine.UI; namespace RuntimeInspectorNamespace { - public class BoolField : InspectorField + public class BoolField : InspectorField { #pragma warning disable 0649 [SerializeField] @@ -12,6 +11,9 @@ public class BoolField : InspectorField [SerializeField] private Toggle input; + + [SerializeField] + private Image multiValueImage; #pragma warning restore 0649 public override void Initialize() @@ -20,14 +22,9 @@ public override void Initialize() input.onValueChanged.AddListener( OnValueChanged ); } - public override bool SupportsType( Type type ) - { - return type == typeof( bool ); - } - private void OnValueChanged( bool input ) { - Value = input; + BoundValues = new bool[] { input }.AsReadOnly(); Inspector.RefreshDelayed(); } @@ -37,16 +34,33 @@ protected override void OnSkinChanged() toggleBackground.color = Skin.InputFieldNormalBackgroundColor; input.graphic.color = Skin.ToggleCheckmarkColor; + multiValueImage.color = Skin.ToggleCheckmarkColor; Vector2 rightSideAnchorMin = new Vector2( Skin.LabelWidthPercentage, 0f ); variableNameMask.rectTransform.anchorMin = rightSideAnchorMin; ( (RectTransform) input.transform ).anchorMin = rightSideAnchorMin; } + private void SwitchMarks( bool hasMultipleValues ) + { + input.graphic.enabled = !hasMultipleValues; + multiValueImage.enabled = hasMultipleValues; + } + public override void Refresh() { base.Refresh(); - input.isOn = (bool) Value; + + bool single; + if( BoundValues.TryGetSingle( out single ) ) + { + input.isOn = single; + SwitchMarks( false ); + } + else + { + SwitchMarks( true ); + } } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/BoundsField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/BoundsField.cs index 5348cc9..f14de53 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/BoundsField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/BoundsField.cs @@ -4,7 +4,7 @@ namespace RuntimeInspectorNamespace { - public class BoundsField : InspectorField + public class BoundsField : InspectorField { #pragma warning disable 0649 [SerializeField] @@ -13,12 +13,12 @@ public class BoundsField : InspectorField private Vector3Field inputExtents; #pragma warning restore 0649 - private MemberInfo centerVariable; - private MemberInfo extentsVariable; + private PropertyInfo centerVariable; + private PropertyInfo extentsVariable; #if UNITY_2017_2_OR_NEWER - private MemberInfo intCenterVariable; - private MemberInfo intSizeVariable; + private PropertyInfo intCenterVariable; + private PropertyInfo intSizeVariable; #endif protected override float HeightMultiplier { get { return 3f; } } @@ -49,7 +49,7 @@ protected override void OnBound( MemberInfo variable ) base.OnBound( variable ); #if UNITY_2017_2_OR_NEWER - if( BoundVariableType == typeof( BoundsInt ) ) + if( m_boundVariableType == typeof( BoundsInt ) ) { inputCenter.BindTo( this, intCenterVariable, "Center:" ); inputExtents.BindTo( this, intSizeVariable, "Size:" ); @@ -65,7 +65,6 @@ protected override void OnBound( MemberInfo variable ) protected override void OnInspectorChanged() { base.OnInspectorChanged(); - inputCenter.Inspector = Inspector; inputExtents.Inspector = Inspector; } @@ -73,7 +72,6 @@ protected override void OnInspectorChanged() protected override void OnSkinChanged() { base.OnSkinChanged(); - inputCenter.Skin = Skin; inputExtents.Skin = Skin; } @@ -81,7 +79,6 @@ protected override void OnSkinChanged() protected override void OnDepthChanged() { base.OnDepthChanged(); - inputCenter.Depth = Depth + 1; inputExtents.Depth = Depth + 1; } @@ -89,9 +86,8 @@ protected override void OnDepthChanged() public override void Refresh() { base.Refresh(); - inputCenter.Refresh(); inputExtents.Refresh(); } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ColorField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ColorField.cs index a8ee1a8..596dd48 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ColorField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ColorField.cs @@ -1,12 +1,11 @@ using System; -using System.Reflection; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; namespace RuntimeInspectorNamespace { - public class ColorField : InspectorField + public class ColorField : InspectorField { #pragma warning disable 0649 [SerializeField] @@ -14,10 +13,13 @@ public class ColorField : InspectorField [SerializeField] private PointerEventListener inputColor; + + [SerializeField] + private Text multiValueText; + private Image colorImg; -#pragma warning restore 0649 - private bool isColor32; +#pragma warning restore 0649 public override void Initialize() { @@ -32,28 +34,24 @@ public override bool SupportsType( Type type ) return type == typeof( Color ) || type == typeof( Color32 ); } - protected override void OnBound( MemberInfo variable ) - { - base.OnBound( variable ); - isColor32 = BoundVariableType == typeof( Color32 ); - } - private void ShowColorPicker( PointerEventData eventData ) { - Color value = isColor32 ? (Color) (Color32) Value : (Color) Value; + var initialBoundValues = BoundValues; + Color single; ColorPicker.Instance.Skin = Inspector.Skin; - ColorPicker.Instance.Show( OnColorChanged, null, value, Inspector.Canvas ); + ColorPicker.Instance.Show( + OnColorChanged, + null, + BoundValues.TryGetSingle(out single) ? single : Color.white, + Inspector.Canvas, + () => BoundValues = initialBoundValues ); } private void OnColorChanged( Color32 color ) { colorImg.color = color; - - if( isColor32 ) - Value = color; - else - Value = (Color) color; + BoundValues = new Color[] { color }.AsReadOnly(); } protected override void OnSkinChanged() @@ -63,16 +61,24 @@ protected override void OnSkinChanged() Vector2 rightSideAnchorMin = new Vector2( Skin.LabelWidthPercentage, 0f ); variableNameMask.rectTransform.anchorMin = rightSideAnchorMin; colorPickerArea.anchorMin = rightSideAnchorMin; + multiValueText.SetSkinInputFieldText( Skin ); } public override void Refresh() { base.Refresh(); - if( isColor32 ) - colorImg.color = (Color32) Value; + Color single; + if( BoundValues.TryGetSingle( out single ) ) + { + multiValueText.enabled = false; + colorImg.color = single; + } else - colorImg.color = (Color) Value; + { + multiValueText.enabled = true; + colorImg.color = Skin.InputFieldNormalBackgroundColor; + } } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/EnumField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/EnumField.cs index aa34743..13eb841 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/EnumField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/EnumField.cs @@ -6,7 +6,7 @@ namespace RuntimeInspectorNamespace { - public class EnumField : InspectorField + public class EnumField : InspectorField { #pragma warning disable 0649 [SerializeField] @@ -35,6 +35,9 @@ public class EnumField : InspectorField [SerializeField] private Dropdown input; + + [SerializeField] + private Text multiValueText; #pragma warning restore 0649 private static readonly Dictionary> enumNames = new Dictionary>(); @@ -67,10 +70,10 @@ protected override void OnBound( MemberInfo variable ) { base.OnBound( variable ); - if( !enumNames.TryGetValue( BoundVariableType, out currEnumNames ) || !enumValues.TryGetValue( BoundVariableType, out currEnumValues ) ) + if( !enumNames.TryGetValue( m_boundVariableType, out currEnumNames ) || !enumValues.TryGetValue( m_boundVariableType, out currEnumValues ) ) { - string[] names = Enum.GetNames( BoundVariableType ); - Array values = Enum.GetValues( BoundVariableType ); + string[] names = Enum.GetNames( m_boundVariableType ); + Array values = Enum.GetValues( m_boundVariableType ); currEnumNames = new List( names.Length ); currEnumValues = new List( names.Length ); @@ -81,8 +84,8 @@ protected override void OnBound( MemberInfo variable ) currEnumValues.Add( values.GetValue( i ) ); } - enumNames[BoundVariableType] = currEnumNames; - enumValues[BoundVariableType] = currEnumValues; + enumNames[m_boundVariableType] = currEnumNames; + enumValues[m_boundVariableType] = currEnumValues; } input.ClearOptions(); @@ -108,7 +111,7 @@ private void OnTransformParentChanged() private void OnValueChanged( int input ) { - Value = currEnumValues[input]; + BoundValues = new int[] { input }.AsReadOnly(); Inspector.RefreshDelayed(); } @@ -143,6 +146,7 @@ protected override void OnSkinChanged() input.captionText.SetSkinInputFieldText( Skin ); templateText.SetSkinInputFieldText( Skin ); + multiValueText.SetSkinInputFieldText( Skin ); templateBackground.color = Skin.InputFieldNormalBackgroundColor.Tint( 0.075f ); templateCheckmark.color = Skin.ToggleCheckmarkColor; @@ -152,13 +156,26 @@ protected override void OnSkinChanged() ( (RectTransform) input.transform ).anchorMin = rightSideAnchorMin; } + private void UpdateMultiValueText( bool hasMultipleValues ) + { + multiValueText.enabled = hasMultipleValues; + input.captionText.enabled = !hasMultipleValues; + } + public override void Refresh() { base.Refresh(); - int valueIndex = currEnumValues.IndexOf( Value ); - if( valueIndex != -1 ) - input.value = valueIndex; + int single; + if( BoundValues.TryGetSingle( out single ) ) + { + input.value = single; + UpdateMultiValueText( false ); + } + else + { + UpdateMultiValueText( true ); + } } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ExposedMethodField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ExposedMethodField.cs index 40ad700..4b473a7 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ExposedMethodField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ExposedMethodField.cs @@ -1,10 +1,11 @@ using System; +using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace RuntimeInspectorNamespace { - public class ExposedMethodField : InspectorField + public class ExposedMethodField : InspectorField { #pragma warning disable 0649 [SerializeField] @@ -47,9 +48,17 @@ public void InvokeMethod() Refresh(); if( boundMethod.IsInitializer ) - Value = boundMethod.CallAndReturnValue( Value ); + { + var newBoundValues = new List(); + foreach( object o in BoundValues ) + newBoundValues.Add( boundMethod.CallAndReturnValue( o ) ); + BoundValues = newBoundValues.AsReadOnly(); + } else - boundMethod.Call( Value ); + { + foreach( object o in BoundValues ) + boundMethod.Call( o ); + } } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/GameObjectField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/GameObjectField.cs index 4d7b1a0..276c66c 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/GameObjectField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/GameObjectField.cs @@ -7,18 +7,25 @@ namespace RuntimeInspectorNamespace { - public class GameObjectField : ExpandableInspectorField + public class GameObjectField : ExpandableInspectorField { protected override int Length { get { return components.Count + 4; } } // 4: active, name, tag, layer - private string currentTag = null; + private Action isActiveSetter; + private Action nameSetter; + private Action tagSetter; - private Getter isActiveGetter, nameGetter, tagGetter; - private Setter isActiveSetter, nameSetter, tagSetter; + private Func isActiveGetter; + private Func nameGetter; + private Func tagGetter; private PropertyInfo layerProp; - private readonly List components = new List( 8 ); - private readonly List componentsExpandedStates = new List(); + // Outer list: Each entry corresponds to one component drawer drawn. + // Inner list: Each drawer can be bound to a list of components of the same type. + private readonly List> components = new List>(); + + // Objects in here should be drawn expanded + private readonly HashSet expandedElements = new HashSet(); private Type[] addComponentTypes; @@ -29,60 +36,42 @@ public override void Initialize() { base.Initialize(); - isActiveGetter = () => ( (GameObject) Value ).activeSelf; - isActiveSetter = ( value ) => ( (GameObject) Value ).SetActive( (bool) value ); + isActiveGetter = go => go.activeSelf; + isActiveSetter = ( go, value ) => go.SetActive( value ); - nameGetter = () => ( (GameObject) Value ).name; - nameSetter = ( value ) => + nameGetter = go => go.name; + nameSetter = ( go, value ) => { - ( (GameObject) Value ).name = (string) value; - NameRaw = Value.GetNameWithType(); + go.name = value; + NameRaw = go.GetNameWithType(); RuntimeHierarchy hierarchy = Inspector.ConnectedHierarchy; if( hierarchy ) - hierarchy.RefreshNameOf( ( (GameObject) Value ).transform ); + hierarchy.RefreshNameOf( go.transform ); }; - tagGetter = () => - { - GameObject go = (GameObject) Value; - if( !go.CompareTag( currentTag ) ) - currentTag = go.tag; - - return currentTag; - }; - tagSetter = ( value ) => ( (GameObject) Value ).tag = (string) value; + tagGetter = go => go.tag; + tagSetter = ( go, value ) => go.tag = value; layerProp = typeof( GameObject ).GetProperty( "layer" ); } - public override bool SupportsType( Type type ) - { - return type == typeof( GameObject ); - } - - protected override void OnBound( MemberInfo variable ) - { - base.OnBound( variable ); - currentTag = ( (GameObject) Value ).tag; - } - protected override void OnUnbound() { base.OnUnbound(); components.Clear(); - componentsExpandedStates.Clear(); + expandedElements.Clear(); } protected override void ClearElements() { - componentsExpandedStates.Clear(); + expandedElements.Clear(); for( int i = 0; i < elements.Count; i++ ) { // Don't keep track of non-expandable drawers' or destroyed components' expanded states - if( elements[i] is ExpandableInspectorField && ( elements[i].Value as Object ) ) - componentsExpandedStates.Add( ( (ExpandableInspectorField) elements[i] ).IsExpanded ); + if( elements[i] is IExpandableInspectorField && ( (IExpandableInspectorField) elements[i] ).IsExpanded ) + expandedElements.Add( elements[i] ); } base.ClearElements(); @@ -90,19 +79,27 @@ protected override void ClearElements() protected override void GenerateElements() { - if( components.Count == 0 ) - return; - - CreateDrawer( typeof( bool ), "Is Active", isActiveGetter, isActiveSetter ); - StringField nameField = CreateDrawer( typeof( string ), "Name", nameGetter, nameSetter ) as StringField; - StringField tagField = CreateDrawer( typeof( string ), "Tag", tagGetter, tagSetter ) as StringField; + CreateDrawer( "Is Active", isActiveGetter, isActiveSetter ); + StringField nameField = CreateDrawer( "Name", nameGetter, nameSetter ) as StringField; + StringField tagField = CreateDrawer( "Tag", tagGetter, tagSetter ) as StringField; CreateDrawerForVariable( layerProp, "Layer" ); - for( int i = 0, j = 0; i < components.Count; i++ ) + foreach( var multiEditedComponents in components ) { - InspectorField componentDrawer = CreateDrawerForComponent( components[i] ); - if( componentDrawer as ExpandableInspectorField && j < componentsExpandedStates.Count && componentsExpandedStates[j++] ) - ( (ExpandableInspectorField) componentDrawer ).IsExpanded = true; + InspectorField drawer = CreateDrawerForComponents( multiEditedComponents ); + + if( !( drawer is IExpandableInspectorField ) ) + return; + + foreach( Component comp in multiEditedComponents ) + { + if( expandedElements.Contains( comp ) ) + { + // If one of the multi-edited components is expanded, expand their shared drawer + ( (IExpandableInspectorField) drawer).IsExpanded = true; + break; + } + } } if( nameField ) @@ -112,28 +109,121 @@ protected override void GenerateElements() tagField.SetterMode = StringField.Mode.OnSubmit; if( Inspector.ShowAddComponentButton ) - CreateExposedMethodButton( addComponentMethod, () => this, ( value ) => { } ); + CreateExposedMethodButton( + addComponentMethod, + () => new object[] { this }.AsReadOnly(), + value => { } ); - componentsExpandedStates.Clear(); + expandedElements.Clear(); + } + + private List GetFilteredComponents( GameObject go ) + { + var comps = new List(); + go.GetComponents( comps ); + + for( int i = comps.Count - 1; i >= 0; i-- ) + { + if( !comps[i] ) + comps.RemoveAt( i ); + } + + if( Inspector.ComponentFilter != null ) + Inspector.ComponentFilter( go, comps ); + + return comps; } public override void Refresh() { // Refresh components components.Clear(); - GameObject go = Value as GameObject; - if( go ) + + // Maps a component type to bound GameObjects having a component of + // this type. GameObjects in turn are mapped to their components of + // this type. + var lut = new Dictionary>>(); + + // Create Look Up Table which sorts components of all bound GameObjects + // so that components of equal type on different objects are bundled + // into one drawer. + // Two drawers can end up with the same component type, if all bound + // objects have the same component at least two times. + foreach( GameObject obj in BoundValues ) { - go.GetComponents( components ); + if( !obj ) + continue; - for( int i = components.Count - 1; i >= 0; i-- ) + foreach( Component comp in GetFilteredComponents( obj ) ) { - if( !components[i] ) - components.RemoveAt( i ); + Type compType = comp.GetType(); + Dictionary> goToComps; + if( !lut.TryGetValue( compType, out goToComps ) ) + { + goToComps = new Dictionary>(); + lut[compType] = goToComps; + } + + Queue compsOnGoOfCompType; + if( !goToComps.TryGetValue( obj, out compsOnGoOfCompType ) ) + { + compsOnGoOfCompType = new Queue(); + goToComps[obj] = compsOnGoOfCompType; + } + compsOnGoOfCompType.Enqueue( comp ); } + } + + // Read LUT + while( lut.Count > 0 ) + { + // Types that have been processed already. + // Exists because we shouldn't remove types from LUT while we iterate + // over it. + var checkedTypes = new List(); + + foreach( var pair in lut ) + { + Type compType = pair.Key; + var goToComps = pair.Value; + + // Components to bind to the draw for 'compType' + var toDraw = new List(); - if( Inspector.ComponentFilter != null ) - Inspector.ComponentFilter( go, components ); + // Current component type must be on every bound GameObject to be + // drawn + bool compOnAllObjects = true; + + foreach( GameObject go in BoundValues ) + { + Queue compsOnGoOfCompType; + if( goToComps.TryGetValue( go, out compsOnGoOfCompType ) ) + { + toDraw.Add( compsOnGoOfCompType.Dequeue() ); + if( compsOnGoOfCompType.Count == 0 ) + goToComps.Remove( go ); + } + else + { + // Type can't be drawn. It's not on every bound object. + compOnAllObjects = false; + checkedTypes.Add( compType ); + break; + } + } + + if( compOnAllObjects ) + { + components.Add( toDraw ); + if( goToComps.Count == 0) + // No objects with a component of this type are left to process. + // Type doesn't need to be looked up anymore. + checkedTypes.Add( compType ); + } + } + + foreach( Type type in checkedTypes ) + lut.Remove( type ); } // Regenerate components' drawers, if necessary @@ -143,8 +233,7 @@ public override void Refresh() [UnityEngine.Scripting.Preserve] // This method is bound to addComponentMethod private void AddComponentButtonClicked() { - GameObject target = (GameObject) Value; - if( !target ) + if( BoundValues.Count == 0 ) return; if( addComponentTypes == null ) @@ -201,12 +290,16 @@ private void AddComponentButtonClicked() ObjectReferencePicker.Instance.Skin = Inspector.Skin; ObjectReferencePicker.Instance.Show( - null, ( type ) => + null, x => { - // Make sure that RuntimeInspector is still inspecting this GameObject - if( type != null && target && Inspector && ( Inspector.InspectedObject as GameObject ) == target ) + if( x is Type && Inspector ) { - target.AddComponent( (Type) type ); + foreach( GameObject o in BoundValues ) + { + // Make sure that RuntimeInspector is still inspecting this GameObject + if( Inspector.InspectedObjects.Any( o.Equals ) ) + o.AddComponent( (Type) x ); + } Inspector.Refresh(); } }, @@ -216,19 +309,18 @@ private void AddComponentButtonClicked() } [UnityEngine.Scripting.Preserve] // This method is bound to removeComponentMethod - private static void RemoveComponentButtonClicked( ExpandableInspectorField componentDrawer ) + private static void RemoveComponentButtonClicked( InspectorField drawer ) { - if( !componentDrawer || !componentDrawer.Inspector ) - return; - - Component component = componentDrawer.Value as Component; - if( component && !( component is Transform ) ) - componentDrawer.StartCoroutine( RemoveComponentCoroutine( component, componentDrawer.Inspector ) ); + drawer.StartCoroutine( RemoveComponentCoroutine( + drawer.GetBoundOfType(), + drawer.Inspector) ); } - private static IEnumerator RemoveComponentCoroutine( Component component, RuntimeInspector inspector ) + private static IEnumerator RemoveComponentCoroutine( IEnumerable components, RuntimeInspector inspector ) { - Destroy( component ); + foreach( Component component in components ) + if( component && ! ( component is Transform ) ) + Destroy( component ); // Destroy operation doesn't take place immediately, wait for the component to be fully destroyed yield return null; @@ -237,4 +329,4 @@ private static IEnumerator RemoveComponentCoroutine( Component component, Runtim inspector.EnsureScrollViewIsWithinBounds(); // Scroll view's contents can get out of bounds after removing a component } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/InspectorField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/InspectorField.cs index 08bd88a..f0eb618 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/InspectorField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/InspectorField.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Reflection; using UnityEngine; using UnityEngine.UI; @@ -8,8 +9,8 @@ namespace RuntimeInspectorNamespace { public abstract class InspectorField : MonoBehaviour, ITooltipContent { - public delegate object Getter(); - public delegate void Setter( object value ); + public delegate ReadOnlyCollection Getter(); + public delegate void Setter( ReadOnlyCollection value ); #pragma warning disable 0649 [SerializeField] @@ -57,19 +58,19 @@ public UISkin Skin } } - private Type m_boundVariableType; - protected Type BoundVariableType { get { return m_boundVariableType; } } + /// + /// Runtime type of + /// passed via , e.g. type of property/field behind + /// and + /// . + /// + protected Type m_boundVariableType; - private object m_value; - public object Value - { - get { return m_value; } - protected set - { - try { setter( value ); m_value = value; } - catch { } - } - } + /// + /// Most-specific common base type of all + /// . + /// + protected Type m_boundCommonBaseType; private int m_depth = -1; public int Depth @@ -107,9 +108,6 @@ public string NameRaw protected virtual float HeightMultiplier { get { return 1f; } } - private Getter getter; - private Setter setter; - public virtual void Initialize() { if( visibleArea ) @@ -123,82 +121,6 @@ public virtual bool CanBindTo( Type type, MemberInfo variable ) return true; } - public void BindTo( InspectorField parent, MemberInfo variable, string variableName = null ) - { - if( variable is FieldInfo ) - { - FieldInfo field = (FieldInfo) variable; - if( variableName == null ) - variableName = field.Name; - -#if UNITY_EDITOR || !NETFX_CORE - if( !parent.BoundVariableType.IsValueType ) -#else - if( !parent.BoundVariableType.GetTypeInfo().IsValueType ) -#endif - BindTo( field.FieldType, variableName, () => field.GetValue( parent.Value ), ( value ) => field.SetValue( parent.Value, value ), variable ); - else - BindTo( field.FieldType, variableName, () => field.GetValue( parent.Value ), ( value ) => - { - field.SetValue( parent.Value, value ); - parent.Value = parent.Value; - }, variable ); - } - else if( variable is PropertyInfo ) - { - PropertyInfo property = (PropertyInfo) variable; - if( variableName == null ) - variableName = property.Name; - -#if UNITY_EDITOR || !NETFX_CORE - if( !parent.BoundVariableType.IsValueType ) -#else - if( !parent.BoundVariableType.GetTypeInfo().IsValueType ) -#endif - BindTo( property.PropertyType, variableName, () => property.GetValue( parent.Value, null ), ( value ) => property.SetValue( parent.Value, value, null ), variable ); - else - BindTo( property.PropertyType, variableName, () => property.GetValue( parent.Value, null ), ( value ) => - { - property.SetValue( parent.Value, value, null ); - parent.Value = parent.Value; - }, variable ); - } - else - throw new ArgumentException( "Variable can either be a field or a property" ); - } - - public void BindTo( Type variableType, string variableName, Getter getter, Setter setter, MemberInfo variable = null ) - { - m_boundVariableType = variableType; - Name = variableName; - - this.getter = getter; - this.setter = setter; - - OnBound( variable ); - } - - public void Unbind() - { - m_boundVariableType = null; - - getter = null; - setter = null; - - OnUnbound(); - Inspector.PoolDrawer( this ); - } - - protected virtual void OnBound( MemberInfo variable ) - { - RefreshValue(); - } - - protected virtual void OnUnbound() - { - m_value = null; - } - protected virtual void OnInspectorChanged() { if( !variableNameText ) @@ -242,7 +164,205 @@ protected virtual void OnDepthChanged() variableNameText.rectTransform.sizeDelta = new Vector2( -Skin.IndentAmount * Depth, 0f ); } - public virtual void Refresh() + /// Overload of BindTo that casts from to the + /// value type of the inspector field. + public abstract void BindTo( + Type variableType, + string variableName, + Getter getter, + Setter setter, + MemberInfo variable = null); + + public abstract void BindTo( + InspectorField parent, + FieldInfo field, + string variableName = null); + + public abstract void BindTo( + InspectorField parent, + PropertyInfo property, + string variableName = null); + + public abstract void Refresh(); + public abstract void Unbind(); + + public abstract IList GetBoundOfType(); + } + + public abstract class InspectorField : InspectorField + { + private ReadOnlyCollection m_boundObjects + = new ReadOnlyCollection(new TBinding[0]); + public ReadOnlyCollection BoundValues + { + get { return m_boundObjects; } + protected set + { + setter( value ); + m_boundObjects = value; + } + } + + public override IList GetBoundOfType() + { + var list = new List(); + foreach( object obj in m_boundObjects ) + if( typeof( D ).IsAssignableFrom( obj.GetType() ) ) + list.Add( (D) obj ); + return list; + } + + private Getter getter; + private Setter setter; + + public override bool SupportsType( Type type ) + { + return typeof( TBinding ).IsAssignableFrom( type ); + } + + // Level 2: Highest abstraction, for fields + public override void BindTo( + InspectorField parent, + FieldInfo field, + string variableName = null ) + { + BindToImpl( + parent, + field, + field.FieldType, + instance => field.GetValue( instance ), + ( instance, value ) => field.SetValue( instance, value ), + variableName ); + } + + // Level 2: Highest abstraction, for properties + public override void BindTo( + InspectorField parent, + PropertyInfo property, + string variableName = null) + { + BindToImpl( + parent, + property, + property.PropertyType, + instance => property.GetValue( instance, null ), + ( instance, value ) => property.SetValue( instance, value, null ), + variableName ); + } + + // Level 2 + private void BindToImpl( + InspectorField parent, + MemberInfo member, + Type memberType, + Func getter, + Action setter, + string variableName ) + { + if ( variableName == null ) + variableName = member.Name; + + BindTo( + memberType, + variableName, + () => parent.BoundValues.Select( getter ).AsReadOnly(), + newValues => Broadcast( newValues, parent, setter ), + member); + } + + // Level 1 + public override void BindTo( + Type variableType, + string variableName, + Getter getter, + Setter setter, + MemberInfo variable = null) + { + BindTo( + variableType, + variableName, + () => getter().Cast().AsReadOnly(), + o => setter( o.Cast().AsReadOnly() ), + variable); + } + + // Level 0: Most basic + public void BindTo( + Type variableType, + string variableName, + Getter getter, + Setter setter, + MemberInfo variable = null) + { + m_boundVariableType = variableType; + Name = variableName; + + this.getter = getter; + this.setter = setter; + + var types = new HashSet(); + foreach( object item in getter() ) + types.Add( item.GetType() ); + m_boundCommonBaseType = types.CommonBaseType(); + + OnBound( variable ); + } + + // Use RuntimeInspectorUtils.Broadcast to apply given values to the + // bound values of the target inspector field. + protected void Broadcast( + ReadOnlyCollection newValues, + InspectorField target, + Action setter) + { + bool originallyLocked = Inspector.IsLocked; + Inspector.IsLocked = true; + + // Call different setter depending on whether TTarget + // is value- or reference type +#if UNITY_EDITOR || !NETFX_CORE + if( m_boundVariableType.IsValueType ) +#else + if( m_boundVariableType.GetTypeInfo().IsValueType ) +#endif + { + target.BoundValues = target.BoundValues.Broadcast( + newValues, ( x, y ) => + { + setter( x, y ); + return x; + } ).AsReadOnly(); + } + else + { + target.BoundValues.Broadcast( newValues, setter ); + } + + Inspector.IsLocked = originallyLocked; + } + + public override void Unbind() + { + m_boundVariableType = null; + + getter = null; + setter = null; + + OnUnbound(); + Inspector.PoolDrawer( this ); + } + + protected virtual void OnBound( MemberInfo variable ) + { + RefreshValue(); + } + + protected virtual void OnUnbound() + { + m_boundObjects = new TBinding[0].AsReadOnly(); + } + + public override void Refresh() { RefreshValue(); } @@ -251,23 +371,32 @@ private void RefreshValue() { try { - m_value = getter(); + m_boundObjects = getter(); } catch { #if UNITY_EDITOR || !NETFX_CORE - if( BoundVariableType.IsValueType ) + if( m_boundVariableType.IsValueType ) #else - if( BoundVariableType.GetTypeInfo().IsValueType ) + if( m_boundVariableType.GetTypeInfo().IsValueType ) #endif - m_value = Activator.CreateInstance( BoundVariableType ); + m_boundObjects = new TBinding[1] + { + (TBinding) Activator.CreateInstance( m_boundVariableType ) + }.AsReadOnly(); else - m_value = null; + m_boundObjects = new TBinding[0].AsReadOnly(); } } } - public abstract class ExpandableInspectorField : InspectorField + public interface IExpandableInspectorField + { + bool IsExpanded { get; set; } + RuntimeInspector.HeaderVisibility HeaderVisibility { get; set; } + } + + public abstract class ExpandableInspectorField : InspectorField, IExpandableInspectorField { #pragma warning disable 0649 [SerializeField] @@ -447,18 +576,28 @@ protected void RegenerateElements() private void GenerateExposedMethodButtons() { - if( Inspector.ShowRemoveComponentButton && typeof( Component ).IsAssignableFrom( BoundVariableType ) && !typeof( Transform ).IsAssignableFrom( BoundVariableType ) ) - CreateExposedMethodButton( GameObjectField.removeComponentMethod, () => this, ( value ) => { } ); + if( Inspector.ShowRemoveComponentButton + && typeof( Component ).IsAssignableFrom( m_boundVariableType ) + && !typeof( Transform ).IsAssignableFrom( m_boundVariableType ) ) + { + CreateExposedMethodButton( + GameObjectField.removeComponentMethod, + () => new object[] { this }.AsReadOnly(), + value => { } ); + } - ExposedMethod[] methods = BoundVariableType.GetExposedMethods(); + ExposedMethod[] methods = m_boundVariableType.GetExposedMethods(); if( methods != null ) { - bool isInitialized = Value != null && !Value.Equals( null ); + bool isInitialized = BoundValues != null && !BoundValues.Equals( null ); for( int i = 0; i < methods.Length; i++ ) { ExposedMethod method = methods[i]; if( ( isInitialized && method.VisibleWhenInitialized ) || ( !isInitialized && method.VisibleWhenUninitialized ) ) - CreateExposedMethodButton( method, () => Value, ( value ) => Value = value ); + CreateExposedMethodButton( + method, + () => BoundValues.Cast().AsReadOnly(), + value => BoundValues = value.Cast().AsReadOnly() ); } } } @@ -492,15 +631,16 @@ public override void Refresh() } } - public InspectorField CreateDrawerForComponent( Component component, string variableName = null ) + public InspectorField CreateDrawerForComponents( IList components, string variableName = null ) { - InspectorField variableDrawer = Inspector.CreateDrawerForType( component.GetType(), drawArea, Depth + 1, false ); + Type componentType = components[0].GetType(); + InspectorField variableDrawer = Inspector.CreateDrawerForType( componentType, drawArea, Depth + 1, false ); if( variableDrawer != null ) { if( variableName == null ) - variableName = component.GetType().Name + " component"; + variableName = componentType.Name + " component"; - variableDrawer.BindTo( component.GetType(), string.Empty, () => component, ( value ) => { } ); + variableDrawer.BindTo( componentType, string.Empty, () => components.AsReadOnly(), ( value ) => { } ); variableDrawer.NameRaw = variableName; elements.Add( variableDrawer ); @@ -509,10 +649,9 @@ public InspectorField CreateDrawerForComponent( Component component, string vari return variableDrawer; } - public InspectorField CreateDrawerForVariable( MemberInfo variable, string variableName = null ) + public InspectorField CreateDrawerForVariable( FieldInfo variable, string variableName = null ) { - Type variableType = variable is FieldInfo ? ( (FieldInfo) variable ).FieldType : ( (PropertyInfo) variable ).PropertyType; - InspectorField variableDrawer = Inspector.CreateDrawerForType( variableType, drawArea, Depth + 1, true, variable ); + InspectorField variableDrawer = Inspector.CreateDrawerForType( variable.FieldType, drawArea, Depth + 1, true, variable ); if( variableDrawer != null ) { variableDrawer.BindTo( this, variable, variableName == null ? null : string.Empty ); @@ -525,12 +664,12 @@ public InspectorField CreateDrawerForVariable( MemberInfo variable, string varia return variableDrawer; } - public InspectorField CreateDrawer( Type variableType, string variableName, Getter getter, Setter setter, bool drawObjectsAsFields = true ) + public InspectorField CreateDrawerForVariable( PropertyInfo variable, string variableName = null ) { - InspectorField variableDrawer = Inspector.CreateDrawerForType( variableType, drawArea, Depth + 1, drawObjectsAsFields ); + InspectorField variableDrawer = Inspector.CreateDrawerForType( variable.PropertyType, drawArea, Depth + 1, true, variable ); if( variableDrawer != null ) { - variableDrawer.BindTo( variableType, variableName == null ? null : string.Empty, getter, setter ); + variableDrawer.BindTo( this, variable, variableName == null ? null : string.Empty ); if( variableName != null ) variableDrawer.NameRaw = variableName; @@ -540,7 +679,71 @@ public InspectorField CreateDrawer( Type variableType, string variableName, Gett return variableDrawer; } - public ExposedMethodField CreateExposedMethodButton( ExposedMethod method, Getter getter, Setter setter ) + public InspectorField CreateDrawer( + string variableName, + Func getter, + Action setter, + bool drawObjectsAsFields = true) + { + return CreateDrawer( typeof( TChild ), variableName, getter, setter, drawObjectsAsFields ); + } + + // Overload that handles multi-selection automatically. You don't pass + // functions getting or setting a sequence of bound values, but instead + // functions specifying how to convert a bound value of the parent drawer + // to one of the child drawer. + public InspectorField CreateDrawer( + Type variableType, + string variableName, + Func getter, + Action setter, + bool drawObjectsAsFields = true) + { + return CreateDrawer( + variableType, + variableName, + () => BoundValues.Select( getter ).AsReadOnly(), + newChildObjs => Broadcast( newChildObjs, this, setter ), + drawObjectsAsFields); + } + + protected InspectorField CreateDrawer( + string variableName, + Getter getter, + Setter setter, + bool drawObjectsAsFields = true) + { + return CreateDrawer( typeof( TChild ), variableName, getter, setter, drawObjectsAsFields ); + } + + protected InspectorField CreateDrawer( + Type variableType, + string variableName, + Getter getter, + Setter setter, + bool drawObjectsAsFields = true) + { + InspectorField drawer = Inspector.CreateDrawerForType( variableType, drawArea, Depth + 1, drawObjectsAsFields ); + if( drawer == null ) + return null; + + if( variableName == null ) + variableName = string.Empty; + else + drawer.NameRaw = variableName; + + if( drawer is InspectorField ) + ( (InspectorField) drawer ).BindTo( variableType, variableName, getter, setter ); + else + // If there is no inspector field taking values of the correct type + // directly, we use the overload that casts. + drawer. BindTo( variableType, variableName, getter, setter ); + + elements.Add( drawer ); + return drawer; + } + + public ExposedMethodField CreateExposedMethodButton( ExposedMethod method, Getter getter, Setter setter ) { ExposedMethodField methodDrawer = (ExposedMethodField) Inspector.CreateDrawerForType( typeof( ExposedMethod ), drawArea, Depth + 1, false ); if( methodDrawer != null ) @@ -554,4 +757,4 @@ public ExposedMethodField CreateExposedMethodButton( ExposedMethod method, Gette return methodDrawer; } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/NumberField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/NumberField.cs index 214adcf..64239c4 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/NumberField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/NumberField.cs @@ -6,7 +6,7 @@ namespace RuntimeInspectorNamespace { - public class NumberField : InspectorField + public class NumberField : InspectorField { private static readonly HashSet supportedTypes = new HashSet() { @@ -41,24 +41,23 @@ protected override void OnBound( MemberInfo variable ) { base.OnBound( variable ); - if( BoundVariableType == typeof( float ) || BoundVariableType == typeof( double ) || BoundVariableType == typeof( decimal ) ) + if( m_boundVariableType == typeof( float ) || m_boundVariableType == typeof( double ) || m_boundVariableType == typeof( decimal ) ) input.BackingField.contentType = InputField.ContentType.DecimalNumber; else input.BackingField.contentType = InputField.ContentType.IntegerNumber; - numberHandler = NumberHandlers.Get( BoundVariableType ); - input.Text = numberHandler.ToString( Value ); + numberHandler = NumberHandlers.Get( m_boundVariableType ); + UpdateInput(); } protected virtual bool OnValueChanged( BoundInputField source, string input ) { - object value; + IConvertible value; if( numberHandler.TryParse( input, out value ) ) { - Value = value; + BoundValues = new IConvertible[] { value }.AsReadOnly(); return true; } - return false; } @@ -80,11 +79,22 @@ protected override void OnSkinChanged() public override void Refresh() { - object prevVal = Value; base.Refresh(); + UpdateInput(); + } - if( !numberHandler.ValuesAreEqual( Value, prevVal ) ) - input.Text = numberHandler.ToString( Value ); + private void UpdateInput() + { + IConvertible value; + if( BoundValues.TryGetSingle( out value ) ) + { + input.Text = value.ToString( RuntimeInspectorUtils.numberFormat ); + input.HasMultipleValues = false; + } + else + { + input.HasMultipleValues = true; + } } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/NumberRangeField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/NumberRangeField.cs index 5674c56..d354cb8 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/NumberRangeField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/NumberRangeField.cs @@ -1,7 +1,6 @@ using System; using System.Reflection; using UnityEngine; -using UnityEngine.UI; namespace RuntimeInspectorNamespace { @@ -29,18 +28,18 @@ protected override void OnBound( MemberInfo variable ) RangeAttribute rangeAttribute = variable.GetAttribute(); slider.SetRange( Mathf.Max( rangeAttribute.min, numberHandler.MinValue ), Mathf.Min( rangeAttribute.max, numberHandler.MaxValue ) ); - slider.BackingField.wholeNumbers = BoundVariableType != typeof( float ) && BoundVariableType != typeof( double ) && BoundVariableType != typeof( decimal ); + slider.BackingField.wholeNumbers = m_boundVariableType != typeof( float ) && m_boundVariableType != typeof( double ) && m_boundVariableType != typeof( decimal ); } protected override bool OnValueChanged( BoundInputField source, string input ) { - object value; + IConvertible value; if( numberHandler.TryParse( input, out value ) ) { float fvalue = numberHandler.ConvertToFloat( value ); if( fvalue >= slider.BackingField.minValue && fvalue <= slider.BackingField.maxValue ) { - Value = value; + BoundValues = new IConvertible[] { value }.AsReadOnly(); return true; } } @@ -53,8 +52,8 @@ private void OnSliderValueChanged( BoundSlider source, float value ) if( input.BackingField.isFocused ) return; - Value = numberHandler.ConvertFromFloat( value ); - input.Text = numberHandler.ToString( Value ); + BoundValues = new IConvertible[] { (IConvertible) value }.AsReadOnly(); + input.Text = value.ToString( RuntimeInspectorUtils.numberFormat ); Inspector.RefreshDelayed(); } @@ -74,7 +73,16 @@ protected override void OnSkinChanged() public override void Refresh() { base.Refresh(); - slider.Value = numberHandler.ConvertToFloat( Value ); + IConvertible value; + if( BoundValues.TryGetSingle( out value ) ) + { + slider.HasMultipleValues = false; + slider.Value = numberHandler.ConvertToFloat( value ); + } + else + { + slider.HasMultipleValues = true; + } } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ObjectField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ObjectField.cs index 6e94a80..ce23f62 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ObjectField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ObjectField.cs @@ -6,7 +6,7 @@ namespace RuntimeInspectorNamespace { - public class ObjectField : ExpandableInspectorField + public class ObjectField : ExpandableInspectorField { #pragma warning disable 0649 [SerializeField] @@ -20,7 +20,7 @@ protected override int Length { get { - if( Value.IsNull() ) + if( BoundValues.Count == 0 ) { if( !initializeObjectButton.gameObject.activeSelf ) return -1; @@ -47,11 +47,6 @@ public override void Initialize() initializeObjectButton.onClick.AddListener( InitializeObject ); } - public override bool SupportsType( Type type ) - { - return true; - } - protected override void OnBound( MemberInfo variable ) { elementsInitialized = false; @@ -60,7 +55,7 @@ protected override void OnBound( MemberInfo variable ) protected override void GenerateElements() { - if( Value.IsNull() ) + if( BoundValues.All( x => x == null ) ) { initializeObjectButton.gameObject.SetActive( CanInitializeNewObject() ); return; @@ -68,7 +63,8 @@ protected override void GenerateElements() initializeObjectButton.gameObject.SetActive( false ); - if( ( customEditor = RuntimeInspectorUtils.GetCustomEditor( Value.GetType() ) ) != null ) + customEditor = RuntimeInspectorUtils.GetCustomEditor( m_boundCommonBaseType ); + if( customEditor != null ) customEditor.GenerateElements( this ); else CreateDrawersForVariables(); @@ -101,14 +97,16 @@ public override void Refresh() public void CreateDrawersForVariables( params string[] variables ) { + var vars = Inspector.GetExposedVariablesForType( m_boundCommonBaseType ); + if( variables == null || variables.Length == 0 ) { - foreach( MemberInfo variable in Inspector.GetExposedVariablesForType( Value.GetType() ) ) + foreach( MemberInfo variable in vars ) CreateDrawerForVariable( variable ); } else { - foreach( MemberInfo variable in Inspector.GetExposedVariablesForType( Value.GetType() ) ) + foreach( MemberInfo variable in vars ) { if( Array.IndexOf( variables, variable.Name ) >= 0 ) CreateDrawerForVariable( variable ); @@ -118,14 +116,16 @@ public void CreateDrawersForVariables( params string[] variables ) public void CreateDrawersForVariablesExcluding( params string[] variablesToExclude ) { + var vars = Inspector.GetExposedVariablesForType( m_boundCommonBaseType ); + if( variablesToExclude == null || variablesToExclude.Length == 0 ) { - foreach( MemberInfo variable in Inspector.GetExposedVariablesForType( Value.GetType() ) ) + foreach( MemberInfo variable in vars ) CreateDrawerForVariable( variable ); } else { - foreach( MemberInfo variable in Inspector.GetExposedVariablesForType( Value.GetType() ) ) + foreach( MemberInfo variable in vars ) { if( Array.IndexOf( variablesToExclude, variable.Name ) < 0 ) CreateDrawerForVariable( variable ); @@ -133,26 +133,35 @@ public void CreateDrawersForVariablesExcluding( params string[] variablesToExclu } } + private InspectorField CreateDrawerForVariable( MemberInfo variable ) + { + if( variable is FieldInfo ) + return base.CreateDrawerForVariable( (FieldInfo) variable ); + if( variable is PropertyInfo ) + return base.CreateDrawerForVariable( (PropertyInfo) variable ); + throw new ArgumentException( "Variable can either be a field or a property" ); + } + private bool CanInitializeNewObject() { #if UNITY_EDITOR || !NETFX_CORE - if( BoundVariableType.IsAbstract || BoundVariableType.IsInterface ) + if( m_boundVariableType.IsAbstract || m_boundVariableType.IsInterface ) #else if( BoundVariableType.GetTypeInfo().IsAbstract || BoundVariableType.GetTypeInfo().IsInterface ) #endif return false; - if( typeof( ScriptableObject ).IsAssignableFrom( BoundVariableType ) ) + if( typeof( ScriptableObject ).IsAssignableFrom( m_boundVariableType ) ) return true; - if( typeof( UnityEngine.Object ).IsAssignableFrom( BoundVariableType ) ) + if( typeof( UnityEngine.Object ).IsAssignableFrom( m_boundVariableType ) ) return false; - if( BoundVariableType.IsArray ) + if( m_boundVariableType.IsArray ) return false; #if UNITY_EDITOR || !NETFX_CORE - if( BoundVariableType.IsGenericType && BoundVariableType.GetGenericTypeDefinition() == typeof( List<> ) ) + if( m_boundVariableType.IsGenericType && m_boundVariableType.GetGenericTypeDefinition() == typeof( List<> ) ) #else if( BoundVariableType.GetTypeInfo().IsGenericType && BoundVariableType.GetGenericTypeDefinition() == typeof( List<> ) ) #endif @@ -165,11 +174,11 @@ private void InitializeObject() { if( CanInitializeNewObject() ) { - Value = BoundVariableType.Instantiate(); + BoundValues = new object[] { m_boundVariableType.Instantiate() }.AsReadOnly(); RegenerateElements(); IsExpanded = true; } } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ObjectReferenceField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ObjectReferenceField.cs index 30d61cb..ac65e38 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ObjectReferenceField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/ObjectReferenceField.cs @@ -1,4 +1,4 @@ -using System; +using System.Collections.Generic; using System.Reflection; using UnityEngine; using UnityEngine.EventSystems; @@ -7,7 +7,7 @@ namespace RuntimeInspectorNamespace { - public class ObjectReferenceField : InspectorField, IDropHandler + public class ObjectReferenceField : InspectorField, IDropHandler { #pragma warning disable 0649 [SerializeField] @@ -40,59 +40,57 @@ public override void Initialize() } } - public override bool SupportsType( Type type ) - { - return typeof( Object ).IsAssignableFrom( type ); - } - private void ShowReferencePicker( PointerEventData eventData ) { - Object[] allReferences = Resources.FindObjectsOfTypeAll( BoundVariableType ); + Object[] allReferences = Resources.FindObjectsOfTypeAll( m_boundVariableType ); ObjectReferencePicker.Instance.Skin = Inspector.Skin; ObjectReferencePicker.Instance.Show( - ( reference ) => OnReferenceChanged( (Object) reference ), null, - ( reference ) => (Object) reference ? ( (Object) reference ).name : "None", - ( reference ) => reference.GetNameWithType(), - allReferences, (Object) Value, true, "Select " + BoundVariableType.Name, Inspector.Canvas ); + onReferenceChanged: ( reference ) => OnReferenceChanged( new Object[] { (Object) reference } ), + onSelectionConfirmed: null, + referenceNameGetter: ( reference ) => (Object) reference ? ( (Object) reference ).name : "None", + referenceDisplayNameGetter: ( reference ) => reference.GetNameWithType(), + references: allReferences, + initialReference: BoundValues[0], + includeNullReference: true, + title: "Select " + m_boundVariableType.Name, + referenceCanvas: Inspector.Canvas); } private void InspectReference( PointerEventData eventData ) { - if( Value != null && !Value.Equals( null ) ) + if( BoundValues.Count > 0 ) { - if( Value is Component ) - Inspector.InspectInternal( ( (Component) Value ).gameObject ); + var components = GetBoundOfType(); + if( components.Count > 0 ) + Inspector.InspectInternal( components.Select( c => c.gameObject ) ); else - Inspector.InspectInternal( Value ); + Inspector.InspectInternal( BoundValues ); } } protected override void OnBound( MemberInfo variable ) { base.OnBound( variable ); - OnReferenceChanged( (Object) Value ); + OnReferenceChanged( BoundValues ); } - protected virtual void OnReferenceChanged( Object reference ) + protected virtual void OnReferenceChanged( IList references ) { - if( (Object) Value != reference ) - Value = reference; - if( referenceNameText != null ) - referenceNameText.text = reference.GetNameWithType( BoundVariableType ); + referenceNameText.text = references.GetNameWithType( m_boundVariableType ); if( inspectReferenceButton != null ) - inspectReferenceButton.gameObject.SetActive( Value != null && !Value.Equals( null ) ); + inspectReferenceButton.gameObject.SetActive( BoundValues.Any( x => x != null ) ); + BoundValues = references.AsReadOnly(); Inspector.RefreshDelayed(); } public void OnDrop( PointerEventData eventData ) { - Object assignableObject = (Object) RuntimeInspectorUtils.GetAssignableObjectFromDraggedReferenceItem( eventData, BoundVariableType ); - if( assignableObject ) - OnReferenceChanged( assignableObject ); + var objs = (Object[]) RuntimeInspectorUtils.GetAssignableObjectsFromDraggedReferenceItem( eventData, m_boundVariableType ); + OnReferenceChanged( objs ); } protected override void OnSkinChanged() @@ -122,11 +120,11 @@ protected override void OnSkinChanged() public override void Refresh() { - object lastValue = Value; + var oldBoundValues = BoundValues.FirstOrDefault(); base.Refresh(); - if( lastValue != Value ) - OnReferenceChanged( (Object) Value ); + if( oldBoundValues != BoundValues.FirstOrDefault() ) + OnReferenceChanged( BoundValues ); } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/RectField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/RectField.cs index 7a7744b..5ebf992 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/RectField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/RectField.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Globalization; using System.Reflection; using UnityEngine; @@ -6,7 +7,7 @@ namespace RuntimeInspectorNamespace { - public class RectField : InspectorField + public class RectField : InspectorField { #pragma warning disable 0649 [SerializeField] @@ -79,70 +80,78 @@ protected override void OnBound( MemberInfo variable ) base.OnBound( variable ); #if UNITY_2017_2_OR_NEWER - isRectInt = BoundVariableType == typeof( RectInt ); + isRectInt = m_boundVariableType == typeof( RectInt ); +#endif + UpdateInputs(); + } + + private void UpdateInputs() + { + float?[] coords = BoundValues + .Select( RuntimeInspectorUtils.ToArray ) + .SinglePerEntry(); + + inputX.HasMultipleValues = !coords[0].HasValue; + inputY.HasMultipleValues = !coords[1].HasValue; + inputW.HasMultipleValues = !coords[2].HasValue; + inputH.HasMultipleValues = !coords[3].HasValue; + +#if UNITY_2017_2_OR_NEWER if( isRectInt ) - { - RectInt val = (RectInt) Value; - inputX.Text = val.x.ToString( RuntimeInspectorUtils.numberFormat ); - inputY.Text = val.y.ToString( RuntimeInspectorUtils.numberFormat ); - inputW.Text = val.width.ToString( RuntimeInspectorUtils.numberFormat ); - inputH.Text = val.height.ToString( RuntimeInspectorUtils.numberFormat ); - } + UpdateInputTexts( coords.Cast() ); else #endif - { - Rect val = (Rect) Value; - inputX.Text = val.x.ToString( RuntimeInspectorUtils.numberFormat ); - inputY.Text = val.y.ToString( RuntimeInspectorUtils.numberFormat ); - inputW.Text = val.width.ToString( RuntimeInspectorUtils.numberFormat ); - inputH.Text = val.height.ToString( RuntimeInspectorUtils.numberFormat ); - } + UpdateInputTexts( coords ); + } + + private void UpdateInputTexts( IList coords ) where T : struct, IConvertible + { + if( coords[0].HasValue ) + inputX.Text = coords[0].Value.ToString( RuntimeInspectorUtils.numberFormat ); + if( coords[1].HasValue ) + inputY.Text = coords[1].Value.ToString( RuntimeInspectorUtils.numberFormat ); + if( coords[2].HasValue ) + inputW.Text = coords[2].Value.ToString( RuntimeInspectorUtils.numberFormat ); + if( coords[3].HasValue ) + inputH.Text = coords[3].Value.ToString( RuntimeInspectorUtils.numberFormat ); } private bool OnValueChanged( BoundInputField source, string input ) { + bool couldParse; + float value; + #if UNITY_2017_2_OR_NEWER if( isRectInt ) { - int value; - if( int.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out value ) ) - { - RectInt val = (RectInt) Value; - if( source == inputX ) - val.x = value; - else if( source == inputY ) - val.y = value; - else if( source == inputW ) - val.width = value; - else - val.height = value; - - Value = val; - return true; - } + int intval; + couldParse = int.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out intval ); + value = intval; } else #endif + couldParse = float.TryParse( input, NumberStyles.Float, RuntimeInspectorUtils.numberFormat, out value ); + + if( !couldParse ) + return false; + + Rect[] newRs = new Rect[BoundValues.Count]; + for (int i = 0; i < BoundValues.Count; i++) { - float value; - if( float.TryParse( input, NumberStyles.Float, RuntimeInspectorUtils.numberFormat, out value ) ) - { - Rect val = (Rect) Value; - if( source == inputX ) - val.x = value; - else if( source == inputY ) - val.y = value; - else if( source == inputW ) - val.width = value; - else - val.height = value; - - Value = val; - return true; - } + newRs[i] = BoundValues[i]; + + if( source == inputX ) + newRs[i].x = value; + else if( source == inputY ) + newRs[i].y = value; + else if( source == inputW ) + newRs[i].width = value; + else + newRs[i].height = value; } - return false; + BoundValues = newRs.AsReadOnly(); + return true; } private bool OnValueSubmitted( BoundInputField source, string input ) @@ -180,38 +189,8 @@ protected override void OnSkinChanged() public override void Refresh() { -#if UNITY_2017_2_OR_NEWER - if( isRectInt ) - { - RectInt prevVal = (RectInt) Value; - base.Refresh(); - RectInt val = (RectInt) Value; - - if( val.x != prevVal.x ) - inputX.Text = val.x.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.y != prevVal.y ) - inputY.Text = val.y.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.width != prevVal.width ) - inputW.Text = val.width.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.height != prevVal.height ) - inputH.Text = val.height.ToString( RuntimeInspectorUtils.numberFormat ); - } - else -#endif - { - Rect prevVal = (Rect) Value; - base.Refresh(); - Rect val = (Rect) Value; - - if( val.x != prevVal.x ) - inputX.Text = val.x.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.y != prevVal.y ) - inputY.Text = val.y.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.width != prevVal.width ) - inputW.Text = val.width.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.height != prevVal.height ) - inputH.Text = val.height.ToString( RuntimeInspectorUtils.numberFormat ); - } + base.Refresh(); + UpdateInputs(); } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/StringField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/StringField.cs index 9690fd9..d930560 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/StringField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/StringField.cs @@ -1,11 +1,10 @@ -using System; -using System.Reflection; +using System.Reflection; using UnityEngine; using UnityEngine.UI; namespace RuntimeInspectorNamespace { - public class StringField : InspectorField + public class StringField : InspectorField { public enum Mode { OnValueChange = 0, OnSubmit = 1 }; @@ -38,11 +37,6 @@ public override void Initialize() input.DefaultEmptyValue = string.Empty; } - public override bool SupportsType( Type type ) - { - return type == typeof( string ); - } - protected override void OnBound( MemberInfo variable ) { base.OnBound( variable ); @@ -79,7 +73,7 @@ protected override void OnUnbound() private bool OnValueChanged( BoundInputField source, string input ) { if( m_setterMode == Mode.OnValueChange ) - Value = input; + BoundValues = new string[] { input }.AsReadOnly(); return true; } @@ -87,7 +81,7 @@ private bool OnValueChanged( BoundInputField source, string input ) private bool OnValueSubmitted( BoundInputField source, string input ) { if( m_setterMode == Mode.OnSubmit ) - Value = input; + BoundValues = new string[] { input }.AsReadOnly(); Inspector.RefreshDelayed(); return true; @@ -107,10 +101,20 @@ public override void Refresh() { base.Refresh(); - if( Value == null ) - input.Text = string.Empty; + string value; + if( BoundValues.TryGetSingle( out value ) ) + { + if( value == null ) + input.Text = string.Empty; + else + input.Text = value; + + input.HasMultipleValues = false; + } else - input.Text = (string) Value; + { + input.HasMultipleValues = true; + } } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/TextureReferenceField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/TextureReferenceField.cs index 705f86e..7e8b2f4 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/TextureReferenceField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/TextureReferenceField.cs @@ -1,7 +1,5 @@ using System; -#if !UNITY_EDITOR && NETFX_CORE -using System.Reflection; -#endif +using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using Object = UnityEngine.Object; @@ -13,6 +11,9 @@ public class TextureReferenceField : ObjectReferenceField #pragma warning disable 0649 [SerializeField] private RawImage referencePreview; + + [SerializeField] + private Text multiValueText; #pragma warning restore 0649 protected override float HeightMultiplier { get { return 2f; } } @@ -22,15 +23,31 @@ public override bool SupportsType( Type type ) return typeof( Texture ).IsAssignableFrom( type ) || typeof( Sprite ).IsAssignableFrom( type ); } - protected override void OnReferenceChanged( Object reference ) + protected override void OnSkinChanged() { - base.OnReferenceChanged( reference ); + base.OnSkinChanged(); + multiValueText.SetSkinInputFieldText( Skin ); + } - referenceNameText.gameObject.SetActive( !reference ); + protected override void OnReferenceChanged( IList references ) + { + base.OnReferenceChanged( references ); - Texture tex = reference.GetTexture(); - referencePreview.enabled = tex != null; - referencePreview.texture = tex; + Object value; + if( BoundValues.TryGetSingle( out value ) ) + { + Texture tex = value.GetTexture(); + referencePreview.enabled = tex != null; + referencePreview.texture = tex; + referenceNameText.enabled = value == null; + multiValueText.enabled = false; + } + else + { + referencePreview.enabled = false; + referenceNameText.enabled = false; + multiValueText.enabled = true; + } } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/TransformField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/TransformField.cs index 6776a1a..ad0e20a 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/TransformField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/TransformField.cs @@ -1,10 +1,9 @@ -using System; -using System.Reflection; +using System.Reflection; using UnityEngine; namespace RuntimeInspectorNamespace { - public class TransformField : ExpandableInspectorField + public class TransformField : ExpandableInspectorField { protected override int Length { get { return 3; } } // localPosition, localEulerAngles, localScale @@ -19,11 +18,6 @@ public override void Initialize() scaleProp = typeof( Transform ).GetProperty( "localScale" ); } - public override bool SupportsType( Type type ) - { - return type == typeof( Transform ); - } - protected override void GenerateElements() { CreateDrawerForVariable( positionProp, "Position" ); @@ -31,4 +25,4 @@ protected override void GenerateElements() CreateDrawerForVariable( scaleProp, "Scale" ); } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector2Field.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector2Field.cs index 43d6df5..7bf768a 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector2Field.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector2Field.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Globalization; using System.Reflection; using UnityEngine; @@ -6,7 +7,7 @@ namespace RuntimeInspectorNamespace { - public class Vector2Field : InspectorField + public class Vector2Field : InspectorField { #pragma warning disable 0649 [SerializeField] @@ -57,58 +58,67 @@ protected override void OnBound( MemberInfo variable ) base.OnBound( variable ); #if UNITY_2017_2_OR_NEWER - isVector2Int = BoundVariableType == typeof( Vector2Int ); + isVector2Int = m_boundVariableType == typeof( Vector2Int ); +#endif + UpdateInputs(); + } + + private void UpdateInputs() + { + float?[] coords = BoundValues + .Select( RuntimeInspectorUtils.ToArray ) + .SinglePerEntry(); + + inputX.HasMultipleValues = !coords[0].HasValue; + inputY.HasMultipleValues = !coords[1].HasValue; + +#if UNITY_2017_2_OR_NEWER if( isVector2Int ) - { - Vector2Int val = (Vector2Int) Value; - inputX.Text = val.x.ToString( RuntimeInspectorUtils.numberFormat ); - inputY.Text = val.y.ToString( RuntimeInspectorUtils.numberFormat ); - } + UpdateInputTexts( coords.Cast() ); else #endif - { - Vector2 val = (Vector2) Value; - inputX.Text = val.x.ToString( RuntimeInspectorUtils.numberFormat ); - inputY.Text = val.y.ToString( RuntimeInspectorUtils.numberFormat ); - } + UpdateInputTexts( coords ); + } + + private void UpdateInputTexts( IList coords ) where T : struct, IConvertible + { + if( coords[0].HasValue ) + inputX.Text = coords[0].Value.ToString( RuntimeInspectorUtils.numberFormat ); + if( coords[1].HasValue ) + inputY.Text = coords[1].Value.ToString( RuntimeInspectorUtils.numberFormat ); } private bool OnValueChanged( BoundInputField source, string input ) { + bool couldParse; + float value; + #if UNITY_2017_2_OR_NEWER if( isVector2Int ) { - int value; - if( int.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out value ) ) - { - Vector2Int val = (Vector2Int) Value; - if( source == inputX ) - val.x = value; - else - val.y = value; - - Value = val; - return true; - } + int intval; + couldParse = int.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out intval ); + value = intval; } else #endif + couldParse = float.TryParse( input, NumberStyles.Float, RuntimeInspectorUtils.numberFormat, out value ); + + if( !couldParse ) + return false; + + int coord = source == inputX ? 0 : 1; + var newVs = new List(); + + foreach( Vector2 oldV in BoundValues ) { - float value; - if( float.TryParse( input, NumberStyles.Float, RuntimeInspectorUtils.numberFormat, out value ) ) - { - Vector2 val = (Vector2) Value; - if( source == inputX ) - val.x = value; - else - val.y = value; - - Value = val; - return true; - } + Vector2 newV = oldV; + newV[coord] = value; + newVs.Add( newV ); } - return false; + BoundValues = newVs.AsReadOnly(); + return true; } private bool OnValueSubmitted( BoundInputField source, string input ) @@ -140,30 +150,8 @@ protected override void OnSkinChanged() public override void Refresh() { -#if UNITY_2017_2_OR_NEWER - if( isVector2Int ) - { - Vector2Int prevVal = (Vector2Int) Value; - base.Refresh(); - Vector2Int val = (Vector2Int) Value; - - if( val.x != prevVal.x ) - inputX.Text = val.x.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.y != prevVal.y ) - inputY.Text = val.y.ToString( RuntimeInspectorUtils.numberFormat ); - } - else -#endif - { - Vector2 prevVal = (Vector2) Value; - base.Refresh(); - Vector2 val = (Vector2) Value; - - if( val.x != prevVal.x ) - inputX.Text = val.x.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.y != prevVal.y ) - inputY.Text = val.y.ToString( RuntimeInspectorUtils.numberFormat ); - } + base.Refresh(); + UpdateInputs(); } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector3Field.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector3Field.cs index 2ce862d..86eff87 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector3Field.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector3Field.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Globalization; using System.Reflection; using UnityEngine; @@ -6,7 +7,7 @@ namespace RuntimeInspectorNamespace { - public class Vector3Field : InspectorField + public class Vector3Field : InspectorField { #pragma warning disable 0649 [SerializeField] @@ -67,64 +68,76 @@ protected override void OnBound( MemberInfo variable ) base.OnBound( variable ); #if UNITY_2017_2_OR_NEWER - isVector3Int = BoundVariableType == typeof( Vector3Int ); + isVector3Int = m_boundVariableType == typeof( Vector3Int ); +#endif + UpdateInputs(); + } + + private void UpdateInputs() + { + float?[] coords = BoundValues + .Select( RuntimeInspectorUtils.ToArray ) + .SinglePerEntry(); + + inputX.HasMultipleValues = !coords[0].HasValue; + inputY.HasMultipleValues = !coords[1].HasValue; + inputZ.HasMultipleValues = !coords[2].HasValue; + +#if UNITY_2017_2_OR_NEWER if( isVector3Int ) - { - Vector3Int val = (Vector3Int) Value; - inputX.Text = val.x.ToString( RuntimeInspectorUtils.numberFormat ); - inputY.Text = val.y.ToString( RuntimeInspectorUtils.numberFormat ); - inputZ.Text = val.z.ToString( RuntimeInspectorUtils.numberFormat ); - } + UpdateInputTexts( coords.Cast() ); else #endif - { - Vector3 val = (Vector3) Value; - inputX.Text = val.x.ToString( RuntimeInspectorUtils.numberFormat ); - inputY.Text = val.y.ToString( RuntimeInspectorUtils.numberFormat ); - inputZ.Text = val.z.ToString( RuntimeInspectorUtils.numberFormat ); - } + UpdateInputTexts( coords ); + } + + private void UpdateInputTexts( IList coords ) where T : struct, IConvertible + { + if( coords[0].HasValue ) + inputX.Text = coords[0].Value.ToString( RuntimeInspectorUtils.numberFormat ); + if( coords[1].HasValue ) + inputY.Text = coords[1].Value.ToString( RuntimeInspectorUtils.numberFormat ); + if( coords[2].HasValue ) + inputZ.Text = coords[2].Value.ToString( RuntimeInspectorUtils.numberFormat ); } private bool OnValueChanged( BoundInputField source, string input ) { + bool couldParse; + float value; + #if UNITY_2017_2_OR_NEWER if( isVector3Int ) { - int value; - if( int.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out value ) ) - { - Vector3Int val = (Vector3Int) Value; - if( source == inputX ) - val.x = value; - else if( source == inputY ) - val.y = value; - else - val.z = value; - - Value = val; - return true; - } + int intval; + couldParse = int.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out intval ); + value = intval; } else #endif + couldParse = float.TryParse( input, NumberStyles.Float, RuntimeInspectorUtils.numberFormat, out value ); + + if( !couldParse ) + return false; + + int coord; + if( source == inputX ) + coord = 0; + else if( source == inputY ) + coord = 1; + else + coord = 2; + + var newVs = new List(); + foreach( Vector3 oldV in BoundValues ) { - float value; - if( float.TryParse( input, NumberStyles.Float, RuntimeInspectorUtils.numberFormat, out value ) ) - { - Vector3 val = (Vector3) Value; - if( source == inputX ) - val.x = value; - else if( source == inputY ) - val.y = value; - else - val.z = value; - - Value = val; - return true; - } + Vector3 newV = oldV; + newV[coord] = value; + newVs.Add( newV ); } - return false; + BoundValues = newVs.AsReadOnly(); + return true; } private bool OnValueSubmitted( BoundInputField source, string input ) @@ -162,34 +175,8 @@ protected override void OnSkinChanged() public override void Refresh() { -#if UNITY_2017_2_OR_NEWER - if( isVector3Int ) - { - Vector3Int prevVal = (Vector3Int) Value; - base.Refresh(); - Vector3Int val = (Vector3Int) Value; - - if( val.x != prevVal.x ) - inputX.Text = val.x.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.y != prevVal.y ) - inputY.Text = val.y.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.z != prevVal.z ) - inputZ.Text = val.z.ToString( RuntimeInspectorUtils.numberFormat ); - } - else -#endif - { - Vector3 prevVal = (Vector3) Value; - base.Refresh(); - Vector3 val = (Vector3) Value; - - if( val.x != prevVal.x ) - inputX.Text = val.x.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.y != prevVal.y ) - inputY.Text = val.y.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.z != prevVal.z ) - inputZ.Text = val.z.ToString( RuntimeInspectorUtils.numberFormat ); - } + base.Refresh(); + UpdateInputs(); } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector4Field.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector4Field.cs index cc44414..b86af41 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector4Field.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Fields/Vector4Field.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Globalization; using System.Reflection; using UnityEngine; @@ -6,7 +7,7 @@ namespace RuntimeInspectorNamespace { - public class Vector4Field : InspectorField + public class Vector4Field : InspectorField { #pragma warning disable 0649 [SerializeField] @@ -34,8 +35,6 @@ public class Vector4Field : InspectorField private Text labelW; #pragma warning restore 0649 - private bool isQuaternion; - protected override float HeightMultiplier { get { return 2f; } } public override void Initialize() @@ -71,64 +70,56 @@ public override bool SupportsType( Type type ) protected override void OnBound( MemberInfo variable ) { base.OnBound( variable ); + UpdateInputs(); + } - isQuaternion = BoundVariableType == typeof( Quaternion ); - if( isQuaternion ) - { - Quaternion val = (Quaternion) Value; - inputX.Text = val.x.ToString( RuntimeInspectorUtils.numberFormat ); - inputY.Text = val.y.ToString( RuntimeInspectorUtils.numberFormat ); - inputZ.Text = val.z.ToString( RuntimeInspectorUtils.numberFormat ); - inputW.Text = val.w.ToString( RuntimeInspectorUtils.numberFormat ); - } - else - { - Vector4 val = (Vector4) Value; - inputX.Text = val.x.ToString( RuntimeInspectorUtils.numberFormat ); - inputY.Text = val.y.ToString( RuntimeInspectorUtils.numberFormat ); - inputZ.Text = val.z.ToString( RuntimeInspectorUtils.numberFormat ); - inputW.Text = val.w.ToString( RuntimeInspectorUtils.numberFormat ); - } + private void UpdateInputs() + { + float?[] coords = BoundValues + .Select( RuntimeInspectorUtils.ToArray ) + .SinglePerEntry(); + + inputX.HasMultipleValues = !coords[0].HasValue; + inputY.HasMultipleValues = !coords[1].HasValue; + inputZ.HasMultipleValues = !coords[2].HasValue; + inputW.HasMultipleValues = !coords[3].HasValue; + + if( coords[0].HasValue ) + inputX.Text = coords[0].Value.ToString( RuntimeInspectorUtils.numberFormat ); + if( coords[1].HasValue ) + inputY.Text = coords[1].Value.ToString( RuntimeInspectorUtils.numberFormat ); + if( coords[2].HasValue ) + inputZ.Text = coords[2].Value.ToString( RuntimeInspectorUtils.numberFormat ); + if( coords[3].HasValue ) + inputW.Text = coords[3].Value.ToString( RuntimeInspectorUtils.numberFormat ); } private bool OnValueChanged( BoundInputField source, string input ) { float value; - if( float.TryParse( input, NumberStyles.Float, RuntimeInspectorUtils.numberFormat, out value ) ) + if( !float.TryParse( input, NumberStyles.Float, RuntimeInspectorUtils.numberFormat, out value ) ) + return false; + + int coord; + if( source == inputX ) + coord = 0; + else if( source == inputY ) + coord = 1; + else if( source == inputZ ) + coord = 2; + else + coord = 3; + + var newVs = new List(); + foreach( Vector4 oldV in BoundValues ) { - if( isQuaternion ) - { - Quaternion val = (Quaternion) Value; - if( source == inputX ) - val.x = value; - else if( source == inputY ) - val.y = value; - else if( source == inputZ ) - val.z = value; - else - val.w = value; - - Value = val; - } - else - { - Vector4 val = (Vector4) Value; - if( source == inputX ) - val.x = value; - else if( source == inputY ) - val.y = value; - else if( source == inputZ ) - val.z = value; - else - val.w = value; - - Value = val; - } - - return true; + Vector4 newV = oldV; + newV[coord] = value; + newVs.Add( newV ); } - return false; + BoundValues = newVs.AsReadOnly(); + return true; } private bool OnValueSubmitted( BoundInputField source, string input ) @@ -166,36 +157,8 @@ protected override void OnSkinChanged() public override void Refresh() { - if( isQuaternion ) - { - Quaternion prevVal = (Quaternion) Value; - base.Refresh(); - Quaternion val = (Quaternion) Value; - - if( val.x != prevVal.x ) - inputX.Text = val.x.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.y != prevVal.y ) - inputY.Text = val.y.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.z != prevVal.z ) - inputZ.Text = val.z.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.w != prevVal.w ) - inputW.Text = val.w.ToString( RuntimeInspectorUtils.numberFormat ); - } - else - { - Vector4 prevVal = (Vector4) Value; - base.Refresh(); - Vector4 val = (Vector4) Value; - - if( val.x != prevVal.x ) - inputX.Text = val.x.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.y != prevVal.y ) - inputY.Text = val.y.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.z != prevVal.z ) - inputZ.Text = val.z.ToString( RuntimeInspectorUtils.numberFormat ); - if( val.w != prevVal.w ) - inputW.Text = val.w.ToString( RuntimeInspectorUtils.numberFormat ); - } + base.Refresh(); + UpdateInputs(); } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/BoundInputField.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/BoundInputField.cs index 1f3b6ae..cc55d1c 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/BoundInputField.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/BoundInputField.cs @@ -7,6 +7,10 @@ public class BoundInputField : MonoBehaviour { public delegate bool OnValueChangedDelegate( BoundInputField source, string input ); + [SerializeField] + [UnityEngine.Serialization.FormerlySerializedAs("multiValuesText")] + private Text multiValueText; + private bool initialized = false; private bool inputValid = true; private bool inputAltered = false; @@ -18,6 +22,18 @@ public class BoundInputField : MonoBehaviour [System.NonSerialized] public string DefaultEmptyValue = string.Empty; + private bool m_hasMultipleValues; + public bool HasMultipleValues + { + get { return m_hasMultipleValues; } + set + { + m_hasMultipleValues = value; + if( !inputAltered ) + OnHasMultipleValuesChanged( value ); + } + } + [System.NonSerialized] public bool CacheTextOnValueChange = true; @@ -66,6 +82,9 @@ public UISkin Skin placeholderColor.a = placeholderAlpha; placeholder.color = placeholderColor; } + + if( multiValueText ) + multiValueText.SetSkinInputFieldText( m_skin ); } } } @@ -102,6 +121,9 @@ private void InputFieldValueChanged( string str ) if( str == null || str.Length == 0 ) str = DefaultEmptyValue; + // Make changes visible even with multiple values + OnHasMultipleValuesChanged( false ); + if( OnValueChanged != null ) { inputValid = OnValueChanged( this, str ); @@ -138,5 +160,14 @@ private void InputFieldValueSubmitted( string str ) inputField.text = recentText; inputValid = true; } + + private void OnHasMultipleValuesChanged( bool value ) + { + if( value ) + inputField.text = DefaultEmptyValue; + inputField.textComponent.enabled = !value; + if( multiValueText ) + multiValueText.enabled = value; + } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/BoundSlider.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/BoundSlider.cs index d8ff4f0..a83f8b6 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/BoundSlider.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/BoundSlider.cs @@ -28,6 +28,17 @@ public float Value set { slider.value = value; } } + private bool m_hasMultipleValues; + public bool HasMultipleValues + { + get { return m_hasMultipleValues; } + set + { + m_hasMultipleValues = value; + OnHasMultipleValuesChanged( value ); + } + } + private int m_skinVersion = 0; private UISkin m_skin; public UISkin Skin @@ -85,5 +96,10 @@ private void SliderValueChanged( float value ) if( OnValueChanged != null ) OnValueChanged( this, value ); } + + private void OnHasMultipleValuesChanged( bool value ) + { + thumb.enabled = !value; + } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/ColorPicker/ColorPicker.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/ColorPicker/ColorPicker.cs index 985b739..862de6a 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/ColorPicker/ColorPicker.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/ColorPicker/ColorPicker.cs @@ -66,6 +66,7 @@ public static ColorPicker Instance private Color initialValue; private ColorWheelControl.OnColorChangedDelegate onColorChanged, onColorConfirmed; + private ColorWheelControl.OnColorCanceledDelegate onColorCanceled; protected override void Awake() { @@ -116,7 +117,12 @@ private void Start() OnSelectedColorChanged( colorWheel.Color ); } - public void Show( ColorWheelControl.OnColorChangedDelegate onColorChanged, ColorWheelControl.OnColorChangedDelegate onColorConfirmed, Color initialColor, Canvas referenceCanvas ) + public void Show( + ColorWheelControl.OnColorChangedDelegate onColorChanged, + ColorWheelControl.OnColorChangedDelegate onColorConfirmed, + Color initialColor, + Canvas referenceCanvas, + ColorWheelControl.OnColorCanceledDelegate onColorCanceled = null ) { initialValue = initialColor; @@ -126,6 +132,7 @@ public void Show( ColorWheelControl.OnColorChangedDelegate onColorChanged, Color alphaSlider.Value = initialColor.a; this.onColorChanged = onColorChanged; this.onColorConfirmed = onColorConfirmed; + this.onColorCanceled = onColorCanceled; if( referenceCanvas && this.referenceCanvas != referenceCanvas ) { @@ -142,9 +149,12 @@ public void Show( ColorWheelControl.OnColorChangedDelegate onColorChanged, Color public void Cancel() { + try { - if( colorWheel.Color != initialValue && onColorChanged != null ) + if( onColorCanceled != null ) + onColorCanceled(); + else if( colorWheel.Color != initialValue && onColorChanged != null ) onColorChanged( initialValue ); } catch( Exception e ) @@ -257,4 +267,4 @@ public static void DestroyInstance() } } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/ExposedMethod.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/ExposedMethod.cs index 8331009..97bc65c 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/ExposedMethod.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/ExposedMethod.cs @@ -25,12 +25,14 @@ public ExposedMethod( MethodInfo method, RuntimeInspectorButtonAttribute propert public void Call( object source ) { + MethodInfo toCall = method.IsGenericMethod ? method.MakeGenericMethod( source.GetType() ) : method; + if( isExtensionMethod ) - method.Invoke( null, new object[] { source } ); - else if( method.IsStatic ) - method.Invoke( null, null ); + toCall.Invoke( null, new object[] { source } ); + else if( toCall.IsStatic ) + toCall.Invoke( null, null ); else if( source != null ) - method.Invoke( source, null ); + toCall.Invoke( source, null ); } public object CallAndReturnValue( object source ) @@ -61,4 +63,4 @@ public ExposedExtensionMethodHolder( Type extendedType, MethodInfo method, Runti this.properties = properties; } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/NumberHandlers.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/NumberHandlers.cs index 09e258d..a178b02 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/NumberHandlers.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/NumberHandlers.cs @@ -9,13 +9,10 @@ public interface INumberHandler float MinValue { get; } float MaxValue { get; } - bool TryParse( string input, out object value ); - bool ValuesAreEqual( object value1, object value2 ); + bool TryParse( string input, out IConvertible value ); - object ConvertFromFloat( float value ); - float ConvertToFloat( object value ); - - string ToString( object value ); + IConvertible ConvertFromFloat( float value ); + float ConvertToFloat( IConvertible value ); } public class NumberHandlers @@ -26,13 +23,10 @@ private class IntHandler : INumberHandler public float MinValue { get { return int.MinValue; } } public float MaxValue { get { return int.MaxValue; } } - public bool TryParse( string input, out object value ) { int parsedVal; bool result = int.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public bool ValuesAreEqual( object value1, object value2 ) { return (int) value1 == (int) value2; } - - public object ConvertFromFloat( float value ) { return (int) value; } - public float ConvertToFloat( object value ) { return (int) value; } + public bool TryParse( string input, out IConvertible value ) { int parsedVal; bool result = int.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public string ToString( object value ) { return ( (int) value ).ToString( RuntimeInspectorUtils.numberFormat ); } + public IConvertible ConvertFromFloat( float value ) { return (int) value; } + public float ConvertToFloat( IConvertible value ) { return (int) value; } } private class UIntHandler : INumberHandler @@ -40,13 +34,10 @@ private class UIntHandler : INumberHandler public float MinValue { get { return uint.MinValue; } } public float MaxValue { get { return uint.MaxValue; } } - public bool TryParse( string input, out object value ) { uint parsedVal; bool result = uint.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public bool ValuesAreEqual( object value1, object value2 ) { return (uint) value1 == (uint) value2; } + public bool TryParse( string input, out IConvertible value ) { uint parsedVal; bool result = uint.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public object ConvertFromFloat( float value ) { return (uint) value; } - public float ConvertToFloat( object value ) { return (uint) value; } - - public string ToString( object value ) { return ( (uint) value ).ToString( RuntimeInspectorUtils.numberFormat ); } + public IConvertible ConvertFromFloat( float value ) { return (uint) value; } + public float ConvertToFloat( IConvertible value ) { return (uint) value; } } private class LongHandler : INumberHandler @@ -54,13 +45,10 @@ private class LongHandler : INumberHandler public float MinValue { get { return long.MinValue; } } public float MaxValue { get { return long.MaxValue; } } - public bool TryParse( string input, out object value ) { long parsedVal; bool result = long.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public bool ValuesAreEqual( object value1, object value2 ) { return (long) value1 == (long) value2; } - - public object ConvertFromFloat( float value ) { return (long) value; } - public float ConvertToFloat( object value ) { return (long) value; } + public bool TryParse( string input, out IConvertible value ) { long parsedVal; bool result = long.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public string ToString( object value ) { return ( (long) value ).ToString( RuntimeInspectorUtils.numberFormat ); } + public IConvertible ConvertFromFloat( float value ) { return (long) value; } + public float ConvertToFloat( IConvertible value ) { return (long) value; } } private class ULongHandler : INumberHandler @@ -68,13 +56,10 @@ private class ULongHandler : INumberHandler public float MinValue { get { return ulong.MinValue; } } public float MaxValue { get { return ulong.MaxValue; } } - public bool TryParse( string input, out object value ) { ulong parsedVal; bool result = ulong.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public bool ValuesAreEqual( object value1, object value2 ) { return (ulong) value1 == (ulong) value2; } + public bool TryParse( string input, out IConvertible value ) { ulong parsedVal; bool result = ulong.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public object ConvertFromFloat( float value ) { return (ulong) value; } - public float ConvertToFloat( object value ) { return (ulong) value; } - - public string ToString( object value ) { return ( (ulong) value ).ToString( RuntimeInspectorUtils.numberFormat ); } + public IConvertible ConvertFromFloat( float value ) { return (ulong) value; } + public float ConvertToFloat( IConvertible value ) { return (ulong) value; } } private class ByteHandler : INumberHandler @@ -82,13 +67,10 @@ private class ByteHandler : INumberHandler public float MinValue { get { return byte.MinValue; } } public float MaxValue { get { return byte.MaxValue; } } - public bool TryParse( string input, out object value ) { byte parsedVal; bool result = byte.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public bool ValuesAreEqual( object value1, object value2 ) { return (byte) value1 == (byte) value2; } - - public object ConvertFromFloat( float value ) { return (byte) value; } - public float ConvertToFloat( object value ) { return (byte) value; } + public bool TryParse( string input, out IConvertible value ) { byte parsedVal; bool result = byte.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public string ToString( object value ) { return ( (byte) value ).ToString( RuntimeInspectorUtils.numberFormat ); } + public IConvertible ConvertFromFloat( float value ) { return (byte) value; } + public float ConvertToFloat( IConvertible value ) { return (byte) value; } } private class SByteHandler : INumberHandler @@ -96,13 +78,10 @@ private class SByteHandler : INumberHandler public float MinValue { get { return sbyte.MinValue; } } public float MaxValue { get { return sbyte.MaxValue; } } - public bool TryParse( string input, out object value ) { sbyte parsedVal; bool result = sbyte.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public bool ValuesAreEqual( object value1, object value2 ) { return (sbyte) value1 == (sbyte) value2; } - - public object ConvertFromFloat( float value ) { return (sbyte) value; } - public float ConvertToFloat( object value ) { return (sbyte) value; } + public bool TryParse( string input, out IConvertible value ) { sbyte parsedVal; bool result = sbyte.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public string ToString( object value ) { return ( (sbyte) value ).ToString( RuntimeInspectorUtils.numberFormat ); } + public IConvertible ConvertFromFloat( float value ) { return (sbyte) value; } + public float ConvertToFloat( IConvertible value ) { return (sbyte) value; } } private class ShortHandler : INumberHandler @@ -110,13 +89,10 @@ private class ShortHandler : INumberHandler public float MinValue { get { return short.MinValue; } } public float MaxValue { get { return short.MaxValue; } } - public bool TryParse( string input, out object value ) { short parsedVal; bool result = short.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public bool ValuesAreEqual( object value1, object value2 ) { return (short) value1 == (short) value2; } + public bool TryParse( string input, out IConvertible value ) { short parsedVal; bool result = short.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public object ConvertFromFloat( float value ) { return (short) value; } - public float ConvertToFloat( object value ) { return (short) value; } - - public string ToString( object value ) { return ( (short) value ).ToString( RuntimeInspectorUtils.numberFormat ); } + public IConvertible ConvertFromFloat( float value ) { return (short) value; } + public float ConvertToFloat( IConvertible value ) { return (short) value; } } private class UShortHandler : INumberHandler @@ -124,13 +100,10 @@ private class UShortHandler : INumberHandler public float MinValue { get { return ushort.MinValue; } } public float MaxValue { get { return ushort.MaxValue; } } - public bool TryParse( string input, out object value ) { ushort parsedVal; bool result = ushort.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public bool ValuesAreEqual( object value1, object value2 ) { return (ushort) value1 == (ushort) value2; } - - public object ConvertFromFloat( float value ) { return (ushort) value; } - public float ConvertToFloat( object value ) { return (ushort) value; } + public bool TryParse( string input, out IConvertible value ) { ushort parsedVal; bool result = ushort.TryParse( input, NumberStyles.Integer, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public string ToString( object value ) { return ( (ushort) value ).ToString( RuntimeInspectorUtils.numberFormat ); } + public IConvertible ConvertFromFloat( float value ) { return (ushort) value; } + public float ConvertToFloat( IConvertible value ) { return (ushort) value; } } private class CharHandler : INumberHandler @@ -138,13 +111,10 @@ private class CharHandler : INumberHandler public float MinValue { get { return char.MinValue; } } public float MaxValue { get { return char.MaxValue; } } - public bool TryParse( string input, out object value ) { char parsedVal; bool result = char.TryParse( input, out parsedVal ); value = parsedVal; return result; } - public bool ValuesAreEqual( object value1, object value2 ) { return (char) value1 == (char) value2; } - - public object ConvertFromFloat( float value ) { return (char) value; } - public float ConvertToFloat( object value ) { return (char) value; } + public bool TryParse( string input, out IConvertible value ) { char parsedVal; bool result = char.TryParse( input, out parsedVal ); value = parsedVal; return result; } - public string ToString( object value ) { return ( (char) value ).ToString( RuntimeInspectorUtils.numberFormat ); } + public IConvertible ConvertFromFloat( float value ) { return (char) value; } + public float ConvertToFloat( IConvertible value ) { return (char) value; } } private class FloatHandler : INumberHandler @@ -152,13 +122,10 @@ private class FloatHandler : INumberHandler public float MinValue { get { return float.MinValue; } } public float MaxValue { get { return float.MaxValue; } } - public bool TryParse( string input, out object value ) { float parsedVal; bool result = float.TryParse( input, NumberStyles.Float, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public bool ValuesAreEqual( object value1, object value2 ) { return (float) value1 == (float) value2; } + public bool TryParse( string input, out IConvertible value ) { float parsedVal; bool result = float.TryParse( input, NumberStyles.Float, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public object ConvertFromFloat( float value ) { return value; } - public float ConvertToFloat( object value ) { return (float) value; } - - public string ToString( object value ) { return ( (float) value ).ToString( RuntimeInspectorUtils.numberFormat ); } + public IConvertible ConvertFromFloat( float value ) { return value; } + public float ConvertToFloat( IConvertible value ) { return (float) value; } } private class DoubleHandler : INumberHandler @@ -166,13 +133,10 @@ private class DoubleHandler : INumberHandler public float MinValue { get { return float.MinValue; } } public float MaxValue { get { return float.MaxValue; } } - public bool TryParse( string input, out object value ) { double parsedVal; bool result = double.TryParse( input, NumberStyles.Float, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public bool ValuesAreEqual( object value1, object value2 ) { return (double) value1 == (double) value2; } - - public object ConvertFromFloat( float value ) { return (double) value; } - public float ConvertToFloat( object value ) { return (float) (double) value; } + public bool TryParse( string input, out IConvertible value ) { double parsedVal; bool result = double.TryParse( input, NumberStyles.Float, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public string ToString( object value ) { return ( (double) value ).ToString( RuntimeInspectorUtils.numberFormat ); } + public IConvertible ConvertFromFloat( float value ) { return (double) value; } + public float ConvertToFloat( IConvertible value ) { return (float) (double) value; } } private class DecimalHandler : INumberHandler @@ -180,13 +144,10 @@ private class DecimalHandler : INumberHandler public float MinValue { get { return float.MinValue; } } public float MaxValue { get { return float.MaxValue; } } - public bool TryParse( string input, out object value ) { decimal parsedVal; bool result = decimal.TryParse( input, NumberStyles.Float, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public bool ValuesAreEqual( object value1, object value2 ) { return (decimal) value1 == (decimal) value2; } - - public object ConvertFromFloat( float value ) { return (decimal) value; } - public float ConvertToFloat( object value ) { return (float) (decimal) value; } + public bool TryParse( string input, out IConvertible value ) { decimal parsedVal; bool result = decimal.TryParse( input, NumberStyles.Float, RuntimeInspectorUtils.numberFormat, out parsedVal ); value = parsedVal; return result; } - public string ToString( object value ) { return ( (decimal) value ).ToString( RuntimeInspectorUtils.numberFormat ); } + public IConvertible ConvertFromFloat( float value ) { return (decimal) value; } + public float ConvertToFloat( IConvertible value ) { return (float) (decimal) value; } } #endregion @@ -230,4 +191,4 @@ public static INumberHandler Get( Type type ) return result; } } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/RuntimeInspectorSettings.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/RuntimeInspectorSettings.cs index 7d94f40..747d436 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/RuntimeInspectorSettings.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/RuntimeInspectorSettings.cs @@ -23,4 +23,4 @@ public class RuntimeInspectorSettings : ScriptableObject public VariableSet[] ExposedVariables { get { return m_exposedVariables; } } #pragma warning restore 0649 } -} \ No newline at end of file +} diff --git a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/RuntimeInspectorUtils.cs b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/RuntimeInspectorUtils.cs index 7873dda..f812ca1 100644 --- a/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/RuntimeInspectorUtils.cs +++ b/Plugins/RuntimeInspector/Scripts/RuntimeInspector/Helpers/RuntimeInspectorUtils.cs @@ -1,7 +1,9 @@ #define EXCLUDE_BACKING_FIELDS_FROM_VARIABLES using System; +using System.Collections; using System.Collections.Generic; +using System.Collections.ObjectModel; using System.Globalization; using System.Reflection; using System.Runtime.Serialization; @@ -93,6 +95,177 @@ public static bool IsEmpty( this IList objects ) return true; } + // Get first entry if all entries in given sequence are equal, null + // otherwise. Returns true if all entries are equal. + // + // Sequence null or empty: single null, return true + // All entries equal: single first entry, return true + // Distinct entries: single first entry, return false + // All entries null: single null, return true + public static bool TryGetSingle( this IList list, out T single ) + { + if( list == null || list.Count == 0 ) + { + single = default( T ); + } + else + { + single = list[0]; + foreach( T item in list ) + if( !Equals( item, single ) ) + return false; + } + return true; + } + + // For each given list, compare the ith entry with the ith entry in every + // other list. If all are equal, put the value at the ith position in the + // returned list. If unequal, put null at that position. + public static T?[] SinglePerEntry( + this IList> source) where T : struct, IEquatable + { + if( source.Count == 0 ) + return new T?[0]; + + int len = int.MaxValue; + foreach( var list in source ) + len = Math.Min( len, list.Count ); + + var result = new T?[len]; + for( int i = 0; i < len; i++ ) + { + result[i] = source[0][i]; + for( int j = 1; j < source.Count; j++ ) + { + if( result[i].HasValue && !result[i].Value.Equals( source[j][i] ) ) + result[i] = null; + } + } + return result; + } + + internal static Type CommonBaseType( this IEnumerable types ) + { + Type ret = types.FirstOrDefault(); + if( ret == null ) + return null; + + foreach( Type type in types ) + { + if( type.IsAssignableFrom( ret ) ) + { + ret = type; + } + else + { + while( !ret.IsAssignableFrom( type ) ) + ret = ret.BaseType; + } + } + + return ret; + } + + internal static T FirstOrDefault( this IEnumerable source ) + { + foreach( T item in source ) + return item; + return default( T ); + } + + internal static bool All( this IEnumerable source, Func func ) + { + foreach( T item in source ) + if( !func( item ) ) + return false; + return true; + } + + internal static bool Any( this IEnumerable source, Func func ) + { + foreach( T item in source ) + if( func( item ) ) + return true; + return false; + } + + internal static TResult[] Cast( this IList source ) + { + var result = new TResult[source.Count]; + for( int i = 0; i < result.Length; i++ ) + result[i] = (TResult) (object) source[i]; + return result; + } + + internal static TResult[] Select( this IList list, Func selector ) + { + var result = new TResult[list.Count]; + for( int i = 0; i < result.Length; i++ ) + result[i] = selector( list[i] ); + return result; + } + + internal static ReadOnlyCollection AsReadOnly( this IList list ) + { + return new ReadOnlyCollection( list ); + } + + // Call given function with each 'zipped' pair built from entries in + // given sequences. + // If one of the sequences only has one entry, it is + // passed together with every entry in the other sequence. + // If both pairs have no or at least two entries, IEnumerable.Zip is used. + internal static TFirst[] Broadcast( + this ReadOnlyCollection first, + ReadOnlyCollection second, + Func sink) + { + TFirst[] result; + if( first.Count == 1 ) + { + result = new TFirst[second.Count]; + for( int i = 0; i < result.Length; i++ ) + result[i] = sink( first[0], second[i] ); + } + else if( second.Count == 1 ) + { + result = new TFirst[first.Count]; + for( int i = 0; i < result.Length; i++ ) + result[i] = sink( first[i], second[0] ); + } + else + { + int minLen = Math.Min(first.Count, second.Count); + result = new TFirst[minLen]; + for( int i = 0; i < minLen; i++ ) + result[i] = sink( first[i], second[i] ); + } + return result; + } + + internal static void Broadcast( + this ReadOnlyCollection first, + ReadOnlyCollection second, + Action sink) + { + if( first.Count == 1 ) + { + foreach( TSecond s in second ) + sink( first[0], s ); + } + else if( second.Count == 1 ) + { + foreach( TFirst f in first ) + sink( f, second[0] ); + } + else + { + int len = Math.Min(first.Count, second.Count); + for (int i = 0; i < len; i++) + sink( first[i], second[i] ); + } + } + public static string ToTitleCase( this string str ) { if( str == null || str.Length == 0 ) @@ -149,17 +322,45 @@ public static string ToTitleCase( this string str ) return stringBuilder.ToString(); } + private static string HandleDefaultType( Type type ) + { + const string none = "None"; + if( type == null ) + return none; + return string.Concat( none, " (", type.Name, ")" ); + } + public static string GetNameWithType( this object obj, Type defaultType = null ) { if( obj.IsNull() ) + return HandleDefaultType( defaultType ); + + string typeName = null; + if( obj is IEnumerable ) + { + int count = 0; + foreach( object elem in (IEnumerable) obj ) + { + if( typeName == null && elem != null ) + typeName = elem.GetType().Name; + count++; + } + + if( typeName == null ) + typeName = HandleDefaultType( defaultType ); + + if( count > 1 ) + return string.Concat( typeName, " [", count, "]" ); + } + else { - if( defaultType == null ) - return "None"; + typeName = obj.GetType().Name; - return string.Concat( "None (", defaultType.Name, ")" ); + if( obj is Object ) + return string.Concat( ( (Object) obj ).name, " (", typeName, ")" ); } - return ( obj is Object ) ? string.Concat( ( (Object) obj ).name, " (", obj.GetType().Name, ")" ) : obj.GetType().Name; + return typeName; } public static Texture GetTexture( this Object obj ) @@ -989,5 +1190,22 @@ public static IRuntimeInspectorCustomEditor GetCustomEditor( Type type ) return null; } + + public static Quaternion Quaternion( this Vector4 v ) + { + return new Quaternion( v.x, v.y, v.z, v.w ); + } + +#if UNITY_2017_2_OR_NEWER + public static RectInt FloorToInt( this Rect r ) + { + return new RectInt( Vector2Int.FloorToInt( r.position ), Vector2Int.FloorToInt( r.size ) ); + } +#endif + + public static float[] ToArray( this Vector2 v ) { return new float[] { v.x, v.y }; } + public static float[] ToArray( this Vector3 v ) { return new float[] { v.x, v.y, v.z }; } + public static float[] ToArray( this Vector4 v ) { return new float[] { v.x, v.y, v.z, v.w }; } + public static float[] ToArray( this Rect v ) { return new float[] { v.x, v.y, v.width, v.height }; } } -} \ No newline at end of file +}