hp text customization, shrink hp bg border, hide hp when aiming there

This commit is contained in:
msk
2022-02-14 00:07:51 -08:00
parent 416e49d6d7
commit a9be72693c
9 changed files with 219 additions and 43 deletions
+127
View File
@@ -0,0 +1,127 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using FistVR;
// To be attached to FVRHealthBar object
public class HPHideWhenAiming : MonoBehaviour {
CanvasGroup canvasGroup;
GameObject gObjHUD;
RawImage background;
FVRViveHand leftHand;
FVRViveHand rightHand;
BoxCollider hudCollider;
GameObject gObjLeftLine;
GameObject gObjRightLine;
LineRenderer leftHandLine;
LineRenderer rightHandLine;
//// Testing renderers
//GameObject gObjColliderRenderer;
//LineRenderer colliderRenderer;
// Use this for initialization
void Start() {
gObjHUD = transform.GetChild(0).gameObject;
leftHand = MeatKitPlugin.playerCamera.transform.parent.GetChild(1).GetComponent<FVRViveHand>();
rightHand = MeatKitPlugin.playerCamera.transform.parent.GetChild(0).GetComponent<FVRViveHand>();
canvasGroup = gameObject.AddComponent<CanvasGroup>();
var gObjBG = gObjHUD.transform.Find("Background");
if (gObjBG != null)
background = gObjBG.GetComponent<RawImage>();
hudCollider = gObjHUD.AddComponent<BoxCollider>();
hudCollider.isTrigger = true;
hudCollider.gameObject.layer = LayerMask.NameToLayer("UI");
hudCollider.size = new Vector3(40, 25, .01f);
//// TESTING: collider visuals
//gObjColliderRenderer = new GameObject();
//gObjColliderRenderer.transform.SetParent(hudCollider.transform, false);
//colliderRenderer = gObjColliderRenderer.AddComponent<LineRenderer>();
//colliderRenderer.SetWidth(.005f, .005f);
//colliderRenderer.SetColors(Color.blue, Color.blue);
//colliderRenderer.positionCount = 8;
//// TESTING: beam from held weapons
//gObjLeftLine = new GameObject();
//leftHandLine = gObjLeftLine.AddComponent<LineRenderer>();
//leftHandLine.positionCount = 2;
//leftHandLine.SetWidth(.008f, .008f);
//leftHandLine.SetColors(Color.blue, Color.blue);
//gObjRightLine = new GameObject();
//rightHandLine = gObjRightLine.AddComponent<LineRenderer>();
//rightHandLine.positionCount = 2;
//rightHandLine.SetWidth(.008f, .008f);
//rightHandLine.SetColors(Color.blue, Color.blue);
}
void FixedUpdate()
{
FVRInteractiveObject[] objs = { leftHand.CurrentInteractable, rightHand.CurrentInteractable };
LineRenderer[] lines = { leftHandLine, rightHandLine };
bool rayHit = false;
for (int i = 0; i < 2; ++i)
{
Transform transMuzzle;
if (objs[i] is FVRFireArm)
{
var firearm = objs[i] as FVRFireArm;
transMuzzle = firearm.CurrentMuzzle;
}
else if (objs[i] is SosigWeaponPlayerInterface)
{
var playerInterface = objs[i] as SosigWeaponPlayerInterface;
var sosigWeapon = playerInterface.gameObject.GetComponent<SosigWeapon>();
transMuzzle = sosigWeapon.Muzzle;
}
else // not a recognized weapon, don't do anything
continue;
// TESTING: draw beam from held wpn muzzle
//Vector3[] beamPos = { transMuzzle.position, transMuzzle.position + 5 * transMuzzle.forward };
//lines[i].SetPositions(beamPos);
RaycastHit hitInfo;
if (hudCollider.Raycast(new Ray(transMuzzle.position, transMuzzle.forward), out hitInfo, 20) ||
hudCollider.Raycast(new Ray(transMuzzle.position, -transMuzzle.forward), out hitInfo, 20))
rayHit = true;
}
if (rayHit)
{
canvasGroup.alpha = 0.1f;
if (background != null)
background.enabled = false;
}
else
{
canvasGroup.alpha = 1f;
if (background != null)
background.enabled = true;
}
// TESTING: draw the collider
//var trans = hudCollider.transform;
//var min = hudCollider.center - hudCollider.size * 0.5f;
//var max = hudCollider.center + hudCollider.size * 0.5f;
//Vector3[] points = {
// trans.TransformPoint(new Vector3(min.x, min.y, min.z)),
// trans.TransformPoint(new Vector3(min.x, min.y, max.z)),
// trans.TransformPoint(new Vector3(min.x, max.y, min.z)),
// trans.TransformPoint(new Vector3(min.x, max.y, max.z)),
// trans.TransformPoint(new Vector3(max.x, min.y, min.z)),
// trans.TransformPoint(new Vector3(max.x, min.y, max.z)),
// trans.TransformPoint(new Vector3(max.x, max.y, min.z)),
// trans.TransformPoint(new Vector3(max.x, max.y, max.z))
//};
//colliderRenderer.SetPositions(points);
}
}
+12
View File
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 4c5bf6246707f204db6b73a5d74267f8
timeCreated: 1644787924
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+43 -23
View File
@@ -3,42 +3,62 @@ using UnityEngine.UI;
namespace TNHQoLImprovements
{
public enum HPTextType
{
Solidify, Untouched, Hidden
}
public static class HPReadability
{
public static void ImproveHPTextReadability(GameObject gObjHUD)
{
var canvas = gObjHUD.GetComponent<Canvas>();
var gObjBG = new GameObject();
Transform[] tranHPText = {
gObjHUD.transform.Find("Label_Title (1)"),
gObjHUD.transform.Find("Label_Title")
gObjHUD.transform.Find("Label_Title (1)"), // header
gObjHUD.transform.Find("Label_Title") // HP number
};
// apply background
if (MeatKitPlugin.cfgShowHPBackground.Value)
// apply background only if hp text type is not "Hidden"
if (MeatKitPlugin.cfgShowHPBackground.Value &&
MeatKitPlugin.cfgHPTextType.Value != HPTextType.Hidden)
{
gObjBG.transform.parent = gObjHUD.transform;
var gObjBG = new GameObject();
gObjBG.name = "Background";
gObjBG.transform.SetParent(gObjHUD.transform, false);
gObjBG.transform.SetSiblingIndex(0);
gObjBG.transform.localPosition = new Vector3(0, 1, 0);
gObjBG.transform.localRotation = Quaternion.identity;
gObjBG.transform.localScale = tranHPText[0].localScale;
var rawImage = gObjBG.AddComponent<RawImage>();
gObjBG.transform.localScale = tranHPText[0].localScale;
//gObjBG.transform.localRotation = Quaternion.identity;
var rawImage = gObjBG.AddComponent<RawImage>();
rawImage.color = new Color(0, 0, 0, MeatKitPlugin.cfgHPBackgroundOpacity.Value);
rawImage.rectTransform.SetWidth(100);
rawImage.rectTransform.SetHeight(52);
}
if (MeatKitPlugin.cfgSolidifyHPText.Value)
{
foreach (var text in tranHPText)
{
// full alpha
text.GetComponent<Text>().color = Color.white;
// drop shadow
var shadow = text.gameObject.AddComponent<Shadow>();
shadow.effectColor = new Color(0, 0, 0, .95f);
shadow.effectDistance = new Vector2(0.5f, -0.5f);
}
rawImage.rectTransform.SetWidth(85);
rawImage.rectTransform.SetHeight(44);
}
// set text type
if (MeatKitPlugin.cfgHPTextType.Value == HPTextType.Untouched)
return;
switch (MeatKitPlugin.cfgHPTextType.Value)
{
case HPTextType.Solidify:
foreach (var text in tranHPText)
{
// full alpha
text.GetComponent<Text>().color = Color.white;
// drop shadow
var shadow = text.gameObject.AddComponent<Shadow>();
shadow.effectColor = new Color(0, 0, 0, .95f);
shadow.effectDistance = new Vector2(0.5f, -0.5f);
}
break;
case HPTextType.Hidden:
foreach (var text in tranHPText)
{
text.GetComponent<Text>().color = new Color(0, 0, 0, 0);
}
break;
}
}
}
}