Skip to content

Commit

Permalink
Added toggleable buttons class & Made some buttons toggleable & Fixed…
Browse files Browse the repository at this point in the history
… couple of bugs
  • Loading branch information
Pokruk committed Dec 17, 2024
1 parent 219d6a0 commit 96f10f2
Show file tree
Hide file tree
Showing 6 changed files with 92 additions and 43 deletions.
2 changes: 1 addition & 1 deletion testplate/Button/BaseButton.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public void Vibration(bool isLeftHand) {
GorillaTagger.Instance.StartVibration(isLeftHand, GorillaTagger.Instance.tagHapticStrength / 2f, GorillaTagger.Instance.tagHapticDuration / 4f);
}

private void Start() {
protected virtual void Start() {
gameObject.layer = 18;
}
}
Expand Down
76 changes: 76 additions & 0 deletions testplate/Button/Buttons/ToggleButton.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
using System;
using CameraMod.Camera;
using UnityEngine;

namespace CameraMod.Button.Buttons {
public class ToggleButton : BaseButton {
private Vector3 upPosition;
private Vector3 downPosition;

private Func<bool> getter;
private Action<bool> setter;
private bool savable;
private string saveKey;
public ToggleButton InitToggleButton(Action<bool> setter, Func<bool> getter, bool savable = true, string overrideSaveName = null) {
material = GetComponent<Renderer>().material;

upPosition = transform.localPosition;
downPosition = transform.localPosition + new Vector3(0.02f, 0, 0);

this.getter = getter;
this.setter = setter;
this.savable = savable;

saveKey = overrideSaveName ?? name;

if (savable) {
var save = PlayerPrefs.GetInt(saveKey, -1);
if (save != -1) {
this.setter(save == 1);
}
}

UpdateAppearance(getter());

return this;
}

public bool IsDown {
get => getter();
set {
setter(value);
UpdateAppearance(value);
if (savable) {
PlayerPrefs.SetInt(saveKey, value ? 1 : 0);
}
}
}

public Color enabledColor = new Color(1f, 0.9f, 0.9f);
public Color disabledColor = new Color(0.9f, 1f, 0.9f);

private Material material;

private void UpdateAppearance(bool isDown) {
material.color = isDown ? enabledColor : disabledColor;
transform.localPosition = isDown ? downPosition : upPosition;
}

private float lastClicked;
public float clickMinInterval = 0.1f;

private void OnTriggerEnter(Collider col) {
if (CameraController.Instance.ButtonsTimeouted) return;

if (!isHand(col)) {
return;
}

if (Time.time - lastClicked > clickMinInterval) {
Vibration(isLeft(col));
IsDown = !IsDown;
onClick?.Invoke();
}
}
}
}
Binary file modified testplate/Camera/Assets/pokrukcam
Binary file not shown.
52 changes: 14 additions & 38 deletions testplate/Camera/CameraController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,6 @@ public void Init() {

gameObject.AddComponent<InputManager>().gameObject.AddComponent<UI>();
var assetsPath = Assembly.GetExecutingAssembly().GetName().Name + ".Camera.Assets";
Debug.Log(assetsPath);
colorScreenGo = LoadBundle("ColorScreen", assetsPath + ".colorscreen");
cameraTabletT = LoadBundle("CameraTablet", assetsPath + ".pokrukcam").transform;

Expand Down Expand Up @@ -179,19 +178,18 @@ public void Init() {
void SetColor(Color color) {
foreach (var mat in screenMats) mat.color = color;
}

var colorButtonsT = GameObject.Find("ColorScreen(Clone)/Stuff").transform;
var colorButtonsT = colorScreenGo.transform.Find("Stuff").transform;
Button(colorButtonsT.Find("RedButton"), () => SetColor(Color.red));
Button(colorButtonsT.Find("GreenButton"), () => SetColor(Color.green));
Button(colorButtonsT.Find("BlueButton"), () => SetColor(Color.blue));

new [] {
"ColorScreen(Clone)/Screen1",
"ColorScreen(Clone)/Screen2",
"ColorScreen(Clone)/Screen3"
}.ForEach(screenMatPath=>
"Screen1",
"Screen2",
"Screen3"
}.ForEach(screenName=>
screenMats.Add(
GameObject.Find(screenMatPath)
colorScreenGo.transform.Find(screenName)
.GetComponent<MeshRenderer>()
.material)
);
Expand Down Expand Up @@ -271,19 +269,12 @@ public void RegisterButtons() {
});

AddTabletButton("MainPage/FPButton", () => fp = !fp);

HeadCosmeticsHider = thirdPersonCameraT.AddComponent<HeadCosmeticsHider>();
HeadCosmeticsHider.enabled = PlayerPrefs.GetInt("HeadCosmeticsHide", 0) == 1;
AddTabletButton("MainPage/HideHeadCosmetics", () => {
HeadCosmeticsHider.enabled = !HeadCosmeticsHider.enabled;
PlayerPrefs.SetInt("HeadCosmeticsHide", HeadCosmeticsHider.enabled ? 1 : 0);
});

RollLock = PlayerPrefs.GetInt("RollLock", 1) == 1;
AddTabletButton("MainPage/RollLock", () => {
RollLock = !RollLock;
PlayerPrefs.SetInt("RollLock", RollLock ? 1 : 0);
});
HeadCosmeticsHider = thirdPersonCameraT.AddComponent<HeadCosmeticsHider>();
buttons.Add(cameraTabletT.Find("MainPage/HideHeadCosmetics").AddComponent<ToggleButton>()
.InitToggleButton(setter: b => HeadCosmeticsHider.enabled = b, getter: () => HeadCosmeticsHider.enabled));
buttons.Add(cameraTabletT.Find("MainPage/RollLock").AddComponent<ToggleButton>()
.InitToggleButton(setter: b => RollLock = b, getter: () => RollLock));

AddTabletButton("MainPage/TPVButton", () => {
if (tpvMode == TpvModes.Back) {
Expand Down Expand Up @@ -343,26 +334,11 @@ public void RegisterButtons() {
followheadrot = !followheadrot;
miscPage.TpRotText.text = followheadrot.ToString().ToUpper();
});

var greenScreenButtonT = cameraTabletT.Find("MiscPage/GreenScreenButton");
var colorScreenText = greenScreenButtonT.transform.Find("Text").GetComponent<TextMeshPro>();
AddTabletButton(greenScreenButtonT, () => {
colorScreenGo.active = !colorScreenGo.active;
if (colorScreenGo.active)
colorScreenText.text = "GREEN SCREEN\n(ENABLED)";
else
colorScreenText.text = "GREEN SCREEN\n(DISABLED)";
});

buttons.Add(cameraTabletT.Find("MiscPage/GreenScreenButton").AddComponent<ToggleButton>()
.InitToggleButton(setter: b => colorScreenGo.active = b, getter: () => colorScreenGo.active));
}

public ClickButton Button(string buttonPath, Action onClick) {
return Button(GameObject.Find(buttonPath), onClick);
}
public ClickButton Button(GameObject go, Action onClick) {
var button = go.AddComponent<ClickButton>();
button.OnClick(onClick);
return button;
}
public ClickButton Button(Transform t, Action onClick) {
var button = t.AddComponent<ClickButton>();
button.OnClick(onClick);
Expand Down
3 changes: 0 additions & 3 deletions testplate/CameraMod.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,6 @@
</PropertyGroup>
<ItemGroup>
<None Remove="Camera\Assets\colorscreen"/>
<None Remove="Camera\Assets\yizzicam"/>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Camera\Assets\colorscreen"/>
<None Remove="Camera\Assets\pokrukcam" />
<EmbeddedResource Include="Camera\Assets\pokrukcam" />
Expand Down
2 changes: 1 addition & 1 deletion testplate/PluginInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ internal class PluginInfo {
public const string GUID = "org.pokruk.gorillatag.cameramod";
public const string Name = "Camera Mod";
public const string Description = "Pokruk's Camera Mod";
public const string Version = "2.1.3";
public const string Version = "2.2.2";
}
}

0 comments on commit 96f10f2

Please sign in to comment.