Oliver Biwer 1dd2baeaec Better user guidance for working with AtomVariables (#70)
* #69 added custom editor for Variable Types, to guide the usage flow and reduce errors.

* allows unlocking of initialvalue in playmode

* adjustments to Variable Inspector

* Generator now works with all kinds of setups. just select the Packages folder when calling RegenerateAll.
Used this to regenerate the CustomEditors

* supports now structs

* Added RaiseButtons in VariableEditor. #72
Adding simple logging helper on listeners, for fast debugging.

* Call `serializedObject.Update();` before `OnInspectorGUI` in the editor script in order to update old value when changing value.
Show children for PropertyFields for initial and old value.
Some minor refactoring - renaming variables
Clean up in `RegenereateAllAtoms`
Use `OnEnable` instead of `OnAfterDeserialize` when setting inital value for variable. `OnAfterDeserialize` was causing major issues with the custom editor, eg. it did run when focusing a Variable and showing the inspector, basically making it worthless to change or even inspect the Variable at runtime. `OnEnable` is only called ones when the ScriptableObject is loaded in runtime, which is what we really want. This has been tested running in the editor and in builds.
Add missing editors scripts `TouchUserInputVariableEditor`and `SceneFieldVariableEditor`
2019-11-14 12:59:11 +01:00

41 lines
1.3 KiB
C#

using System;
namespace UnityAtoms
{
/// <summary>
/// Internal constant and static readonly members for runtime usage.
/// </summary>
public static class Runtime
{
/// <summary>
/// Runtime constants
/// </summary>
public static class Constants
{
/// <summary>
/// Prefix that should be pre-pended to all Debug.Logs made from UnityAtoms to help immediately inform a user that those logs are made from this library.
/// </summary>
public const string LOG_PREFIX = "UnityAtoms :: ";
}
#if UNITY_EDITOR
private static bool? _isUnityAtomsRepo = false;
#endif
/// <summary>
/// Determine if we are working the Unity Atoms source library / repo or not.
/// </summary>
/// <returns>`true` if we are working in the Unity Atoms source library / repo, otherwise `false`.</returns>
public static bool IsUnityAtomsRepo
{
#if !UNITY_EDITOR
get => System.Environment.CurrentDirectory.Contains("unity-atoms/Examples");
#else
get => (_isUnityAtomsRepo = (_isUnityAtomsRepo ?? System.Environment.CurrentDirectory.Contains("unity-atoms/Examples"))).Value;
set => _isUnityAtomsRepo = value;
#endif
}
}
}