Compare commits

..

4 commits

Author SHA1 Message Date
github-actions[bot]
77a033047c [NAK_CVR_Mods] Update mod list in README
Some checks failed
Update Mod List / update-modlist (push) Has been cancelled
2025-12-23 00:31:38 +00:00
NotAKidoS
ce992c70ee [NAK_CVR_Mods] push recent sln and nstrip ps1 2025-12-22 18:31:18 -06:00
NotAKidoS
a38530562c Merge remote-tracking branch 'origin/main' 2025-12-22 18:31:00 -06:00
NotAKidoS
7c3a8f4f39 [PlapPlapForAll] initial commit 2025-12-22 18:30:45 -06:00
13 changed files with 1038 additions and 129 deletions

View file

@ -0,0 +1,146 @@
using ABI_RC.Core;
using UnityEngine;
namespace NAK.PlapPlapForAll;
public enum DPSLightType
{
Invalid,
Hole,
Ring,
Normal,
Tip
}
public struct DPSOrifice
{
public DPSLightType type;
public Light dpsLight;
public Light normalLight;
public Transform basis;
}
public struct DPSPenetrator
{
public Transform penetratorTransform;
public float length; // _Length // _TPS_PenetratorLength
}
public static class DPS
{
private static readonly int Length = Shader.PropertyToID("_Length");
private static readonly int TpsPenetratorLength = Shader.PropertyToID("_TPS_PenetratorLength");
public static DPSLightType GetOrificeType(Light light)
{
int encoded = Mathf.RoundToInt(Mathf.Repeat((light.range * 500f) + 500f, 50f) + 200f);
return encoded switch
{
205 => DPSLightType.Hole, // 0.41
210 => DPSLightType.Ring, // 0.42
225 => DPSLightType.Normal, // 0.45
245 => DPSLightType.Tip, // 0.49
_ => DPSLightType.Invalid
};
}
public static bool ScanForDPS(
GameObject rootObject,
out List<DPSOrifice> dpsOrifices,
out bool foundPenetrator)
{
dpsOrifices = null;
foundPenetrator = false;
// Scan for DPS
Light[] allLights = rootObject.GetComponentsInChildren<Light>(true);
int lightCount = allLights.Length;
if (lightCount == 0) return false;
// DPS setups are usually like this:
// - Empty Container
// - Light (Type light) (range set to 0.x1 for hole or 0.x2 for ring)
// - Light (Normal light) (range set to 0.x5)
for (int i = 0; i < lightCount; i++)
{
Light light = allLights[i];
DPSLightType orificeType = GetOrificeType(light);
if (orificeType == DPSLightType.Tip)
{
foundPenetrator = true;
continue;
}
if (orificeType is DPSLightType.Hole or DPSLightType.Ring)
{
Transform lightTransform = light.transform;
Transform parent = lightTransform.parent;
// Found a DPS light
DPSOrifice dpsOrifice = new()
{
type = orificeType,
dpsLight = light,
normalLight = null,
basis = parent // Assume parent is basis
};
// Try to find normal light sibling
foreach (Transform sibling in parent)
{
if (sibling == lightTransform) continue;
if (sibling.TryGetComponent(out Light siblingLight)
&& GetOrificeType(siblingLight) == DPSLightType.Normal)
{
dpsOrifice.normalLight = siblingLight;
break;
}
}
dpsOrifices ??= [];
dpsOrifices.Add(dpsOrifice);
}
}
return dpsOrifices is { Count: > 0 } || foundPenetrator;
}
public static void AttemptTPSHack(GameObject rootObject)
{
Renderer[] allRenderers = rootObject.GetComponentsInChildren<Renderer>(true);
int count = allRenderers.Length;
if (count == 0) return;
SkinnedDickFixRoot fixRoot = rootObject.AddComponent<SkinnedDickFixRoot>();
for (int i = 0; i < count; i++)
{
Renderer render = allRenderers[i];
if (render.gameObject.CompareTag(CVRTags.InternalObject))
continue;
Material mat = render.sharedMaterial;
if (!mat) continue;
float length = 0f;
if (mat.HasProperty(TpsPenetratorLength)) length += mat.GetFloat(TpsPenetratorLength);
if (mat.HasProperty(Length)) length += mat.GetFloat(Length);
if (length <= 0f) continue;
Transform dpsRoot;
SkinnedMeshRenderer smr = render as SkinnedMeshRenderer;
if (smr && smr.rootBone)
dpsRoot = smr.rootBone;
else
dpsRoot = render.transform;
fixRoot.Register(render, dpsRoot, length);
PlapPlapForAllMod.Logger.Msg(
$"Added shared DPS penetrator light for mesh '{render.name}' in object '{rootObject.name}'.");
}
}
}

View file

@ -0,0 +1,126 @@
using UnityEngine;
namespace NAK.PlapPlapForAll;
public sealed class SkinnedDickFixRoot : MonoBehaviour
{
private struct Entry
{
public Transform root;
public GameObject lightObject;
public Renderer[] renderers;
public int rendererCount;
public bool lastState;
}
private Entry[] _entries;
private int _entryCount;
private void Awake()
{
_entries = new Entry[4];
_entryCount = 0;
}
public void Register(Renderer renderer, Transform dpsRoot, float length)
{
int idx = FindEntry(dpsRoot);
if (idx < 0)
{
idx = _entryCount;
if (idx == _entries.Length)
{
Entry[] old = _entries;
_entries = new Entry[old.Length << 1];
Array.Copy(old, _entries, old.Length);
}
GameObject lightObj = new("[PlapPlapForAllMod] Auto DPS Tip Light");
lightObj.transform.SetParent(dpsRoot, false);
lightObj.transform.localPosition = new Vector3(0f, 0f, length * 0.5f); // Noachi said should be at base
lightObj.SetActive(false); // Initially off
Light l = lightObj.AddComponent<Light>();
l.type = LightType.Point;
l.range = 0.49f;
l.intensity = 0.354f;
l.shadows = LightShadows.None;
l.renderMode = LightRenderMode.ForceVertex;
l.color = new Color(0.003921569f, 0.003921569f, 0.003921569f);
Entry e;
e.root = dpsRoot;
e.lightObject = lightObj;
e.renderers = new Renderer[2];
e.rendererCount = 0;
e.lastState = false;
_entries[idx] = e;
_entryCount++;
}
ref Entry entry = ref _entries[idx];
Renderer[] list = entry.renderers;
for (int i = 0; i < entry.rendererCount; i++)
if (list[i] == renderer)
return;
if (entry.rendererCount == list.Length)
{
Renderer[] old = list;
list = new Renderer[old.Length << 1];
Array.Copy(old, list, old.Length);
entry.renderers = list;
}
list[entry.rendererCount++] = renderer;
}
private int FindEntry(Transform root)
{
for (int i = 0; i < _entryCount; i++)
if (_entries[i].root == root)
return i;
return -1;
}
private void Update()
{
for (int i = 0; i < _entryCount; i++)
{
ref Entry entry = ref _entries[i];
bool active = false;
Renderer[] list = entry.renderers;
int count = entry.rendererCount;
for (int r = 0; r < count; r++)
{
Renderer ren = list[r];
if (!ren) continue;
if (ren.enabled && ren.gameObject.activeInHierarchy)
{
active = true;
break;
}
}
if (active != entry.lastState)
{
entry.lastState = active;
entry.lightObject.SetActive(active);
}
}
}
private void OnDisable()
{
for (int i = 0; i < _entryCount; i++)
{
ref Entry entry = ref _entries[i];
entry.lightObject.SetActive(false);
entry.lastState = false;
}
}
}

