Compare commits
No commits in common. "b6dbfea4771a9e8d8664095475ba49bb916bd584" and "59c1924fabd58672d48a7a72668f1b29be8afbbd" have entirely different histories.
b6dbfea477
...
59c1924fab
|
@ -12,9 +12,9 @@ namespace Syntriax.Modules.Movement.Config
|
|||
/// </remarks>
|
||||
public class MovementDefinitionFactory : MonoBehaviour
|
||||
{
|
||||
internal const string Name = "Movement Definition Factory";
|
||||
internal const int InitialCapacity = 64;
|
||||
internal const string ResourceDirectoryToDefinitions = "Modules/Syntriax/Movement/Definitions/";
|
||||
private const string Name = "Movement Definition Factory";
|
||||
private const int InitialCapacity = 64;
|
||||
private const string ResourceDirectoryToDefinitions = "Modules/Syntriax/Movement/Definitions/";
|
||||
|
||||
private static MovementDefinitionFactory _instance = null;
|
||||
public static MovementDefinitionFactory Instance
|
||||
|
@ -135,5 +135,14 @@ namespace Syntriax.Modules.Movement.Config
|
|||
foreach (string monoBehaviours in definition.MonoBehaviours)
|
||||
MovementFactory.Instance.AddToGameObject(gameObject, monoBehaviours);
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
public void SaveMovementDefinition(MovementDefinition definition)
|
||||
{
|
||||
string jsonText = JsonUtility.ToJson(definition, true);
|
||||
string path = $"Assets/Resources/{ResourceDirectoryToDefinitions}{definition.Name}.json";
|
||||
System.IO.File.WriteAllText(path, jsonText);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
|
|
@ -67,17 +67,17 @@ namespace Syntriax.Modules.Movement.Config
|
|||
public Component AddToGameObject(GameObject gameObject, string name)
|
||||
{
|
||||
if (!Types.ContainsKey(name))
|
||||
throw new ArgumentException($"The key \"{name}\" does not exists in the current {Name}");
|
||||
throw new ArgumentException($"The key \"{ name }\" does not exists in the current { Name }");
|
||||
|
||||
return gameObject.AddComponent(Types[name]);
|
||||
}
|
||||
|
||||
public static string GetTypeName(Type type)
|
||||
public string GetTypeName(Type type)
|
||||
{
|
||||
if (string.IsNullOrEmpty(type.Namespace))
|
||||
return type.Name;
|
||||
|
||||
return $"{type.Namespace}.{type.Name}";
|
||||
return $"{ type.Namespace }.{ type.Name }";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 2d295c54744337740b623590636ad11a
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,102 +0,0 @@
|
|||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using UnityEditorInternal;
|
||||
using Syntriax.Modules.Movement.Config;
|
||||
|
||||
namespace Syntriax.Modules.Movement.Editor
|
||||
{
|
||||
public class DefinitionCreatorEditor : EditorWindow
|
||||
{
|
||||
ReorderableList list;
|
||||
public MovementDefinition movementDefinition = new MovementDefinition();
|
||||
private SerializedObject serializedObject;
|
||||
|
||||
[MenuItem("Syntriax/Modules/Movement/Definition Creator")]
|
||||
private static void ShowWindow()
|
||||
{
|
||||
var window = GetWindow<DefinitionCreatorEditor>();
|
||||
window.titleContent = new GUIContent("Definition Creator");
|
||||
window.Reset();
|
||||
window.Show();
|
||||
}
|
||||
|
||||
private void Reset()
|
||||
{
|
||||
movementDefinition.Name = "Example Movement Definition";
|
||||
movementDefinition.MovementConfigs = new MovementConfig[] { new MovementConfig(MovementFactory.GetTypeName(typeof(Implementations.GroundMovement1D)), 5f) };
|
||||
movementDefinition.MonoBehaviours = new string[] { MovementFactory.GetTypeName(typeof(MovementController)) };
|
||||
|
||||
serializedObject = new SerializedObject(this);
|
||||
}
|
||||
|
||||
private void OnEnable() => serializedObject = new SerializedObject(this);
|
||||
|
||||
private void OnGUI()
|
||||
{
|
||||
GUILayout.Space(10);
|
||||
|
||||
SerializedProperty movementDefinitionProperty = serializedObject.FindProperty("movementDefinition");
|
||||
SerializedProperty movementName = movementDefinitionProperty.FindPropertyRelative("Name");
|
||||
SerializedProperty movementMovementConfigs = movementDefinitionProperty.FindPropertyRelative("MovementConfigs");
|
||||
SerializedProperty movementMonoBehaviours = movementDefinitionProperty.FindPropertyRelative("MonoBehaviours");
|
||||
|
||||
// EditorGUILayout.PropertyField(movementDefinitionProperty, new GUIContent("New Movement Definition"), true);
|
||||
EditorGUILayout.PropertyField(movementName);
|
||||
EditorGUILayout.PropertyField(movementMovementConfigs, true);
|
||||
EditorGUILayout.PropertyField(movementMonoBehaviours);
|
||||
serializedObject.ApplyModifiedProperties();
|
||||
|
||||
GUILayout.Space(10);
|
||||
|
||||
bool createButtonPressed = GUILayout.Button("Create");
|
||||
GUILayout.Label($"Will be saved to Assets/Resources/{MovementDefinitionFactory.ResourceDirectoryToDefinitions}{movementName.stringValue}.json");
|
||||
|
||||
GUILayout.Space(10);
|
||||
|
||||
GUILayout.Label("Tip: MovementConfigs->TypeName and MonoBehaviours have the same naming system");
|
||||
GUILayout.Label("If under a namespace: \"Namespace.ClassName\"");
|
||||
GUILayout.Label("If not under a namespace: \"ClassName\"");
|
||||
|
||||
if (!createButtonPressed)
|
||||
return;
|
||||
|
||||
if (string.IsNullOrWhiteSpace(movementName.stringValue))
|
||||
{
|
||||
EditorUtility.DisplayDialog("Empty Name Field", "Name field must be not empty", "OK");
|
||||
return;
|
||||
}
|
||||
|
||||
string resourceDirectoryToDefinitions = MovementDefinitionFactory.ResourceDirectoryToDefinitions;
|
||||
string[] folders = resourceDirectoryToDefinitions.Split('/');
|
||||
|
||||
string currentPath = "Assets/Resources";
|
||||
CreateSubFolder("Assets", "Resources");
|
||||
foreach (string folder in folders)
|
||||
{
|
||||
CreateSubFolder(currentPath, folder);
|
||||
currentPath += $"/{folder}";
|
||||
}
|
||||
|
||||
currentPath += $"/{movementName.stringValue}.json";
|
||||
SaveMovementDefinition(movementDefinition);
|
||||
}
|
||||
|
||||
private void CreateSubFolder(string parentFolder, string subFolder)
|
||||
{
|
||||
if (!AssetDatabase.IsValidFolder($"{parentFolder}/{subFolder}"))
|
||||
AssetDatabase.CreateFolder(parentFolder, subFolder);
|
||||
}
|
||||
|
||||
public void SaveMovementDefinition(MovementDefinition definition)
|
||||
{
|
||||
string jsonText = JsonUtility.ToJson(definition, true);
|
||||
string path = $"Assets/Resources/{MovementDefinitionFactory.ResourceDirectoryToDefinitions}{definition.Name}.json";
|
||||
|
||||
if (!EditorUtility.DisplayDialog("Conflict", $"\"{path}\" already exists, do you want to overwrite?", "Overwrite", "Cancel"))
|
||||
return;
|
||||
|
||||
System.IO.File.WriteAllText(path, jsonText);
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 66c563464d207f24999eef31c43f1fc8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1 +1 @@
|
|||
Subproject commit 6afed7407d5d19ca58649b19eaffe24a6b8bab92
|
||||
Subproject commit 463182ab43595e92fcdb5d51be815d13e473c6a3
|
Loading…
Reference in New Issue