From 59999ebb2d8028270519116908721dc75262c1be Mon Sep 17 00:00:00 2001 From: Lillith Rose Date: Tue, 3 Feb 2026 20:54:41 -0500 Subject: [PATCH 1/2] transparent mat --- Commonly Used/Materials.meta | 8 ++ Commonly Used/Materials/Transparent.mat | 83 ++++++++++++++++++++ Commonly Used/Materials/Transparent.mat.meta | 8 ++ 3 files changed, 99 insertions(+) create mode 100644 Commonly Used/Materials.meta create mode 100644 Commonly Used/Materials/Transparent.mat create mode 100644 Commonly Used/Materials/Transparent.mat.meta diff --git a/Commonly Used/Materials.meta b/Commonly Used/Materials.meta new file mode 100644 index 0000000..7d0ec35 --- /dev/null +++ b/Commonly Used/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 22d11a82c6949ff408a60e83fe25a961 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Commonly Used/Materials/Transparent.mat b/Commonly Used/Materials/Transparent.mat new file mode 100644 index 0000000..5808ee7 --- /dev/null +++ b/Commonly Used/Materials/Transparent.mat @@ -0,0 +1,83 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Transparent + m_Shader: {fileID: 4800000, guid: d5b89f0c74ccf5049ba803c14a090378, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Commonly Used/Materials/Transparent.mat.meta b/Commonly Used/Materials/Transparent.mat.meta new file mode 100644 index 0000000..edd9492 --- /dev/null +++ b/Commonly Used/Materials/Transparent.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 00979658ca9fbca41b948288856c3d32 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: From 6031db6620e4f1732064d85f49da20e46b5d387a Mon Sep 17 00:00:00 2001 From: Lillith Rose Date: Wed, 4 Feb 2026 18:41:36 -0500 Subject: [PATCH 2/2] avatar label helper --- AviLabels.meta | 8 +++ AviLabels/AviLabelParent.cs | 94 ++++++++++++++++++++++++++++++++ AviLabels/AviLabelParent.cs.meta | 11 ++++ AviLabels/AviLabels.asmdef | 18 ++++++ AviLabels/AviLabels.asmdef.meta | 7 +++ AviLabels/LabelConfig.cs | 22 ++++++++ AviLabels/LabelConfig.cs.meta | 11 ++++ 7 files changed, 171 insertions(+) create mode 100644 AviLabels.meta create mode 100644 AviLabels/AviLabelParent.cs create mode 100644 AviLabels/AviLabelParent.cs.meta create mode 100644 AviLabels/AviLabels.asmdef create mode 100644 AviLabels/AviLabels.asmdef.meta create mode 100644 AviLabels/LabelConfig.cs create mode 100644 AviLabels/LabelConfig.cs.meta diff --git a/AviLabels.meta b/AviLabels.meta new file mode 100644 index 0000000..37a0514 --- /dev/null +++ b/AviLabels.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eae4e10ae346ec24984d58b3b87d55e3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AviLabels/AviLabelParent.cs b/AviLabels/AviLabelParent.cs new file mode 100644 index 0000000..f087a96 --- /dev/null +++ b/AviLabels/AviLabelParent.cs @@ -0,0 +1,94 @@ +using System.Collections.Generic; +using UnityEngine; +using VRC.SDK3.Avatars.Components; +using VRC.SDK3.Dynamics.Constraint.Components; +using TMPro; +using VRC.Dynamics; + + +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace gay.lilyy.AviLabels +{ + + [AddComponentMenu("LillithRosePup/Avatar Label/Driver")] + public class AviLabelParent : MonoBehaviour, VRC.SDKBase.IEditorOnly + { + public Color defaultColor = Color.white; + public TMP_FontAsset defaultFont = null; + public void UpdateLabels() + { + List childrenToDestroy = new List(); + foreach (Transform child in transform) + { + childrenToDestroy.Add(child); + } + foreach (Transform child in childrenToDestroy) + { + DestroyImmediate(child.gameObject); + } + var avatarDescriptors = GameObject.FindObjectsOfType(); + foreach (var avatarDescriptor in avatarDescriptors) + { + LabelConfig labelConfig = LabelConfig.GetDefault(); + if (avatarDescriptor.GetComponent() != null) + { + labelConfig = avatarDescriptor.GetComponent(); + } + if (labelConfig.font == null) + { + labelConfig.font = defaultFont; + } + if (labelConfig.color == Color.white) + { + labelConfig.color = defaultColor; + } + var child = new GameObject(avatarDescriptor.name); + child.transform.SetParent(transform); + child.transform.localPosition = Vector3.zero; + child.transform.localRotation = Quaternion.identity; + child.transform.localScale = Vector3.one; + + + var parentConstraint = child.AddComponent(); + parentConstraint.AffectsPositionY = false; + parentConstraint.AffectsRotationY = false; + parentConstraint.Sources.Add(new VRCConstraintSource { + SourceTransform = avatarDescriptor.transform, + Weight = 1 + }); + parentConstraint.ActivateConstraint(); + parentConstraint.ZeroConstraint(); + + + var textMeshPro = child.AddComponent(); + if (labelConfig.font != null) + { + textMeshPro.font = labelConfig.font; + } + textMeshPro.color = labelConfig.color; + textMeshPro.text = !string.IsNullOrEmpty(labelConfig.overrideName) ? labelConfig.overrideName : avatarDescriptor.name; + textMeshPro.alignment = TextAlignmentOptions.Center; + textMeshPro.fontSize = 1; + } + } + } + + #if UNITY_EDITOR + [CustomEditor(typeof(AviLabelParent))] + public class AviLabelParentInspector : Editor + { + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + if (GUILayout.Button("Update Labels")) + { + ((AviLabelParent)target).UpdateLabels(); + } + } + } + #endif +} + diff --git a/AviLabels/AviLabelParent.cs.meta b/AviLabels/AviLabelParent.cs.meta new file mode 100644 index 0000000..044edfa --- /dev/null +++ b/AviLabels/AviLabelParent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7bb30b2bdab228a479fae7db4ab367c2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AviLabels/AviLabels.asmdef b/AviLabels/AviLabels.asmdef new file mode 100644 index 0000000..7464589 --- /dev/null +++ b/AviLabels/AviLabels.asmdef @@ -0,0 +1,18 @@ +{ + "name": "AviLabels", + "rootNamespace": "", + "references": [ + "GUID:3456780c4fb2d324ab9c633d6f1b0ddb", + "GUID:5718fb738711cd34ea54e9553040911d", + "GUID:6055be8ebefd69e48b49212b09b47b2f" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/AviLabels/AviLabels.asmdef.meta b/AviLabels/AviLabels.asmdef.meta new file mode 100644 index 0000000..fe84f58 --- /dev/null +++ b/AviLabels/AviLabels.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0758760262efba643b9c9c20179b4985 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/AviLabels/LabelConfig.cs b/AviLabels/LabelConfig.cs new file mode 100644 index 0000000..2402e82 --- /dev/null +++ b/AviLabels/LabelConfig.cs @@ -0,0 +1,22 @@ +using TMPro; +using UnityEngine; + +namespace gay.lilyy.AviLabels +{ + [AddComponentMenu("LillithRosePup/Avatar Label/Config")] + public class LabelConfig : MonoBehaviour, VRC.SDKBase.IEditorOnly + { + public string overrideName; + public Color color; + public TMP_FontAsset font; + + internal static LabelConfig GetDefault() + { + return new LabelConfig { + overrideName = "", + color = Color.white, + font = null + }; + } + } +} \ No newline at end of file diff --git a/AviLabels/LabelConfig.cs.meta b/AviLabels/LabelConfig.cs.meta new file mode 100644 index 0000000..2684dfe --- /dev/null +++ b/AviLabels/LabelConfig.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9bb9a03d585aaee48b5a80cf79cbb00f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: