Created
February 22, 2025 16:19
-
-
Save shivaduke28/8d2310e49a1c60123fa422431c41e65e to your computer and use it in GitHub Desktop.
Read VFX Graph's Parameters from .vfx file using VYaml
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Collections.Generic; | |
using UnityEditor; | |
using UnityEngine; | |
using VYaml.Annotations; | |
using VYaml.Serialization; | |
namespace Rector.Editor | |
{ | |
public static class VfxPropertyInfoReader | |
{ | |
[MenuItem("Tools/Read VFX Property Info")] | |
public static void Test() | |
{ | |
var selection = Selection.assetGUIDs; | |
foreach (var guid in selection) | |
{ | |
var path = AssetDatabase.GUIDToAssetPath(guid); | |
if (path.EndsWith(".vfx")) | |
{ | |
var text = System.IO.File.ReadAllBytes(path); | |
var docs = YamlSerializer.DeserializeMultipleDocuments<SerializedDocument>(text); | |
foreach (var doc in docs) | |
{ | |
if (doc is { MonoBehaviour: { ParameterInfo: { } parameterInfo } }) | |
{ | |
foreach (var paramInfo in parameterInfo) | |
{ | |
Debug.Log(paramInfo); | |
} | |
return; | |
} | |
} | |
} | |
} | |
} | |
} | |
[YamlObject] | |
public partial class SerializedDocument | |
{ | |
[YamlMember("MonoBehaviour")] public SerializedVfxGraph MonoBehaviour; | |
} | |
// https://github.com/needle-mirror/com.unity.visualeffectgraph/blob/787767efd455eb421d58ec1109b055a5ad8b0777/Editor/Models/VFXGraph.cs | |
[YamlObject] | |
public partial class SerializedVfxGraph | |
{ | |
[YamlMember("m_ParameterInfo")] public SerializedVFXParameterInfo[] ParameterInfo; | |
} | |
// https://github.com/needle-mirror/com.unity.visualeffectgraph/blob/13.0.0/Editor/Models/VFXParameterInfo.cs | |
[YamlObject] | |
public partial class SerializedVFXParameterInfo | |
{ | |
[YamlMember("name")] public string Name; | |
[YamlMember("path")] public string Path; | |
[YamlMember("tooltip")] public string Tooltip; | |
[YamlMember("sheetType")] public string SheetType; | |
[YamlMember("realType")] public string RealType; | |
[YamlMember("defaultValue")] public VFXSerializableObject DefaultValue; | |
[YamlMember("min")] public float Min; | |
[YamlMember("max")] public float Max; | |
[YamlMember("enumValues")] public List<string> EnumValues; | |
[YamlMember("descendantCount")] public int DescendantCount; | |
public override string ToString() => | |
$"Name: {Name}, Path: {Path}, Tooltip: {Tooltip}, SheetType: {SheetType}, RealType: {RealType}, DefaultValue: {DefaultValue}, Min: {Min}, Max: {Max}, EnumValues: {EnumValues}, DescendantCount: {DescendantCount}"; | |
} | |
// https://github.com/needle-mirror/com.unity.visualeffectgraph/blob/787767efd455eb421d58ec1109b055a5ad8b0777/Editor/Core/VFXSerializer.cs | |
[YamlObject] | |
public partial class VFXSerializableObject | |
{ | |
[YamlMember("m_Type")] public object Type; | |
[YamlMember("m_SerializableObject")] public string SerializableObject; | |
public override string ToString() => $"Type: {Type}, SerializableObject: {SerializableObject}"; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment