Update VRCBoardImage component to include material override functionality and adjust related properties

This commit is contained in:
2024-10-15 18:25:05 +03:00
parent f93aedbc88
commit 4224e17432
2 changed files with 112 additions and 44 deletions

View File

@@ -44,7 +44,7 @@ MonoBehaviour:
Data:
- Name:
Entry: 12
Data: 10
Data: 11
- Name:
Entry: 7
Data:
@@ -329,19 +329,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: imageIds
Data: materialOverride
- Name: $v
Entry: 7
Data: 18|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: imageIds
Data: materialOverride
- Name: <UserType>k__BackingField
Entry: 7
Data: 19|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.String[], mscorlib
Data: UnityEngine.Material, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
@@ -365,19 +365,14 @@ MonoBehaviour:
Data: 20|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 2
Data: 1
- Name:
Entry: 7
Data: 21|UnityEngine.HeaderAttribute, UnityEngine.CoreModule
- Name: header
Entry: 1
Data: Uploader Image Mappings
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data: 22|UnityEngine.HideInInspector, UnityEngine.CoreModule
Data: Material Override (Optional, if set the properties are applied globally
to all renderers using the material)
- Name:
Entry: 8
Data:
@@ -398,19 +393,25 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: texturePropertyMappings
Data: imageIds
- Name: $v
Entry: 7
Data: 23|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 22|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: texturePropertyMappings
Data: imageIds
- Name: <UserType>k__BackingField
Entry: 9
Data: 19
Entry: 7
Data: 23|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: System.String[], mscorlib
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 19
Data: 23
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -452,25 +453,19 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: defaultTextures
Data: texturePropertyMappings
- Name: $v
Entry: 7
Data: 26|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: defaultTextures
Data: texturePropertyMappings
- Name: <UserType>k__BackingField
Entry: 7
Data: 27|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: UnityEngine.Texture2D[], UnityEngine.CoreModule
- Name:
Entry: 8
Data:
Entry: 9
Data: 23
- Name: <SystemType>k__BackingField
Entry: 9
Data: 27
Data: 23
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -485,13 +480,13 @@ MonoBehaviour:
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 28|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 27|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 29|UnityEngine.HideInInspector, UnityEngine.CoreModule
Data: 28|UnityEngine.HideInInspector, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
@@ -512,19 +507,25 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
Data: _mainType
Data: defaultTextures
- Name: $v
Entry: 7
Data: 30|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 29|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _mainType
Data: defaultTextures
- Name: <UserType>k__BackingField
Entry: 9
Data: 15
Entry: 7
Data: 30|System.RuntimeType, mscorlib
- Name:
Entry: 1
Data: UnityEngine.Texture2D[], UnityEngine.CoreModule
- Name:
Entry: 8
Data:
- Name: <SystemType>k__BackingField
Entry: 9
Data: 15
Data: 30
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
@@ -536,10 +537,64 @@ MonoBehaviour:
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: false
Data: true
- Name: _fieldAttributes
Entry: 7
Data: 31|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 1
- Name:
Entry: 7
Data: 32|UnityEngine.HideInInspector, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
Data: _mainType
- Name: $v
Entry: 7
Data: 33|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _mainType
- Name: <UserType>k__BackingField
Entry: 9
Data: 15
- Name: <SystemType>k__BackingField
Entry: 9
Data: 15
- Name: <SyncMode>k__BackingField
Entry: 7
Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- Name:
Entry: 6
Data:
- Name:
Entry: 8
Data:
- Name: <IsSerialized>k__BackingField
Entry: 5
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 34|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
@@ -563,7 +618,7 @@ MonoBehaviour:
Data: _uploaderId
- Name: $v
Entry: 7
Data: 32|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
Data: 35|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: <Name>k__BackingField
Entry: 1
Data: _uploaderId
@@ -587,7 +642,7 @@ MonoBehaviour:
Data: false
- Name: _fieldAttributes
Entry: 7
Data: 33|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
Data: 36|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0

View File

@@ -15,7 +15,9 @@ namespace VRCBoard.Components
[Header("Uploader ID (only applies to images of 'shared' or 'instance' type)")]
public string uploaderIdOverride;
[Header("Uploader Image Mappings")]
[Header("Material Override (Optional, if set the properties are applied globally to all renderers using the material)")]
public Material materialOverride;
[HideInInspector] public string[] imageIds = new string[0];
[HideInInspector] public string[] texturePropertyMappings = new string[0];
[HideInInspector] public Texture2D[] defaultTextures = new Texture2D[0];
@@ -32,7 +34,7 @@ namespace VRCBoard.Components
private string GetUploader()
{
string uploaderId = "";
if (string.IsNullOrEmpty(uploaderIdOverride))
if (string.IsNullOrEmpty(uploaderIdOverride) && imageIds.Length > 0)
{
string firstImageID = imageIds[0];
GetImageAtlasTexture(firstImageID, null, out Texture2D albedoTexture, out int albedoAtlasPosition, out int albedoAtlasSize, out string albedoType);
@@ -116,10 +118,15 @@ namespace VRCBoard.Components
string propertyName = texturePropertyMappings[i];
Texture2D texture = manager.GetTexture2D(_uploaderId, imageIds[i]);
if (texture == null)
{
texture = defaultTextures[i];
if (texture == null) continue;
}
if (string.IsNullOrEmpty(propertyName)) continue;
propertyBlock.SetTexture(propertyName, texture);
if (materialOverride != null) materialOverride.SetTexture(propertyName, texture);
}
@@ -136,6 +143,11 @@ namespace VRCBoard.Components
Renderer renderer = script.GetComponent<Renderer>();
Material material = renderer.sharedMaterial;
if (script.materialOverride)
{
EditorGUILayout.HelpBox("Material override enabled", MessageType.Info);
material = script.materialOverride;
}
string[] materialPropertyNames = material.GetPropertyNames(MaterialPropertyType.Texture);
base.OnInspectorGUI();
@@ -195,6 +207,7 @@ namespace VRCBoard.Components
defaultImage = EditorGUILayout.ObjectField(defaultImage, typeof(Texture2D), false) as Texture2D;
EditorGUILayout.EndHorizontal();
if (defaultImage != null) propertyBlock.SetTexture(propertyName, defaultImage);
if (script.materialOverride != null) script.materialOverride.SetTexture(propertyName, defaultImage);
}
if (script.defaultTextures[i] != defaultImage)