From 9944ad76114e5d28e25d68063429ae6b607c2d6b Mon Sep 17 00:00:00 2001 From: NotAKidoS <37721153+NotAKidOnSteam@users.noreply.github.com> Date: Wed, 10 Apr 2024 17:25:21 -0500 Subject: [PATCH] thirdperson, propundobutton, mirror clone test, you are a clone test, bettershadowclone test, nevermind, anotherlocaltestmod, and some changes to avatarscaling ??? --- .DepricatedMods/Nevermind/Main.cs | 36 --- .DepricatedMods/Nevermind/format.json | 23 -- .../AvatarScaling/AvatarScaleManager.cs | 48 +++- .../AvatarScaling/Components/LocalScaler.cs | 4 +- .../AvatarScaling/Events/AvatarScaleEvents.cs | 3 - BetterShadowClone/ModSettings.cs | 10 + .../Resources/bettershadowclone.assets | Bin 9425 -> 9661 bytes .../Resources/bettershadowclone.assets_OLD | Bin 0 -> 9425 bytes .../ShadowClone/IShadowClone/IShadowClone.cs | 1 + .../IShadowClone/MeshShadowClone.cs | 6 +- .../IShadowClone/SkinnedShadowClone.cs | 105 ++++++-- .../ShadowClone/ShadowCloneManager.cs | 60 ++++- BetterShadowClone/ShadowCloneHelper.cs | 15 +- BetterShadowClone_LegacyHideAttempt.7z | Bin 0 -> 207381 bytes .../FuckCameraIndicator.csproj | 2 + FuckCameraIndicator/Main.cs | 34 +++ .../Properties/AssemblyInfo.cs | 29 ++ FuckCameraIndicator/README.md | 16 ++ FuckCameraIndicator/format.json | 23 ++ MirrorClone/Main.cs | 80 ++++++ MirrorClone/MirrorClone.csproj | 2 + MirrorClone/MirrorClone/MirrorCloneManager.cs | 247 ++++++++++++++++++ MirrorClone/ModSettings.cs | 31 +++ MirrorClone/Properties/AssemblyInfo.cs | 29 ++ MirrorClone/README.md | 16 ++ MirrorClone/format.json | 23 ++ NAK_CVR_Mods.sln | 18 ++ Nevermind/Main.cs | 53 ++++ .../Nevermind => Nevermind}/Nevermind.csproj | 0 .../Properties/AssemblyInfo.cs | 5 +- Nevermind/format.json | 23 ++ PhysicsGunMod/Components/ObjectSyncBridge.cs | 47 ++-- PropUndoButton/format.json | 8 +- ThirdPerson/CameraLogic.cs | 2 +- ThirdPerson/Integrations/BSCAddon.cs | 11 - ThirdPerson/Properties/AssemblyInfo.cs | 4 +- ThirdPerson/ThirdPerson.cs | 11 - ThirdPerson/ThirdPerson.csproj | 6 +- ThirdPerson/format.json | 8 +- YouAreAClone/Main.cs | 119 +++++++++ YouAreAClone/ModSettings.cs | 60 +++++ YouAreAClone/Properties/AssemblyInfo.cs | 29 ++ YouAreAClone/YouAreAClone.csproj | 2 + 43 files changed, 1076 insertions(+), 173 deletions(-) delete mode 100644 .DepricatedMods/Nevermind/Main.cs delete mode 100644 .DepricatedMods/Nevermind/format.json create mode 100644 BetterShadowClone/Resources/bettershadowclone.assets_OLD create mode 100644 BetterShadowClone_LegacyHideAttempt.7z create mode 100644 FuckCameraIndicator/FuckCameraIndicator.csproj create mode 100644 FuckCameraIndicator/Main.cs create mode 100644 FuckCameraIndicator/Properties/AssemblyInfo.cs create mode 100644 FuckCameraIndicator/README.md create mode 100644 FuckCameraIndicator/format.json create mode 100644 MirrorClone/Main.cs create mode 100644 MirrorClone/MirrorClone.csproj create mode 100644 MirrorClone/MirrorClone/MirrorCloneManager.cs create mode 100644 MirrorClone/ModSettings.cs create mode 100644 MirrorClone/Properties/AssemblyInfo.cs create mode 100644 MirrorClone/README.md create mode 100644 MirrorClone/format.json create mode 100644 Nevermind/Main.cs rename {.DepricatedMods/Nevermind => Nevermind}/Nevermind.csproj (100%) rename {.DepricatedMods/Nevermind => Nevermind}/Properties/AssemblyInfo.cs (90%) create mode 100644 Nevermind/format.json delete mode 100644 ThirdPerson/Integrations/BSCAddon.cs create mode 100644 YouAreAClone/Main.cs create mode 100644 YouAreAClone/ModSettings.cs create mode 100644 YouAreAClone/Properties/AssemblyInfo.cs create mode 100644 YouAreAClone/YouAreAClone.csproj diff --git a/.DepricatedMods/Nevermind/Main.cs b/.DepricatedMods/Nevermind/Main.cs deleted file mode 100644 index 31c7110..0000000 --- a/.DepricatedMods/Nevermind/Main.cs +++ /dev/null @@ -1,36 +0,0 @@ -using ABI_RC.Core.IO; -using MelonLoader; -using UnityEngine; - -namespace NAK.Nevermind; - -public class Nevermind : MelonMod -{ - public override void OnUpdate() - { - if (!Input.GetKeyDown(KeyCode.Home)) return; - - CancelWorldDownloadJoinOnComplete(); - CancelWorldLoadJoin(); - } - - void CancelWorldDownloadJoinOnComplete() - { - var downloadManager = CVRDownloadManager.Instance; - downloadManager.ActiveWorldDownload = false; - foreach (var download in downloadManager._downloadTasks) - download.Value.JoinOnComplete = false; - } - - void CancelWorldLoadJoin() - { - var objectLoader = CVRObjectLoader.Instance; - if (!objectLoader._isLoadingWorld) - { - objectLoader.j.Bytes = null; - objectLoader.j.ObjectId = null; - objectLoader.IsLoadingWorldToJoin = false; - objectLoader.CurrentWorldLoadingStage = -1; - } - } -} \ No newline at end of file diff --git a/.DepricatedMods/Nevermind/format.json b/.DepricatedMods/Nevermind/format.json deleted file mode 100644 index 2361cc0..0000000 --- a/.DepricatedMods/Nevermind/format.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "_id": 129, - "name": "Nevermind", - "modversion": "1.0.0", - "gameversion": "2022r170p1", - "loaderversion": "0.6.1", - "modtype": "Mod", - "author": "NotAKidoS", - "description": "Prevents VRIK from using toe bones in VR & optionaly FBT.\n\nVRIK calculates weird center of mass when toes are mapped, so it is sometimes desired to unmap toes to prevent an avatars feet from resting far back.\n\nPlease see the README for relevant imagery detailing the problem.", - "searchtags": [ - "toes", - "vrik", - "ik", - "feet" - ], - "requirements": [ - "None" - ], - "downloadlink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/releases/download/r3/Nevermind.dll", - "sourcelink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/tree/main/Nevermind/", - "changelog": "- Initial Release\n- No double patching. Bad. Stinky. Dont do it.", - "embedcolor": "#ffc700" -} \ No newline at end of file diff --git a/AvatarScale/AvatarScaling/AvatarScaleManager.cs b/AvatarScale/AvatarScaling/AvatarScaleManager.cs index 906c057..2f2e8ef 100644 --- a/AvatarScale/AvatarScaling/AvatarScaleManager.cs +++ b/AvatarScale/AvatarScaling/AvatarScaleManager.cs @@ -42,16 +42,48 @@ public class AvatarScaleManager : MonoBehaviour get => _settingUniversalScaling; set { - if (value != _settingUniversalScaling && value == false) - _localAvatarScaler.UseTargetHeight = false; + if (_settingUniversalScaling == value) + return; _settingUniversalScaling = value; - _localAvatarScaler.UseTargetHeight = true; + + if (_localAvatarScaler != null) + _localAvatarScaler.UseTargetHeight = value; } } - public bool Setting_AnimationClipScalingOverride; - public bool Setting_PersistentHeight; + private bool _settingAnimationClipScalingOverride; + public bool Setting_AnimationClipScalingOverride + { + get => _settingAnimationClipScalingOverride; + set + { + if (_settingAnimationClipScalingOverride == value) + return; + + _settingAnimationClipScalingOverride = value; + + if (_localAvatarScaler != null) + _localAvatarScaler.overrideAnimationHeight = value; + } + } + + private bool _settingPersistentHeight; + public bool Setting_PersistentHeight + { + get => _settingPersistentHeight; + set + { + if (_settingPersistentHeight == value) + return; + + _settingPersistentHeight = value; + + // if (_localAvatarScaler != null) + // _localAvatarScaler.persistHeight = value; + } + } + private float _lastTargetHeight = -1f; public float LastTargetHeight { @@ -128,11 +160,7 @@ public class AvatarScaleManager : MonoBehaviour // this is to ensure that the height is also set at correct time during frame, no matter when it is called private IEnumerator HeightUpdateCoroutine() { - while (enabled) - { - yield return _heightUpdateYield; - } - + while (enabled) yield return _heightUpdateYield; // ReSharper disable once IteratorNeverReturns } diff --git a/AvatarScale/AvatarScaling/Components/LocalScaler.cs b/AvatarScale/AvatarScaling/Components/LocalScaler.cs index 8360d47..95bbd57 100644 --- a/AvatarScale/AvatarScaling/Components/LocalScaler.cs +++ b/AvatarScale/AvatarScaling/Components/LocalScaler.cs @@ -13,6 +13,9 @@ public class LocalScaler : BaseScaler { _animatorManager = GetComponentInParent().animatorManager; _isAvatarInstantiated = false; + + // listen for events + } #endregion @@ -73,7 +76,6 @@ public class LocalScaler : BaseScaler _animatedScaleFactor = scaleDifference.y; _animatedHeight = (_initialHeight * _animatedScaleFactor) + _initialHeight; _animatedScale = localScale; - InvokeAnimatedHeightChanged(); if (overrideAnimationHeight || !_useTargetHeight) diff --git a/AvatarScale/AvatarScaling/Events/AvatarScaleEvents.cs b/AvatarScale/AvatarScaling/Events/AvatarScaleEvents.cs index e62c3a4..4f9cd55 100644 --- a/AvatarScale/AvatarScaling/Events/AvatarScaleEvents.cs +++ b/AvatarScale/AvatarScaling/Events/AvatarScaleEvents.cs @@ -28,11 +28,8 @@ public static class AvatarScaleEvents #endregion - #region Avatar Scaling Events - - /// /// Invoked when a remote avatar's height changes. /// diff --git a/BetterShadowClone/ModSettings.cs b/BetterShadowClone/ModSettings.cs index a2526f9..de687fa 100644 --- a/BetterShadowClone/ModSettings.cs +++ b/BetterShadowClone/ModSettings.cs @@ -31,6 +31,14 @@ public static class ModSettings internal static readonly MelonPreferences_Entry EntryDebugHeadHide = Category.CreateEntry("Debug Head Hide", false, description: "Should head be hidden for first render?"); + + internal static readonly MelonPreferences_Entry EntryDebugShowShadow = + Category.CreateEntry("Debug Show Shadow", false, + description: "Should the shadow clone be shown?"); + + internal static readonly MelonPreferences_Entry EntryDebugShowInFront = + Category.CreateEntry("Debug Show in Front", false, + description: "Should the shadow clone be shown in front?"); #endregion @@ -46,5 +54,7 @@ public static class ModSettings TransformHiderManager.s_DisallowFprExclusions = EntryDontRespectFPR.Value; TransformHiderManager.s_DebugHeadHide = EntryDebugHeadHide.Value; ShadowCloneManager.s_CopyMaterialsToShadow = EntryCopyMaterialToShadow.Value; + ShadowCloneManager.s_DebugShowShadow = EntryDebugShowShadow.Value; + ShadowCloneManager.s_DebugShowInFront = EntryDebugShowInFront.Value; } } \ No newline at end of file diff --git a/BetterShadowClone/Resources/bettershadowclone.assets b/BetterShadowClone/Resources/bettershadowclone.assets index a80c90026db8cffb49034a3a99904004732320b3..42c173453cae0026e57c0f831dbca9a40ff90d1d 100644 GIT binary patch delta 9601 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 delta 9363 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 N>NgXxxBvb$5}XYXUEBZw diff --git a/BetterShadowClone/Resources/bettershadowclone.assets_OLD b/BetterShadowClone/Resources/bettershadowclone.assets_OLD new file mode 100644 index 0000000000000000000000000000000000000000..a80c90026db8cffb49034a3a99904004732320b3 GIT binary patch literal 9425 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 Xzmy29udSO(taj=*6R@}c{xlMt`RPha literal 0 HcmV?d00001 diff --git a/BetterShadowClone/ShadowClone/IShadowClone/IShadowClone.cs b/BetterShadowClone/ShadowClone/IShadowClone/IShadowClone.cs index 7d121b2..e6cc161 100644 --- a/BetterShadowClone/ShadowClone/IShadowClone/IShadowClone.cs +++ b/BetterShadowClone/ShadowClone/IShadowClone/IShadowClone.cs @@ -8,4 +8,5 @@ public interface IShadowClone : IDisposable bool Process(); void RenderForShadow(); void RenderForUiCulling(); + void ResetMainMesh(); } \ No newline at end of file diff --git a/BetterShadowClone/ShadowClone/IShadowClone/MeshShadowClone.cs b/BetterShadowClone/ShadowClone/IShadowClone/MeshShadowClone.cs index f2670bd..d27883b 100644 --- a/BetterShadowClone/ShadowClone/IShadowClone/MeshShadowClone.cs +++ b/BetterShadowClone/ShadowClone/IShadowClone/MeshShadowClone.cs @@ -28,6 +28,8 @@ public struct MeshShadowClone : IShadowClone #region IShadowClone Methods + public void ResetMainMesh(){} + public bool IsValid => _mainMesh != null && _shadowMesh != null; public MeshShadowClone(MeshRenderer meshRenderer) @@ -88,7 +90,9 @@ public struct MeshShadowClone : IShadowClone public void RenderForShadow() { - _shadowMesh.shadowCastingMode = ShadowCastingMode.ShadowsOnly; + _shadowMesh.shadowCastingMode = ShadowCloneManager.s_DebugShowShadow + ? ShadowCastingMode.On : ShadowCastingMode.ShadowsOnly; + _shadowMesh.forceRenderingOff = !_shouldCastShadows; // shadow casting needs clone to have original materials (uv discard) diff --git a/BetterShadowClone/ShadowClone/IShadowClone/SkinnedShadowClone.cs b/BetterShadowClone/ShadowClone/IShadowClone/SkinnedShadowClone.cs index 71e86a6..89d7494 100644 --- a/BetterShadowClone/ShadowClone/IShadowClone/SkinnedShadowClone.cs +++ b/BetterShadowClone/ShadowClone/IShadowClone/SkinnedShadowClone.cs @@ -8,6 +8,8 @@ public class SkinnedShadowClone : IShadowClone { private static readonly int s_SourceBufferId = Shader.PropertyToID("_sourceBuffer"); private static readonly int s_TargetBufferId = Shader.PropertyToID("_targetBuffer"); + private static readonly int s_HiddenVerticiesId = Shader.PropertyToID("_hiddenVertices"); + private static readonly int s_HiddenVertexPos = Shader.PropertyToID("_hiddenVertexPos"); private static readonly int s_SourceBufferLayoutId = Shader.PropertyToID("_sourceBufferLayout"); private static readonly int s_SourceRootMatrix = Shader.PropertyToID("_rootBoneMatrix"); @@ -26,6 +28,7 @@ public class SkinnedShadowClone : IShadowClone // clone copying private GraphicsBuffer _graphicsBuffer; private GraphicsBuffer _targetBuffer; + private ComputeBuffer _computeBuffer; private int _threadGroups; private int _bufferLayout; @@ -39,7 +42,7 @@ public class SkinnedShadowClone : IShadowClone // anything player can touch is suspect to death public bool IsValid => _mainMesh != null && _shadowMesh != null && _rootBone != null; - internal SkinnedShadowClone(SkinnedMeshRenderer renderer) + internal SkinnedShadowClone(SkinnedMeshRenderer renderer, FPRExclusion exclusion) { _mainMesh = renderer; @@ -52,11 +55,28 @@ public class SkinnedShadowClone : IShadowClone return; // no mesh! } + + FindExclusionVertList(_mainMesh, exclusion); + + if (exclusion.affectedVertexIndices.Count == 0) + { + Dispose(); + return; // no affected verts! + } + + _computeBuffer = new ComputeBuffer(_mainMesh.sharedMesh.vertexCount, sizeof(int)); + _computeBuffer.SetData(exclusion.affectedVertexIndices.ToArray()); + exclusion.affectedVertexIndices.Clear(); + + + _shouldCastShadows = _mainMesh.shadowCastingMode != ShadowCastingMode.Off; - _mainMesh.shadowCastingMode = ShadowCastingMode.Off; // visual mesh doesn't cast shadows + //_mainMesh.shadowCastingMode = ShadowCastingMode.On; // visual mesh doesn't cast shadows (_shadowMesh, _shadowMeshFilter) = ShadowCloneManager.InstantiateShadowClone(_mainMesh); - _shadowMesh.forceRenderingOff = true; + _shadowMesh.shadowCastingMode = ShadowCastingMode.Off; // shadow mesh doesn't cast shadows + _shadowMesh.forceRenderingOff = false; + _rootBone = _mainMesh.rootBone; _rootBone ??= _mainMesh.transform; // fallback to transform if no root bone @@ -133,6 +153,8 @@ public class SkinnedShadowClone : IShadowClone _graphicsBuffer = null; _targetBuffer?.Dispose(); _targetBuffer = null; + _computeBuffer?.Dispose(); + _computeBuffer = null; } #endregion @@ -151,7 +173,7 @@ public class SkinnedShadowClone : IShadowClone if (mesh.HasVertexAttribute(VertexAttribute.Tangent)) _bufferLayout += 4; _bufferLayout *= 4; // 4 bytes per float - const float xThreadGroups = 64f; + const float xThreadGroups = 32f; _threadGroups = Mathf.CeilToInt(mesh.vertexCount / xThreadGroups); _mainMesh.vertexBufferTarget |= GraphicsBuffer.Target.Raw; @@ -162,10 +184,66 @@ public class SkinnedShadowClone : IShadowClone //Debug.Log($"Initialized! BufferLayout: {_bufferLayout}, GraphicsBuffer: {_graphicsBuffer != null}, TargetBuffer: {_targetBuffer != null}"); } + public static void FindExclusionVertList(SkinnedMeshRenderer renderer, FPRExclusion exclusion) + { + var boneWeights = renderer.sharedMesh.boneWeights; + + HashSet weights = new(); + for (int i = 0; i < renderer.bones.Length; i++) + { + if (exclusion.affectedChildren.Contains(renderer.bones[i])) + weights.Add(i); + } + + for (int i = 0; i < boneWeights.Length; i++) + { + BoneWeight weight = boneWeights[i]; + + Transform bone = null; + const float minWeightThreshold = 0.2f; + if (weights.Contains(weight.boneIndex0) && weight.weight0 > minWeightThreshold) + bone = renderer.bones[weight.boneIndex0]; + else if (weights.Contains(weight.boneIndex1) && weight.weight1 > minWeightThreshold) + bone = renderer.bones[weight.boneIndex1]; + else if (weights.Contains(weight.boneIndex2) && weight.weight2 > minWeightThreshold) + bone = renderer.bones[weight.boneIndex2]; + else if (weights.Contains(weight.boneIndex3) && weight.weight3 > minWeightThreshold) + bone = renderer.bones[weight.boneIndex3]; + + exclusion.affectedVertexIndices.Add(bone != null ? i : -1); + } + } + + public void ResetMainMesh() + { + _mainMesh.shadowCastingMode = ShadowCastingMode.On; + _mainMesh.forceRenderingOff = false; + + _shadowMesh.transform.position = Vector3.positiveInfinity; // nan + } + private void ResetShadowClone() { - _shadowMesh.shadowCastingMode = ShadowCastingMode.ShadowsOnly; - _shadowMesh.forceRenderingOff = !_shouldCastShadows; + if (ShadowCloneManager.s_DebugShowShadow) + { + _mainMesh.shadowCastingMode = ShadowCastingMode.ShadowsOnly; + _mainMesh.forceRenderingOff = false; + + _shadowMesh.shadowCastingMode = ShadowCastingMode.On; + _shadowMesh.forceRenderingOff = false; + + _shadowMesh.transform.localPosition = Vector3.zero; + } + else + { + _mainMesh.shadowCastingMode = ShadowCastingMode.On; + _mainMesh.forceRenderingOff = false; + + _shadowMesh.shadowCastingMode = ShadowCastingMode.ShadowsOnly; + _shadowMesh.forceRenderingOff = !_shouldCastShadows; + } + + //_shadowMesh.enabled = true; // shadow casting needs clone to have original materials (uv discard) // we also want to respect material swaps... but this is fucking slow :( @@ -173,12 +251,7 @@ public class SkinnedShadowClone : IShadowClone if (!ShadowCloneManager.s_CopyMaterialsToShadow) return; - if (_hasShadowMaterials) - { - _shadowMesh.sharedMaterials = _mainMesh.sharedMaterials; - _hasShadowMaterials = false; - } - + _shadowMesh.sharedMaterials = _mainMesh.sharedMaterials; UpdateCloneMaterialProperties(); } @@ -188,12 +261,10 @@ public class SkinnedShadowClone : IShadowClone _shadowMesh.forceRenderingOff = false; // UI culling needs clone to have write-to-depth shader - if (_hasShadowMaterials) return; _shadowMesh.sharedMaterials = _shadowMaterials; - _hasShadowMaterials = true; // Not needed- MaterialPropertyBlock applied to renderer in RenderForShadow - //UpdateCloneMaterialProperties(); + UpdateCloneMaterialProperties(); } private void RenderShadowClone() @@ -205,6 +276,10 @@ public class SkinnedShadowClone : IShadowClone ShadowCloneHelper.shader.SetMatrix(s_SourceRootMatrix, rootMatrix); ShadowCloneHelper.shader.SetBuffer(0, s_SourceBufferId, _graphicsBuffer); ShadowCloneHelper.shader.SetBuffer(0, s_TargetBufferId, _targetBuffer); + + ShadowCloneHelper.shader.SetBuffer(0, s_HiddenVerticiesId, _computeBuffer); + ShadowCloneHelper.shader.SetVector(s_HiddenVertexPos, Vector4.positiveInfinity); // temp + ShadowCloneHelper.shader.SetInt(s_SourceBufferLayoutId, _bufferLayout); ShadowCloneHelper.shader.Dispatch(0, _threadGroups, 1, 1); _graphicsBuffer.Release(); diff --git a/BetterShadowClone/ShadowClone/ShadowCloneManager.cs b/BetterShadowClone/ShadowClone/ShadowCloneManager.cs index a8f6706..4443efd 100644 --- a/BetterShadowClone/ShadowClone/ShadowCloneManager.cs +++ b/BetterShadowClone/ShadowClone/ShadowCloneManager.cs @@ -35,11 +35,14 @@ public class ShadowCloneManager : MonoBehaviour // Settings internal static bool s_CopyMaterialsToShadow = true; + internal static bool s_DebugShowShadow = false; + internal static bool s_DebugShowInFront = false; private static bool s_UseShadowToCullUi; private const string ShadowCullUiSettingName = "ExperimentalAvatarOverrenderUI"; // Implementation private bool _hasRenderedThisFrame; + public static readonly List s_Exclusions = new(); // Shadow Clones private readonly List s_ShadowClones = new(); @@ -64,15 +67,17 @@ public class ShadowCloneManager : MonoBehaviour UpdatePlayerCameras(); s_CopyMaterialsToShadow = ModSettings.EntryCopyMaterialToShadow.Value; + s_DebugShowShadow = ModSettings.EntryDebugShowShadow.Value; + s_DebugShowInFront = ModSettings.EntryDebugShowInFront.Value; s_UseShadowToCullUi = MetaPort.Instance.settings.GetSettingsBool(ShadowCullUiSettingName); MetaPort.Instance.settings.settingBoolChanged.AddListener(OnSettingsBoolChanged); } private void OnEnable() - => Camera.onPreCull += MyOnPreCull; + => Camera.onPreRender += MyOnPreCull; private void OnDisable() - => Camera.onPreCull -= MyOnPreCull; + => Camera.onPreRender -= MyOnPreCull; private void OnDestroy() { @@ -86,12 +91,25 @@ public class ShadowCloneManager : MonoBehaviour private void Update() { _hasRenderedThisFrame = false; + + for (int i = s_ShadowClones.Count - 1; i >= 0; i--) + { + IShadowClone clone = s_ShadowClones[i]; + if (clone is not { IsValid: true }) + { + clone?.Dispose(); + s_ShadowClones.RemoveAt(i); + continue; // invalid or dead + } + + clone.ResetMainMesh(); + } } private void MyOnPreCull(Camera cam) { - bool forceRenderForUiCull = s_UseShadowToCullUi && cam == s_UiCamera; - if (_hasRenderedThisFrame && !forceRenderForUiCull) + //bool forceRenderForUiCull = s_UseShadowToCullUi && cam == s_UiCamera; + if (cam != s_MainCamera) return; _hasRenderedThisFrame = true; @@ -109,17 +127,13 @@ public class ShadowCloneManager : MonoBehaviour } if (!clone.Process()) continue; // not ready yet or disabled - - if (forceRenderForUiCull) - clone.RenderForUiCulling(); // last cam to render - else - clone.RenderForShadow(); // first cam to render + + clone.RenderForShadow(); // first cam to render } _stopWatch.Stop(); - if (_debugShadowProcessingTime) Debug.Log($"ShadowCloneManager.MyOnPreCull({forceRenderForUiCull}) took {_stopWatch.ElapsedMilliseconds}ms"); } - + #endregion #region Game Events @@ -136,7 +150,12 @@ public class ShadowCloneManager : MonoBehaviour private void OnSettingsBoolChanged(string settingName, bool settingValue) { if (settingName == ShadowCullUiSettingName) + { s_UseShadowToCullUi = settingValue; + s_UiCamera.cullingMask = settingValue // make UI camera not see CVRLayers.PlayerClone + ? s_UiCamera.cullingMask | (1 << CVRLayers.PlayerClone) + : s_UiCamera.cullingMask & ~(1 << CVRLayers.PlayerClone); + } } private void OnVRModeSwitchCompleted(bool _, Camera __) @@ -152,6 +171,7 @@ public class ShadowCloneManager : MonoBehaviour { s_MainCamera = PlayerSetup.Instance.GetActiveCamera().GetComponent(); s_UiCamera = s_MainCamera.transform.Find("_UICamera").GetComponent(); + //s_PortableCamera = PortableCamera.Instance.cameraComponent; } @@ -159,11 +179,11 @@ public class ShadowCloneManager : MonoBehaviour #region Static Helpers - internal static IShadowClone CreateShadowClone(Renderer renderer) + internal static IShadowClone CreateShadowClone(Renderer renderer, FPRExclusion exclusion) { return renderer switch { - SkinnedMeshRenderer skinnedMeshRenderer => new SkinnedShadowClone(skinnedMeshRenderer), + SkinnedMeshRenderer skinnedMeshRenderer => new SkinnedShadowClone(skinnedMeshRenderer, exclusion), MeshRenderer meshRenderer => new MeshShadowClone(meshRenderer), _ => null }; @@ -175,6 +195,14 @@ public class ShadowCloneManager : MonoBehaviour shadowClone.transform.SetParent(meshRenderer.transform, false); shadowClone.transform.SetLocalPositionAndRotation(Vector3.zero, Quaternion.identity); shadowClone.transform.localScale = Vector3.one; + + if (s_DebugShowShadow && s_DebugShowInFront) + { + float scale = PlayerSetup.Instance.GetPlaySpaceScale(); + Transform playerTransform = PlayerSetup.Instance.transform; + shadowClone.transform.position += playerTransform.forward * scale * 1f; + shadowClone.transform.rotation = Quaternion.AngleAxis(180f, playerTransform.up) * shadowClone.transform.rotation; + } MeshRenderer newMesh = shadowClone.AddComponent(); MeshFilter newMeshFilter = shadowClone.AddComponent(); @@ -188,6 +216,9 @@ public class ShadowCloneManager : MonoBehaviour newMeshFilter.sharedMesh = meshRenderer.sharedMesh; newMesh.sharedMaterials = meshRenderer.sharedMaterials; + // copy probe anchor + newMesh.probeAnchor = meshRenderer.probeAnchor; + return (newMesh, newMeshFilter); } @@ -209,6 +240,9 @@ public class ShadowCloneManager : MonoBehaviour // copy mesh and materials newMeshFilter.sharedMesh = meshRenderer.GetComponent().sharedMesh; newMesh.sharedMaterials = meshRenderer.sharedMaterials; + + // copy probe anchor + newMesh.probeAnchor = meshRenderer.probeAnchor; return (newMesh, newMeshFilter); } diff --git a/BetterShadowClone/ShadowCloneHelper.cs b/BetterShadowClone/ShadowCloneHelper.cs index 29f6a7e..797ebb7 100644 --- a/BetterShadowClone/ShadowCloneHelper.cs +++ b/BetterShadowClone/ShadowCloneHelper.cs @@ -39,6 +39,8 @@ public static class ShadowCloneHelper return; } + ShadowCloneMod.Logger.Msg($"Found {renderers.Length} renderers. Processing..."); + // create shadow clones ProcessRenderers(renderers, avatar.transform, headBone); } @@ -48,6 +50,7 @@ public static class ShadowCloneHelper Stopwatch sw = Stopwatch.StartNew(); IReadOnlyDictionary exclusions = CollectTransformToExclusionMap(root, headBone); + var exclusion = headBone.gameObject.GetComponent(); // log current time ShadowCloneMod.Logger.Msg($"CollectTransformToExclusionMap in {sw.ElapsedMilliseconds}ms"); @@ -58,12 +61,12 @@ public static class ShadowCloneHelper if (ModSettings.EntryUseShadowClone.Value) { - IShadowClone clone = ShadowCloneManager.CreateShadowClone(renderer); + IShadowClone clone = ShadowCloneManager.CreateShadowClone(renderer, exclusion); if (clone != null) ShadowCloneManager.Instance.AddShadowClone(clone); } - ITransformHider hider = TransformHiderManager.CreateTransformHider(renderer, exclusions); - if (hider != null) TransformHiderManager.Instance.AddTransformHider(hider); + // ITransformHider hider = TransformHiderManager.CreateTransformHider(renderer, exclusions); + // if (hider != null) TransformHiderManager.Instance.AddTransformHider(hider); } sw.Stop(); @@ -143,9 +146,9 @@ public static class ShadowCloneHelper // shadow clone optimizations (always MeshRenderer) if (isShadowClone) { - renderer.receiveShadows = false; - renderer.lightProbeUsage = LightProbeUsage.Off; - renderer.reflectionProbeUsage = ReflectionProbeUsage.Off; + // renderer.receiveShadows = false; + // renderer.lightProbeUsage = LightProbeUsage.Off; + // renderer.reflectionProbeUsage = ReflectionProbeUsage.Off; return; } diff --git a/BetterShadowClone_LegacyHideAttempt.7z b/BetterShadowClone_LegacyHideAttempt.7z new file mode 100644 index 0000000000000000000000000000000000000000..76c782af64a5c8011685d78f0fdd2ad85b90532c GIT binary patch literal 207381 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

&`i-4f3)*i9odD(wZS=bCsl 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

#{EqdTq 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 z zAr^Bf`WHaO@dWdAr3VhDo-I^Rvug zE*;apor3S(JC3G8pW38cR^-aSa}j06Zjjw4nn(S3D7_Ag%fBS$RSs&-aU?gLd|fe# zNsJ)Sze^T8#TH^dgko2Qc(DTU8LPlozgBACZTRdu^9cj4A7hY0^|!qvtYg&x`a{gBhx6fBaI0&`_Csm+?Pq?Hh|hA7 z7SBwqfoT_v1X^pCuurMlakv13MNPuo4*7v=2};$j-SjwaAsjWmr$cFUgokRu`mo7m z=?dh4VC7w;0ZD(kO{K{9prkMoPxqb(uxB}63wvF9unh7Y~Y!>1b|pER>}{#GV4ZH3a>e%~0%tBF$r>)0EeJL#`PeeBWISm~^SIPW`Et{u2(tL`zoOy_QKc)Kq@ zIvHW*|Iz|)Mm5hlBsh}kzSj|>67Bu}!I5XuIkApLPBaCPkUa!m>g=YfC?{<-uOAaG zgJ-|wYf$-x_up5+O=_fNg(T8iHy=5H$Ewj3%vQeS{Y5~HhK9N5W3rZ9>c(ZyumQ9V_)xx+2Y<)w3Mo^5lSPMUaqtmaT||aXVXyf4@mQ zlVs6`lz#v$B{?q<1FV`yAtl&oCu2cZMPr@g74O@~B@h@<|1)>zzN=Z*7oNlGJ$c+e zO%fm`w~c2ub^N%|@@_z&4Gp+}>oFPF5F6W+^eDi;faZ|3O3#EPha5lE)&7&9p5Q}q zGrj8~1{EWzk0pyY&sB_=<}*3#V^0Int!=oTLo_+MMY#Q;GP@>ofO+)-J@Z7Glj2-Ps zbq%=nok55y&*qEI7l3DoqZWkSni_AwdXT3fkP)P>yyehT(YKj(>J4X4T`& zftKmMcV1R~%&vwNKzSl%YZwSZ>v(>SN6UidZ@1k^_}6v|$Rp+pXs9kEa|~a(^iR-? z(sn$Y+ddQ`)EoC+X?+WZx@PXsrdLzwLqGOy5M6n@(H`qC20nJ%n=9ucB|?9;ryJvY ztf``$6JuaR)0sTZ?<^#$0Q&|acTq@BuHvx}ZDauhYfKPr-*8{u-GS?nc718K%N$>h)V zeASpt0TB2QWZ`BcDxszh#Ep`izcP%v5TVRlByCeAZH#*$>qLu$OcrcB8tU zk?aEd-Rh_}PTnn8OU(crc1VxWz|0mTw0;GKyd*#Eagwo*eE1$QX&qQE-h^Czh*@H| z&yNWjVIeyFVIHWt`i1fQL!>lWjq+cB2MH)~;f`MCvx8O%(6I%?a;d$7i7?|p|0+tu z5&8LvJ-MW@I5zzc_*buC_^rUzZ5V`e)IR%Yy(Z}eFeRfv%0Aa!zcKBZA_MMTJ1Peg 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 X0RaVF0AK(B48X!k3ISkF_*nn|O!=_{ literal 0 HcmV?d00001 diff --git a/FuckCameraIndicator/FuckCameraIndicator.csproj b/FuckCameraIndicator/FuckCameraIndicator.csproj new file mode 100644 index 0000000..e94f9dc --- /dev/null +++ b/FuckCameraIndicator/FuckCameraIndicator.csproj @@ -0,0 +1,2 @@ + + diff --git a/FuckCameraIndicator/Main.cs b/FuckCameraIndicator/Main.cs new file mode 100644 index 0000000..a0c7957 --- /dev/null +++ b/FuckCameraIndicator/Main.cs @@ -0,0 +1,34 @@ +using MelonLoader; +using System.Reflection; +using ABI_RC.Core.Player; +using UnityEngine; + +namespace NAK.FuckCameraIndicator; + +public class FuckCameraIndicator : MelonMod +{ + public override void OnInitializeMelon() + { + HarmonyInstance.Patch( + typeof(PuppetMaster).GetMethod(nameof(PuppetMaster.Start), BindingFlags.NonPublic | BindingFlags.Instance), + postfix: new HarmonyLib.HarmonyMethod(typeof(FuckCameraIndicator).GetMethod(nameof(OnPuppetMasterStart_Postfix), BindingFlags.NonPublic | BindingFlags.Static)) + ); + } + + private static void OnPuppetMasterStart_Postfix(PuppetMaster __instance) + { + // thanks for not making it modular, fucking spaghetti + // and why leave it a skinned mesh... lazy fucking implementation + + GameObject indicator = __instance.cameraIndicator; + GameObject lens = __instance.cameraIndicatorLense; + + // Disable NamePlate child object + const string c_CanvasPath = "[NamePlate]/Canvas"; + GameObject canvas = indicator.transform.Find(c_CanvasPath).gameObject; + canvas.SetActive(false); + + // Disable lens renderer + lens.GetComponent().forceRenderingOff = true; + } +} \ No newline at end of file diff --git a/FuckCameraIndicator/Properties/AssemblyInfo.cs b/FuckCameraIndicator/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..b389d85 --- /dev/null +++ b/FuckCameraIndicator/Properties/AssemblyInfo.cs @@ -0,0 +1,29 @@ +using MelonLoader; +using NAK.FuckCameraIndicator.Properties; +using System.Reflection; + +[assembly: AssemblyVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyFileVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyInformationalVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyTitle(nameof(NAK.FuckCameraIndicator))] +[assembly: AssemblyCompany(AssemblyInfoParams.Author)] +[assembly: AssemblyProduct(nameof(NAK.FuckCameraIndicator))] + +[assembly: MelonInfo( + typeof(NAK.FuckCameraIndicator.FuckCameraIndicator), + nameof(NAK.FuckCameraIndicator), + AssemblyInfoParams.Version, + AssemblyInfoParams.Author, + downloadLink: "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/tree/main/FuckCameraIndicator" +)] + +[assembly: MelonGame("Alpha Blend Interactive", "ChilloutVR")] +[assembly: MelonPlatform(MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)] +[assembly: MelonPlatformDomain(MelonPlatformDomainAttribute.CompatibleDomains.MONO)] + +namespace NAK.FuckCameraIndicator.Properties; +internal static class AssemblyInfoParams +{ + public const string Version = "1.0.0"; + public const string Author = "NotAKidoS"; +} \ No newline at end of file diff --git a/FuckCameraIndicator/README.md b/FuckCameraIndicator/README.md new file mode 100644 index 0000000..af9d39c --- /dev/null +++ b/FuckCameraIndicator/README.md @@ -0,0 +1,16 @@ +# EzCurls + +A mod that allows you to tune your finger curls to your liking. Supposedly can help with VR sign language, as raw finger curls are not that great for quick and precise gestures. + +The settings are not too coherent, it is mostly a bunch of things thrown at the wall, but it works for me. I hope it works for you too. + +--- + +Here is the block of text where I tell you this mod is not affiliated or endorsed by ABI. +https://documentation.abinteractive.net/official/legal/tos/#7-modding-our-games + +> This mod is an independent creation and is not affiliated with, supported by or approved by Alpha Blend Interactive. + +> Use of this mod is done so at the user's own risk and the creator cannot be held responsible for any issues arising from its use. + +> To the best of my knowledge, I have adhered to the Modding Guidelines established by Alpha Blend Interactive. diff --git a/FuckCameraIndicator/format.json b/FuckCameraIndicator/format.json new file mode 100644 index 0000000..6a8d72c --- /dev/null +++ b/FuckCameraIndicator/format.json @@ -0,0 +1,23 @@ +{ + "_id": -1, + "name": "EzCurls", + "modversion": "1.0.0", + "gameversion": "2023r173", + "loaderversion": "0.6.1", + "modtype": "Mod", + "author": "NotAKidoS", + "description": "A mod that allows you to tune your finger curls to your liking. Supposedly can help with VR sign language, as raw finger curls are not that great for quick and precise gestures.\n\nThe settings are not too coherent, it is mostly a bunch of things thrown at the wall, but it works for me. I hope it works for you too.", + "searchtags": [ + "curls", + "fingers", + "index", + "knuckles" + ], + "requirements": [ + "UIExpansionKit" + ], + "downloadlink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/releases/download/r24/EzCurls.dll", + "sourcelink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/tree/main/EzCurls/", + "changelog": "- Initial CVRMG release", + "embedcolor": "7d7d7d" +} \ No newline at end of file diff --git a/MirrorClone/Main.cs b/MirrorClone/Main.cs new file mode 100644 index 0000000..87afe20 --- /dev/null +++ b/MirrorClone/Main.cs @@ -0,0 +1,80 @@ +using MelonLoader; +using System.Reflection; +using ABI_RC.Core.Player; +using ABI_RC.Core.Util; +using ABI_RC.Systems.IK; +using UnityEngine; + +namespace NAK.BetterShadowClone; + +public class MirrorCloneMod : MelonMod +{ + internal static MelonLogger.Instance Logger; + + public override void OnInitializeMelon() + { + Logger = LoggerInstance; + + ModSettings.Initialize(); + + try + { + InitializePatches(); + } + catch (Exception e) + { + Logger.Error(e); + } + } + + #region Harmony Patches + + private void InitializePatches() + { + HarmonyInstance.Patch( + typeof(PlayerSetup).GetMethod(nameof(PlayerSetup.Awake), BindingFlags.NonPublic | BindingFlags.Instance), + postfix: new HarmonyLib.HarmonyMethod(typeof(MirrorCloneMod).GetMethod(nameof(OnPlayerSetup_Awake_Postfix), BindingFlags.NonPublic | BindingFlags.Static)) + ); + + HarmonyInstance.Patch( + typeof(PlayerSetup).GetMethod(nameof(PlayerSetup.SetupAvatar)), + prefix: new HarmonyLib.HarmonyMethod(typeof(MirrorCloneMod).GetMethod(nameof(OnPlayerSetup_SetupAvatar_Prefix), BindingFlags.NonPublic | BindingFlags.Static)), + postfix: new HarmonyLib.HarmonyMethod(typeof(MirrorCloneMod).GetMethod(nameof(OnPlayerSetup_SetupAvatar_Postfix), BindingFlags.NonPublic | BindingFlags.Static)) + ); + + HarmonyInstance.Patch( + typeof(PlayerSetup).GetMethod(nameof(PlayerSetup.ClearAvatar)), + prefix: new HarmonyLib.HarmonyMethod(typeof(MirrorCloneMod).GetMethod(nameof(OnPlayerSetup_ClearAvatar_Prefix), BindingFlags.NonPublic | BindingFlags.Static)) + ); + + HarmonyInstance.Patch( + typeof(IKSystem).GetMethod(nameof(IKSystem.OnPostSolverUpdateGeneral), BindingFlags.NonPublic | BindingFlags.Instance), + postfix: new HarmonyLib.HarmonyMethod(typeof(MirrorCloneMod).GetMethod(nameof(OnIKSystem_OnPostSolverUpdateGeneral_Postfix), BindingFlags.NonPublic | BindingFlags.Static)) + ); + + HarmonyInstance.Patch( + typeof(TransformHiderForMainCamera).GetMethod(nameof(TransformHiderForMainCamera.ProcessHierarchy)), + prefix: new HarmonyLib.HarmonyMethod(typeof(MirrorCloneMod).GetMethod(nameof(OnTransformHiderForMainCamera_ProcessHierarchy_Prefix), BindingFlags.NonPublic | BindingFlags.Static)) + ); + } + + private static void OnPlayerSetup_Awake_Postfix() + => MirrorCloneManager.OnPlayerSetupAwake(); + + private static void OnPlayerSetup_SetupAvatar_Prefix(GameObject inAvatar) + => MirrorCloneManager.Instance.OnAvatarInitialized(inAvatar); + + private static void OnPlayerSetup_SetupAvatar_Postfix() + => MirrorCloneManager.Instance.OnAvatarConfigured(); + + private static void OnPlayerSetup_ClearAvatar_Prefix() + => MirrorCloneManager.Instance.OnAvatarDestroyed(); + + private static void OnIKSystem_OnPostSolverUpdateGeneral_Postfix() + => MirrorCloneManager.Instance.OnPostSolverUpdateGeneral(); + + private static void OnTransformHiderForMainCamera_ProcessHierarchy_Prefix(ref bool __runOriginal) + => __runOriginal = !ModSettings.EntryEnabled.Value; + + #endregion +} \ No newline at end of file diff --git a/MirrorClone/MirrorClone.csproj b/MirrorClone/MirrorClone.csproj new file mode 100644 index 0000000..e94f9dc --- /dev/null +++ b/MirrorClone/MirrorClone.csproj @@ -0,0 +1,2 @@ + + diff --git a/MirrorClone/MirrorClone/MirrorCloneManager.cs b/MirrorClone/MirrorClone/MirrorCloneManager.cs new file mode 100644 index 0000000..035c9c0 --- /dev/null +++ b/MirrorClone/MirrorClone/MirrorCloneManager.cs @@ -0,0 +1,247 @@ +using ABI_RC.Core; +using ABI_RC.Core.Player; +using ABI_RC.Core.Savior; +using ABI_RC.Systems.IK; +using ABI.CCK.Components; +using UnityEngine; +using UnityEngine.Rendering; + +namespace NAK.BetterShadowClone; + +public class MirrorCloneManager : MonoBehaviour +{ + #region Static Instance + + public static MirrorCloneManager Instance { get; private set; } + + #endregion + + private bool _isAvatarConfigured; + + private GameObject _avatar; + private GameObject _mirrorClone; + private GameObject _initializationTarget; + + private CVRAnimatorManager _animatorManager; + private Animator _mirrorAnimator; + + #region Unity Events + + private void Awake() + { + if (Instance != null + && Instance != this) + { + DestroyImmediate(this); + return; + } + + Instance = this; + + MirrorCloneMod.Logger.Msg("Mirror Clone Manager initialized."); + + _animatorManager = PlayerSetup.Instance.animatorManager; + + // Create initialization target (so no components are initialized before we're ready) + _initializationTarget = new GameObject(nameof(MirrorCloneManager) + " Initialization Target"); + _initializationTarget.transform.SetParent(transform); + _initializationTarget.transform.SetLocalPositionAndRotation(Vector3.zero, Quaternion.identity); + _initializationTarget.transform.localScale = Vector3.one; + _initializationTarget.SetActive(false); + } + + private void OnDestroy() + { + if (Instance == this) + Instance = null; + } + + #endregion + + #region Game Events + + public static void OnPlayerSetupAwake() + { + if (Instance != null) + return; + + GameObject manager = new (nameof(MirrorCloneManager), typeof(MirrorCloneManager)); + DontDestroyOnLoad(manager); + } + + public void OnAvatarInitialized(GameObject avatar) + { + if (!ModSettings.EntryEnabled.Value) + return; + + if (avatar == null + || _isAvatarConfigured) + return; + + _isAvatarConfigured = true; + + _avatar = avatar; + _mirrorClone = InstantiateMirrorCopy(_avatar); + } + + public void OnAvatarConfigured() + { + if (!_isAvatarConfigured) + return; + + Animator baseAnimator = _avatar.GetComponent(); + + if (!_mirrorClone.TryGetComponent(out _mirrorAnimator)) + _mirrorAnimator = gameObject.AddComponent(); + _mirrorAnimator.runtimeAnimatorController = baseAnimator.runtimeAnimatorController; + + _animatorManager._copyAnimator = _mirrorAnimator; // thank you for existing + + var cameras = PlayerSetup.Instance.GetComponentsInChildren(true); + foreach (var camera in cameras) + { + // hide PlayerClone layer from all cameras + camera.cullingMask &= ~(1 << CVRLayers.PlayerClone); + } + + var mirrors = Resources.FindObjectsOfTypeAll(); + foreach (CVRMirror mirror in mirrors) + { + // hide PlayerLocal layer from all mirrors + mirror.m_ReflectLayers &= ~(1 << CVRLayers.PlayerLocal); + } + + // scale avatar head bone to 0 0 0 + Transform headBone = baseAnimator.GetBoneTransform(HumanBodyBones.Head); + headBone.localScale = Vector3.zero; + + CleanupAvatar(); + CleanupMirrorClone(); + SetupHumanPoseHandler(); + + _initializationTarget.SetActive(true); + } + + public void OnAvatarDestroyed() + { + if (!_isAvatarConfigured) + return; + + _avatar = null; + _mirrorAnimator = null; + if (_mirrorClone != null) + Destroy(_mirrorClone); + + _initializationTarget.SetActive(false); + + _isAvatarConfigured = false; + } + + public void OnPostSolverUpdateGeneral() + { + if (!_isAvatarConfigured) + return; + + StealTransforms(); + } + + #endregion + + #region Private Methods + + private GameObject InstantiateMirrorCopy(GameObject original) + { + GameObject clone = Instantiate(original, _initializationTarget.transform); + clone.transform.SetLocalPositionAndRotation(Vector3.zero, Quaternion.identity); + clone.name = original.name + " (Mirror Clone)"; + clone.SetLayerRecursive(CVRLayers.PlayerClone); + return clone; + } + + private void CleanupAvatar() + { + // set local avatar mesh to shadow off + var avatarMeshes = _avatar.GetComponentsInChildren(true); + foreach (SkinnedMeshRenderer avatarMesh in avatarMeshes) + { + avatarMesh.shadowCastingMode = ShadowCastingMode.Off; + avatarMesh.forceMatrixRecalculationPerRender = false; + } + } + + private void CleanupMirrorClone() + { + // destroy unneeded components + // only keep Animator + + var components = _mirrorClone.GetComponentsInChildren(true); + foreach (Component component in components) + { + if (component == null) + continue; + + // skip basic unity components + if (component is Animator + or Transform + or SkinnedMeshRenderer + or MeshRenderer + or MeshFilter) + continue; + + // skip basic CVR components + if (component is CVRAvatar or CVRAssetInfo) + { + (component as MonoBehaviour).enabled = false; + continue; + } + + Destroy(component); + } + } + + #endregion + + #region Job System + + private HumanPoseHandler _humanPoseHandler; + private Transform _hipTransform; + + private void SetupHumanPoseHandler() + { + _hipTransform = _mirrorAnimator.GetBoneTransform(HumanBodyBones.Hips); + + _humanPoseHandler?.Dispose(); + _humanPoseHandler = new HumanPoseHandler(_mirrorAnimator.avatar, _mirrorAnimator.transform); + } + + private void StealTransforms() + { + // copy transforms from avatar to mirror clone + // var avatarTransforms = _avatar.GetComponentsInChildren(true); + // var mirrorCloneTransforms = _mirrorClone.GetComponentsInChildren(true); + // for (int i = 0; i < avatarTransforms.Length; i++) + // { + // Transform avatarTransform = avatarTransforms[i]; + // Transform mirrorCloneTransform = mirrorCloneTransforms[i]; + // + // mirrorCloneTransform.SetLocalPositionAndRotation( + // avatarTransform.localPosition, + // avatarTransform.localRotation); + // } + + if (!IKSystem.Instance.IsAvatarCalibrated()) + return; + + IKSystem.Instance._humanPoseHandler.GetHumanPose(ref IKSystem.Instance._humanPose); + _humanPoseHandler.SetHumanPose(ref IKSystem.Instance._humanPose); + + if (!MetaPort.Instance.isUsingVr) + _mirrorAnimator.transform.SetPositionAndRotation(PlayerSetup.Instance.GetPlayerPosition(), PlayerSetup.Instance.GetPlayerRotation()); + else + _mirrorAnimator.transform.SetPositionAndRotation(_avatar.transform.position, _avatar.transform.rotation); + + _hipTransform.SetPositionAndRotation(IKSystem.Instance._hipTransform.position, IKSystem.Instance._hipTransform.rotation); + } + + #endregion +} \ No newline at end of file diff --git a/MirrorClone/ModSettings.cs b/MirrorClone/ModSettings.cs new file mode 100644 index 0000000..05c753a --- /dev/null +++ b/MirrorClone/ModSettings.cs @@ -0,0 +1,31 @@ +using MelonLoader; +using UnityEngine; + +namespace NAK.BetterShadowClone; + +public static class ModSettings +{ + #region Melon Prefs + + private const string SettingsCategory = nameof(MirrorCloneMod); + + private static readonly MelonPreferences_Category Category = + MelonPreferences.CreateCategory(SettingsCategory); + + internal static readonly MelonPreferences_Entry EntryEnabled = + Category.CreateEntry("Enabled", true, + description: "Enable Mirror Clone."); + + #endregion + + internal static void Initialize() + { + foreach (MelonPreferences_Entry setting in Category.Entries) + setting.OnEntryValueChangedUntyped.Subscribe(OnSettingsChanged); + } + + internal static void OnSettingsChanged(object oldValue = null, object newValue = null) + { + + } +} \ No newline at end of file diff --git a/MirrorClone/Properties/AssemblyInfo.cs b/MirrorClone/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..98c8620 --- /dev/null +++ b/MirrorClone/Properties/AssemblyInfo.cs @@ -0,0 +1,29 @@ +using MelonLoader; +using NAK.BetterShadowClone.Properties; +using System.Reflection; + +[assembly: AssemblyVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyFileVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyInformationalVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyTitle(nameof(NAK.BetterShadowClone))] +[assembly: AssemblyCompany(AssemblyInfoParams.Author)] +[assembly: AssemblyProduct(nameof(NAK.BetterShadowClone))] + +[assembly: MelonInfo( + typeof(NAK.BetterShadowClone.MirrorCloneMod), + nameof(NAK.BetterShadowClone), + AssemblyInfoParams.Version, + AssemblyInfoParams.Author, + downloadLink: "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/tree/main/MirrorCloneMod" +)] + +[assembly: MelonGame("Alpha Blend Interactive", "ChilloutVR")] +[assembly: MelonPlatform(MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)] +[assembly: MelonPlatformDomain(MelonPlatformDomainAttribute.CompatibleDomains.MONO)] + +namespace NAK.BetterShadowClone.Properties; +internal static class AssemblyInfoParams +{ + public const string Version = "1.0.0"; + public const string Author = "NotAKidoS"; +} \ No newline at end of file diff --git a/MirrorClone/README.md b/MirrorClone/README.md new file mode 100644 index 0000000..af9d39c --- /dev/null +++ b/MirrorClone/README.md @@ -0,0 +1,16 @@ +# EzCurls + +A mod that allows you to tune your finger curls to your liking. Supposedly can help with VR sign language, as raw finger curls are not that great for quick and precise gestures. + +The settings are not too coherent, it is mostly a bunch of things thrown at the wall, but it works for me. I hope it works for you too. + +--- + +Here is the block of text where I tell you this mod is not affiliated or endorsed by ABI. +https://documentation.abinteractive.net/official/legal/tos/#7-modding-our-games + +> This mod is an independent creation and is not affiliated with, supported by or approved by Alpha Blend Interactive. + +> Use of this mod is done so at the user's own risk and the creator cannot be held responsible for any issues arising from its use. + +> To the best of my knowledge, I have adhered to the Modding Guidelines established by Alpha Blend Interactive. diff --git a/MirrorClone/format.json b/MirrorClone/format.json new file mode 100644 index 0000000..6a8d72c --- /dev/null +++ b/MirrorClone/format.json @@ -0,0 +1,23 @@ +{ + "_id": -1, + "name": "EzCurls", + "modversion": "1.0.0", + "gameversion": "2023r173", + "loaderversion": "0.6.1", + "modtype": "Mod", + "author": "NotAKidoS", + "description": "A mod that allows you to tune your finger curls to your liking. Supposedly can help with VR sign language, as raw finger curls are not that great for quick and precise gestures.\n\nThe settings are not too coherent, it is mostly a bunch of things thrown at the wall, but it works for me. I hope it works for you too.", + "searchtags": [ + "curls", + "fingers", + "index", + "knuckles" + ], + "requirements": [ + "UIExpansionKit" + ], + "downloadlink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/releases/download/r24/EzCurls.dll", + "sourcelink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/tree/main/EzCurls/", + "changelog": "- Initial CVRMG release", + "embedcolor": "7d7d7d" +} \ No newline at end of file diff --git a/NAK_CVR_Mods.sln b/NAK_CVR_Mods.sln index 754d011..46c920f 100644 --- a/NAK_CVR_Mods.sln +++ b/NAK_CVR_Mods.sln @@ -35,6 +35,12 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MirrorClone", "MirrorClone\ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BetterShadowClone", "BetterShadowClone\BetterShadowClone.csproj", "{D0C40987-AF16-490A-9304-F99D5A5A774C}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FuckCameraIndicator", "FuckCameraIndicator\FuckCameraIndicator.csproj", "{0BE10630-EA6A-40FB-B3AF-5C2018F22BD3}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YouAreAClone", "YouAreAClone\YouAreAClone.csproj", "{7778B600-111E-4C8B-AE2B-E9750CECE02A}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nevermind", "Nevermind\Nevermind.csproj", "{AC4857DD-F6D9-436D-A3EE-D148A518E642}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -105,6 +111,18 @@ Global {D0C40987-AF16-490A-9304-F99D5A5A774C}.Debug|Any CPU.Build.0 = Debug|Any CPU {D0C40987-AF16-490A-9304-F99D5A5A774C}.Release|Any CPU.ActiveCfg = Release|Any CPU {D0C40987-AF16-490A-9304-F99D5A5A774C}.Release|Any CPU.Build.0 = Release|Any CPU + {0BE10630-EA6A-40FB-B3AF-5C2018F22BD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0BE10630-EA6A-40FB-B3AF-5C2018F22BD3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0BE10630-EA6A-40FB-B3AF-5C2018F22BD3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0BE10630-EA6A-40FB-B3AF-5C2018F22BD3}.Release|Any CPU.Build.0 = Release|Any CPU + {7778B600-111E-4C8B-AE2B-E9750CECE02A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7778B600-111E-4C8B-AE2B-E9750CECE02A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7778B600-111E-4C8B-AE2B-E9750CECE02A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7778B600-111E-4C8B-AE2B-E9750CECE02A}.Release|Any CPU.Build.0 = Release|Any CPU + {AC4857DD-F6D9-436D-A3EE-D148A518E642}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AC4857DD-F6D9-436D-A3EE-D148A518E642}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AC4857DD-F6D9-436D-A3EE-D148A518E642}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AC4857DD-F6D9-436D-A3EE-D148A518E642}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Nevermind/Main.cs b/Nevermind/Main.cs new file mode 100644 index 0000000..c631850 --- /dev/null +++ b/Nevermind/Main.cs @@ -0,0 +1,53 @@ +using ABI_RC.Core.InteractionSystem; +using ABI_RC.Core.IO; +using MelonLoader; +using UnityEngine; + +namespace NAK.Nevermind; + +public class Nevermind : MelonMod +{ + #region Mod Settings + + private static readonly MelonPreferences_Category Category = + MelonPreferences.CreateCategory(nameof(Nevermind)); + + private static readonly MelonPreferences_Entry Setting_NevermindKey = + Category.CreateEntry("Keybind", KeyCode.Home, description: "Key to cancel world join."); + + #endregion + + #region Melon Events + + public override void OnUpdate() + { + if (!Input.GetKeyDown(Setting_NevermindKey.Value)) + return; + + if (CVRObjectLoader.Instance == null + || CVRDownloadManager.Instance == null) + return; // game is not ready + + if (!CVRObjectLoader.Instance.IsLoadingWorldToJoin()) + return; // no world to cancel + + if (CVRObjectLoader.Instance.WorldBundleRequest != null) + return; // too late to cancel, world is being loaded + + // Cancel world join if still downloading + CVRDownloadManager.Instance.ActiveWorldDownload = false; + foreach (var download in CVRDownloadManager.Instance._downloadTasks) + download.Value.JoinOnComplete = false; + + // Cancel world join if still loading + CVRObjectLoader.Instance.ActiveWorldDownload = null; + CVRObjectLoader.Instance._isLoadingWorldToJoin = false; + CVRObjectLoader.Instance.worldLoadingState = CVRObjectLoader.WorldLoadingState.None; + + // Notify user of successful cancellation + LoggerInstance.Msg("World Join Cancelled!"); + ViewManager.Instance.NotifyUser("(Local) Client", "World Join Cancelled", 2f); + } + + #endregion +} \ No newline at end of file diff --git a/.DepricatedMods/Nevermind/Nevermind.csproj b/Nevermind/Nevermind.csproj similarity index 100% rename from .DepricatedMods/Nevermind/Nevermind.csproj rename to Nevermind/Nevermind.csproj diff --git a/.DepricatedMods/Nevermind/Properties/AssemblyInfo.cs b/Nevermind/Properties/AssemblyInfo.cs similarity index 90% rename from .DepricatedMods/Nevermind/Properties/AssemblyInfo.cs rename to Nevermind/Properties/AssemblyInfo.cs index 8e54d13..ed2c23a 100644 --- a/.DepricatedMods/Nevermind/Properties/AssemblyInfo.cs +++ b/Nevermind/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using Nevermind.Properties; +using NAK.Nevermind.Properties; using MelonLoader; using System.Reflection; @@ -20,10 +20,9 @@ using System.Reflection; [assembly: MelonGame("Alpha Blend Interactive", "ChilloutVR")] [assembly: MelonPlatform(MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)] [assembly: MelonPlatformDomain(MelonPlatformDomainAttribute.CompatibleDomains.MONO)] -[assembly: MelonOptionalDependencies("BTKUILib")] [assembly: HarmonyDontPatchAll] -namespace Nevermind.Properties; +namespace NAK.Nevermind.Properties; internal static class AssemblyInfoParams { public const string Version = "1.0.0"; diff --git a/Nevermind/format.json b/Nevermind/format.json new file mode 100644 index 0000000..9dcbab6 --- /dev/null +++ b/Nevermind/format.json @@ -0,0 +1,23 @@ +{ + "_id": -1, + "name": "Nevermind", + "modversion": "1.0.0", + "gameversion": "2024r174", + "loaderversion": "0.6.1", + "modtype": "Mod", + "author": "NotAKidoS", + "description": "Simple mod that allows you to cancel joining a world in Desktop.", + "searchtags": [ + "never", + "mind", + "download", + "cancel" + ], + "requirements": [ + "None" + ], + "downloadlink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/releases/download/r25/Nevermind.dll", + "sourcelink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/tree/main/Nevermind/", + "changelog": "- Initial Release", + "embedcolor": "#b589ec" +} \ No newline at end of file diff --git a/PhysicsGunMod/Components/ObjectSyncBridge.cs b/PhysicsGunMod/Components/ObjectSyncBridge.cs index ea3e1c7..b97eff9 100644 --- a/PhysicsGunMod/Components/ObjectSyncBridge.cs +++ b/PhysicsGunMod/Components/ObjectSyncBridge.cs @@ -23,32 +23,33 @@ public class ObjectSyncBridge : MonoBehaviour _physicsGun.OnPreGrabbedObject = o => { bool canTakeOwnership = false; - + + // CVRObjectSync objectSync = o.GetComponentInParent(); - if (objectSync != null - && (objectSync.SyncType == 0 // check if physics synced or synced by us - || objectSync.SyncedByMe)) - canTakeOwnership = true; - + // if (objectSync != null + // && (objectSync.SyncType == 0 // check if physics synced or synced by us + // || objectSync.SyncedByMe)) + // canTakeOwnership = true; + // CVRSpawnable spawnable = o.GetComponentInParent(); - if (spawnable != null) - { - CVRSyncHelper.PropData propData = CVRSyncHelper.Props.Find(match => match.InstanceId == spawnable.instanceId); - if (propData != null - && (propData.syncType == 0 // check if physics synced or synced by us - || propData.syncedBy == MetaPort.Instance.ownerId)) - canTakeOwnership = true; - } - + // if (spawnable != null) + // { + // CVRSyncHelper.PropData propData = CVRSyncHelper.Props.Find(match => match.InstanceId == spawnable.instanceId); + // if (propData != null + // && (propData.syncType == 0 // check if physics synced or synced by us + // || propData.syncedBy == MetaPort.Instance.ownerId)) + // canTakeOwnership = true; + // } + // CVRPickupObject pickup = o.GetComponentInParent(); - if (pickup != null - && (pickup.grabbedBy == MetaPort.Instance.ownerId // check if already grabbed by us - || pickup.grabbedBy == "" || !pickup.disallowTheft)) // check if not grabbed or allows theft - canTakeOwnership = true; - - if (!canTakeOwnership // if we can't take ownership, don't grab, unless there is no syncing at all (local object) - && (objectSync || spawnable || pickup )) - return false; + // if (pickup != null + // && (pickup.grabbedBy == MetaPort.Instance.ownerId // check if already grabbed by us + // || pickup.grabbedBy == "" || !pickup.disallowTheft)) // check if not grabbed or allows theft + // canTakeOwnership = true; + // + // if (!canTakeOwnership // if we can't take ownership, don't grab, unless there is no syncing at all (local object) + // && (objectSync || spawnable || pickup )) + // return false; if (pickup) { diff --git a/PropUndoButton/format.json b/PropUndoButton/format.json index e4af225..9cafa87 100644 --- a/PropUndoButton/format.json +++ b/PropUndoButton/format.json @@ -1,8 +1,8 @@ { "_id": 147, "name": "PropUndoButton", - "modversion": "1.0.1", - "gameversion": "2022r170p1", + "modversion": "1.0.2", + "gameversion": "2024r175", "loaderversion": "0.6.1", "modtype": "Mod", "author": "NotAKidoS", @@ -16,8 +16,8 @@ "requirements": [ "None" ], - "downloadlink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/releases/download/r3/PropUndoButton.dll", + "downloadlink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/releases/download/r25/PropUndoButton.dll", "sourcelink": "https://github.com/NotAKidOnSteam/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.", + "changelog": "- Recompiled for 2024r175", "embedcolor": "#00FFFF" } \ No newline at end of file diff --git a/ThirdPerson/CameraLogic.cs b/ThirdPerson/CameraLogic.cs index 27d4dcf..cad39b2 100644 --- a/ThirdPerson/CameraLogic.cs +++ b/ThirdPerson/CameraLogic.cs @@ -70,7 +70,7 @@ internal static class CameraLogic return; ThirdPerson.Logger.Msg("Copying active camera settings & components."); - CVRTools.CopyToDestCam(activePlayerCam, _thirdPersonCam); + CVRTools.CopyToDestCam(activePlayerCam, _thirdPersonCam, true); if (!CheckIsRestricted()) return; diff --git a/ThirdPerson/Integrations/BSCAddon.cs b/ThirdPerson/Integrations/BSCAddon.cs deleted file mode 100644 index 65306af..0000000 --- a/ThirdPerson/Integrations/BSCAddon.cs +++ /dev/null @@ -1,11 +0,0 @@ -using NAK.BetterShadowClone; - -namespace NAK.ThirdPerson.Integrations; - -public static class BSCAddon -{ - public static void Initialize() - { - ShadowCloneMod.wantsToHideHead += CameraLogic.ShouldNotHideHead_ThirdPerson; - } -} \ No newline at end of file diff --git a/ThirdPerson/Properties/AssemblyInfo.cs b/ThirdPerson/Properties/AssemblyInfo.cs index 4fa680e..ad57b1b 100644 --- a/ThirdPerson/Properties/AssemblyInfo.cs +++ b/ThirdPerson/Properties/AssemblyInfo.cs @@ -1,7 +1,6 @@ using MelonLoader; using NAK.ThirdPerson.Properties; using System.Reflection; -using CurvedUI; [assembly: AssemblyVersion(AssemblyInfoParams.Version)] [assembly: AssemblyFileVersion(AssemblyInfoParams.Version)] @@ -24,11 +23,10 @@ using CurvedUI; [assembly: MelonColor(255, 246, 25, 97)] [assembly: MelonAuthorColor(255, 158, 21, 32)] [assembly: HarmonyDontPatchAll] -[assembly: MelonOptionalDependencies("BetterShadowClone")] namespace NAK.ThirdPerson.Properties; internal static class AssemblyInfoParams { - public const string Version = "1.0.7"; + public const string Version = "1.0.8"; public const string Author = "Davi & NotAKidoS"; } \ No newline at end of file diff --git a/ThirdPerson/ThirdPerson.cs b/ThirdPerson/ThirdPerson.cs index 0017c44..21691c4 100644 --- a/ThirdPerson/ThirdPerson.cs +++ b/ThirdPerson/ThirdPerson.cs @@ -14,17 +14,6 @@ public class ThirdPerson : MelonMod Patches.Apply(HarmonyInstance); MelonCoroutines.Start(SetupCamera()); - - InitializeIntegration("BetterShadowClone", Integrations.BSCAddon.Initialize); - } - - private static void InitializeIntegration(string modName, Action integrationAction) - { - if (RegisteredMelons.All(it => it.Info.Name != modName)) - return; - - Logger.Msg($"Initializing {modName} integration."); - integrationAction.Invoke(); } public override void OnUpdate() diff --git a/ThirdPerson/ThirdPerson.csproj b/ThirdPerson/ThirdPerson.csproj index 9cb91de..13a6b34 100644 --- a/ThirdPerson/ThirdPerson.csproj +++ b/ThirdPerson/ThirdPerson.csproj @@ -1,6 +1,2 @@  - - - - - + diff --git a/ThirdPerson/format.json b/ThirdPerson/format.json index 054ff45..74f7a12 100644 --- a/ThirdPerson/format.json +++ b/ThirdPerson/format.json @@ -2,8 +2,8 @@ { "_id": 16, "name": "ThirdPerson", - "modversion": "1.0.7", - "gameversion": "2023r173", + "modversion": "1.0.8", + "gameversion": "2024r175", "loaderversion": "0.6.1", "modtype": "Mod", "author": "Davi & NotAKidoS", @@ -14,9 +14,9 @@ "third person" ], "requirements": [], - "downloadlink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/releases/download/r23/ThirdPerson.dll", + "downloadlink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/releases/download/r25/ThirdPerson.dll", "sourcelink": "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/tree/main/ThirdPerson", - "changelog": "- Added restriction to worlds with Zoom disabled.", + "changelog": "- Recompiled to work with 2024r175", "embedcolor": "#F61961" } ] \ No newline at end of file diff --git a/YouAreAClone/Main.cs b/YouAreAClone/Main.cs new file mode 100644 index 0000000..217a888 --- /dev/null +++ b/YouAreAClone/Main.cs @@ -0,0 +1,119 @@ +using System; +using System.IO; +using MelonLoader; +using System.Reflection; +using ABI_RC.Core.Player; +using ABI_RC.Core.Util; +using ABI_RC.Core.Util.AssetFiltering; +using ABI_RC.Systems.Camera; +using UnityEngine; + +namespace NAK.YouAreAClone; + +public class YouAreAClone : MelonMod +{ + internal static MelonLogger.Instance Logger; + + + public override void OnInitializeMelon() + { + Logger = LoggerInstance; + + //VRModeSwitchEvents.OnCompletedVRModeSwitch.AddListener(_ => FindCameras()); + + SharedFilter._avatarWhitelist.Add(typeof(FPRExclusion)); + SharedFilter._localComponentWhitelist.Add(typeof(FPRExclusion)); + + try + { + LoadAssetBundle(); + InitializePatches(); + } + catch (Exception e) + { + Logger.Error(e); + } + } + + #region Asset Bundle Loading + + private const string YouAreACloneAssets = "YouAreAClone.assets"; + + private const string BoneHiderComputePath = "Assets/Koneko/ComputeShaders/BoneHider.compute"; + //private const string MeshCopyComputePath = "Assets/Koneko/ComputeShaders/MeshCopy.compute"; + + private const string ShadowCloneComputePath = "Assets/NotAKid/Shaders/ShadowClone.compute"; + private const string ShadowCloneShaderPath = "Assets/NotAKid/Shaders/ShadowClone.shader"; + private const string DummyCloneShaderPath = "Assets/NotAKid/Shaders/DummyClone.shader"; + + private void LoadAssetBundle() + { + Logger.Msg($"Loading required asset bundle..."); + using Stream resourceStream = MelonAssembly.Assembly.GetManifestResourceStream(YouAreACloneAssets); + using MemoryStream memoryStream = new(); + if (resourceStream == null) { + Logger.Error($"Failed to load {YouAreACloneAssets}!"); + return; + } + + resourceStream.CopyTo(memoryStream); + AssetBundle assetBundle = AssetBundle.LoadFromMemory(memoryStream.ToArray()); + if (assetBundle == null) { + Logger.Error($"Failed to load {YouAreACloneAssets}! Asset bundle is null!"); + return; + } + + // load shaders + ComputeShader shader = assetBundle.LoadAsset(BoneHiderComputePath); + shader.hideFlags |= HideFlags.DontUnloadUnusedAsset; + TransformHiderManager.shader = shader; + Logger.Msg($"Loaded {BoneHiderComputePath}!"); + + // load shadow clone shader + ComputeShader shadowCloneCompute = assetBundle.LoadAsset(ShadowCloneComputePath); + shadowCloneCompute.hideFlags |= HideFlags.DontUnloadUnusedAsset; + ShadowCloneHelper.shader = shadowCloneCompute; + Logger.Msg($"Loaded {ShadowCloneComputePath}!"); + + // load shadow clone material + Shader shadowCloneShader = assetBundle.LoadAsset(ShadowCloneShaderPath); + shadowCloneShader.hideFlags |= HideFlags.DontUnloadUnusedAsset; + ShadowCloneHelper.shadowMaterial = new Material(shadowCloneShader); + Logger.Msg($"Loaded {ShadowCloneShaderPath}!"); + + Logger.Msg("Asset bundle successfully loaded!"); + } + + #endregion + + #region Harmony Patches + + private void InitializePatches() + { + HarmonyInstance.Patch( + typeof(TransformHiderForMainCamera).GetMethod(nameof(TransformHiderForMainCamera.ProcessHierarchy)), + prefix: new HarmonyLib.HarmonyMethod(typeof(YouAreAClone).GetMethod(nameof(OnTransformHiderForMainCamera_ProcessHierarchy_Prefix), BindingFlags.NonPublic | BindingFlags.Static)) + ); + + HarmonyInstance.Patch( + typeof(PlayerSetup).GetMethod(nameof(PlayerSetup.ClearAvatar)), + prefix: new HarmonyLib.HarmonyMethod(typeof(YouAreAClone).GetMethod(nameof(OnPlayerSetup_ClearAvatar_Prefix), BindingFlags.NonPublic | BindingFlags.Static)) + ); + } + + private static void OnPlayerSetup_ClearAvatar_Prefix() + { + TransformHiderManager.Instance.OnAvatarCleared(); + ShadowCloneManager.Instance.OnAvatarCleared(); + } + + private static void OnTransformHiderForMainCamera_ProcessHierarchy_Prefix(ref bool __runOriginal) + { + if (!__runOriginal || (__runOriginal = !ModSettings.EntryEnabled.Value)) + return; // if something else disabled, or we are disabled, don't run + + ShadowCloneHelper.SetupAvatar(PlayerSetup.Instance._avatar); + } + + #endregion +} \ No newline at end of file diff --git a/YouAreAClone/ModSettings.cs b/YouAreAClone/ModSettings.cs new file mode 100644 index 0000000..de687fa --- /dev/null +++ b/YouAreAClone/ModSettings.cs @@ -0,0 +1,60 @@ +using MelonLoader; +using UnityEngine; + +namespace NAK.BetterShadowClone; + +public static class ModSettings +{ + #region Melon Prefs + + private const string SettingsCategory = nameof(ShadowCloneMod); + + private static readonly MelonPreferences_Category Category = + MelonPreferences.CreateCategory(SettingsCategory); + + internal static readonly MelonPreferences_Entry EntryEnabled = + Category.CreateEntry("Enabled", true, + description: "Enable Mirror Clone."); + + internal static readonly MelonPreferences_Entry EntryUseShadowClone = + Category.CreateEntry("Use Shadow Clone", true, + description: "Should you have shadow clones?"); + + internal static readonly MelonPreferences_Entry EntryCopyMaterialToShadow = + Category.CreateEntry("Copy Material to Shadow", true, + description: "Should the shadow clone copy the material from the original mesh? Note: This can have a slight performance hit."); + + internal static readonly MelonPreferences_Entry EntryDontRespectFPR = + Category.CreateEntry("Dont Respect FPR", false, + description: "Should the transform hider not respect FPR?"); + + internal static readonly MelonPreferences_Entry EntryDebugHeadHide = + Category.CreateEntry("Debug Head Hide", false, + description: "Should head be hidden for first render?"); + + internal static readonly MelonPreferences_Entry EntryDebugShowShadow = + Category.CreateEntry("Debug Show Shadow", false, + description: "Should the shadow clone be shown?"); + + internal static readonly MelonPreferences_Entry EntryDebugShowInFront = + Category.CreateEntry("Debug Show in Front", false, + description: "Should the shadow clone be shown in front?"); + + + #endregion + + internal static void Initialize() + { + foreach (MelonPreferences_Entry setting in Category.Entries) + setting.OnEntryValueChangedUntyped.Subscribe(OnSettingsChanged); + } + + private static void OnSettingsChanged(object oldValue = null, object newValue = null) + { + TransformHiderManager.s_DisallowFprExclusions = EntryDontRespectFPR.Value; + TransformHiderManager.s_DebugHeadHide = EntryDebugHeadHide.Value; + ShadowCloneManager.s_CopyMaterialsToShadow = EntryCopyMaterialToShadow.Value; + ShadowCloneManager.s_DebugShowShadow = EntryDebugShowShadow.Value; + ShadowCloneManager.s_DebugShowInFront = EntryDebugShowInFront.Value; + } +} \ No newline at end of file diff --git a/YouAreAClone/Properties/AssemblyInfo.cs b/YouAreAClone/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..f31ea23 --- /dev/null +++ b/YouAreAClone/Properties/AssemblyInfo.cs @@ -0,0 +1,29 @@ +using MelonLoader; +using NAK.BetterShadowClone.Properties; +using System.Reflection; + +[assembly: AssemblyVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyFileVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyInformationalVersion(AssemblyInfoParams.Version)] +[assembly: AssemblyTitle(nameof(NAK.BetterShadowClone))] +[assembly: AssemblyCompany(AssemblyInfoParams.Author)] +[assembly: AssemblyProduct(nameof(NAK.BetterShadowClone))] + +[assembly: MelonInfo( + typeof(NAK.BetterShadowClone.ShadowCloneMod), + nameof(NAK.BetterShadowClone), + AssemblyInfoParams.Version, + AssemblyInfoParams.Author, + downloadLink: "https://github.com/NotAKidOnSteam/NAK_CVR_Mods/tree/main/ShadowCloneMod" +)] + +[assembly: MelonGame("Alpha Blend Interactive", "ChilloutVR")] +[assembly: MelonPlatform(MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)] +[assembly: MelonPlatformDomain(MelonPlatformDomainAttribute.CompatibleDomains.MONO)] + +namespace NAK.BetterShadowClone.Properties; +internal static class AssemblyInfoParams +{ + public const string Version = "1.0.0"; + public const string Author = "NotAKidoS & Exterrata"; +} \ No newline at end of file diff --git a/YouAreAClone/YouAreAClone.csproj b/YouAreAClone/YouAreAClone.csproj new file mode 100644 index 0000000..e94f9dc --- /dev/null +++ b/YouAreAClone/YouAreAClone.csproj @@ -0,0 +1,2 @@ + +