Add automatic Rive asset refresh workflow

This commit is contained in:
pelpanagiotis
2026-09-20 10:01:38 +03:00
parent d04ff998cb
commit c674d76549
45 changed files with 226275 additions and 248678 deletions
+3
View File
@@ -19,3 +19,6 @@
Thumbs.db
/Builds
/Logs
# MCP server config (contains local API tokens)
.mcp.json
+2
View File
@@ -55,8 +55,10 @@
<ItemGroup>
<Compile Include="Assets\TutorialInfo\Scripts\Editor\ReadmeEditor.cs" />
<Compile Include="Assets\Scripts\Editor\SetupMainMenuScene.cs" />
<Compile Include="Assets\Scripts\Editor\RiveAssetAutoRefresh.cs" />
<Compile Include="Assets\Scripts\Editor\LowPolyTriangleFieldMenu.cs" />
<Compile Include="Assets\ScriptTemplates\Editor\MoveToAssetsFolder.cs" />
<Compile Include="Assets\Scripts\Editor\RiveAssetRefreshMenu.cs" />
<Compile Include="Assets\Scripts\Editor\TriangleWavePanelMenu.cs" />
</ItemGroup>
<ItemGroup>
+2
View File
@@ -84,11 +84,13 @@
<None Include="Assets\Mirror\Plugins\Mono.Cecil\Mono.CecilX.Mdb.dll" />
<None Include="Assets\TextMesh Pro\Shaders\TMP_SDF-Mobile Overlay.shader" />
<None Include="Assets\TextMesh Pro\Shaders\TMP_SDF-Mobile-2-Pass.shader" />
<None Include="Assets\Fonts\Orbitron\OFL.txt" />
<None Include="Assets\ScriptTemplates\52-Mirror__Network Authenticator-NewNetworkAuthenticator.cs.txt" />
<None Include="Assets\TextMesh Pro\Shaders\TMP_Bitmap.shader" />
<None Include="Assets\Mirror\Plugins\Mono.Cecil\Mono.CecilX.Pdb.dll" />
<None Include="Assets\Mirror\version.txt" />
<None Include="Assets\TextMesh Pro\Shaders\TMPro_Mobile.cginc" />
<None Include="Assets\Fonts\Orbitron\README.txt" />
<None Include="Assets\ScriptTemplates\56-Mirror__Network Discovery-NewNetworkDiscovery.cs.txt" />
<None Include="Assets\TextMesh Pro\Shaders\TMP_SDF SSD.shader" />
<None Include="Assets\ScriptTemplates\51-Mirror__Network Manager With Actions-NewNetworkManagerWithActions.cs.txt" />
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 68bb7360c2b4241499755b25862979d6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 820221b82b937ab47ba765f767c90058
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+93
View File
@@ -0,0 +1,93 @@
Copyright 2018 The Orbitron Project Authors (https://github.com/theleagueof/orbitron), with Reserved Font Name: "Orbitron"
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
https://openfontlicense.org
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 02356742af7eca64fa94570268273e7f
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: a4aa11a38a1560641a5f1baaff5dfbd6
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Orbitron
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:
+68
View File
@@ -0,0 +1,68 @@
Orbitron Variable Font
======================
This download contains Orbitron as both a variable font and static fonts.
Orbitron is a variable font with this axis:
wght
This means all the styles are contained in a single file:
Orbitron-VariableFont_wght.ttf
If your app fully supports variable fonts, you can now pick intermediate styles
that aren’t available as static fonts. Not all apps support variable fonts, and
in those cases you can use the static font files for Orbitron:
static/Orbitron-Regular.ttf
static/Orbitron-Medium.ttf
static/Orbitron-SemiBold.ttf
static/Orbitron-Bold.ttf
static/Orbitron-ExtraBold.ttf
static/Orbitron-Black.ttf
Get started
-----------
1. Install the font files you want to use
2. Use your app's font picker to view the font family and all the
available styles
Learn more about variable fonts
-------------------------------
https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
https://variablefonts.typenetwork.com
https://medium.com/variable-fonts
In desktop apps
https://theblog.adobe.com/can-variable-fonts-illustrator-cc
https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
Online
https://developers.google.com/fonts/docs/getting_started
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
Installing fonts
MacOS: https://support.apple.com/en-us/HT201749
Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
Android Apps
https://developers.google.com/fonts/docs/android
https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
License
-------
Please read the full license text (OFL.txt) to understand the permissions,
restrictions and requirements for usage, redistribution, and modification.
You can use them in your products & projects – print or digital,
commercial or otherwise.
This isn't legal advice, please consider consulting a lawyer and see the full
license for all details.
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: f3014977f1e653542a5d34a54f8a54b6
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fa09d13a411a8c24fb39824d2669400b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 543455cbe71cf54458474e6f5ff15cb5
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Orbitron
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: a906e1901cdca4b4fa494c95de3fda3a
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Orbitron
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: f60a524cd9d7a39448f7332505659907
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Orbitron
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: df2623ff2f0e7744e8dad3b3c1b2b7ac
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Orbitron
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because one or more lines are too long
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: aa0a56812dafcaf4b9aa60743de6aa42
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: 2b2464dfee836a449a5ddddb1727dfb3
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Orbitron
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
@@ -0,0 +1,21 @@
fileFormatVersion: 2
guid: d0a10b96551dd5d4fad64d9a6dc6c45a
TrueTypeFontImporter:
externalObjects: {}
serializedVersion: 4
fontSize: 16
forceTextureCase: -2
characterSpacing: 0
characterPadding: 1
includeFontData: 1
fontNames:
- Orbitron
fallbackFontReferences: []
customCharacters:
fontRenderingMode: 0
ascentCalculationMode: 1
useLegacyBoundsCalculation: 0
shouldRoundAdvanceValue: 1
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 35c79dc3bf28d1e4f946014e4d364bde
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+216 -26297
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2810177b0e46d084287443ac43602a0b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 112000000
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.

After

Width:  |  Height:  |  Size: 390 KiB

@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: c75b4941220ea874cb645bd8843d6f71
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 0
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 1
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 3
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 12
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: 658ba5578796ab24495eb01a61a967ea
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 1
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 3
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 0
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 6
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 2
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: d47c9fc2de6ff814cba74df4611bf381
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 1
seamlessCubemap: 1
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 2
aniso: 0
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 1
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 2
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 100
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:
+222371 -222371
View File
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,74 @@
#if UNITY_EDITOR
using System;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
using UnityEngine.SceneManagement;
public class RiveAssetAutoRefresh: AssetPostprocessor
{
private static bool refreshQueued;
private static void OnPostprocessAllAssets(
string[] importedAssets,
string[] deletedAssets,
string[] movedAssets,
string[] movedFromAssetPaths)
{
foreach (string assetPath in importedAssets)
{
if (!assetPath.EndsWith(".riv", StringComparison.OrdinalIgnoreCase))
continue;
QueueSceneReload();
return;
}
}
private static void QueueSceneReload()
{
if (refreshQueued)
return;
refreshQueued = true;
EditorApplication.delayCall += ReloadSceneAfterImport;
}
private static void ReloadSceneAfterImport()
{
refreshQueued = false;
if (EditorApplication.isPlaying)
{
Debug.Log("A Rive asset changed. Scene reload skipped because Play Mode is active.");
return;
}
Scene activeScene = SceneManager.GetActiveScene();
if (!activeScene.IsValid() || string.IsNullOrEmpty(activeScene.path))
{
Debug.LogWarning("A Rive asset changed, but the active scene has not been saved yet.");
return;
}
bool saved = EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo();
if (!saved)
{
Debug.LogWarning("Rive scene refresh cancelled because the scene was not saved.");
return;
}
EditorSceneManager.OpenScene(
activeScene.path,
OpenSceneMode.Single);
Debug.Log("Rive asset changed. THe active scene was reloaded automatically.");
}
}
#endif
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 69d5148788a7cf54495d98a1a6e11d59
@@ -0,0 +1,67 @@
#if UNITY_EDITOR
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
using UnityEngine.SceneManagement;
public static class RiveAssetRefreshMenu
{
private const string LoginRiveAssetPath = "Assets/UI/Login UI.riv";
[MenuItem("Tools/Rive/Reimport Login UI")]
private static void ReimportLoginUI()
{
if (EditorApplication.isPlaying)
{
Debug.LogWarning("Stop Play Mode before reimporting the Rive asset.");
return;
}
Scene activeScene = SceneManager.GetActiveScene();
if (!activeScene.IsValid() || string.IsNullOrEmpty(activeScene.path))
{
Debug.LogError("Rive refresh failed: the active scene has not been saved.");
return;
}
bool saved = EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo();
if (!saved)
{
Debug.LogWarning("Rive refresh cancelled because the scene was not saved.");
return;
}
AssetDatabase.ImportAsset(
LoginRiveAssetPath,
ImportAssetOptions.ForceUpdate |
ImportAssetOptions.ForceSynchronousImport);
AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
string scenePath = activeScene.path;
EditorApplication.delayCall += () =>
{
if (EditorApplication.isPlaying)
return;
EditorSceneManager.OpenScene(
scenePath,
OpenSceneMode.Single);
Debug.Log($"Reimported {LoginRiveAssetPath} and reloaded {scenePath}.");
};
}
[MenuItem("Tools/Rive/Reimport Login UI", validate = true)]
private static bool ValidateReimportLoginUI()
{
return AssetDatabase.AssetPathToGUID(LoginRiveAssetPath) != string.Empty;
}
}
#endif
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 867b04f7b3f14254598149f4cb04a1c8
+37 -5
View File
@@ -45,6 +45,7 @@ namespace ProceduralEditor
SetupPanel(faceMaterial);
SetupFog();
SetupPostProcessVolume();
RemoveLegacyLogo();
SetupFadeCanvas();
EditorSceneManager.MarkSceneDirty(scene);
@@ -178,12 +179,46 @@ namespace ProceduralEditor
RenderSettings.fog = false;
}
static void RemoveLegacyLogo()
{
var legacyLogo = GameObject.Find("NetCode Logo");
if (legacyLogo != null)
Object.DestroyImmediate(legacyLogo);
}
static void SetupFadeCanvas()
{
var existing = GameObject.Find("Fade Canvas");
if (existing != null) Object.DestroyImmediate(existing);
if (existing != null)
{
existing.SetActive(true);
existing.transform.localScale = Vector3.one;
var existingImage = existing.transform.Find("Fade Image");
if (existingImage != null)
{
existingImage.gameObject.SetActive(true);
var existingFadeIn = existingImage.GetComponent<MenuFadeIn>();
if (existingFadeIn == null)
existingFadeIn = existingImage.gameObject.AddComponent<MenuFadeIn>();
existingFadeIn.delay = 2.5f;
existingFadeIn.duration = 3.5f;
existingFadeIn.enabled = true;
var existingGroup = existingImage.GetComponent<CanvasGroup>();
if (existingGroup != null)
{
existingGroup.alpha = 1f;
existingGroup.blocksRaycasts = true;
existingGroup.interactable = true;
}
return;
}
}
var canvasGo = new GameObject("Fade Canvas", typeof(Canvas), typeof(CanvasScaler), typeof(GraphicRaycaster));
canvasGo.transform.localScale = Vector3.one;
var canvas = canvasGo.GetComponent<Canvas>();
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
// Ensure fade canvas draws on top of other UI canvases
@@ -204,11 +239,8 @@ namespace ProceduralEditor
rect.offsetMax = Vector2.zero;
var fadeIn = imageGo.AddComponent<MenuFadeIn>();
fadeIn.delay = 0.3f;
fadeIn.delay = 2.5f;
fadeIn.duration = 3.5f;
// Disable automatic fade-on-start so the debug toggle controls opacity predictably.
// If you prefer the automatic fade, remove this line.
fadeIn.enabled = false;
// Make sure the image initially is fully opaque so the menu starts covered by the backdrop
var initColor = image.color;
+33 -4
View File
@@ -9,6 +9,20 @@ public class MenuFadeIn : MonoBehaviour
CanvasGroup _group;
Coroutine _fadeRoutine;
bool _started;
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
static void ReactivateFadeImages()
{
var fadeComponents = Resources.FindObjectsOfTypeAll<MenuFadeIn>();
foreach (var fadeComponent in fadeComponents)
{
if (!fadeComponent.gameObject.scene.IsValid())
continue;
fadeComponent.gameObject.SetActive(true);
}
}
void Awake()
{
@@ -16,6 +30,10 @@ public class MenuFadeIn : MonoBehaviour
_group = GetComponent<CanvasGroup>();
if (_group == null) _group = gameObject.AddComponent<CanvasGroup>();
var canvas = GetComponentInParent<Canvas>();
if (canvas != null)
canvas.transform.localScale = Vector3.one;
_group.alpha = 1f;
_group.blocksRaycasts = true;
Debug.Log("[MenuFadeIn] Awake - CanvasGroup ensured, alpha=1");
@@ -23,14 +41,26 @@ public class MenuFadeIn : MonoBehaviour
void OnEnable()
{
// Reset state whenever enabled and start the fade
if (_group == null) _group = GetComponent<CanvasGroup>() ?? gameObject.AddComponent<CanvasGroup>();
if (_started)
BeginFade();
}
void Start()
{
_started = true;
BeginFade();
}
void BeginFade()
{
_group.alpha = 1f;
_group.blocksRaycasts = true;
if (_fadeRoutine != null) StopCoroutine(_fadeRoutine);
_fadeRoutine = StartCoroutine(Fade());
Debug.Log("[MenuFadeIn] OnEnable - starting fade (delay=" + delay + ", duration=" + duration + ")");
Debug.Log("[MenuFadeIn] Starting fade (delay=" + delay + ", duration=" + duration + ")");
}
void OnDisable()
@@ -57,7 +87,6 @@ public class MenuFadeIn : MonoBehaviour
_group.alpha = 0f;
_group.blocksRaycasts = false;
Debug.Log("[MenuFadeIn] Fade finished - disabling GameObject");
gameObject.SetActive(false);
Debug.Log("[MenuFadeIn] Fade finished");
}
}
Binary file not shown.
+10
View File
@@ -0,0 +1,10 @@
fileFormatVersion: 2
guid: b23153ea9b67b79469ee331b0ea7e381
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: 043c4b240e8f94f828b8b81fa436f7f0, type: 3}