static bool PropertyField(this DictionaryAsset asset, string name, string displayName, out object value, Func <object> getValue) { if (serializedAsset == null) { throw new Exception("Didn't set serializedAsset field before draw Propertyfield."); } EditorGUI.BeginChangeCheck(); var prop = serializedAsset.FindProperty(name); if (prop == null) { throw new Exception($"The field \"{name}\" is not existed."); } EditorGUILayout.PropertyField(prop, displayName != null ? new GUIContent(displayName) : null); if (EditorGUI.EndChangeCheck()) { asset[name] = getValue(); value = asset[name]; return(true); } else { value = asset[name]; return(false); } }
private static void BuildBoltUnitOptions() { DictionaryAsset projectSettings = AssetDatabase.LoadAssetAtPath(PathUtility.FromProject(LudiqCore.Paths.projectSettings), typeof(DictionaryAsset)) as DictionaryAsset; List <LooseAssemblyName> assemblyOptions = projectSettings.dictionary["assemblyOptions"] as List <LooseAssemblyName>; if (!assemblyOptions.Contains("FMODUnity")) { assemblyOptions.Add("FMODUnity"); } if (!assemblyOptions.Contains("FMODUnityResonance")) { assemblyOptions.Add("FMODUnityResonance"); } List <Type> typeOptions = projectSettings.dictionary["typeOptions"] as List <Type>; Assembly fmodUnityAssembly = Assembly.Load("FMODUnity"); Assembly fmodUnityResonanceAssembly = Assembly.Load("FMODUnityResonance"); List <Type> allTypes = new List <Type>(GetTypesForNamespace(fmodUnityAssembly, "FMOD")); allTypes.AddRange(GetTypesForNamespace(fmodUnityAssembly, "FMOD.Studio")); foreach (Type type in allTypes) { if (!typeOptions.Contains(type)) { typeOptions.Add(type); } } UnitBase.Build(); }
public static bool ObjectPropertyField(this DictionaryAsset asset, string name, out object value, string displayName = null) { object objValue; var result = PropertyField(asset, name, displayName, out objValue, () => serializedAsset.FindProperty(name).objectReferenceValue); value = objValue; return(result); }
public static bool BoolPropertyField(this DictionaryAsset asset, string name, out bool value, string displayName = null) { object objValue; var result = PropertyField(asset, name, displayName, out objValue, () => serializedAsset.FindProperty(name).boolValue); value = (bool)objValue; return(result); }
private static void BuildBoltUnitOptions() { #if (UNITY_BOLT_EXIST) DictionaryAsset projectSettings = AssetDatabase.LoadAssetAtPath(PathUtility.FromProject(LudiqCore.Paths.projectSettings), typeof(DictionaryAsset)) as DictionaryAsset; List <LooseAssemblyName> assemblyOptions = projectSettings.dictionary["assemblyOptions"] as List <LooseAssemblyName>; #else List <LooseAssemblyName> assemblyOptions = BoltCore.Configuration.assemblyOptions; #endif if (!assemblyOptions.Contains("FMODUnity")) { assemblyOptions.Add("FMODUnity"); } if (!assemblyOptions.Contains("FMODUnityResonance")) { assemblyOptions.Add("FMODUnityResonance"); } #if (UNITY_BOLT_EXIST) List <Type> typeOptions = projectSettings.dictionary["typeOptions"] as List <Type>; #else List <Type> typeOptions = BoltCore.Configuration.typeOptions; #endif Assembly fmodUnityAssembly = Assembly.Load("FMODUnity"); Assembly fmodUnityResonanceAssembly = Assembly.Load("FMODUnityResonance"); List <Type> allTypes = new List <Type>(GetTypesForNamespace(fmodUnityAssembly, "FMOD")); allTypes.AddRange(GetTypesForNamespace(fmodUnityAssembly, "FMOD.Studio")); foreach (Type type in allTypes) { if (!typeOptions.Contains(type)) { typeOptions.Add(type); } } Codebase.UpdateSettings(); #if (UNITY_BOLT_EXIST) UnitBase.Build(); #else UnitBase.Rebuild(); #endif }
public static bool FloatPropertyField(this DictionaryAsset asset, string name, string displayName = null) { object objValue; return(PropertyField(asset, name, displayName, out objValue, () => serializedAsset.FindProperty(name).floatValue)); }