@@ -14,10 +14,19 @@ internal class PosingTransformEditor
14
14
private Transform ? _trackingTransform ;
15
15
private Vector3 ? _trackingEuler ;
16
16
17
- public void Draw ( string id , PosingCapability posingCapability , float ? width = null )
17
+ private bool _compactMode = false ;
18
+
19
+ public void Draw ( string id , PosingCapability posingCapability , bool compactMode = false )
18
20
{
19
21
var selected = posingCapability . Selected ;
20
22
23
+ _compactMode = compactMode ;
24
+
25
+ if ( _compactMode )
26
+ ImGui . PushStyleVar ( ImGuiStyleVar . ItemSpacing , new Vector2 ( 4 , 3 ) ) ;
27
+ else
28
+ ImGui . PushStyleVar ( ImGuiStyleVar . ItemSpacing , new Vector2 ( 4 , 5 ) ) ;
29
+
21
30
using ( ImRaii . PushId ( id ) )
22
31
{
23
32
selected . Switch (
@@ -26,24 +35,24 @@ public void Draw(string id, PosingCapability posingCapability, float? width = nu
26
35
var realBone = posingCapability . SkeletonPosing . GetBone ( bone ) ;
27
36
if ( realBone != null && realBone . Skeleton . IsValid )
28
37
{
29
- DrawBoneTransformEditor ( posingCapability , bone , width ) ;
38
+ DrawBoneTransformEditor ( posingCapability , bone ) ;
30
39
}
31
40
else
32
41
{
33
- DrawModelTransformEditor ( posingCapability , width ) ;
42
+ DrawModelTransformEditor ( posingCapability ) ;
34
43
}
35
44
} ,
36
- _ => DrawModelTransformEditor ( posingCapability , width ) ,
37
- _ => DrawModelTransformEditor ( posingCapability , width )
45
+ _ => DrawModelTransformEditor ( posingCapability ) ,
46
+ _ => DrawModelTransformEditor ( posingCapability )
38
47
) ;
39
48
}
49
+
50
+ ImGui . PopStyleVar ( ) ;
51
+
40
52
}
41
53
42
- private void DrawBoneTransformEditor ( PosingCapability posingCapability , BonePoseInfoId boneId , float ? width )
54
+ private void DrawBoneTransformEditor ( PosingCapability posingCapability , BonePoseInfoId boneId )
43
55
{
44
- if ( width . HasValue )
45
- width -= ImGui . CalcTextSize ( "XXXX" ) . X ;
46
-
47
56
var bone = posingCapability . SkeletonPosing . GetBone ( boneId ) ;
48
57
var bonePose = bone != null ? posingCapability . SkeletonPosing . GetBonePose ( boneId ) : null ;
49
58
@@ -57,63 +66,30 @@ private void DrawBoneTransformEditor(PosingCapability posingCapability, BonePose
57
66
bool didChange = false ;
58
67
bool anyActive = false ;
59
68
60
-
61
- if ( width . HasValue )
62
- ImGui . PushItemWidth ( width . Value ) ;
63
-
64
69
var text = "No Bone Selected" ;
65
70
if ( bone != null )
66
71
text = bone . FriendlyDescriptor ;
67
- ImGui . Text ( text ) ;
68
72
69
- ImGui . SameLine ( ) ;
70
- if ( ImBrio . FontIconButtonRight ( "ik" , FontAwesomeIcon . Adjust , 1.2f , "Inverse Kinematics" , bone ? . EligibleForIK == true ) )
71
- ImGui . OpenPopup ( "transform_ik_popup" ) ;
73
+ ImGui . Text ( text ) ;
72
74
73
- didChange |= ImGui . DragFloat3 ( "###position ", ref realTransform . Position , 0.001f ) ;
75
+ didChange |= ImBrio . DragFloat3 ( $ " { FontAwesomeIcon . ArrowsUpDownLeftRight . ToIconString ( ) } ", ref realTransform . Position , 0.1f , "Position" ) ;
74
76
anyActive |= ImGui . IsItemActive ( ) ;
75
- if ( ImGui . IsItemHovered ( ) )
76
- ImGui . SetTooltip ( "Position" ) ;
77
- ImGui . SameLine ( ) ;
78
- bool propBool = propagate . HasFlag ( TransformComponents . Position ) ;
79
- if ( ImGui . Checkbox ( "###propagate_position" , ref propBool ) )
80
- {
81
- didChange |= true ;
82
- propagate = propBool ? propagate | TransformComponents . Position : propagate & ~ TransformComponents . Position ;
83
- }
84
- if ( ImGui . IsItemHovered ( ) )
85
- ImGui . SetTooltip ( "Propagate" ) ;
86
77
87
- didChange |= ImGui . DragFloat3 ( "###rotation ", ref realEuler , 0.1f ) ;
78
+ didChange |= ImBrio . DragFloat3 ( $ " { FontAwesomeIcon . ArrowsSpin . ToIconString ( ) } ", ref realEuler , 5.0f , "Rotation" ) ;
88
79
anyActive |= ImGui . IsItemActive ( ) ;
89
- if ( ImGui . IsItemHovered ( ) )
90
- ImGui . SetTooltip ( "Rotation" ) ;
91
- ImGui . SameLine ( ) ;
92
- propBool = propagate . HasFlag ( TransformComponents . Rotation ) ;
93
- if ( ImGui . Checkbox ( "###propagate_rotation" , ref propBool ) )
94
- {
95
- didChange |= true ;
96
- propagate = propBool ? propagate | TransformComponents . Rotation : propagate & ~ TransformComponents . Rotation ;
97
- }
98
- if ( ImGui . IsItemHovered ( ) )
99
- ImGui . SetTooltip ( "Propagate" ) ;
100
80
101
- didChange |= ImGui . DragFloat3 ( "###scale ", ref realTransform . Scale , 0.001f ) ;
81
+ didChange |= ImBrio . DragFloat3 ( $ " { FontAwesomeIcon . ExpandAlt . ToIconString ( ) } ", ref realTransform . Scale , 0.1f , "Scale" ) ;
102
82
anyActive |= ImGui . IsItemActive ( ) ;
103
- if ( ImGui . IsItemHovered ( ) )
104
- ImGui . SetTooltip ( "Scale" ) ;
83
+
84
+ ImGui . Spacing ( ) ;
85
+
86
+ if ( ImBrio . FontIconButton ( "ik" , FontAwesomeIcon . Adjust , "Inverse Kinematics" , bone ? . EligibleForIK == true ) )
87
+ ImGui . OpenPopup ( "transform_ik_popup" ) ;
88
+
105
89
ImGui . SameLine ( ) ;
106
- propBool = propagate . HasFlag ( TransformComponents . Scale ) ;
107
- if ( ImGui . Checkbox ( "###propagate_scale" , ref propBool ) )
108
- {
109
- didChange |= true ;
110
- propagate = propBool ? propagate | TransformComponents . Scale : propagate & ~ TransformComponents . Scale ;
111
- }
112
- if ( ImGui . IsItemHovered ( ) )
113
- ImGui . SetTooltip ( "Propagate" ) ;
114
90
115
- if ( width . HasValue )
116
- ImGui . PopItemWidth ( ) ;
91
+ if ( ImBrio . FontIconButton ( "propagate" , FontAwesomeIcon . Compress , "Propagate" , bone ? . EligibleForIK == true ) )
92
+ ImGui . OpenPopup ( "transform_propagate_popup" ) ;
117
93
118
94
using ( var popup = ImRaii . Popup ( "transform_ik_popup" ) )
119
95
{
@@ -123,6 +99,14 @@ private void DrawBoneTransformEditor(PosingCapability posingCapability, BonePose
123
99
}
124
100
}
125
101
102
+ using ( var popup = ImRaii . Popup ( "transform_propagate_popup" ) )
103
+ {
104
+ if ( popup . Success && bonePose != null )
105
+ {
106
+ didChange |= DrawPropagateCheckboxes ( propagate ) ;
107
+ }
108
+ }
109
+
126
110
realTransform . Rotation = realEuler . ToQuaternion ( ) ;
127
111
var toApply = before + realTransform . CalculateDiff ( beforeMods ) ;
128
112
@@ -149,8 +133,44 @@ private void DrawBoneTransformEditor(PosingCapability posingCapability, BonePose
149
133
}
150
134
}
151
135
136
+ private bool DrawPropagateCheckboxes ( TransformComponents propagate )
137
+ {
138
+ var didChange = false ;
139
+
140
+ bool propBool = propagate . HasFlag ( TransformComponents . Position ) ;
141
+ if ( ImGui . Checkbox ( "P###propagate_position" , ref propBool ) )
142
+ {
143
+ didChange |= true ;
144
+ propagate = propBool ? propagate | TransformComponents . Position : propagate & ~ TransformComponents . Position ;
145
+ }
146
+ if ( ImGui . IsItemHovered ( ) )
147
+ ImGui . SetTooltip ( "Propagate Positions" ) ;
148
+
149
+ ImGui . SameLine ( ) ;
150
+ propBool = propagate . HasFlag ( TransformComponents . Rotation ) ;
151
+ if ( ImGui . Checkbox ( "R###propagate_rotation" , ref propBool ) )
152
+ {
153
+ didChange |= true ;
154
+ propagate = propBool ? propagate | TransformComponents . Rotation : propagate & ~ TransformComponents . Rotation ;
155
+ }
156
+ if ( ImGui . IsItemHovered ( ) )
157
+ ImGui . SetTooltip ( "Propagate Rotations" ) ;
158
+
159
+ ImGui . SameLine ( ) ;
160
+
161
+ propBool = propagate . HasFlag ( TransformComponents . Scale ) ;
162
+ if ( ImGui . Checkbox ( "S###propagate_scale" , ref propBool ) )
163
+ {
164
+ didChange |= true ;
165
+ propagate = propBool ? propagate | TransformComponents . Scale : propagate & ~ TransformComponents . Scale ;
166
+ }
167
+ if ( ImGui . IsItemHovered ( ) )
168
+ ImGui . SetTooltip ( "Propagate Scales" ) ;
169
+
170
+ return didChange ;
171
+ }
152
172
153
- private void DrawModelTransformEditor ( PosingCapability posingCapability , float ? width )
173
+ private void DrawModelTransformEditor ( PosingCapability posingCapability )
154
174
{
155
175
var before = posingCapability . ModelPosing . Transform ;
156
176
var realTransform = _trackingTransform ?? before ;
@@ -159,32 +179,16 @@ private void DrawModelTransformEditor(PosingCapability posingCapability, float?
159
179
bool didChange = false ;
160
180
bool anyActive = false ;
161
181
162
-
163
- if ( width . HasValue )
164
- ImGui . PushItemWidth ( width . Value ) ;
165
-
166
182
ImGui . Text ( "Model Transform" ) ;
167
183
168
- didChange |= ImGui . DragFloat3 ( "###position ", ref realTransform . Position , 0.001f ) ;
184
+ didChange |= ImBrio . DragFloat3 ( $ " { FontAwesomeIcon . ArrowsUpDownLeftRight . ToIconString ( ) } ", ref realTransform . Position , 0.1f , "Position" ) ;
169
185
anyActive |= ImGui . IsItemActive ( ) ;
170
- if ( ImGui . IsItemHovered ( ) )
171
- ImGui . SetTooltip ( "Position" ) ;
172
-
173
186
174
- didChange |= ImGui . DragFloat3 ( "###rotation ", ref realEuler , 0.1f ) ;
187
+ didChange |= ImBrio . DragFloat3 ( $ " { FontAwesomeIcon . ArrowsSpin . ToIconString ( ) } ", ref realEuler , 5.0f , "Rotation" ) ;
175
188
anyActive |= ImGui . IsItemActive ( ) ;
176
- if ( ImGui . IsItemHovered ( ) )
177
- ImGui . SetTooltip ( "Rotation" ) ;
178
-
179
189
180
- didChange |= ImGui . DragFloat3 ( "###scale ", ref realTransform . Scale , 0.001f ) ;
190
+ didChange |= ImBrio . DragFloat3 ( $ " { FontAwesomeIcon . ExpandAlt . ToIconString ( ) } ", ref realTransform . Scale , 0.1f , "Scale" ) ;
181
191
anyActive |= ImGui . IsItemActive ( ) ;
182
- if ( ImGui . IsItemHovered ( ) )
183
- ImGui . SetTooltip ( "Scale" ) ;
184
-
185
-
186
- if ( width . HasValue )
187
- ImGui . PopItemWidth ( ) ;
188
192
189
193
190
194
realTransform . Rotation = realEuler . ToQuaternion ( ) ;
0 commit comments