View file

@ -0,0 +1,271 @@
using ABI.CCK.Components;
using UnityEngine;
using UnityEngine.Animations;
namespace NAK.PlapPlapForAll;
public enum PlapPlapAudioMode
{
Ass,
Mouth,
Generic,
Vagina
}
public sealed class PlapPlapTap : MonoBehaviour
{
private static readonly Rule[] Rules =
{
new(PlapPlapAudioMode.Mouth, HumanBodyBones.Head, 3,
"mouth", "oral", "blow", "bj"),
new(PlapPlapAudioMode.Vagina, HumanBodyBones.Hips, 3,
"pussy", "vagina", "cunt", "v"),
new(PlapPlapAudioMode.Ass, HumanBodyBones.Hips, 2, "ass",
"anus", "butt", "anal", "b"),
new(PlapPlapAudioMode.Generic, null, 1,
"thigh", "armpit", "foot", "knee", "paizuri", "buttjob", "breast", "boob", "ear")
};
private DPSOrifice _dpsOrifice;
private Animator _animator;
private ParentConstraint _constraint;
private bool _dynamic;
private bool _lastLightState;
private int _activeSourceIndex = -1;
private PlapPlapAudioMode _mode;
private GameObject _plapPlapObject;
private RenderTexture _memoryTexture;
private bool _hasInitialized;
public static bool IsBuiltInPlapPlapSetup(DPSOrifice dpsOrifice)
{
Transform basis = dpsOrifice.basis;
// Check if basis name is plap plap
if (basis.name == "plap plap") return true;
// Check if there is a texture property parser under the basis
SkinnedMeshRenderer smr = basis.GetComponentInChildren<SkinnedMeshRenderer>(true);
if (smr && smr.sharedMaterial && smr.sharedMaterial.name == "Unlit_detect dps")
return true;
return false;
}
public static PlapPlapTap CreateFromOrifice(DPSOrifice dpsOrifice, Animator animator, GameObject plapPlapPrefab)
{
Light light = dpsOrifice.dpsLight;
PlapPlapTap tap = light.gameObject.AddComponent<PlapPlapTap>();
tap._dpsOrifice = dpsOrifice;
tap._animator = animator;
GameObject plapPlap = Instantiate(plapPlapPrefab, light.transform, false);
tap._plapPlapObject = plapPlap;
// Duplicate memory texture
CVRTexturePropertyParser parser = plapPlap.GetComponentInChildren<CVRTexturePropertyParser>(true);
Camera camera = plapPlap.GetComponentInChildren<Camera>(true);
RenderTexture instancedTexture = new(parser.texture);
instancedTexture.name += $"_Copy_{instancedTexture.GetHashCode()}";
parser.texture = instancedTexture;
camera.targetTexture = instancedTexture;
tap._memoryTexture = instancedTexture;
ParentConstraint pc = tap.GetComponentInParent<ParentConstraint>(true);
if (pc && pc.sourceCount > 0)
{
tap._constraint = pc;
tap._dynamic = true;
}
tap.SetOrificeMode(dpsOrifice.type);
tap.RecomputeMode();
tap.SyncLightState();
PlapPlapForAllMod.Logger.Msg(
$"PlapPlapTap created for orifice '{dpsOrifice.type}' using light '{dpsOrifice.basis.name}'. " +
$"Dynamic: {tap._dynamic}, Initial Mode: {tap._mode}");
tap._hasInitialized = true;
return tap;
}
private void OnEnable()
{
if (!_hasInitialized) return;
RecomputeMode();
SyncLightState();
}
private void OnDisable()
{
if (!_hasInitialized) return;
SyncLightState();
}
private void OnDestroy()
{
if (_memoryTexture)
{
Destroy(_memoryTexture);
_memoryTexture = null;
}
}
private void Update()
{
if (!_dynamic || !_constraint) return;
int top = -1;
float best = -1f;
int count = _constraint.sourceCount;
for (int i = 0; i < count; i++)
{
ConstraintSource src = _constraint.GetSource(i);
if (!src.sourceTransform) continue;
float w = src.weight;
if (w > best)
{
best = w;
top = i;
}
}
if (top != _activeSourceIndex)
{
_activeSourceIndex = top;
RecomputeMode();
}
}
private void SyncLightState()
{
Light light = _dpsOrifice.dpsLight;
if (!light) return;
bool on = light.isActiveAndEnabled;
if (_lastLightState == on) return;
_lastLightState = on;
_plapPlapObject.SetActive(on);
}
private void RecomputeMode()
{
Transform basis = _dpsOrifice.dpsLight.transform;
if (_dynamic && _constraint && _activeSourceIndex >= 0)
{
ConstraintSource src = _constraint.GetSource(_activeSourceIndex);
if (src.sourceTransform)
basis = src.sourceTransform;
}
string basisName = basis.name;
int bestScore = int.MinValue;
PlapPlapAudioMode bestMode = PlapPlapAudioMode.Generic;
for (int r = 0; r < Rules.Length; r++)
{
ref readonly Rule rule = ref Rules[r];
int score = 0;
if (rule.HintBone.HasValue && _animator)
{
Transform bone = _animator.GetBoneTransform(rule.HintBone.Value);
if (bone && basis.IsChildOf(bone))
score += rule.BoneWeight;
}
string lowerName = basisName.ToLowerInvariant();
for (int k = 0; k < rule.Keywords.Length; k++)
{
string kw = rule.Keywords[k];
string lowerKw = kw.ToLowerInvariant();
if (lowerName == lowerKw)
{
score += 8;
continue;
}
bool tokenMatch = false;
int start = 0;
for (int i = 0; i <= lowerName.Length; i++)
{
if (i == lowerName.Length || !char.IsLetter(lowerName[i]))
{
int len = i - start;
if (len == lowerKw.Length)
{
bool equal = true;
for (int c = 0; c < len; c++)
{
if (lowerName[start + c] != lowerKw[c])
{
equal = false;
break;
}
}
if (equal)
{
tokenMatch = true;
break;
}
}
start = i + 1;
}
}
if (tokenMatch)
{
score += lowerKw.Length == 1 ? 6 : 5;
continue;
}
if (lowerKw.Length >= 4 && lowerName.Contains(lowerKw))
score += 3;
}
if (score > bestScore)
{
bestScore = score;
bestMode = rule.Mode;
}
}
if (bestMode == _mode) return;
_mode = bestMode;
SetAudioMode(_mode);
PlapPlapForAllMod.Logger.Msg($"PlapPlapTap applying mode {_mode}");
}
private readonly struct Rule(PlapPlapAudioMode mode, HumanBodyBones? bone, int boneWeight, params string[] keywords)
{
public readonly PlapPlapAudioMode Mode = mode;
public readonly HumanBodyBones? HintBone = bone;
public readonly int BoneWeight = boneWeight;
public readonly string[] Keywords = keywords;
}
/* Interacting with Plap Plap */
public void SetAudioMode(PlapPlapAudioMode mode)
{
CVRAnimatorDriver animatorDriver = _plapPlapObject.GetComponent<CVRAnimatorDriver>();
animatorDriver.animatorParameter01 = (float)mode;
}
public void SetOrificeMode(DPSLightType mode)
{
CVRAnimatorDriver animatorDriver = _plapPlapObject.GetComponent<CVRAnimatorDriver>();
animatorDriver.animatorParameter02 = (float)mode;
}
}

View file

@ -0,0 +1,43 @@
using ABI_RC.Core.InteractionSystem;
using ABI_RC.Core.InteractionSystem.Base;
using UnityEngine;
namespace NAK.PlapPlapForAll;
public class StopHighlightPropagation : Pickupable
{
public override void OnGrab(InteractionContext context, Vector3 grabPoint)
{
// throw new NotImplementedException();
}
public override void OnDrop(InteractionContext context)
{
// throw new NotImplementedException();
}
public override void OnUseDown(InteractionContext context)
{
// throw new NotImplementedException();
}
public override void OnUseUp(InteractionContext context)
{
// throw new NotImplementedException();
}
public override void FlingTowardsTarget(ControllerRay controllerRay)
{
// throw new NotImplementedException();
}
public override bool CanPickup { get; }
public override bool DisallowTheft { get; }
public override float MaxGrabDistance { get; }
public override float MaxPushDistance { get; }
public override bool IsAutoHold { get; }
public override bool IsObjectRotationAllowed { get; }
public override bool IsObjectPushPullAllowed { get; }
public override bool IsTelepathicGrabAllowed { get; }
public override bool IsObjectUseAllowed { get; }
}

View file

@ -0,0 +1,124 @@
using ABI_RC.Core;
using ABI_RC.Core.Networking.IO.Social;
using MelonLoader;
using ABI_RC.Core.Player;
using ABI_RC.Systems.GameEventSystem;
using ABI.CCK.Components;
using UnityEngine;
using UnityEngine.Animations;
namespace NAK.PlapPlapForAll;
public class PlapPlapForAllMod : MelonMod
{
public static MelonLogger.Instance Logger;
public override void OnInitializeMelon()
{
Logger = LoggerInstance;
CVRGameEventSystem.Initialization.OnPlayerSetupStart.AddListener(OnPlayerSetupStart);
CVRGameEventSystem.Avatar.OnLocalAvatarLoad.AddListener(OnLocalAvatarLoaded);
CVRGameEventSystem.Avatar.OnRemoteAvatarLoad.AddListener(OnRemoteAvatarLoaded);
LoadAssetBundle();
}
private static void OnPlayerSetupStart()
{
PlapPlapPrefab.SetActive(false);
// Remove ParentConstraint so we can reparent later
ParentConstraint parentConstraint = PlapPlapPrefab.GetComponent<ParentConstraint>();
if (parentConstraint) UnityEngine.Object.DestroyImmediate(parentConstraint);
// Remove lights to avoid interfering with avatar lights
Light[] lights = PlapPlapPrefab.GetComponentsInChildren<Light>(true);
foreach (Light light in lights) UnityEngine.Object.DestroyImmediate(light);
// Register the audio sources underneath to the Avatar mixer group
AudioSource[] audioSources = PlapPlapPrefab.GetComponentsInChildren<AudioSource>(true);
foreach (AudioSource audioSource in audioSources) audioSource.outputAudioMixerGroup = RootLogic.Instance.avatarSfx;
// Add StopHighlightPropagation to prevent plap plap from being highlighted
StopHighlightPropagation stopHighlight = PlapPlapPrefab.AddComponent<StopHighlightPropagation>();
stopHighlight.enabled = false; // marker only
Logger.Msg("Patched PlapPlap prefab!");
}
private static void OnLocalAvatarLoaded(CVRAvatar avatar)
=> OnAvatarLoaded(PlayerSetup.Instance, avatar.gameObject);
private static void OnRemoteAvatarLoaded(CVRPlayerEntity playerEntity, CVRAvatar avatar)
=> OnAvatarLoaded(playerEntity.PuppetMaster, avatar.gameObject);
private static void OnAvatarLoaded(PlayerBase player, GameObject avatarObject)
{
// Enforcing friends with benefits
if (!Friends.FriendsWith(player.PlayerId))
return;
// Scan for DPS setups
if (!DPS.ScanForDPS(avatarObject, out List<DPSOrifice> dpsOrifices, out bool foundPenetrator))
return;
// If no penetrator found, attempt to find one via TPS
if (!foundPenetrator) DPS.AttemptTPSHack(avatarObject);
// Setup PlapPlap for each found orifice
if (dpsOrifices.Count != 0)
{
// Log found orifices
Logger.Msg($"Found {dpsOrifices.Count} DPS orifices on avatar '{avatarObject.name}' for player '{player.PlayerUsername}':");
foreach (DPSOrifice dpsOrifice in dpsOrifices) Logger.Msg($"- Orifice Type: {dpsOrifice.type}, DPS Light: {dpsOrifice.dpsLight.name}, Normal Light: {(dpsOrifice.normalLight != null ? dpsOrifice.normalLight.name : "None")}");
// Configure PlapPlap for each orifice
Animator avatarAnimator = player.Animator;
foreach (DPSOrifice dpsOrifice in dpsOrifices)
{
// Skip if this is already a plap plap setup
if (PlapPlapTap.IsBuiltInPlapPlapSetup(dpsOrifice))
continue;
PlapPlapTap.CreateFromOrifice(
dpsOrifice,
avatarAnimator,
PlapPlapPrefab
);
}
}
}
/* Asset Bundle Loading */
private const string PlapPlapAssetsName = "PlapPlapForAll.Resources.plap plap.assets";
private const string PlapPlapPrefabName = "Assets/Noachi/Plap Plap/plap plap.prefab";
private static GameObject PlapPlapPrefab;
private void LoadAssetBundle()
{
LoggerInstance.Msg($"Loading required asset bundle...");
using Stream resourceStream = MelonAssembly.Assembly.GetManifestResourceStream(PlapPlapAssetsName);
using MemoryStream memoryStream = new();
if (resourceStream == null) {
LoggerInstance.Error($"Failed to load {PlapPlapAssetsName}!");
return;
}
resourceStream.CopyTo(memoryStream);
AssetBundle assetBundle = AssetBundle.LoadFromStream(memoryStream);
if (assetBundle == null) {
LoggerInstance.Error($"Failed to load {PlapPlapAssetsName}! Asset bundle is null!");
return;
}
PlapPlapPrefab = assetBundle.LoadAsset<GameObject>(PlapPlapPrefabName);
if (PlapPlapPrefab == null) {
LoggerInstance.Error($"Failed to load {PlapPlapPrefabName}! Prefab is null!");
return;
}
PlapPlapPrefab.hideFlags |= HideFlags.DontUnloadUnusedAsset;
LoggerInstance.Msg($"Loaded {PlapPlapPrefabName}!");
LoggerInstance.Msg("Asset bundle successfully loaded!");
}
}

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<ItemGroup>
<None Remove="Resources\plap plap.assets" />
<EmbeddedResource Include="Resources\plap plap.assets" />
</ItemGroup>
</Project>

View file

