Merge branch 'main' of ssh://git.lilyy.gay/lillith/SharedVRCStuff

This commit is contained in:
Lillith Rose (Device: Lucia) 2025-08-12 16:18:54 -04:00
commit 95b05f9a14
25 changed files with 6747 additions and 3 deletions

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 427c392dca21e4947ad9dc3872ba0db3
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9c2e6d1bfd782264fba30d2a9a9228ef
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 9100000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,76 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -340790334, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3}
m_Name: Manual Gestures Next
m_EditorClassIdentifier:
Parameters: {fileID: 11400000, guid: 465c429fc22a98b4e987f0f36c97d6db, type: 2}
controls:
- name: Kirakira
icon: {fileID: 0}
type: 102
parameter:
name: ManualGestures
value: 7
style: 0
subMenu: {fileID: 0}
subParameters: []
labels: []
- name: Lewd
icon: {fileID: 0}
type: 102
parameter:
name: ManualGestures
value: 8
style: 0
subMenu: {fileID: 0}
subParameters: []
labels: []
- name: Rage
icon: {fileID: 0}
type: 102
parameter:
name: ManualGestures
value: 9
style: 0
subMenu: {fileID: 0}
subParameters: []
labels: []
- name: Smile
icon: {fileID: 0}
type: 102
parameter:
name: ManualGestures
value: 10
style: 0
subMenu: {fileID: 0}
subParameters: []
labels: []
- name: Surprise
icon: {fileID: 0}
type: 102
parameter:
name: ManualGestures
value: 11
style: 0
subMenu: {fileID: 0}
subParameters: []
labels: []
- name: Wink
icon: {fileID: 0}
type: 102
parameter:
name: ManualGestures
value: 12
style: 0
subMenu: {fileID: 0}
subParameters: []
labels: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 77d4b3fe64c721c42943fea5019cea16
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,21 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -1506855854, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3}
m_Name: Manual Expressions Params
m_EditorClassIdentifier:
isEmpty: 0
parameters:
- name: ManualGestures
valueType: 0
saved: 1
defaultValue: 0
networkSynced: 1

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 580f932906bb5814e9706d200902099e
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,96 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -340790334, guid: 67cc4cb7839cd3741b63733d5adf0442, type: 3}
m_Name: Manual Gestures
m_EditorClassIdentifier:
Parameters: {fileID: 11400000, guid: 465c429fc22a98b4e987f0f36c97d6db, type: 2}
controls:
- name: Idle
icon: {fileID: 0}
type: 102
parameter:
name: ManualGestures
value: 20
style: 0
subMenu: {fileID: 11400000, guid: 77d4b3fe64c721c42943fea5019cea16, type: 2}
subParameters: []
labels: []
- name: Bored
icon: {fileID: 0}
type: 102
parameter:
name: ManualGestures
value: 1
style: 0
subMenu: {fileID: 0}
subParameters: []
labels: []
- name: Cheeky Smile
icon: {fileID: 0}
type: 102
parameter:
name: ManualGestures
value: 2
style: 0
subMenu: {fileID: 0}
subParameters: []
labels: []
- name: CloseEye
icon: {fileID: 0}
type: 102
parameter:
name: ManualGestures
value: 3
style: 0
subMenu: {fileID: 0}
subParameters: []
labels: []
- name: Cry
icon: {fileID: 0}
type: 102
parameter:
name: ManualGestures
value: 4
style: 0
subMenu: {fileID: 11400000, guid: 77d4b3fe64c721c42943fea5019cea16, type: 2}
subParameters: []
labels: []
- name: Fluster
icon: {fileID: 0}
type: 102
parameter:
name: ManualGestures
value: 5
style: 0
subMenu: {fileID: 0}
subParameters: []
labels: []
- name: Grimace
icon: {fileID: 0}
type: 102
parameter:
name: ManualGestures
value: 6
style: 0
subMenu: {fileID: 0}
subParameters: []
labels: []
- name: Next
icon: {fileID: 0}
type: 103
parameter:
name:
value: 1
style: 0
subMenu: {fileID: 11400000, guid: 77d4b3fe64c721c42943fea5019cea16, type: 2}
subParameters: []
labels: []

View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b1b4d9aa0e7225e468c63bf311381187
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,121 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1401281518449365313
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3124411546753572658}
- component: {fileID: 8773857123632308849}
m_Layer: 0
m_Name: Manual Gestures
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3124411546753572658
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1401281518449365313}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &8773857123632308849
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1401281518449365313}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d9e94e501a2d4c95bff3d5601013d923, type: 3}
m_Name:
m_EditorClassIdentifier:
version: 3
unityVersion: 2022.3.22f1
vrcfuryVersion: 1.1151.0
somethingIsBroken: 0
config:
features: []
content:
rid: 1818413120295272595
references:
version: 2
RefIds:
- rid: 1818413120295272595
type: {class: FullController, ns: VF.Model.Feature, asm: VRCFury}
data:
version: 4
controllers:
- controller:
version: 1
fileID: 0
guid:
id: 9c2e6d1bfd782264fba30d2a9a9228ef|Assets/Deira Manual Gestures/Manual
Gestures FX.controller
objRef: {fileID: 9100000, guid: 9c2e6d1bfd782264fba30d2a9a9228ef, type: 2}
type: 5
menus:
- menu:
version: 1
fileID: 0
guid:
id: b1b4d9aa0e7225e468c63bf311381187|Assets/Deira Manual Gestures/Manual
Gestures.asset
objRef: {fileID: 11400000, guid: b1b4d9aa0e7225e468c63bf311381187, type: 2}
prefix: Manual Gestures
prms:
- parameters:
version: 1
fileID: 0
guid:
id: 580f932906bb5814e9706d200902099e|Assets/Deira Manual Gestures/Manual
Expressions Params.asset
objRef: {fileID: 11400000, guid: 580f932906bb5814e9706d200902099e, type: 2}
smoothedPrms: []
globalParams:
- ManualGestures
allNonsyncedAreGlobal: 0
ignoreSaved: 0
toggleParam:
rootObjOverride: {fileID: 0}
rootBindingsApplyToAvatar: 0
rewriteBindings: []
allowMissingAssets: 0
injectSpsDepthParam:
injectSpsVelocityParam:
controller:
version: 1
fileID: 0
guid:
id:
objRef: {fileID: 0}
menu:
version: 1
fileID: 0
guid:
id:
objRef: {fileID: 0}
parameters:
version: 1
fileID: 0
guid:
id:
objRef: {fileID: 0}
submenu:
removePrefixes: []
addPrefix:
useSecurityForToggle: 0

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 947438966fe00b9438d7bc2d9de89fad
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
EditorNotes.meta Normal file
View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b46f5926760e80147ae27026dcffc881
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

67
EditorNotes/EditorNote.cs Normal file
View file

@ -0,0 +1,67 @@
using UnityEngine;
using VRC.SDKBase;
#if UNITY_EDITOR
using UnityEditor;
#endif
namespace gay.lilyy.EditorNotes {
public class EditorNote : MonoBehaviour, IEditorOnly
{
public enum ValueType { Int, Float, Vector3, String, All, None }
public ValueType valueType = ValueType.Int;
public int intValue;
public float floatValue;
public Vector3 vector3Value;
public string stringValue;
[TextArea]
public string note;
}
#if UNITY_EDITOR
[CustomEditor(typeof(EditorNote))]
public class EditorNoteInspector : Editor
{
public override void OnInspectorGUI()
{
var script = (EditorNote)target;
script.valueType = (EditorNote.ValueType)EditorGUILayout.EnumPopup("Type", script.valueType);
switch (script.valueType)
{
case EditorNote.ValueType.Int:
script.intValue = EditorGUILayout.IntField("Int Value", script.intValue);
break;
case EditorNote.ValueType.Float:
script.floatValue = EditorGUILayout.FloatField("Float Value", script.floatValue);
break;
case EditorNote.ValueType.Vector3:
script.vector3Value = EditorGUILayout.Vector3Field("Vector3 Value", script.vector3Value);
break;
case EditorNote.ValueType.String:
script.stringValue = EditorGUILayout.TextField("String Value", script.stringValue);
break;
}
if (script.valueType == EditorNote.ValueType.All) {
script.intValue = EditorGUILayout.IntField("Int Value", script.intValue);
script.floatValue = EditorGUILayout.FloatField("Float Value", script.floatValue);
script.vector3Value = EditorGUILayout.Vector3Field("Vector3 Value", script.vector3Value);
script.stringValue = EditorGUILayout.TextField("String Value", script.stringValue);
}
EditorGUILayout.LabelField("Note");
script.note = EditorGUILayout.TextArea(script.note);
if (GUI.changed)
EditorUtility.SetDirty(script);
}
}
#endif
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 353cc3d6f30a43a4689be04e919b90f0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,16 @@
{
"name": "EditorNotes",
"rootNamespace": "",
"references": [
"GUID:3456780c4fb2d324ab9c633d6f1b0ddb"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a65a5779a3702144986d83fca255f5da
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,10 @@
using UnityEngine;
using VRC.SDKBase;
namespace gay.lilyy.EditorNotes {
public class GameObjectReference : MonoBehaviour, IEditorOnly
{
public GameObject gObject;
[TextArea]
public string note;
}
}

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 62a8eeb35a66e0f468016f12604da829
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -51,16 +51,21 @@ namespace gay.lilyy.MeshCompression
if (mesh == null) continue; if (mesh == null) continue;
var localConfig = renderer.GetComponent<MeshCompressionConfig>();
var effectiveConfig = localConfig != null ? localConfig : defaultConfig;
if (effectiveConfig == null) continue;
var path = AssetDatabase.GetAssetPath(mesh); var path = AssetDatabase.GetAssetPath(mesh);
if (string.IsNullOrEmpty(path) || !path.EndsWith(".fbx", System.StringComparison.OrdinalIgnoreCase)) if (string.IsNullOrEmpty(path) || !path.EndsWith(".fbx", System.StringComparison.OrdinalIgnoreCase))
{
if (localConfig != null) Debug.LogError($"[NDMF] Could not find FBX for {renderer.gameObject.name}");
continue; continue;
}
var importer = AssetImporter.GetAtPath(path) as ModelImporter; var importer = AssetImporter.GetAtPath(path) as ModelImporter;
if (importer == null) continue; if (importer == null) continue;
var localConfig = renderer.GetComponent<MeshCompressionConfig>();
var effectiveConfig = localConfig != null ? localConfig : defaultConfig;
if (effectiveConfig == null) continue;
var targetCompression = GetTargetCompression(effectiveConfig); var targetCompression = GetTargetCompression(effectiveConfig);
var unityCompression = GetCompression(targetCompression); var unityCompression = GetCompression(targetCompression);

8
ThirdParty.meta Normal file
View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0d1b2d7432aa7a848a2d7d5887d41bdb
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

8
ThirdParty/VRCBuildSizeViewer.meta vendored Normal file
View file

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 1286154de09416a41ab4a4cd45f64b35
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1,145 @@
/**
* VRC Build Size Viewer
* Created by MunifiSense
* https://github.com/MunifiSense/VRChat-Build-Size-Viewer
*/
#if UNITY_EDITOR
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using System.IO;
public class BuildSizeViewer : EditorWindow {
public class BuildObject {
public string size;
public string percent;
public string path;
}
List<BuildObject> buildObjectList;
List<string> uncompressedList;
string buildLogPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData) + "/Unity/Editor/Editor.log";
private char[] delimiterChars = { ' ', '\t' };
float win;
float w1;
float w2;
float w3;
string totalSize;
bool buildLogFound = false;
Vector2 scrollPos;
[MenuItem("Window/Muni/VRC Build Size Viewer")]
public static void ShowWindow() {
EditorWindow.GetWindow(typeof(BuildSizeViewer));
}
void OnGUI() {
win = (float)(position.width * 0.6);
float w1 = (float)(win * 0.15);
float w2 = (float)(win * 0.15);
float w3 = (float)(win * 0.35);
EditorGUILayout.LabelField("VRC Build Size Viewer", EditorStyles.boldLabel);
EditorGUILayout.LabelField("Create a build of your world/avatar and click the button!", EditorStyles.label);
if (GUILayout.Button("Read Build Log")) {
buildLogFound = false;
buildLogFound = getBuildSize();
}
if (buildLogFound) {
if (uncompressedList != null && uncompressedList.Count != 0) {
EditorGUILayout.LabelField("Total Compressed Build Size: " + totalSize);
EditorGUILayout.BeginHorizontal();
EditorGUILayout.Separator();
EditorGUILayout.EndHorizontal();
//EditorGUILayout.LabelField("Uncompressed Build Size by Category: ");
foreach (string s in uncompressedList) {
EditorGUILayout.LabelField(s);
}
}
if (buildObjectList != null && buildObjectList.Count != 0) {
scrollPos = EditorGUILayout.BeginScrollView(scrollPos);
EditorGUILayout.BeginHorizontal();
EditorGUILayout.Separator();
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("Size%", GUILayout.Width(w1));
EditorGUILayout.LabelField("Size", GUILayout.Width(w2));
EditorGUILayout.LabelField("Path", GUILayout.Width(w3));
EditorGUILayout.EndHorizontal();
EditorGUILayout.BeginHorizontal();
EditorGUILayout.Separator();
EditorGUILayout.EndHorizontal();
foreach (BuildObject buildObject in buildObjectList) {
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField(buildObject.percent, GUILayout.Width(w1));
EditorGUILayout.LabelField(buildObject.size, GUILayout.Width(w2));
EditorGUILayout.LabelField(buildObject.path);
if(buildObject.path != "Resources/unity_builtin_extra") {
if (GUILayout.Button("Go", GUILayout.Width(w1))) {
UnityEngine.Object obj = AssetDatabase.LoadAssetAtPath(buildObject.path, typeof(UnityEngine.Object));
Selection.activeObject = obj;
EditorGUIUtility.PingObject(obj);
}
}
EditorGUILayout.EndHorizontal();
}
EditorGUILayout.EndScrollView();
}
}
}
private bool getBuildSize() {
//Read the text from log
FileUtil.ReplaceFile(buildLogPath, buildLogPath + "copy");
StreamReader reader = new StreamReader(buildLogPath + "copy");
if(reader == null) {
Debug.LogWarning("Could not read build file.");
FileUtil.DeleteFileOrDirectory(buildLogPath + "copy");
return false;
}
string line = reader.ReadLine();
while(line != null) {
if ((line.Contains("scene-") && line.Contains(".vrcw"))
|| (line.Contains("avtr") && line.Contains(".prefab.unity3d"))) {
//Debug.Log("Build found!");
buildObjectList = new List<BuildObject>();
uncompressedList = new List<string>();
line = reader.ReadLine();
//Debug.Log(line);
while (!line.Contains("Compressed Size"))
{
line = reader.ReadLine();
}
totalSize = line.Split(':')[1];
line = reader.ReadLine();
while (line != "Used Assets and files from the Resources folder, sorted by uncompressed size:") {
uncompressedList.Add(line);
line = reader.ReadLine();
}
line = reader.ReadLine();
while (line != "-------------------------------------------------------------------------------") {
string[] splitLine = line.Split(delimiterChars);
BuildObject temp = new BuildObject();
temp.size = splitLine[1]+splitLine[2];
temp.percent = splitLine[4];
temp.path = splitLine[5];
for (int i=6; i<splitLine.Length; i++) {
temp.path += (" " + splitLine[i]);
}
buildObjectList.Add(temp);
line = reader.ReadLine();
}
}
line = reader.ReadLine();
}
FileUtil.DeleteFileOrDirectory(buildLogPath + "copy");
reader.Close();
return true;
}
}
#endif

View file

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 69c81a2438b0c514480fca52d504f429
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View file

@ -0,0 +1 @@
https://github.com/MunifiSense/VRChat-Build-Size-Viewer

View file

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6f66f5cb8c7e4a344b9941ff3ff99a99
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: