Skip to content

Commit 12598d4

Browse files
committed
Update UI to use UniverseUGUI 1.6.4-alpha.1
1 parent 0766645 commit 12598d4

6 files changed

Lines changed: 83 additions & 71 deletions

File tree

ButtJiggle.sln

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,13 @@ VisualStudioVersion = 17.3.32922.545
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ButtJiggle", "ButtJiggle\ButtJiggle.csproj", "{21D55085-3997-4A44-B09B-2B1735CA6D2A}"
77
EndProject
8+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D7069249-9867-4E11-B365-DA6DE93A9F24}"
9+
ProjectSection(SolutionItems) = preProject
10+
.gitignore = .gitignore
11+
LICENSE = LICENSE
12+
README.md = README.md
13+
EndProjectSection
14+
EndProject
815
Global
916
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1017
Debug|Any CPU = Debug|Any CPU

ButtJiggle/ButtJiggle.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public static class PluginInfo
5050
// The name of this plugin.
5151
public const string PLUGIN_NAME = "Butt Jiggle";
5252
// The version of this plugin.
53-
public const string PLUGIN_VERSION = "0.13";
53+
public const string PLUGIN_VERSION = "0.14";
5454
}
5555
}
5656

ButtJiggle/ButtJiggle.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@
5151
<PackageReference Include="UniverseLib.Analyzers" Version="1.0.4" targetFramework="net35" developmentDependency="true">
5252
<PrivateAssets>all</PrivateAssets>
5353
</PackageReference>
54-
<PackageReference Include="LuVoid.UniverseUGUI.Mono" Version="1.6.3-preview" targetFramework="net35" />
55-
<PackageReference Include="LuVoid.CM3D2.UGUI" Version="0.1.3-preview" targetFramework="net35" />
54+
<PackageReference Include="LuVoid.UniverseUGUI.Mono" Version="1.6.4-alpha.1" targetFramework="net35" />
55+
<PackageReference Include="LuVoid.CM3D2.UGUI" Version="0.1.4-alpha.1" targetFramework="net35" />
5656
<PackageReference Include="LuVoid.BepInEx.Configuration.Json" Version="0.5.0-alpha" targetFramework="net35" />
5757
</ItemGroup>
5858
<ItemGroup>

ButtJiggle/ButtJiggleUI.cs

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using COM3D2.ButtJiggle.UI;
1111
using UniverseLib.UI.Styles;
1212
using CM3D2.UGUI.Resources;
13+
using CM3D2.UGUI.Panels;
1314

1415
namespace COM3D2.ButtJiggle
1516
{
@@ -77,19 +78,18 @@ internal void ToggleUI()
7778
}
7879
}
7980

80-
internal class PluginPanel : SkinnedPanelBase
81+
internal class PluginPanel : CM3D2Panel
8182
{
8283
public PluginPanel(UIBase owner) : base(owner) { }
8384

8485
public override string Name => PluginInfo.PLUGIN_NAME;
85-
public override int MinWidth => 400;
86-
public override int MinHeight => 500;
86+
public override Vector2 PreferredSize => base.PreferredSize + new Vector2(10, 10);
8787
public override Vector2 DefaultAnchorMin => new(1f, 0.5f);
8888
public override Vector2 DefaultAnchorMax => DefaultAnchorMin;
89-
public override Vector2 DefaultPosition => new Vector2(-MinWidth - 50, MinHeight / 2);
89+
public override Vector2 DefaultPosition => new Vector2(-PreferredSize.x - 50, PreferredSize.y / 2);
9090
public override bool CanDragAndResize => true;
9191

92-
public override IReadOnlyUISkin Skin => Styles.StandardSkin;
92+
private CanvasGroup globalOverrideCanvasGroup;
9393

9494
protected override void OnClosePanelClicked()
9595
{
@@ -115,34 +115,41 @@ protected void SafeConstructPanelContent()
115115

116116
Create.BoolControl(ContentRoot, "DebugMode", "Debug Mode", refGet: () => ref JiggleBoneHelper.DebugMode);
117117

118-
var overrideColumn = Create.UIObject(ContentRoot, "Overrides");
119-
UIFactory.SetLayoutGroup<VerticalLayoutGroup>(overrideColumn, false, false, true, true); // .CreateVerticalGroup(ContentRoot, "overrides", false, false, true, true, childAlignment: TextAnchor.UpperLeft);
118+
var verticalFrame = Create.VerticalFrame(ContentRoot, "Overrides");
119+
var overrideColumn = verticalFrame.ContentRoot;
120+
//UIFactory.SetLayoutGroup<VerticalLayoutGroup>(overrideColumn, false, false, true, true);
120121
UIFactory.SetLayoutElement(overrideColumn, minWidth: 300, minHeight: 300);
121122

122-
//UIFactory.SetLayoutElement(slotDropdownRoot, minWidth: 300, minHeight: 25, preferredWidth: 300, preferredHeight: 25);
123+
Create.BoolControl(overrideColumn, "UseGlobalOverride", "Use Global Override",
124+
refGet: () =>
125+
{
126+
ref var value = ref JiggleBoneHelper.UseGlobalOverride;
127+
globalOverrideCanvasGroup.interactable = value;
128+
return ref value;
129+
},
130+
onSet: OnGlobalOverrideUIUpdated,
131+
listenForUpdate: ButtJiggle.Instance.OnGlobalOverrideUpdated
132+
);
133+
134+
135+
var globalOverrideGroup = Create.VerticalGroup(overrideColumn, "GlobalOverrideCanvasGroup");
136+
globalOverrideCanvasGroup = UIFactory.SetCanvasGroup(globalOverrideGroup, interactable: JiggleBoneHelper.UseGlobalOverride);
123137
using (Create.LayoutContext(flexibleWidth: 1))
124138
{
125-
Create.BoolControl(overrideColumn, "UseGlobalOverride", "Use Global Override",
126-
refGet: () => ref JiggleBoneHelper.UseGlobalOverride,
127-
onSet: OnGlobalOverrideUIUpdated,
128-
listenForUpdate: ButtJiggle.Instance.OnGlobalOverrideUpdated
129-
);
130-
131139
List<GameObject> slotColumns = null;
132140

133-
var slotDropdown = Create.Dropdown(overrideColumn, "SlotSelectDropdown",
134-
(slotIndex) =>
141+
var slotDropdown = Create.Dropdown(globalOverrideGroup, "SlotSelectDropdown");
142+
slotDropdown.OnValueChanged += (slotIndex) =>
143+
{
144+
for (int i = 0; i < slotColumns.Count; i++)
135145
{
136-
for (int i = 0; i < slotColumns.Count; i++)
137-
{
138-
slotColumns[i].SetActive(i == slotIndex);
139-
}
146+
slotColumns[i].SetActive(i == slotIndex);
140147
}
141-
);
148+
};
142149

143150
slotColumns = new List<GameObject>() {
144-
CreateJiggleBoneOverrideColumn(overrideColumn, "Hips" , () => ref JiggleBoneHelper.GlobalOverride.HipOverride , OnGlobalOverrideUIUpdated, ButtJiggle.Instance.OnGlobalOverrideUpdated),
145-
CreateJiggleBoneOverrideColumn(overrideColumn, "Pelvis", () => ref JiggleBoneHelper.GlobalOverride.PelvisOverride, OnGlobalOverrideUIUpdated, ButtJiggle.Instance.OnGlobalOverrideUpdated),
151+
CreateJiggleBoneOverrideColumn(globalOverrideGroup, "Hips" , () => ref JiggleBoneHelper.GlobalOverride.HipOverride , OnGlobalOverrideUIUpdated, ButtJiggle.Instance.OnGlobalOverrideUpdated),
152+
CreateJiggleBoneOverrideColumn(globalOverrideGroup, "Pelvis", () => ref JiggleBoneHelper.GlobalOverride.PelvisOverride, OnGlobalOverrideUIUpdated, ButtJiggle.Instance.OnGlobalOverrideUpdated),
146153
};
147154

148155
int i = 0;
@@ -168,9 +175,7 @@ private GameObject CreateJiggleBoneOverrideColumn(
168175
System.Action onSet,
169176
UnityEvent listen = null)
170177
{
171-
//var column = UIFactory.CreateVerticalGroup(parent, name, false, false, true, true, childAlignment: TextAnchor.UpperLeft);
172-
var column = Create.UIObject(parent, name);
173-
UIFactory.SetLayoutGroup<VerticalLayoutGroup>(column, false, false, true, true); // .CreateVerticalGroup(ContentRoot, "overrides", false, false, true, true, childAlignment: TextAnchor.UpperLeft);
178+
var column = Create.VerticalGroup(parent, name);
174179
using (Create.LayoutContext(flexibleWidth: 1))
175180
{
176181
Create.OverrideProperty(column, "Blend Value (auto)", refGet: () => ref refGet().BlendValue , onSet, listen);
@@ -194,6 +199,7 @@ private GameObject CreateJiggleBoneOverrideColumn(
194199
private void OnGlobalOverrideUIUpdated()
195200
{
196201
ButtJiggle.ConfigSaveGlobalOverride();
202+
globalOverrideCanvasGroup.interactable = JiggleBoneHelper.UseGlobalOverride;
197203
}
198204

199205
// override other methods as desired

ButtJiggle/UI/UIFactoryExtensions.cs

Lines changed: 39 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using UnityEngine.Events;
33
using UnityEngine;
44
using UniverseLib.UI;
5-
using UniverseLib.UI.Models.Controls;
5+
using UniverseLib.UI.Controls;
66
using UniverseLib.Utility;
77
using UnityEngine.UI;
88

@@ -23,50 +23,49 @@ public static GameObject OverrideProperty<T>(this UIFactory create, GameObject p
2323
);
2424
*/
2525

26-
var row = create.UIObject(parent, $"Override_{propertyName}".Replace(" ", ""));
27-
UIFactory.SetLayoutGroup<HorizontalLayoutGroup>(row, false, false, true, true);
28-
using (create.LayoutContext(null))
29-
{
30-
Property valueProperty = null;
31-
void onEnabledSet()
32-
{
33-
valueProperty.Control.Component.interactable = refGet().Enabled;
34-
onSet?.Invoke();
35-
}
36-
ref bool refEnabledGet()
37-
{
38-
ref bool enabled = ref refGet().Enabled;
39-
valueProperty.Control.Component.interactable = enabled;
40-
return ref enabled;
41-
}
26+
var row = create.HorizontalGroup(parent, $"Override_{propertyName}".Replace(" ", ""));
4227

43-
BoolControl enabledControl = create.BoolControl(row, $"{propertyName}.{nameof(Override<T>.Enabled)}", refEnabledGet, onEnabledSet, listen);
28+
using var _nullContext = create.LayoutContext(null);
4429

45-
//var dividerLabel = create.Label(row, "Divider", " | ");
30+
Property valueProperty = null;
31+
void onEnabledSet()
32+
{
33+
valueProperty.Control.Component.interactable = refGet().Enabled;
34+
onSet?.Invoke();
35+
}
36+
ref bool refEnabledGet()
37+
{
38+
ref bool enabled = ref refGet().Enabled;
39+
valueProperty.Control.Component.interactable = enabled;
40+
return ref enabled;
41+
}
4642

47-
if (refGet is RefGetter<Override<string>> refGetOverrideString)
48-
{
49-
valueProperty = create.StringProperty(row, propertyName, () => ref refGetOverrideString().Value, onSet, listen);
50-
}
51-
else if (refGet is RefGetter<Override<bool>> refGetOverrideBool)
52-
{
53-
valueProperty = create.BoolProperty(row, propertyName, () => ref refGetOverrideBool().Value, onSet, listen);
54-
}
55-
else if (refGet is RefGetter<Override<Stiffness>> refGetOverrideStiffness)
56-
{
57-
valueProperty = create.ParsedProperty<Stiffness, StiffnessParser>(row, propertyName,
58-
() => ref refGetOverrideStiffness().Value,
59-
onSet,
60-
listen
61-
);
62-
}
63-
else
64-
{
65-
valueProperty = create.ParsedProperty(row, propertyName, () => ref refGet().Value, onSet, listen);
66-
}
43+
BoolControl enabledControl = create.BoolControl(row, $"{propertyName}.{nameof(Override<T>.Enabled)}", refEnabledGet, onEnabledSet, listen);
6744

68-
UIFactory.SetLayoutElement(valueProperty.GameObject, flexibleWidth: 1);
45+
//var dividerLabel = create.Label(row, "Divider", " | ");
46+
47+
if (refGet is RefGetter<Override<string>> refGetOverrideString)
48+
{
49+
valueProperty = create.StringProperty(row, propertyName, () => ref refGetOverrideString().Value, onSet, listen);
6950
}
51+
else if (refGet is RefGetter<Override<bool>> refGetOverrideBool)
52+
{
53+
valueProperty = create.BoolProperty(row, propertyName, () => ref refGetOverrideBool().Value, onSet, listen);
54+
}
55+
else if (refGet is RefGetter<Override<Stiffness>> refGetOverrideStiffness)
56+
{
57+
valueProperty = create.ParsedProperty<Stiffness, StiffnessParser>(row, propertyName,
58+
() => ref refGetOverrideStiffness().Value,
59+
onSet,
60+
listen
61+
);
62+
}
63+
else
64+
{
65+
valueProperty = create.ParsedProperty(row, propertyName, () => ref refGet().Value, onSet, listen);
66+
}
67+
68+
UIFactory.SetLayoutElement(valueProperty.GameObject, flexibleWidth: 1);
7069
return row;
7170
}
7271

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ This plugin is in the early testing stages, but feel free to sneak a peek and [d
55
## Requirements
66
* Requires [BepInEx 5.4](https://github.com/BepInEx/BepInEx)
77
* Requires [BepInEx.Configuration.Json 0.5.0-alpha](https://github.com/luvoid/BepInEx.Configuration.Json)
8-
* Requires [UniverseUGUI 1.6.3-preview](https://github.com/luvoid/UniverseUGUI)
9-
* Requires [CM3D2.UGUI 0.1.3-preview](https://github.com/luvoid/CM3D2.UGUI)
8+
* Requires [UniverseUGUI 1.6.4-alpha.1](https://github.com/luvoid/UniverseUGUI)
9+
* Requires [CM3D2.UGUI 0.1.4-alpha.1](https://github.com/luvoid/CM3D2.UGUI)
1010
* Improved physics with [COM3D2.TimeDependentPhysics.Plugin](https://github.com/luvoid/COM3D2.TimeDependentPhysics.Plugin) (optional)
1111

1212
## Conflicts

0 commit comments

Comments
 (0)