@ -0,0 +1,32 @@
using NAK.PlapPlapForAll.Properties;
using MelonLoader;
using System.Reflection;
[assembly: AssemblyVersion(AssemblyInfoParams.Version)]
[assembly: AssemblyFileVersion(AssemblyInfoParams.Version)]
[assembly: AssemblyInformationalVersion(AssemblyInfoParams.Version)]
[assembly: AssemblyTitle(nameof(NAK.PlapPlapForAll))]
[assembly: AssemblyCompany(AssemblyInfoParams.Author)]
[assembly: AssemblyProduct(nameof(NAK.PlapPlapForAll))]
[assembly: MelonInfo(
typeof(NAK.PlapPlapForAll.PlapPlapForAllMod),
nameof(NAK.PlapPlapForAll),
AssemblyInfoParams.Version,
AssemblyInfoParams.Author,
downloadLink: "https://github.com/NotAKidoS/NAK_CVR_Mods/tree/main/PlapPlapForAll"
)]
[assembly: MelonGame("ChilloutVR", "ChilloutVR")]
[assembly: MelonPlatform(MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
[assembly: MelonPlatformDomain(MelonPlatformDomainAttribute.CompatibleDomains.MONO)]
[assembly: MelonColor(255, 246, 25, 99)] // red-pink
[assembly: MelonAuthorColor(255, 158, 21, 32)] // red
[assembly: HarmonyDontPatchAll]
namespace NAK.PlapPlapForAll.Properties;
internal static class AssemblyInfoParams
{
public const string Version = "1.0.0";
public const string Author = "NotAKidoS, Noachi";
}

View file

@ -0,0 +1,16 @@
# PlapPlapForAll
Adds Noach's PlapPlap prefab to any detected DPS setups on avatars.
Will also fix existing penetrator setups which are missing the tip light.
---
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.

View file

@ -18,11 +18,9 @@ EndProject
EndProject
EndProject
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RelativeSync", "RelativeSync\RelativeSync.csproj", "{B48C8F19-9451-4EE2-999F-82C0033CDE2C}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RelativeSyncJitterFix", "RelativeSyncJitterFix\RelativeSyncJitterFix.csproj", "{B48C8F19-9451-4EE2-999F-82C0033CDE2C}"
EndProject
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LazyPrune", "LazyPrune\LazyPrune.csproj", "{8FA6D481-5801-4E4C-822E-DE561155D22B}"
EndProject
EndProject
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ScrollFlight", "ScrollFlight\ScrollFlight.csproj", "{1B5D7DCB-01A4-4988-8B25-211948AEED76}"
@ -32,8 +30,6 @@ EndProject
EndProject
EndProject
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KeepVelocityOnExitFlight", "KeepVelocityOnExitFlight\KeepVelocityOnExitFlight.csproj", "{0BB3D187-BBBA-4C58-B246-102342BE5E8C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ASTExtension", "ASTExtension\ASTExtension.csproj", "{6580AA87-6A95-438E-A5D3-70E583CCD77B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AvatarQueueSystemTweaks", "AvatarQueueSystemTweaks\AvatarQueueSystemTweaks.csproj", "{D178E422-283B-4FB3-89A6-AA4FB9F87E2F}"
@ -64,10 +60,58 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LuaNetworkVariables", ".Exp
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TouchySquishy", ".Blackbox\TouchySquishy\TouchySquishy.csproj", "{FF4BF0E7-698D-49A0-96E9-0E2646FEAFFA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CVRLuaToolsExtension", ".Experimental\CVRLuaToolsExtension\CVRLuaToolsExtension.csproj", "{3D221A25-007F-4764-98CD-CEEF2EB92165}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConfigureCalibrationPose", "ConfigureCalibrationPose\ConfigureCalibrationPose.csproj", "{31667A36-D069-4708-9DCA-E3446009941B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SuperAwesomeMod", ".Deprecated\SuperAwesomeMod\SuperAwesomeMod.csproj", "{11417BE7-7C4F-40D9-9FCB-467C7B3DCF66}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OriginShift", ".Experimental\OriginShift\OriginShift.csproj", "{A891F616-D163-4B1D-99E4-17C49810D3E4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChatBubbles", "ChatBubbles\ChatBubbles.csproj", "{6981A299-1743-4342-9F20-B8FC0263C54D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InDepthLogging", ".Blackbox\InDepthLogging\InDepthLogging.csproj", "{544C21EF-51EF-4947-BBED-26A6794A71D7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FuckCameras", "FuckCameras\FuckCameras.csproj", "{D2B53F5A-9D6A-4402-B7FD-83BB1503D395}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FuckCohtml2", "FuckCohtml2\FuckCohtml2.csproj", "{F1CCF5D2-EA11-4FE8-A5E2-A92655245893}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MisatyanEffector", "MisatyanEffector\MisatyanEffector.csproj", "{0EA59927-C46A-43DE-9E16-ED64EC1F4FB5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DummyMenu", "DummyMenu\DummyMenu.csproj", "{DDCEE1C8-80EE-4DFF-84F2-6CE67D02AC22}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tinyboard", "Tinyboard\Tinyboard.csproj", "{3678F633-47DD-443B-8A6B-0CF33F45097F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FuckOffUICamera", "FuckOffUICamera\FuckOffUICamera.csproj", "{FAF20A58-1CA6-4543-A8FB-70085F31EFDF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IFUCKINGHATECAMERAS", "IFUCKINGHATECAMERAS\IFUCKINGHATECAMERAS.csproj", "{2878A29C-E40F-4A1D-A0A3-678742D3814F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ApiSwitcher", ".Blackbox\ApiSwitcher\ApiSwitcher.csproj", "{BBDFF009-CD61-4345-AE16-01B18B5F8073}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Blackbox", "Blackbox", "{FF8CA700-BB6F-45FD-AEB6-CCAEACE50B0F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BufferParticleFixer", "BufferParticleFixer\BufferParticleFixer.csproj", "{46E47494-A96A-4138-BA3E-3A9A012C518A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ShowPlayerInSelfMirror", "ShowPlayerInSelfMirror\ShowPlayerInSelfMirror.csproj", "{33435863-4366-438B-9524-354D61E06806}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChatBoxTweaks", "ChatBoxTweaks\ChatBoxTweaks.csproj", "{661119FB-B83B-4C48-8810-48293C6D7661}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ControlToUnlockEyes", "ControlToUnlockEyes\ControlToUnlockEyes.csproj", "{42C051F5-8DF6-4335-83F9-43A732595C05}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AccountSwitcher", ".Blackbox\AccountSwitcher\AccountSwitcher.csproj", "{CB20A400-51AC-456E-B261-3F6804EA6314}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RConHelper", ".Blackbox\RConHelper\RConHelper.csproj", "{E3950FB3-C4BD-4320-89F9-331C93781FBB}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ByeByePerformanceThankYouAMD", "ByeByePerformanceThankYouAMD\ByeByePerformanceThankYouAMD.csproj", "{B9B67099-777A-4686-AE01-455B101B3B36}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CVRGizmos", ".Deprecated\CVRGizmos\CVRGizmos.csproj", "{77FF7FA8-EBC2-4400-B7FF-3A5F7DBFAEAE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CVRPersonalMirror", ".Blackbox\CVRPersonalMirror\CVRPersonalMirror.csproj", "{A19BF0EC-70C3-49D0-B278-02807669F240}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlayableNetIk", ".Blackbox\PlayableNetIk\PlayableNetIk.csproj", "{7CE6B276-A25C-4B7B-B99D-AD52C6B48E5B}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Experimental", "Experimental", "{B8FAD767-CB47-4112-8AFC-8620A51B946A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PlapPlapForAll", ".Experimental\PlapPlapForAll\PlapPlapForAll.csproj", "{1DE6CF9F-996E-459B-9129-D76245001F5F}"
EndProject
EndProject
EndProject
EndProject
@ -147,10 +191,6 @@ Global
{24A069F4-4D69-4ABD-AA16-77765469245B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{24A069F4-4D69-4ABD-AA16-77765469245B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{24A069F4-4D69-4ABD-AA16-77765469245B}.Release|Any CPU.Build.0 = Release|Any CPU
{8FA6D481-5801-4E4C-822E-DE561155D22B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8FA6D481-5801-4E4C-822E-DE561155D22B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8FA6D481-5801-4E4C-822E-DE561155D22B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8FA6D481-5801-4E4C-822E-DE561155D22B}.Release|Any CPU.Build.0 = Release|Any CPU
{05C427DD-1261-4AAD-B316-A551FC126F2C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{05C427DD-1261-4AAD-B316-A551FC126F2C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{05C427DD-1261-4AAD-B316-A551FC126F2C}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -191,10 +231,6 @@ Global
{7C675E64-0A2D-4B34-B6D1-5D6AA369A520}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7C675E64-0A2D-4B34-B6D1-5D6AA369A520}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7C675E64-0A2D-4B34-B6D1-5D6AA369A520}.Release|Any CPU.Build.0 = Release|Any CPU
{0BB3D187-BBBA-4C58-B246-102342BE5E8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0BB3D187-BBBA-4C58-B246-102342BE5E8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0BB3D187-BBBA-4C58-B246-102342BE5E8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0BB3D187-BBBA-4C58-B246-102342BE5E8C}.Release|Any CPU.Build.0 = Release|Any CPU
{6580AA87-6A95-438E-A5D3-70E583CCD77B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6580AA87-6A95-438E-A5D3-70E583CCD77B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6580AA87-6A95-438E-A5D3-70E583CCD77B}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -323,14 +359,102 @@ Global
{FF4BF0E7-698D-49A0-96E9-0E2646FEAFFA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FF4BF0E7-698D-49A0-96E9-0E2646FEAFFA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FF4BF0E7-698D-49A0-96E9-0E2646FEAFFA}.Release|Any CPU.Build.0 = Release|Any CPU
{3D221A25-007F-4764-98CD-CEEF2EB92165}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3D221A25-007F-4764-98CD-CEEF2EB92165}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3D221A25-007F-4764-98CD-CEEF2EB92165}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3D221A25-007F-4764-98CD-CEEF2EB92165}.Release|Any CPU.Build.0 = Release|Any CPU
{31667A36-D069-4708-9DCA-E3446009941B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{31667A36-D069-4708-9DCA-E3446009941B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{31667A36-D069-4708-9DCA-E3446009941B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{31667A36-D069-4708-9DCA-E3446009941B}.Release|Any CPU.Build.0 = Release|Any CPU
{11417BE7-7C4F-40D9-9FCB-467C7B3DCF66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{11417BE7-7C4F-40D9-9FCB-467C7B3DCF66}.Debug|Any CPU.Build.0 = Debug|Any CPU
{11417BE7-7C4F-40D9-9FCB-467C7B3DCF66}.Release|Any CPU.ActiveCfg = Release|Any CPU
{11417BE7-7C4F-40D9-9FCB-467C7B3DCF66}.Release|Any CPU.Build.0 = Release|Any CPU
{A891F616-D163-4B1D-99E4-17C49810D3E4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A891F616-D163-4B1D-99E4-17C49810D3E4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A891F616-D163-4B1D-99E4-17C49810D3E4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A891F616-D163-4B1D-99E4-17C49810D3E4}.Release|Any CPU.Build.0 = Release|Any CPU
{6981A299-1743-4342-9F20-B8FC0263C54D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6981A299-1743-4342-9F20-B8FC0263C54D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6981A299-1743-4342-9F20-B8FC0263C54D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6981A299-1743-4342-9F20-B8FC0263C54D}.Release|Any CPU.Build.0 = Release|Any CPU
{544C21EF-51EF-4947-BBED-26A6794A71D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{544C21EF-51EF-4947-BBED-26A6794A71D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{544C21EF-51EF-4947-BBED-26A6794A71D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{544C21EF-51EF-4947-BBED-26A6794A71D7}.Release|Any CPU.Build.0 = Release|Any CPU
{D2B53F5A-9D6A-4402-B7FD-83BB1503D395}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D2B53F5A-9D6A-4402-B7FD-83BB1503D395}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D2B53F5A-9D6A-4402-B7FD-83BB1503D395}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D2B53F5A-9D6A-4402-B7FD-83BB1503D395}.Release|Any CPU.Build.0 = Release|Any CPU
{F1CCF5D2-EA11-4FE8-A5E2-A92655245893}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F1CCF5D2-EA11-4FE8-A5E2-A92655245893}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F1CCF5D2-EA11-4FE8-A5E2-A92655245893}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F1CCF5D2-EA11-4FE8-A5E2-A92655245893}.Release|Any CPU.Build.0 = Release|Any CPU
{0EA59927-C46A-43DE-9E16-ED64EC1F4FB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0EA59927-C46A-43DE-9E16-ED64EC1F4FB5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0EA59927-C46A-43DE-9E16-ED64EC1F4FB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0EA59927-C46A-43DE-9E16-ED64EC1F4FB5}.Release|Any CPU.Build.0 = Release|Any CPU
{DDCEE1C8-80EE-4DFF-84F2-6CE67D02AC22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DDCEE1C8-80EE-4DFF-84F2-6CE67D02AC22}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DDCEE1C8-80EE-4DFF-84F2-6CE67D02AC22}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DDCEE1C8-80EE-4DFF-84F2-6CE67D02AC22}.Release|Any CPU.Build.0 = Release|Any CPU
{3678F633-47DD-443B-8A6B-0CF33F45097F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3678F633-47DD-443B-8A6B-0CF33F45097F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3678F633-47DD-443B-8A6B-0CF33F45097F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3678F633-47DD-443B-8A6B-0CF33F45097F}.Release|Any CPU.Build.0 = Release|Any CPU
{FAF20A58-1CA6-4543-A8FB-70085F31EFDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FAF20A58-1CA6-4543-A8FB-70085F31EFDF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FAF20A58-1CA6-4543-A8FB-70085F31EFDF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FAF20A58-1CA6-4543-A8FB-70085F31EFDF}.Release|Any CPU.Build.0 = Release|Any CPU
{2878A29C-E40F-4A1D-A0A3-678742D3814F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2878A29C-E40F-4A1D-A0A3-678742D3814F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2878A29C-E40F-4A1D-A0A3-678742D3814F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2878A29C-E40F-4A1D-A0A3-678742D3814F}.Release|Any CPU.Build.0 = Release|Any CPU
{BBDFF009-CD61-4345-AE16-01B18B5F8073}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BBDFF009-CD61-4345-AE16-01B18B5F8073}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BBDFF009-CD61-4345-AE16-01B18B5F8073}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BBDFF009-CD61-4345-AE16-01B18B5F8073}.Release|Any CPU.Build.0 = Release|Any CPU
{46E47494-A96A-4138-BA3E-3A9A012C518A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{46E47494-A96A-4138-BA3E-3A9A012C518A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{46E47494-A96A-4138-BA3E-3A9A012C518A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{46E47494-A96A-4138-BA3E-3A9A012C518A}.Release|Any CPU.Build.0 = Release|Any CPU
{33435863-4366-438B-9524-354D61E06806}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{33435863-4366-438B-9524-354D61E06806}.Debug|Any CPU.Build.0 = Debug|Any CPU
{33435863-4366-438B-9524-354D61E06806}.Release|Any CPU.ActiveCfg = Release|Any CPU
{33435863-4366-438B-9524-354D61E06806}.Release|Any CPU.Build.0 = Release|Any CPU
{661119FB-B83B-4C48-8810-48293C6D7661}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{661119FB-B83B-4C48-8810-48293C6D7661}.Debug|Any CPU.Build.0 = Debug|Any CPU
{661119FB-B83B-4C48-8810-48293C6D7661}.Release|Any CPU.ActiveCfg = Release|Any CPU
{661119FB-B83B-4C48-8810-48293C6D7661}.Release|Any CPU.Build.0 = Release|Any CPU
{42C051F5-8DF6-4335-83F9-43A732595C05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{42C051F5-8DF6-4335-83F9-43A732595C05}.Debug|Any CPU.Build.0 = Debug|Any CPU
{42C051F5-8DF6-4335-83F9-43A732595C05}.Release|Any CPU.ActiveCfg = Release|Any CPU
{42C051F5-8DF6-4335-83F9-43A732595C05}.Release|Any CPU.Build.0 = Release|Any CPU
{CB20A400-51AC-456E-B261-3F6804EA6314}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CB20A400-51AC-456E-B261-3F6804EA6314}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CB20A400-51AC-456E-B261-3F6804EA6314}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CB20A400-51AC-456E-B261-3F6804EA6314}.Release|Any CPU.Build.0 = Release|Any CPU
{E3950FB3-C4BD-4320-89F9-331C93781FBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E3950FB3-C4BD-4320-89F9-331C93781FBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E3950FB3-C4BD-4320-89F9-331C93781FBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E3950FB3-C4BD-4320-89F9-331C93781FBB}.Release|Any CPU.Build.0 = Release|Any CPU
{B9B67099-777A-4686-AE01-455B101B3B36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B9B67099-777A-4686-AE01-455B101B3B36}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B9B67099-777A-4686-AE01-455B101B3B36}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B9B67099-777A-4686-AE01-455B101B3B36}.Release|Any CPU.Build.0 = Release|Any CPU
{77FF7FA8-EBC2-4400-B7FF-3A5F7DBFAEAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{77FF7FA8-EBC2-4400-B7FF-3A5F7DBFAEAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{77FF7FA8-EBC2-4400-B7FF-3A5F7DBFAEAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{77FF7FA8-EBC2-4400-B7FF-3A5F7DBFAEAE}.Release|Any CPU.Build.0 = Release|Any CPU
{A19BF0EC-70C3-49D0-B278-02807669F240}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A19BF0EC-70C3-49D0-B278-02807669F240}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A19BF0EC-70C3-49D0-B278-02807669F240}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A19BF0EC-70C3-49D0-B278-02807669F240}.Release|Any CPU.Build.0 = Release|Any CPU
{7CE6B276-A25C-4B7B-B99D-AD52C6B48E5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7CE6B276-A25C-4B7B-B99D-AD52C6B48E5B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7CE6B276-A25C-4B7B-B99D-AD52C6B48E5B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7CE6B276-A25C-4B7B-B99D-AD52C6B48E5B}.Release|Any CPU.Build.0 = Release|Any CPU
{1DE6CF9F-996E-459B-9129-D76245001F5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1DE6CF9F-996E-459B-9129-D76245001F5F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1DE6CF9F-996E-459B-9129-D76245001F5F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1DE6CF9F-996E-459B-9129-D76245001F5F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -338,4 +462,15 @@ Global
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {CD7DECEC-F4A0-4EEF-978B-72748414D52A}
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{BBDFF009-CD61-4345-AE16-01B18B5F8073} = {FF8CA700-BB6F-45FD-AEB6-CCAEACE50B0F}
{FF4BF0E7-698D-49A0-96E9-0E2646FEAFFA} = {FF8CA700-BB6F-45FD-AEB6-CCAEACE50B0F}
{544C21EF-51EF-4947-BBED-26A6794A71D7} = {FF8CA700-BB6F-45FD-AEB6-CCAEACE50B0F}
{0EA59927-C46A-43DE-9E16-ED64EC1F4FB5} = {FF8CA700-BB6F-45FD-AEB6-CCAEACE50B0F}
{CB20A400-51AC-456E-B261-3F6804EA6314} = {FF8CA700-BB6F-45FD-AEB6-CCAEACE50B0F}
{E3950FB3-C4BD-4320-89F9-331C93781FBB} = {FF8CA700-BB6F-45FD-AEB6-CCAEACE50B0F}
{A19BF0EC-70C3-49D0-B278-02807669F240} = {FF8CA700-BB6F-45FD-AEB6-CCAEACE50B0F}
{7CE6B276-A25C-4B7B-B99D-AD52C6B48E5B} = {FF8CA700-BB6F-45FD-AEB6-CCAEACE50B0F}
{1DE6CF9F-996E-459B-9129-D76245001F5F} = {B8FAD767-CB47-4112-8AFC-8620A51B946A}
EndGlobalSection
EndGlobal

View file

@ -6,23 +6,23 @@
| Name | Description | Download |
|------|-------------|----------|
| [ASTExtension](ASTExtension/README.md) | Extension mod for [Avatar Scale Tool](https://github.com/NotAKidoS/AvatarScaleTool): | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r47/ASTExtension.dll) |
| [ASTExtension](ASTExtension/README.md) | Extension mod for [Avatar Scale Tool](https://github.com/NotAKidoS/AvatarScaleTool): | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/ASTExtension.dll) |
| [AvatarQueueSystemTweaks](AvatarQueueSystemTweaks/README.md) | Small tweaks to the Avatar Queue System. | No Download |
| [ConfigureCalibrationPose](ConfigureCalibrationPose/README.md) | Select FBT calibration pose. | No Download |
| [CustomSpawnPoint](CustomSpawnPoint/README.md) | Replaces the unused Images button in the World Details page with a button to set a custom spawn point. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r47/CustomSpawnPoint.dll) |
| [DoubleTapJumpToExitSeat](DoubleTapJumpToExitSeat/README.md) | Replaces seat exit controls with a double-tap of the jump button, avoiding accidental exits from joystick drift or opening the menu. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r47/DoubleTapJumpToExitSeat.dll) |
| [FuckToes](FuckToes/README.md) | Prevents VRIK from autodetecting toes in Halfbody or Fullbody. | No Download |
| [CustomSpawnPoint](CustomSpawnPoint/README.md) | Replaces the unused Images button in the World Details page with a button to set a custom spawn point. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/CustomSpawnPoint.dll) |
| [DoubleTapJumpToExitSeat](DoubleTapJumpToExitSeat/README.md) | Replaces seat exit controls with a double-tap of the jump button, avoiding accidental exits from joystick drift or opening the menu. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/DoubleTapJumpToExitSeat.dll) |
| [FuckToes](FuckToes/README.md) | Prevents VRIK from autodetecting toes in Halfbody or Fullbody. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/FuckToes.dll) |
| [KeepVelocityOnExitFlight](KeepVelocityOnExitFlight/README.md) | Keeps the player's velocity when exiting flight mode. Makes it possible to fling yourself like in Garry's Mod. | No Download |
| [LazyPrune](LazyPrune/README.md) | Prevents loaded objects from immediately unloading on destruction. Should prevent needlessly unloading & reloading all avatars/props on world rejoin or GS reconnection. | No Download |
| [PropLoadingHexagon](PropLoadingHexagon/README.md) | https://github.com/NotAKidoS/NAK_CVR_Mods/assets/37721153/a892c765-71c1-47f3-a781-bdb9b60ba117 | No Download |
| [RCCVirtualSteeringWheel](RCCVirtualSteeringWheel/README.md) | Allows you to physically grab rigged RCC steering wheels in VR to provide steering input. No explicit setup required other than defining the Steering Wheel transform within the RCC component. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r47/RCCVirtualSteeringWheel.dll) |
| [RelativeSyncJitterFix](RelativeSyncJitterFix/README.md) | Relative sync jitter fix is the single harmony patch that could not make it into the native release of RelativeSync. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r47/RelativeSyncJitterFix.dll) |
| [ShareBubbles](ShareBubbles/README.md) | Share Bubbles! Allows you to drop down bubbles containing Avatars & Props. Requires both users to have the mod installed. Synced over Mod Network. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r47/ShareBubbles.dll) |
| [SmootherRay](SmootherRay/README.md) | Smoothes your controller while the raycast lines are visible. | No Download |
| [PropLoadingHexagon](PropLoadingHexagon/README.md) | https://github.com/NotAKidoS/NAK_CVR_Mods/assets/37721153/a892c765-71c1-47f3-a781-bdb9b60ba117 | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/PropLoadingHexagon.dll) |
| [RCCVirtualSteeringWheel](RCCVirtualSteeringWheel/README.md) | Allows you to physically grab rigged RCC steering wheels in VR to provide steering input. No explicit setup required other than defining the Steering Wheel transform within the RCC component. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/RCCVirtualSteeringWheel.dll) |
| [RelativeSyncJitterFix](RelativeSyncJitterFix/README.md) | Relative sync jitter fix is the single harmony patch that could not make it into the native release of RelativeSync. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/RelativeSyncJitterFix.dll) |
| [ShareBubbles](ShareBubbles/README.md) | Share Bubbles! Allows you to drop down bubbles containing Avatars & Props. Requires both users to have the mod installed. Synced over Mod Network. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/ShareBubbles.dll) |
| [SmootherRay](SmootherRay/README.md) | Smoothes your controller while the raycast lines are visible. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/SmootherRay.dll) |
| [Stickers](Stickers/README.md) | Stickers! Allows you to place small images on any surface. Requires both users to have the mod installed. Synced over Mod Network. | No Download |
| [ThirdPerson](ThirdPerson/README.md) | Original repo: https://github.com/oestradiol/CVR-Mods | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r47/ThirdPerson.dll) |
| [Tinyboard](Tinyboard/README.md) | Makes the keyboard small and smart. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r47/Tinyboard.dll) |
| [YouAreMyPropNowWeAreHavingSoftTacosLater](YouAreMyPropNowWeAreHavingSoftTacosLater/README.md) | Lets you bring held, attached, and occupied props through world loads. This is configurable in the mod settings. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r47/YouAreMyPropNowWeAreHavingSoftTacosLater.dll) |
| [ThirdPerson](ThirdPerson/README.md) | Original repo: https://github.com/oestradiol/CVR-Mods | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/ThirdPerson.dll) |
| [Tinyboard](Tinyboard/README.md) | Makes the keyboard small and smart. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/Tinyboard.dll) |
| [YouAreMyPropNowWeAreHavingSoftTacosLater](YouAreMyPropNowWeAreHavingSoftTacosLater/README.md) | Lets you bring held, attached, and occupied props through world loads. This is configurable in the mod settings. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/YouAreMyPropNowWeAreHavingSoftTacosLater.dll) |
### Experimental Mods
@ -30,9 +30,10 @@
|------|-------------|----------|
| [CVRLuaToolsExtension](.Experimental/CVRLuaToolsExtension/README.md) | Extension mod for [CVRLuaTools](https://github.com/NotAKidoS/CVRLuaTools) Hot Reload functionality. | No Download |
| [CustomRichPresence](.Experimental/CustomRichPresence/README.md) | Lets you customize the Steam & Discord rich presence messages & values. | No Download |
| [LuaNetworkVariables](.Experimental/LuaNetworkVariables/README.md) | Adds a simple module for creating network variables & events *kinda* similar to Garry's Mod. | No Download |
| [LuaNetworkVariables](.Experimental/LuaNetworkVariables/README.md) | Adds a simple module for creating network variables & events *kinda* similar to Garry's Mod. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/LuaNetworkVariables.dll) |
| [LuaTTS](.Experimental/LuaTTS/README.md) | Provides access to the built-in text-to-speech (TTS) functionality to lua scripts. Allows you to make the local player speak. | No Download |
| [OriginShift](.Experimental/OriginShift/README.md) | Experimental mod that allows world origin to be shifted to prevent floating point precision issues. | No Download |
| [OriginShift](.Experimental/OriginShift/README.md) | Experimental mod that allows world origin to be shifted to prevent floating point precision issues. | [Download](https://github.com/NotAKidoS/NAK_CVR_Mods/releases/download/r48/OriginShift.dll) |
| [PlapPlapForAll](.Experimental/PlapPlapForAll/README.md) | Adds Noach's PlapPlap prefab to any detected DPS setups on avatars. | No Download |
| [ScriptingSpoofer](.Experimental/ScriptingSpoofer/README.md) | Prevents **local** scripts from accessing your Username or UserID by spoofing them with random values each session. | No Download |
<!-- END MOD LIST -->

View file

@ -20,8 +20,8 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Assembly-CSharp.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Aura2_Core">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Aura2_Core.dll</HintPath>
<Reference Include="AsyncImageLoader.Runtime">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\AsyncImageLoader.Runtime.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="AVProVideo.Extensions.Timeline">
@ -92,6 +92,10 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Crc32.NET.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="CVRLogger">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\CVRLogger.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="DarkRift.Client">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\DarkRift.Client.dll</HintPath>
<Private>False</Private>
@ -100,6 +104,14 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\DarkRift.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="DiscordRPC">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\DiscordRPC.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="dotmore">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\dotmore.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="DTLS.Net">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\DTLS.Net.dll</HintPath>
<Private>False</Private>
@ -116,6 +128,10 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\ECM2.Walkthrough.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="EmbedIO">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\EmbedIO.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="endel.nativewebsocket">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\endel.nativewebsocket.dll</HintPath>
<Private>False</Private>
@ -128,6 +144,10 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\FMODUnityResonance.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Hacks">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Hacks.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\ICSharpCode.SharpZipLib.dll</HintPath>
<Private>False</Private>
@ -140,6 +160,10 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\LibVLCSharp.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="LucHeart.CoreOSC">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\LucHeart.CoreOSC.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="MagicaCloth">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\MagicaCloth.dll</HintPath>
<Private>False</Private>
@ -148,6 +172,10 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\MagicaClothV2.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="MeaMod.DNS">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\MeaMod.DNS.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="MeshBakerCore">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\MeshBakerCore.dll</HintPath>
<Private>False</Private>
@ -156,6 +184,26 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Meta.XR.BuildingBlocks.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Meta.XR.EnvironmentDepth">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Meta.XR.EnvironmentDepth.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Meta.XR.ImmersiveDebugger">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Meta.XR.ImmersiveDebugger.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Meta.XR.ImmersiveDebugger.Interface">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Meta.XR.ImmersiveDebugger.Interface.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Meta.XR.MultiplayerBlocks.Shared">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Meta.XR.MultiplayerBlocks.Shared.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Microsoft.Win32.Registry">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Microsoft.Win32.Registry.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Mono.Security">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Mono.Security.dll</HintPath>
<Private>False</Private>
@ -200,6 +248,10 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Oculus.VR.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="OSCQuery">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\OSCQuery.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="PICO.Platform">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\PICO.Platform.dll</HintPath>
<Private>False</Private>
@ -224,10 +276,6 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\SALSA-LipSync.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="SALSA">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\SALSA.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ShapesRuntime">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\ShapesRuntime.dll</HintPath>
<Private>False</Private>
@ -244,10 +292,18 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\SteamVR_Actions.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Swan.Lite">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Swan.Lite.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System.Buffers">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\System.Buffers.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System.Collections.Immutable">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\System.Collections.Immutable.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System.ComponentModel.Composition">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\System.ComponentModel.Composition.dll</HintPath>
<Private>False</Private>
@ -288,6 +344,10 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\System.IO.Compression.FileSystem.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System.IO.Hashing">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\System.IO.Hashing.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="System.Memory">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\System.Memory.dll</HintPath>
<Private>False</Private>
@ -384,10 +444,6 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.AI.Navigation.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Analytics.DataPrivacy">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Analytics.DataPrivacy.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Burst">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Burst.dll</HintPath>
<Private>False</Private>
@ -420,6 +476,10 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Entities.Hybrid.HybridComponents.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Entities.UI">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Entities.UI.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.InputSystem">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.InputSystem.dll</HintPath>
<Private>False</Private>
@ -440,10 +500,6 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.InternalAPIEngineBridge.003.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.InternalAPIEngineBridge.012">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.InternalAPIEngineBridge.012.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Jobs">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Jobs.dll</HintPath>
<Private>False</Private>
@ -460,10 +516,6 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Mathematics.Extensions.Hybrid.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Platforms.Common">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Platforms.Common.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Polybrush">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Polybrush.dll</HintPath>
<Private>False</Private>
@ -496,18 +548,6 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Profiling.Core.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Properties">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Properties.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Properties.Reflection">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Properties.Reflection.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Properties.UI">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Properties.UI.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.RenderPipelines.Core.Runtime">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.RenderPipelines.Core.Runtime.dll</HintPath>
<Private>False</Private>
@ -532,62 +572,6 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Serialization.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Services.Analytics">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Analytics.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Services.Authentication">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Authentication.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Services.Core.Analytics">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Analytics.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Services.Core.Configuration">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Configuration.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Services.Core.Device">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Device.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Services.Core">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Services.Core.Environments">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Environments.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Services.Core.Environments.Internal">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Environments.Internal.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Services.Core.Internal">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Internal.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Services.Core.Networking">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Networking.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Services.Core.Registration">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Registration.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Services.Core.Scheduler">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Scheduler.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Services.Core.Telemetry">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Telemetry.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.Services.Core.Threading">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.Services.Core.Threading.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.TextMeshPro">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.TextMeshPro.dll</HintPath>
<Private>False</Private>
@ -628,6 +612,10 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.XR.Management.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.XR.MockHMD">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.XR.MockHMD.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Unity.XR.Oculus">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Unity.XR.Oculus.dll</HintPath>
<Private>False</Private>
@ -704,6 +692,10 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.ClusterRendererModule.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.ContentLoadModule">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.ContentLoadModule.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.CoreModule">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.CoreModule.dll</HintPath>
<Private>False</Private>
@ -788,6 +780,10 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.ProfilerModule.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.PropertiesModule">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.PropertiesModule.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.RuntimeInitializeOnLoadManagerInitializerModule">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.RuntimeInitializeOnLoadManagerInitializerModule.dll</HintPath>
<Private>False</Private>
@ -860,10 +856,6 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.UIElementsModule.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.UIElementsNativeModule">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.UIElementsNativeModule.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.UIModule">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.UIModule.dll</HintPath>
<Private>False</Private>
@ -872,10 +864,6 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.UmbraModule.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.UNETModule">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.UNETModule.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="UnityEngine.UnityAnalyticsCommonModule">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\UnityEngine.UnityAnalyticsCommonModule.dll</HintPath>
<Private>False</Private>
@ -952,5 +940,25 @@
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Valve.Newtonsoft.Json.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="WasmScripting.UnsafeUtils">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\WasmScripting.UnsafeUtils.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Wasmtime.Dotnet">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\Wasmtime.Dotnet.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ZLinq">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\ZLinq.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ZLinq.Unity">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\ZLinq.Unity.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ZLinq.Unity.UnityCollectoins">
<HintPath>$(MsBuildThisFileDirectory)\.ManagedLibs\ZLinq.Unity.UnityCollectoins.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
</Project>

View file

@ -10,10 +10,10 @@ $cvrDefaultPath = "C:\Program Files (x86)\Steam\steamapps\common\ChilloutVR"
# $cvrDefaultPath = "E:\temp\CVR_Experimental"
# Array with the dlls to strip
$dllsToStrip = @('Assembly-CSharp.dll','Assembly-CSharp-firstpass.dll','AVProVideo.Runtime.dll', 'Unity.TextMeshPro.dll', 'MagicaCloth.dll', 'MagicaClothV2.dll', 'ECM2.dll', 'TheClapper.dll', 'MTJobSystem.dll')
$dllsToStrip = @('Assembly-CSharp.dll','Assembly-CSharp-firstpass.dll','AVProVideo.Runtime.dll', 'Unity.TextMeshPro.dll', 'MagicaCloth.dll', 'MagicaClothV2.dll', 'ECM2.dll', 'DarkRift.dll', 'DarkRift.Client.dll', 'MTJobSystem.dll')
# Array with the mods to grab
$modNames = @("BTKUILib", "BTKSAImmersiveHud", "PortableMirrorMod", "VRBinding", "TheClapper")
$modNames = @("BTKUILib")
# Array with dlls to ignore from ManagedLibs
$cvrManagedLibNamesToIgnore = @("netstandard", "Mono.Cecil", "Unity.Burst.Cecil")