Move many mods to Deprecated folder, fix spelling

This commit is contained in:
NotAKidoS 2025-04-03 02:57:35 -05:00
parent 5e822cec8d
commit 0042590aa6
539 changed files with 7475 additions and 3120 deletions

View file

@ -0,0 +1,117 @@
using ABI.CCK.Components;
using ABI_RC.Core.Player;
using UnityEngine;
namespace NAK.CCK.CustomComponents;
public class NAKPointerTracker : MonoBehaviour
{
// Configuration
public Transform referenceTransform;
public string pointerType = "";
public float radius = 0.1f;
public Vector3 offset = Vector3.zero;
// Animator module
public Animator animator;
public string parameterName;
// Internal stuff
bool isLocal;
float initialAngle;
CVRPointer trackedPointer;
void Start()
{
// Create collider
Collider collider = base.gameObject.GetComponent<Collider>();
if (collider == null)
{
SphereCollider sphereCollider = base.gameObject.AddComponent<SphereCollider>();
sphereCollider.isTrigger = true;
Vector3 lossyScale = base.transform.lossyScale;
sphereCollider.radius = radius / Mathf.Max(Mathf.Max(lossyScale.x, lossyScale.y), lossyScale.z);
sphereCollider.center = offset;
}
// Create rigidbody (required for triggers)
Rigidbody rigidbody = base.gameObject.GetComponent<Rigidbody>();
if (rigidbody == null)
{
rigidbody = base.gameObject.AddComponent<Rigidbody>();
rigidbody.useGravity = false;
rigidbody.isKinematic = true;
}
// Initial setup
if (referenceTransform == null) referenceTransform = transform;
Vector3 direction = (transform.TransformPoint(offset) - referenceTransform.position);
Vector3 projectedDirection = Vector3.ProjectOnPlane(direction, referenceTransform.up);
initialAngle = Vector3.SignedAngle(referenceTransform.forward, projectedDirection, referenceTransform.up);
isLocal = gameObject.layer == 8;
}
void OnDrawGizmosSelected()
{
if (base.isActiveAndEnabled)
{
Gizmos.color = Color.red;
Gizmos.matrix = Matrix4x4.TRS(base.transform.position, base.transform.rotation, Vector3.one);
Gizmos.DrawWireSphere(offset, radius);
}
}
void OnTriggerEnter(Collider other)
{
if (trackedPointer != null) return;
// generic pointer or specific pointer
CVRPointer pointer = other.gameObject.GetComponent<CVRPointer>();
if (pointer != null && (String.IsNullOrEmpty(pointerType) || pointer.type == pointerType))
{
trackedPointer = pointer;
}
}
void Update()
{
if (trackedPointer == null) return;
// Check if tracked pointer was disabled
if (!trackedPointer.isActiveAndEnabled)
{
ReleasePointer();
return;
}
TrackPointer();
}
void TrackPointer()
{
if (animator != null)
{
float angle = GetAngleFromPosition(trackedPointer.transform.position, initialAngle) / 360;
if (!isLocal)
{
animator.SetFloat(parameterName + "_Angle", angle);
return;
}
PlayerSetup.Instance.changeAnimatorParam(parameterName + "_Angle", angle);
}
}
void ReleasePointer()
{
trackedPointer = null;
}
float GetAngleFromPosition(Vector3 trackedPos, float offset = 0)
{
Vector3 direction = (trackedPos - referenceTransform.position);
Vector3 projectedDirection = Vector3.ProjectOnPlane(direction, referenceTransform.up);
float angle = Vector3.SignedAngle(referenceTransform.forward, projectedDirection, referenceTransform.up) - offset;
if (angle < 0) angle += 360f;
return angle;
}
}

View file

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk"/>

View file

@ -0,0 +1,15 @@
using ABI_RC.Core.Util.AssetFiltering;
using MelonLoader;
using NAK.CCK.CustomComponents;
namespace NAK.CustomComponents;
public class CustomComponents : MelonMod
{
public override void OnInitializeMelon()
{
// Add our CCK component to the prop whitelist
var propWhitelist = SharedFilter._avatarWhitelist;
propWhitelist.Add(typeof(NAKPointerTracker));
}
}

View file

@ -0,0 +1,30 @@
using MelonLoader;
using NAK.CustomComponents.Properties;
using System.Reflection;
[assembly: AssemblyVersion(AssemblyInfoParams.Version)]
[assembly: AssemblyFileVersion(AssemblyInfoParams.Version)]
[assembly: AssemblyInformationalVersion(AssemblyInfoParams.Version)]
[assembly: AssemblyTitle(nameof(NAK.CustomComponents))]
[assembly: AssemblyCompany(AssemblyInfoParams.Author)]
[assembly: AssemblyProduct(nameof(NAK.CustomComponents))]
[assembly: MelonInfo(
typeof(NAK.CustomComponents.CustomComponents),
nameof(NAK.CustomComponents),
AssemblyInfoParams.Version,
AssemblyInfoParams.Author,
downloadLink: "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/CustomComponents"
)]
[assembly: MelonGame("Alpha Blend Interactive", "ChilloutVR")]
[assembly: MelonPlatform(MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
[assembly: MelonPlatformDomain(MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
[assembly: HarmonyDontPatchAll]
namespace NAK.CustomComponents.Properties;
internal static class AssemblyInfoParams
{
public const string Version = "1.0.0";
public const string Author = "NotAKidoS";
}

View file

@ -0,0 +1,23 @@
{
"_id": 147,
"name": "PropUndoButton",
"modversion": "1.0.1",
"gameversion": "2022r170p1",
"loaderversion": "0.6.1",
"modtype": "Mod",
"author": "NotAKidoS",
"description": "**CTRL+Z** to undo latest spawned prop. **CTRL+SHIFT+Z** to redo deleted prop.\nIncludes optional SFX for prop spawn, undo, redo, warn, and deny, which can be disabled in settings.\n\nYou can replace the sfx in 'ChilloutVR\\ChilloutVR_Data\\StreamingAssets\\Cohtml\\UIResources\\GameUI\\mods\\PropUndo\\audio'.",
"searchtags": [
"prop",
"undo",
"bind",
"button"
],
"requirements": [
"None"
],
"downloadlink": "https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r3/PropUndoButton.dll",
"sourcelink": "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/PropUndoButton/",
"changelog": "- Initial Release\n- Added redo button.\n- Mitigated issue of props getting stuck locally if deleting them before they fully spawn.\n- Lowered SFX volume to match existing UI sounds.",
"embedcolor": "#00FFFF"
}