diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 51f71deb..09ac4d64 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -58,6 +58,7 @@ jobs: text: ${{ steps.version.outputs.value }} - name: Configure the Environment Variables needed for releasing the Package run: | + echo "stableVersion=${{ steps.stable-match.outputs.match }}" >> $GITHUB_ENV echo "unityPackage=${{ vars.PACKAGE_NAME }}-${{ steps.version.outputs.value }}.unitypackage" >> $GITHUB_ENV echo "version=${{ steps.version.outputs.value }}" >> $GITHUB_ENV echo "zipFile=${{ vars.PACKAGE_NAME }}-${{ steps.version.outputs.value }}".zip >> $GITHUB_ENV diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 54b464b9..d323e391 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,8 +1,10 @@ { "recommendations": [ "editorconfig.editorconfig", + "fernandoescolar.vscode-solution-explorer", "redhat.vscode-yaml", "streetsidesoftware.code-spell-checker", - "visualstudiotoolsforunity.vstuc" + "visualstudiotoolsforunity.vstuc", + "zbecknell.t4-support" ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 94440bdb..15661c6c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,15 +1,53 @@ { + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.expand": false, + "explorer.fileNesting.patterns": { + "*": "${capture}.meta, ${capture}.md5", + "*.dll": "${capture}.pdb", + "*.md": "${capture}.*.md", + ".gitconfig": ".gitattributes, .gitignore", + ".tool-versions": "global.json", + "*.sln": "*.csproj", + "LICENSE": "LICENSE.*.txt", + "LICENSE*": "LICENSE${capture}.meta", + "T.cs": "*.po" + }, "files.associations": { "*.anim": "yaml", "*.asmdef": "json", + "*.asmref": "json", "*.asset": "yaml", + "*.buildreport": "yaml", + "*.config": "xml", "*.controller": "yaml", + "*.dwlt": "yaml", + "*.info": "json", + "*.index": "json", + "*.inputactions": "json", + "*.lighting": "yaml", + "*.mat": "yaml", "*.meta": "yaml", + "*.outputdata": "json", + "*.physicmaterial": "yaml", + "*.playable": "yaml", "*.prefab": "yaml", + "*.renderTexture": "yaml", + "*.scenetemplate": "yaml", + "*.signal": "yaml", + "*.terrainlayer": "yaml", + "*.tlh": "c", + "*.traceevents": "jsonl", "*.unity": "yaml", "*.uss": "css", ".imgbotconfig": "json", - "LICENSE": "plaintext" + ".settings": "plist", + ".signature": "json", + "LastSceneManagerSetup.txt": "yaml", + "LibraryFormatVersion.txt": "yaml", + "LICENSE": "plaintext", + "ProjectVersion.txt": "yaml", + "XRPackageSettings.asset": "json", + "XRSettings.asset": "json" }, "files.readonlyInclude": { "Packages/com.*/**": true, @@ -44,7 +82,9 @@ "tag:unity3d.com,2011:13 mapping", "tag:unity3d.com,2011:19 mapping", "tag:unity3d.com,2011:20 mapping", + "tag:unity3d.com,2011:21 mapping", "tag:unity3d.com,2011:23 mapping", + "tag:unity3d.com,2011:28 mapping", "tag:unity3d.com,2011:29 mapping", "tag:unity3d.com,2011:30 mapping", "tag:unity3d.com,2011:33 mapping", @@ -54,6 +94,7 @@ "tag:unity3d.com,2011:74 mapping", "tag:unity3d.com,2011:78 mapping", "tag:unity3d.com,2011:81 mapping", + "tag:unity3d.com,2011:84 mapping", "tag:unity3d.com,2011:91 mapping", "tag:unity3d.com,2011:95 mapping", "tag:unity3d.com,2011:104 mapping", @@ -61,8 +102,10 @@ "tag:unity3d.com,2011:114 mapping", "tag:unity3d.com,2011:126 mapping", "tag:unity3d.com,2011:129 mapping", + "tag:unity3d.com,2011:134 mapping", "tag:unity3d.com,2011:157 mapping", "tag:unity3d.com,2011:159 mapping", + "tag:unity3d.com,2011:162 mapping", "tag:unity3d.com,2011:196 mapping", "tag:unity3d.com,2011:222 mapping", "tag:unity3d.com,2011:223 mapping", @@ -70,15 +113,24 @@ "tag:unity3d.com,2011:236 mapping", "tag:unity3d.com,2011:310 mapping", "tag:unity3d.com,2011:1001 mapping", + "tag:unity3d.com,2011:1002 mapping", "tag:unity3d.com,2011:1045 mapping", "tag:unity3d.com,2011:1101 mapping", "tag:unity3d.com,2011:1102 mapping", "tag:unity3d.com,2011:1107 mapping", + "tag:unity3d.com,2011:1125 mapping", + "tag:unity3d.com,2011:1126 mapping", + "tag:unity3d.com,2011:382020655 mapping", "tag:unity3d.com,2011:387306366 mapping", + "tag:unity3d.com,2011:641289076 mapping", + "tag:unity3d.com,2011:668709126 mapping", + "tag:unity3d.com,2011:850595691 mapping", "tag:unity3d.com,2011:890905787 mapping", "tag:unity3d.com,2011:937362698 mapping", "tag:unity3d.com,2011:1386491679 mapping", - "tag:unity3d.com,2011:1660057539 mapping" + "tag:unity3d.com,2011:1521398425 mapping", + "tag:unity3d.com,2011:1660057539 mapping", + "tag:unity3d.com,2011:1953259897 mapping" ], "yaml.schemas": { "https://coderabbit.ai/integrations/coderabbit-overrides.v2.json": [ diff --git a/Packages/black.kit.vrcui/Editor/Concreted/HeroEditor.cs b/Packages/black.kit.vrcui/Editor/Concreted/HeroEditor.cs new file mode 100644 index 00000000..fddfff41 --- /dev/null +++ b/Packages/black.kit.vrcui/Editor/Concreted/HeroEditor.cs @@ -0,0 +1,62 @@ +using UnityEditor; +using UnityEngine; +using UnityEngine.UI; +using black.kit.toybox.Editor; + +namespace black.kit.vrcui.Editor +{ + /// The inspector of the . + [CustomEditor(typeof(Hero))] + public sealed class HeroEditor : EditorBase + { + /// The usage of the target. + private readonly string[] usage = new string[] + { + T.USAGE_REGIST_SPRITES, + T.USAGE_HERO_1, + }; + + /// Initialize the editor. + public HeroEditor() : base(L10n.Tr(T.DETAIL_HERO)) + { + } + + /// The callback to draw the inspector GUI. + public override void OnInspectorGUI() + { + DrawBanner(); + DrawDetails(); + EditorGUILayout.BeginVertical(GUI.skin.box); + var style = defaultStyle.Value; + EditorGUILayout.LabelField(L10n.Tr(T.USAGE_COMPONENT), style); + EditorGUILayout.Space(); + DrawList( + usage, + new ListOptions(ordered: true, tr: (t) => L10n.Tr(t))); + EditorGUILayout.EndVertical(); + base.OnInspectorGUI(); + + serializedObject.Update(); + var image = AutoCompleteObject(Hero.NAME_IMAGE); + if (image) + { + image.sprite = GetSprite(); + } + serializedObject.ApplyModifiedProperties(); + } + + /// Get the sprite of the icon. + /// The sprite of the icon. + private Sprite GetSprite() + { + var (sprites, index, _) = GetArrayProperty( + Hero.NAME_SPRITES, TypedTarget.Index); + if (index < 0) + { + return null; // 'sprites' is empty + } + var element = sprites.GetArrayElementAtIndex(index); + return element.objectReferenceValue as Sprite; + } + } +} diff --git a/Packages/black.kit.vrcui/Editor/Concreted/HeroEditor.cs.meta b/Packages/black.kit.vrcui/Editor/Concreted/HeroEditor.cs.meta new file mode 100644 index 00000000..da3c9dab --- /dev/null +++ b/Packages/black.kit.vrcui/Editor/Concreted/HeroEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 89b21219d6966cb4bb813f189590af0c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/black.kit.vrcui/Editor/Concreted/SelectEditor.cs b/Packages/black.kit.vrcui/Editor/Concreted/SelectEditor.cs new file mode 100644 index 00000000..5c3c20ac --- /dev/null +++ b/Packages/black.kit.vrcui/Editor/Concreted/SelectEditor.cs @@ -0,0 +1,43 @@ +using TMPro; +using UnityEditor; +using UnityEngine; + +namespace black.kit.vrcui.Editor +{ + /// The inspector of the . + [CustomEditor(typeof(Select))] + public sealed class SelectEditor : EditorBase