Compare commits
31 Commits
03499d4692
...
master
Author | SHA1 | Date | |
---|---|---|---|
28ad0be11b | |||
9bd1b3cd4a | |||
119cc2c628 | |||
8650d3806b | |||
d98e741a6e | |||
0a6f26461e | |||
a4bb04860c | |||
0fc73f330b | |||
25be6929f2 | |||
d11aab596d | |||
57790c4598 | |||
c903602e3b | |||
c244ddeb98 | |||
e95462af00 | |||
fa521c0e7e | |||
3e7b69db6f | |||
166b67d8be | |||
36ec79c262 | |||
f84502ceb4 | |||
d0a1186142 | |||
7ea16843ed | |||
5e87456f4c | |||
72b3489362 | |||
70edb0e5a1 | |||
fc22863f57 | |||
ca589f1244 | |||
d03fa51010 | |||
c9d8b5617e | |||
df02a4fbd7 | |||
f25a9b676b | |||
4305d26d17 |
6
.gitmodules
vendored
6
.gitmodules
vendored
@@ -1,6 +0,0 @@
|
|||||||
[submodule "ToggleState"]
|
|
||||||
path = ToggleState
|
|
||||||
url = git@git.syntriax.com:Syntriax/ToggleState.git
|
|
||||||
[submodule "Trigger"]
|
|
||||||
path = Trigger
|
|
||||||
url = git@git.syntriax.com:Syntriax/Trigger.git
|
|
||||||
|
@@ -3,6 +3,7 @@ using UnityEditor;
|
|||||||
using UnityEditorInternal;
|
using UnityEditorInternal;
|
||||||
using Syntriax.Modules.Movement.Config;
|
using Syntriax.Modules.Movement.Config;
|
||||||
using System;
|
using System;
|
||||||
|
using Syntriax.Modules.Factory;
|
||||||
|
|
||||||
namespace Syntriax.Modules.Movement.Editor
|
namespace Syntriax.Modules.Movement.Editor
|
||||||
{
|
{
|
||||||
@@ -55,12 +56,12 @@ namespace Syntriax.Modules.Movement.Editor
|
|||||||
|
|
||||||
GUILayout.Space(10);
|
GUILayout.Space(10);
|
||||||
|
|
||||||
GUILayout.Label("Tip: MovementConfigs->TypeName and MonoBehaviours have the same naming system");
|
GUILayout.Label("Tip: MovementConfigs->TypeName and MonoBehaviours use the type.FullName value");
|
||||||
GUILayout.Label("If under a namespace: \"Namespace.ClassName\"");
|
GUILayout.Label("If under a namespace: \"Namespace.ClassName\"");
|
||||||
GUILayout.Label("If not under a namespace: \"ClassName\"");
|
GUILayout.Label("If not under a namespace: \"ClassName\"");
|
||||||
GUILayout.Space(5);
|
GUILayout.Space(5);
|
||||||
GUILayout.Label($"Tip: Apply these to your GameObjects by using {nameof(MovementDefinitionFactory)}");
|
GUILayout.Label($"Tip: Apply these to your GameObjects by using {nameof(MovementDefinitionFactory)} or the {nameof(MovementDefinitionApplier)} component");
|
||||||
GUILayout.Label($"{nameof(MovementDefinitionFactory)}.Instance.ApplyDefinitionToGameObject(\"{movementName.stringValue}\");");
|
GUILayout.Label($"{nameof(FactorySingleton<MovementDefinitionFactory>)}<{nameof(MovementDefinitionFactory)}>.Instance.ApplyDefinitionToGameObject(\"{movementName.stringValue}\");");
|
||||||
|
|
||||||
if (quickPresetButtonPressed) LoadPresetQuick();
|
if (quickPresetButtonPressed) LoadPresetQuick();
|
||||||
if (longerPresetButtonPressed) LoadPresetLonger();
|
if (longerPresetButtonPressed) LoadPresetLonger();
|
||||||
@@ -74,12 +75,12 @@ namespace Syntriax.Modules.Movement.Editor
|
|||||||
|
|
||||||
movementDefinition.MovementConfigs = new MovementConfig[]
|
movementDefinition.MovementConfigs = new MovementConfig[]
|
||||||
{
|
{
|
||||||
new MovementConfig(MovementFactory.GetTypeName(typeof(Implementations.GroundMovement1D)), 5f)
|
new MovementConfig(typeof(Samples.GroundMovement1D).FullName, 5f)
|
||||||
};
|
};
|
||||||
|
|
||||||
movementDefinition.MonoBehaviours = new string[]
|
movementDefinition.MonoBehaviours = new string[]
|
||||||
{
|
{
|
||||||
MovementFactory.GetTypeName(typeof(MovementController))
|
typeof(MovementController).FullName
|
||||||
};
|
};
|
||||||
|
|
||||||
UpdateSerializedObject();
|
UpdateSerializedObject();
|
||||||
@@ -91,14 +92,14 @@ namespace Syntriax.Modules.Movement.Editor
|
|||||||
|
|
||||||
movementDefinition.MovementConfigs = new MovementConfig[]
|
movementDefinition.MovementConfigs = new MovementConfig[]
|
||||||
{
|
{
|
||||||
new MovementConfig(MovementFactory.GetTypeName(typeof(Implementations.AirMovement1D)), 5f),
|
new MovementConfig(typeof(Samples.AirMovement1D).FullName, 5f),
|
||||||
new MovementConfig(MovementFactory.GetTypeName(typeof(Implementations.GroundMovement1D)), 5f)
|
new MovementConfig(typeof(Samples.GroundMovement1D).FullName, 5f)
|
||||||
};
|
};
|
||||||
|
|
||||||
movementDefinition.MonoBehaviours = new string[]
|
movementDefinition.MonoBehaviours = new string[]
|
||||||
{
|
{
|
||||||
MovementFactory.GetTypeName(typeof(MovementController)),
|
typeof(MovementController).FullName,
|
||||||
MovementFactory.GetTypeName(typeof(ToggleState.ToggleStateMonoBehaviour))
|
typeof(State.StateEnableMonoBehaviour).FullName
|
||||||
};
|
};
|
||||||
|
|
||||||
UpdateSerializedObject();
|
UpdateSerializedObject();
|
||||||
@@ -141,8 +142,9 @@ namespace Syntriax.Modules.Movement.Editor
|
|||||||
string jsonText = JsonUtility.ToJson(definition, true);
|
string jsonText = JsonUtility.ToJson(definition, true);
|
||||||
string path = $"Assets/Resources/{MovementDefinitionFactory.ResourceDirectoryToDefinitions}{definition.Name}.json";
|
string path = $"Assets/Resources/{MovementDefinitionFactory.ResourceDirectoryToDefinitions}{definition.Name}.json";
|
||||||
|
|
||||||
if (!EditorUtility.DisplayDialog("Conflict", $"\"{path}\" already exists, do you want to overwrite?", "Overwrite", "Cancel"))
|
if (System.IO.File.Exists($"{Application.dataPath}/Resources/{MovementDefinitionFactory.ResourceDirectoryToDefinitions}{definition.Name}.json"))
|
||||||
return;
|
if (!EditorUtility.DisplayDialog("Conflict", $"\"{path}\" already exists, do you want to overwrite?", "Overwrite", "Cancel"))
|
||||||
|
return;
|
||||||
|
|
||||||
System.IO.File.WriteAllText(path, jsonText);
|
System.IO.File.WriteAllText(path, jsonText);
|
||||||
AssetDatabase.Refresh();
|
AssetDatabase.Refresh();
|
||||||
|
21
Editor/Syntriax.Modules.Movement.Editor.asmdef
Normal file
21
Editor/Syntriax.Modules.Movement.Editor.asmdef
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"name": "Syntriax.Modules.Movement.Editor",
|
||||||
|
"rootNamespace": "",
|
||||||
|
"references": [
|
||||||
|
"GUID:d4c952ed5f59c5a449cda1b0080ed841",
|
||||||
|
"GUID:efa9a9bc94c60c74684aafb7428fbf61",
|
||||||
|
"GUID:c967acc4be781ca44b42a1887eb1ac7a",
|
||||||
|
"GUID:863b8995abde2cf40b8b4cb709452a32"
|
||||||
|
],
|
||||||
|
"includePlatforms": [
|
||||||
|
"Editor"
|
||||||
|
],
|
||||||
|
"excludePlatforms": [],
|
||||||
|
"allowUnsafeCode": false,
|
||||||
|
"overrideReferences": false,
|
||||||
|
"precompiledReferences": [],
|
||||||
|
"autoReferenced": true,
|
||||||
|
"defineConstraints": [],
|
||||||
|
"versionDefines": [],
|
||||||
|
"noEngineReferences": false
|
||||||
|
}
|
7
Editor/Syntriax.Modules.Movement.Editor.asmdef.meta
Normal file
7
Editor/Syntriax.Modules.Movement.Editor.asmdef.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9cf72248c45dc1749bdfa757cd33e109
|
||||||
|
AssemblyDefinitionImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
32
README.md
32
README.md
@@ -1,12 +1,28 @@
|
|||||||
# Movement (Work In Progress)
|
# Movement (Work In Progress)
|
||||||
|
|
||||||
## Dependencies
|
## Installation
|
||||||
1. [ToggleState Module](https://git.syntriax.com/Syntriax/ToggleState)
|
### UPM
|
||||||
2. [Trigger Module](https://git.syntriax.com/Syntriax/Trigger)
|
1. Add the UPM registry. Click on the `Edit` menu, then select `Project settings...`, select `Package Manager`, and add a scoped registry:
|
||||||
|
- Name: `Syntriax`
|
||||||
|
- Url: `https://upm.syntriax.com`
|
||||||
|
- Scopes:
|
||||||
|
- `com.syntriax`
|
||||||
|
|
||||||
Make sure to separately clone these modules along with this one too.
|
The UPM registry also has proxies to OpenUPM, so you can add scopes from there too.
|
||||||
|
|
||||||
Or you can call ```git submodule init``` to get them automatically added (note that this method may cause conflicts if another module also imports one of these submodules too, only use if you are only using the `Movement` module)
|
### Manual
|
||||||
|
1. Navigate into `Package Manager` and press on the `+` button, choose `Add package from git URL...` and add:
|
||||||
|
- `https://git.syntriax.com/Syntriax/State`
|
||||||
|
- `https://git.syntriax.com/Syntriax/Trigger`
|
||||||
|
- `https://git.syntriax.com/Syntriax/Factory`
|
||||||
|
- `https://git.syntriax.com/Syntriax/Movement`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
1. [State Module (https://git.syntriax.com/Syntriax/State)](https://git.syntriax.com/Syntriax/State)
|
||||||
|
2. [Trigger Module (https://git.syntriax.com/Syntriax/Trigger)](https://git.syntriax.com/Syntriax/Trigger)
|
||||||
|
3. [Factory Module (https://git.syntriax.com/Syntriax/Factory)](https://git.syntriax.com/Syntriax/Factory)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -33,17 +49,17 @@ Or you can call ```git submodule init``` to get them automatically added (note t
|
|||||||
#### Longer
|
#### Longer
|
||||||
|
|
||||||
1. Clone the module to a folder in your Assets folder
|
1. Clone the module to a folder in your Assets folder
|
||||||
2. Add `ToggleStateMonoBehaviour` component to your Player `GameObject`
|
2. Add `StateEnableMonoBehaviour` component to your Player `GameObject`
|
||||||
3. Add `MovementController` component to your Player `GameObject`
|
3. Add `MovementController` component to your Player `GameObject`
|
||||||
4. Add `AirMovement1D` component to your Player `GameObject`
|
4. Add `AirMovement1D` component to your Player `GameObject`
|
||||||
5. Add `GroundMovement1D` component to your Player `GameObject` (make sure it's bellow `AirMovement1D`)
|
5. Add `GroundMovement1D` component to your Player `GameObject` (make sure it's bellow `AirMovement1D`)
|
||||||
6. Add a new empty child `GameObject` and add `Box2DColliderTrigger` component to it and place and resize it under the player for ground detection, optionally you can set the `CollisionMask` field on it to make sure it only detects specific layers
|
6. Add a new empty child `GameObject` and add `Box2DGroundTrigger` & `GroundTrigger` component to it and place and resize it under the player for ground detection, optionally you can set the `CollisionMask` field on it to make sure it only detects specific layers
|
||||||
7. Connect your inputs to the `MovementController` ([Example with Input System](#input-system-example))
|
7. Connect your inputs to the `MovementController` ([Example with Input System](#input-system-example))
|
||||||
8. (Optional) Add a jumping script to see the effects better
|
8. (Optional) Add a jumping script to see the effects better
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
This should give you a movement where you can disable the controller through the `IToggleState`, and you should be able to see a the movement changes when the character is not touching the ground.
|
This should give you a movement where you can disable the controller through the `IStateEnable`, and you should be able to see a the movement changes when the character is not touching the ground.
|
||||||
|
|
||||||
You can add your own movement implementations with bases under the `Bases` folder, or straight up from the `IMovement` interface.
|
You can add your own movement implementations with bases under the `Bases` folder, or straight up from the `IMovement` interface.
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 461182bc375cc354bbb3e45db52bdf3f
|
guid: 265853a3d06f03c4b9b926b0bc411285
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
@@ -1,16 +1,18 @@
|
|||||||
using System;
|
using System;
|
||||||
using Syntriax.Modules.ToggleState;
|
using Syntriax.Modules.State;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Syntriax.Modules.Movement
|
namespace Syntriax.Modules.Movement
|
||||||
{
|
{
|
||||||
public abstract class MovementBase : MonoBehaviour, IMovement
|
public abstract class MovementBase : MonoBehaviour, IMovement
|
||||||
{
|
{
|
||||||
protected IToggleState toggleState = null;
|
protected IStateEnable stateEnable = null;
|
||||||
protected IMovementController movementController = null;
|
protected IMovementController movementController = null;
|
||||||
|
|
||||||
public float BaseSpeed { get; set; } = 1f;
|
[SerializeField] private float _baseSpeed = 1f;
|
||||||
public float MovementMultiplier { get; set; } = 1f;
|
public float BaseSpeed { get => _baseSpeed; set => _baseSpeed = value; }
|
||||||
|
[SerializeField] private float _movementMultiplier = 1f;
|
||||||
|
public float MovementMultiplier { get => _movementMultiplier; set => _movementMultiplier = value; }
|
||||||
|
|
||||||
public Action<bool> OnTakeOverStateChanged { get; set; } = null;
|
public Action<bool> OnTakeOverStateChanged { get; set; } = null;
|
||||||
private bool _canTakeOver = false;
|
private bool _canTakeOver = false;
|
||||||
@@ -19,17 +21,14 @@ namespace Syntriax.Modules.Movement
|
|||||||
get => _canTakeOver;
|
get => _canTakeOver;
|
||||||
protected set
|
protected set
|
||||||
{
|
{
|
||||||
bool oldValue = _canTakeOver;
|
if (value == _canTakeOver)
|
||||||
|
return;
|
||||||
|
|
||||||
_canTakeOver = value;
|
_canTakeOver = value;
|
||||||
|
OnTakeOverStateChanged?.Invoke(value);
|
||||||
if (oldValue != value)
|
|
||||||
OnTakeOverStateChanged?.Invoke(value);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IToggleState ToggleState { get; protected set; } = null;
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public abstract void ApplyMovement();
|
public abstract void ApplyMovement();
|
||||||
|
|
||||||
@@ -47,7 +46,7 @@ namespace Syntriax.Modules.Movement
|
|||||||
|
|
||||||
protected virtual void Start()
|
protected virtual void Start()
|
||||||
{
|
{
|
||||||
toggleState = GetComponent<IToggleState>();
|
stateEnable = GetComponent<IStateEnable>();
|
||||||
movementController = GetComponent<IMovementController>();
|
movementController = GetComponent<IMovementController>();
|
||||||
|
|
||||||
movementController.OnMovementActivated += OnActivated;
|
movementController.OnMovementActivated += OnActivated;
|
@@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using Syntriax.Modules.Factory;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Syntriax.Modules.Movement.Config
|
namespace Syntriax.Modules.Movement.Config
|
||||||
@@ -10,44 +11,27 @@ namespace Syntriax.Modules.Movement.Config
|
|||||||
/// <para> Looks for the path specified in the variable <see cref="ResourceDirectoryToDefinitions"/></para>
|
/// <para> Looks for the path specified in the variable <see cref="ResourceDirectoryToDefinitions"/></para>
|
||||||
/// <para> The default path is "Resources/Modules/Syntriax/Movement/Definitions/"</para>
|
/// <para> The default path is "Resources/Modules/Syntriax/Movement/Definitions/"</para>
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
public class MovementDefinitionFactory : MonoBehaviour
|
public class MovementDefinitionFactory : FactoryBase
|
||||||
{
|
{
|
||||||
internal const string Name = "Movement Definition Factory";
|
public const int InitialCapacity = 64;
|
||||||
internal const int InitialCapacity = 64;
|
public const string ResourceDirectoryToDefinitions = "Modules/Syntriax/Movement/Definitions/";
|
||||||
internal const string ResourceDirectoryToDefinitions = "Modules/Syntriax/Movement/Definitions/";
|
|
||||||
|
|
||||||
private static MovementDefinitionFactory _instance = null;
|
|
||||||
public static MovementDefinitionFactory Instance
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (_instance == null)
|
|
||||||
{
|
|
||||||
GameObject factoriesGO = GameObject.Find("Factories") ?? new GameObject("Factories");
|
|
||||||
_instance = new GameObject(Name).AddComponent<MovementDefinitionFactory>();
|
|
||||||
_instance.transform.SetParent(factoriesGO.transform);
|
|
||||||
DontDestroyOnLoad(factoriesGO);
|
|
||||||
}
|
|
||||||
|
|
||||||
return _instance;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Dictionary<string, MovementDefinition> _definitions = null;
|
private Dictionary<string, MovementDefinition> _definitions = null;
|
||||||
public Dictionary<string, MovementDefinition> Definitions
|
public Dictionary<string, MovementDefinition> Definitions
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (_definitions == null)
|
if (!IsInitialized)
|
||||||
Initialize();
|
Initialize();
|
||||||
|
|
||||||
return _definitions;
|
return _definitions;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
if (_instance == this)
|
if (FactorySingleton<MovementDefinitionFactory>.Instance == this)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Destroy(this);
|
Destroy(this);
|
||||||
@@ -60,17 +44,23 @@ namespace Syntriax.Modules.Movement.Config
|
|||||||
/// <para> Automatically loads the definition files specificed path <see cref="ResourceDirectoryToDefinitions"/></para>
|
/// <para> Automatically loads the definition files specificed path <see cref="ResourceDirectoryToDefinitions"/></para>
|
||||||
/// <para> The default is "Resources/Modules/Syntriax/Movement/Definitions/"</para>
|
/// <para> The default is "Resources/Modules/Syntriax/Movement/Definitions/"</para>
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
public void Initialize()
|
protected override void OnFactoryInitialize()
|
||||||
{
|
{
|
||||||
if (_definitions == null)
|
if (_definitions == null)
|
||||||
_definitions = new Dictionary<string, MovementDefinition>(InitialCapacity);
|
_definitions = new Dictionary<string, MovementDefinition>(InitialCapacity);
|
||||||
|
|
||||||
Reset();
|
|
||||||
|
|
||||||
foreach (TextAsset definitionTextAsset in UnityEngine.Resources.LoadAll<TextAsset>(ResourceDirectoryToDefinitions))
|
foreach (TextAsset definitionTextAsset in UnityEngine.Resources.LoadAll<TextAsset>(ResourceDirectoryToDefinitions))
|
||||||
AddToFactoryWithJSON(definitionTextAsset.text);
|
AddToFactoryWithJSON(definitionTextAsset.text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clears all the definitions in the factory
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Does not reinitialize, please call <see cref="Initialize"/> to initialize it back
|
||||||
|
/// </remarks>
|
||||||
|
protected override void OnFactoryReset() => _definitions?.Clear();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Manually registers a <see cref="MovementDefinition"/> to the factory with a JSON <see cref="string"/>
|
/// Manually registers a <see cref="MovementDefinition"/> to the factory with a JSON <see cref="string"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -81,14 +71,6 @@ namespace Syntriax.Modules.Movement.Config
|
|||||||
AddDefinitionToFactory(movementDefinition);
|
AddDefinitionToFactory(movementDefinition);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Clears all the definitions in the factory
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Does not reinitialize, please call <see cref="Initialize"/> to initialize it back
|
|
||||||
/// </remarks>
|
|
||||||
public void Reset() => _definitions?.Clear();
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Registers a list of <see cref="MovementDefinition"/>s to the factory
|
/// Registers a list of <see cref="MovementDefinition"/>s to the factory
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -118,7 +100,7 @@ namespace Syntriax.Modules.Movement.Config
|
|||||||
public void ApplyDefinitionToGameObject(GameObject gameObject, string definitionName)
|
public void ApplyDefinitionToGameObject(GameObject gameObject, string definitionName)
|
||||||
{
|
{
|
||||||
if (!Definitions.ContainsKey(definitionName))
|
if (!Definitions.ContainsKey(definitionName))
|
||||||
throw new System.ArgumentException($"The definition with name \"{definitionName}\" does not exists in the current {Name}");
|
throw new System.ArgumentException($"The definition with name \"{definitionName}\" does not exists in the current {nameof(MovementDefinitionFactory)}");
|
||||||
|
|
||||||
ApplyDefinitionToGameObject(gameObject, Definitions[definitionName]);
|
ApplyDefinitionToGameObject(gameObject, Definitions[definitionName]);
|
||||||
}
|
}
|
||||||
@@ -132,13 +114,13 @@ namespace Syntriax.Modules.Movement.Config
|
|||||||
{
|
{
|
||||||
foreach (MovementConfig movementConfig in definition.MovementConfigs)
|
foreach (MovementConfig movementConfig in definition.MovementConfigs)
|
||||||
{
|
{
|
||||||
IMovement movement = (IMovement)MovementFactory.Instance.AddToGameObject(gameObject, movementConfig.TypeName);
|
IMovement movement = (IMovement)FactorySingleton<MovementFactory>.Instance.AddToGameObject(gameObject, movementConfig.TypeName);
|
||||||
movement.BaseSpeed = movementConfig.BaseSpeed;
|
movement.BaseSpeed = movementConfig.BaseSpeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (definition.MonoBehaviours != null)
|
if (definition.MonoBehaviours != null)
|
||||||
foreach (string monoBehaviours in definition.MonoBehaviours)
|
foreach (string monoBehaviours in definition.MonoBehaviours)
|
||||||
MovementFactory.Instance.AddToGameObject(gameObject, monoBehaviours);
|
FactorySingleton<MovementFactory>.Instance.AddToGameObject(gameObject, monoBehaviours);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -2,38 +2,21 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using Syntriax.Modules.Factory;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Syntriax.Modules.Movement.Config
|
namespace Syntriax.Modules.Movement.Config
|
||||||
{
|
{
|
||||||
public class MovementFactory : MonoBehaviour
|
public class MovementFactory : FactoryBase
|
||||||
{
|
{
|
||||||
private const string Name = "Movement Factory";
|
|
||||||
private const int InitialCapacity = 64;
|
private const int InitialCapacity = 64;
|
||||||
|
|
||||||
private static MovementFactory _instance = null;
|
|
||||||
public static MovementFactory Instance
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
if (_instance == null)
|
|
||||||
{
|
|
||||||
GameObject factoriesGO = GameObject.Find("Factories") ?? new GameObject("Factories");
|
|
||||||
_instance = new GameObject(Name).AddComponent<MovementFactory>();
|
|
||||||
_instance.transform.SetParent(factoriesGO.transform);
|
|
||||||
DontDestroyOnLoad(factoriesGO);
|
|
||||||
}
|
|
||||||
|
|
||||||
return _instance;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Dictionary<string, Type> _types = null;
|
private Dictionary<string, Type> _types = null;
|
||||||
public Dictionary<string, Type> Types
|
public Dictionary<string, Type> Types
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (_types == null)
|
if (!IsInitialized)
|
||||||
Initialize();
|
Initialize();
|
||||||
|
|
||||||
return _types;
|
return _types;
|
||||||
@@ -44,45 +27,35 @@ namespace Syntriax.Modules.Movement.Config
|
|||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
if (_instance == this)
|
if (FactorySingleton<MovementFactory>.Instance == this)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Destroy(this);
|
Destroy(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Initialize()
|
protected override void OnFactoryInitialize()
|
||||||
{
|
{
|
||||||
if (_types == null)
|
if (_types == null)
|
||||||
_types = new Dictionary<string, Type>(InitialCapacity);
|
_types = new Dictionary<string, Type>(InitialCapacity);
|
||||||
|
|
||||||
Reset();
|
|
||||||
|
|
||||||
foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
|
foreach (Assembly assembly in AppDomain.CurrentDomain.GetAssemblies())
|
||||||
AddAssemblyToFactory(assembly);
|
AddAssemblyToFactory(assembly);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Reset() => _types?.Clear();
|
protected override void OnFactoryReset() => _types?.Clear();
|
||||||
|
|
||||||
public void AddAssemblyToFactory(Assembly assembly)
|
public void AddAssemblyToFactory(Assembly assembly)
|
||||||
{
|
{
|
||||||
foreach (Type type in assembly.GetTypes().Where(predicate))
|
foreach (Type type in assembly.GetTypes().Where(predicate))
|
||||||
Types.Add(GetTypeName(type), type);
|
Types.Add(type.FullName, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Component AddToGameObject(GameObject gameObject, string name)
|
public Component AddToGameObject(GameObject gameObject, string name)
|
||||||
{
|
{
|
||||||
if (!Types.ContainsKey(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 {nameof(MovementFactory)}");
|
||||||
|
|
||||||
return gameObject.AddComponent(Types[name]);
|
return gameObject.AddComponent(Types[name]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string GetTypeName(Type type)
|
|
||||||
{
|
|
||||||
if (string.IsNullOrEmpty(type.Namespace))
|
|
||||||
return type.Name;
|
|
||||||
|
|
||||||
return $"{type.Namespace}.{type.Name}";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,7 +1,10 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Syntriax.Modules.Movement.Implementations
|
namespace Syntriax.Modules.Movement
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// A <see cref="IMovement" with no implementation, added by <see cref="MovementController" by default as a fallback implementation/>/>
|
||||||
|
/// </summary>
|
||||||
public class DefaultMovement : MovementBase
|
public class DefaultMovement : MovementBase
|
||||||
{
|
{
|
||||||
public override void ApplyMovement() { }
|
public override void ApplyMovement() { }
|
@@ -1,10 +1,16 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using Syntriax.Modules.State;
|
||||||
|
|
||||||
namespace Syntriax.Modules.Movement
|
namespace Syntriax.Modules.Movement
|
||||||
{
|
{
|
||||||
public interface IMovementController
|
public interface IMovementController
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// <see cref="IStateEnable"/> to control the state of the <see cref="IMovementController"/> is on or off
|
||||||
|
/// </summary>
|
||||||
|
IStateEnable StateEnable { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Currently active <see cref="IMovement"/>
|
/// Currently active <see cref="IMovement"/>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -27,6 +33,12 @@ namespace Syntriax.Modules.Movement
|
|||||||
/// <value>Actived <see cref="IMovement"/></value>
|
/// <value>Actived <see cref="IMovement"/></value>
|
||||||
Action<IMovement> OnMovementActivated { get; set; }
|
Action<IMovement> OnMovementActivated { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Called when <see cref="Move"/> is called
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The x, y, z values of <see cref="Move"/></value>
|
||||||
|
Action<float, float, float> OnMoveCalled { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Updates the <see cref="Movements"/> list
|
/// Updates the <see cref="Movements"/> list
|
||||||
/// </summary>
|
/// </summary>
|
@@ -8,12 +8,12 @@ namespace Syntriax.Modules.Movement
|
|||||||
/// Calls <see cref="IMovementController.Move"/> with a <see cref="Vector2"/>'s values accordingly, leaving the z parameter 0
|
/// Calls <see cref="IMovementController.Move"/> with a <see cref="Vector2"/>'s values accordingly, leaving the z parameter 0
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static void Move(this IMovementController movementController, Vector2 moveVector)
|
public static void Move(this IMovementController movementController, Vector2 moveVector)
|
||||||
=> movementController.ActiveMovement?.Move(moveVector.x, moveVector.y, 0f);
|
=> movementController.Move(moveVector.x, moveVector.y, 0f);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Calls <see cref="IMovementController.Move"/> with a <see cref="Vector3"/>'s values accordingly
|
/// Calls <see cref="IMovementController.Move"/> with a <see cref="Vector3"/>'s values accordingly
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static void Move(this IMovementController movementController, Vector3 moveVector)
|
public static void Move(this IMovementController movementController, Vector3 moveVector)
|
||||||
=> movementController.ActiveMovement?.Move(moveVector.x, moveVector.y, moveVector.z);
|
=> movementController.Move(moveVector.x, moveVector.y, moveVector.z);
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,12 +1,14 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using Syntriax.Modules.ToggleState;
|
using Syntriax.Modules.State;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Syntriax.Modules.Movement
|
namespace Syntriax.Modules.Movement
|
||||||
{
|
{
|
||||||
public class MovementController : MonoBehaviour, IMovementController
|
public class MovementController : MonoBehaviour, IMovementController
|
||||||
{
|
{
|
||||||
|
public Action<float, float, float> OnMoveCalled { get; set; } = null;
|
||||||
|
|
||||||
public Action<IMovement> OnMovementDeactivated { get; set; } = null;
|
public Action<IMovement> OnMovementDeactivated { get; set; } = null;
|
||||||
public Action<IMovement> OnMovementActivated { get; set; } = null;
|
public Action<IMovement> OnMovementActivated { get; set; } = null;
|
||||||
|
|
||||||
@@ -29,25 +31,32 @@ namespace Syntriax.Modules.Movement
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<IMovement> Movements { get; protected set; } = null;
|
public List<IMovement> Movements { get; protected set; } = new List<IMovement>(32);
|
||||||
|
|
||||||
protected IToggleState toggleState = null;
|
private IStateEnable _stateEnable = null;
|
||||||
|
public IStateEnable StateEnable
|
||||||
protected virtual void Awake()
|
{
|
||||||
=> Movements = new List<IMovement>(32);
|
get
|
||||||
|
{
|
||||||
|
_stateEnable = _stateEnable ?? GetComponent<State.IStateEnable>() ?? gameObject.AddComponent<State.StateEnableMonoBehaviour>();
|
||||||
|
return _stateEnable;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected virtual void Start()
|
protected virtual void Start()
|
||||||
{
|
{
|
||||||
if (GetComponent<Implementations.DefaultMovement>() == null)
|
if (GetComponent<DefaultMovement>() == null)
|
||||||
gameObject.AddComponent<Implementations.DefaultMovement>();
|
gameObject.AddComponent<DefaultMovement>();
|
||||||
|
|
||||||
RecacheMovements();
|
RecacheMovements();
|
||||||
toggleState = GetComponent<IToggleState>();
|
|
||||||
|
StateEnable.OnEnabledChanged += (_) => InvokeOnMoveAction();
|
||||||
|
OnMovementActivated += (newMovement) => newMovement.Move(lastMove);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void FixedUpdate()
|
protected virtual void FixedUpdate()
|
||||||
{
|
{
|
||||||
if (!toggleState.IsToggledNullChecked())
|
if (!StateEnable.IsEnabledNullChecked())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ActiveMovement?.ApplyMovement();
|
ActiveMovement?.ApplyMovement();
|
||||||
@@ -78,7 +87,22 @@ namespace Syntriax.Modules.Movement
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Vector3 lastMove = Vector3.zero;
|
||||||
|
|
||||||
public void Move(float x = 0, float y = 0, float z = 0)
|
public void Move(float x = 0, float y = 0, float z = 0)
|
||||||
=> ActiveMovement?.Move(x, y, z);
|
{
|
||||||
|
ActiveMovement?.Move(x, y, z);
|
||||||
|
(lastMove.x, lastMove.y, lastMove.z) = (x, y, z);
|
||||||
|
|
||||||
|
InvokeOnMoveAction();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InvokeOnMoveAction()
|
||||||
|
{
|
||||||
|
if (!StateEnable.IsEnabledNullChecked())
|
||||||
|
return;
|
||||||
|
|
||||||
|
OnMoveCalled?.Invoke(lastMove.x, lastMove.y, lastMove.z);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using Syntriax.Modules.Factory;
|
||||||
using Syntriax.Modules.Movement.Config;
|
using Syntriax.Modules.Movement.Config;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
@@ -25,7 +26,7 @@ namespace Syntriax.Modules.Movement
|
|||||||
{
|
{
|
||||||
RemoveDefinition();
|
RemoveDefinition();
|
||||||
|
|
||||||
MovementDefinitionFactory.Instance.ApplyDefinitionToGameObject(gameObject, definitionName);
|
FactorySingleton<MovementDefinitionFactory>.Instance.ApplyDefinitionToGameObject(gameObject, definitionName);
|
||||||
appliedDefinitionName = definitionName;
|
appliedDefinitionName = definitionName;
|
||||||
OnMovementDefinitionApplied?.Invoke(gameObject);
|
OnMovementDefinitionApplied?.Invoke(gameObject);
|
||||||
}
|
}
|
||||||
@@ -34,7 +35,7 @@ namespace Syntriax.Modules.Movement
|
|||||||
{
|
{
|
||||||
RemoveDefinition();
|
RemoveDefinition();
|
||||||
|
|
||||||
MovementDefinitionFactory.Instance.ApplyDefinitionToGameObject(gameObject, definition);
|
FactorySingleton<MovementDefinitionFactory>.Instance.ApplyDefinitionToGameObject(gameObject, definition);
|
||||||
appliedDefinitionName = definition.Name;
|
appliedDefinitionName = definition.Name;
|
||||||
OnMovementDefinitionApplied?.Invoke(gameObject);
|
OnMovementDefinitionApplied?.Invoke(gameObject);
|
||||||
}
|
}
|
||||||
@@ -44,20 +45,20 @@ namespace Syntriax.Modules.Movement
|
|||||||
if (string.IsNullOrWhiteSpace(appliedDefinitionName))
|
if (string.IsNullOrWhiteSpace(appliedDefinitionName))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
MovementDefinition appliedDefinition = MovementDefinitionFactory.Instance.Definitions[appliedDefinitionName];
|
MovementDefinition appliedDefinition = FactorySingleton<MovementDefinitionFactory>.Instance.Definitions[appliedDefinitionName];
|
||||||
if (appliedDefinition.MovementConfigs == null || appliedDefinition.MonoBehaviours == null)
|
if (appliedDefinition.MovementConfigs == null || appliedDefinition.MonoBehaviours == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
foreach (MovementConfig movementConfig in appliedDefinition.MovementConfigs)
|
foreach (MovementConfig movementConfig in appliedDefinition.MovementConfigs)
|
||||||
{
|
{
|
||||||
Type type = MovementFactory.Instance.Types[movementConfig.TypeName];
|
Type type = FactorySingleton<MovementFactory>.Instance.Types[movementConfig.TypeName];
|
||||||
if (TryGetComponent(type, out Component component))
|
if (TryGetComponent(type, out Component component))
|
||||||
Destroy(component);
|
Destroy(component);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (string monoBehaviour in appliedDefinition.MonoBehaviours)
|
foreach (string monoBehaviour in appliedDefinition.MonoBehaviours)
|
||||||
{
|
{
|
||||||
Type type = MovementFactory.Instance.Types[monoBehaviour];
|
Type type = FactorySingleton<MovementFactory>.Instance.Types[monoBehaviour];
|
||||||
if (TryGetComponent(type, out Component component))
|
if (TryGetComponent(type, out Component component))
|
||||||
Destroy(component);
|
Destroy(component);
|
||||||
}
|
}
|
@@ -2,9 +2,9 @@
|
|||||||
"name": "Syntriax.Modules.Movement",
|
"name": "Syntriax.Modules.Movement",
|
||||||
"rootNamespace": "",
|
"rootNamespace": "",
|
||||||
"references": [
|
"references": [
|
||||||
"GUID:75469ad4d38634e559750d17036d5f7c",
|
|
||||||
"GUID:efa9a9bc94c60c74684aafb7428fbf61",
|
"GUID:efa9a9bc94c60c74684aafb7428fbf61",
|
||||||
"GUID:1f5f15fe7e49bdb48a76c5ce9b1c9f2f"
|
"GUID:1f5f15fe7e49bdb48a76c5ce9b1c9f2f",
|
||||||
|
"GUID:d4c952ed5f59c5a449cda1b0080ed841"
|
||||||
],
|
],
|
||||||
"includePlatforms": [],
|
"includePlatforms": [],
|
||||||
"excludePlatforms": [],
|
"excludePlatforms": [],
|
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 6756a6e4e4a43f340b4ce48f3adb3038
|
guid: 231b2d16dd7862d41bc2111d759f6ca2
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 15528ebd51d27d54398c55826710f23e
|
guid: 65b5d2a8df8888642939b2395c63a554
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
8
Samples/2D/Scene.meta
Normal file
8
Samples/2D/Scene.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1b2acded463f8444cb723331931d27c2
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
636
Samples/2D/Scene/Sample.unity
Normal file
636
Samples/2D/Scene/Sample.unity
Normal file
@@ -0,0 +1,636 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!29 &1
|
||||||
|
OcclusionCullingSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_OcclusionBakeSettings:
|
||||||
|
smallestOccluder: 5
|
||||||
|
smallestHole: 0.25
|
||||||
|
backfaceThreshold: 100
|
||||||
|
m_SceneGUID: 00000000000000000000000000000000
|
||||||
|
m_OcclusionCullingData: {fileID: 0}
|
||||||
|
--- !u!104 &2
|
||||||
|
RenderSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 9
|
||||||
|
m_Fog: 0
|
||||||
|
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
||||||
|
m_FogMode: 3
|
||||||
|
m_FogDensity: 0.01
|
||||||
|
m_LinearFogStart: 0
|
||||||
|
m_LinearFogEnd: 300
|
||||||
|
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
||||||
|
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
||||||
|
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
||||||
|
m_AmbientIntensity: 1
|
||||||
|
m_AmbientMode: 3
|
||||||
|
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
||||||
|
m_SkyboxMaterial: {fileID: 0}
|
||||||
|
m_HaloStrength: 0.5
|
||||||
|
m_FlareStrength: 1
|
||||||
|
m_FlareFadeSpeed: 3
|
||||||
|
m_HaloTexture: {fileID: 0}
|
||||||
|
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
||||||
|
m_DefaultReflectionMode: 0
|
||||||
|
m_DefaultReflectionResolution: 128
|
||||||
|
m_ReflectionBounces: 1
|
||||||
|
m_ReflectionIntensity: 1
|
||||||
|
m_CustomReflection: {fileID: 0}
|
||||||
|
m_Sun: {fileID: 0}
|
||||||
|
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
m_UseRadianceAmbientProbe: 0
|
||||||
|
--- !u!157 &3
|
||||||
|
LightmapSettings:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 12
|
||||||
|
m_GIWorkflowMode: 1
|
||||||
|
m_GISettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_BounceScale: 1
|
||||||
|
m_IndirectOutputScale: 1
|
||||||
|
m_AlbedoBoost: 1
|
||||||
|
m_EnvironmentLightingMode: 0
|
||||||
|
m_EnableBakedLightmaps: 0
|
||||||
|
m_EnableRealtimeLightmaps: 0
|
||||||
|
m_LightmapEditorSettings:
|
||||||
|
serializedVersion: 12
|
||||||
|
m_Resolution: 2
|
||||||
|
m_BakeResolution: 40
|
||||||
|
m_AtlasSize: 1024
|
||||||
|
m_AO: 0
|
||||||
|
m_AOMaxDistance: 1
|
||||||
|
m_CompAOExponent: 1
|
||||||
|
m_CompAOExponentDirect: 0
|
||||||
|
m_ExtractAmbientOcclusion: 0
|
||||||
|
m_Padding: 2
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_LightmapsBakeMode: 1
|
||||||
|
m_TextureCompression: 1
|
||||||
|
m_FinalGather: 0
|
||||||
|
m_FinalGatherFiltering: 1
|
||||||
|
m_FinalGatherRayCount: 256
|
||||||
|
m_ReflectionCompression: 2
|
||||||
|
m_MixedBakeMode: 2
|
||||||
|
m_BakeBackend: 1
|
||||||
|
m_PVRSampling: 1
|
||||||
|
m_PVRDirectSampleCount: 32
|
||||||
|
m_PVRSampleCount: 512
|
||||||
|
m_PVRBounces: 2
|
||||||
|
m_PVREnvironmentSampleCount: 256
|
||||||
|
m_PVREnvironmentReferencePointCount: 2048
|
||||||
|
m_PVRFilteringMode: 1
|
||||||
|
m_PVRDenoiserTypeDirect: 1
|
||||||
|
m_PVRDenoiserTypeIndirect: 1
|
||||||
|
m_PVRDenoiserTypeAO: 1
|
||||||
|
m_PVRFilterTypeDirect: 0
|
||||||
|
m_PVRFilterTypeIndirect: 0
|
||||||
|
m_PVRFilterTypeAO: 0
|
||||||
|
m_PVREnvironmentMIS: 1
|
||||||
|
m_PVRCulling: 1
|
||||||
|
m_PVRFilteringGaussRadiusDirect: 1
|
||||||
|
m_PVRFilteringGaussRadiusIndirect: 5
|
||||||
|
m_PVRFilteringGaussRadiusAO: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
||||||
|
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
||||||
|
m_PVRFilteringAtrousPositionSigmaAO: 1
|
||||||
|
m_ExportTrainingData: 0
|
||||||
|
m_TrainingDataDestination: TrainingData
|
||||||
|
m_LightProbeSampleCountMultiplier: 4
|
||||||
|
m_LightingDataAsset: {fileID: 0}
|
||||||
|
m_LightingSettings: {fileID: 0}
|
||||||
|
--- !u!196 &4
|
||||||
|
NavMeshSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_BuildSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
agentTypeID: 0
|
||||||
|
agentRadius: 0.5
|
||||||
|
agentHeight: 2
|
||||||
|
agentSlope: 45
|
||||||
|
agentClimb: 0.4
|
||||||
|
ledgeDropHeight: 0
|
||||||
|
maxJumpAcrossDistance: 0
|
||||||
|
minRegionArea: 2
|
||||||
|
manualCellSize: 0
|
||||||
|
cellSize: 0.16666667
|
||||||
|
manualTileSize: 0
|
||||||
|
tileSize: 256
|
||||||
|
accuratePlacement: 0
|
||||||
|
maxJobWorkers: 0
|
||||||
|
preserveTilesOutsideBounds: 0
|
||||||
|
debug:
|
||||||
|
m_Flags: 0
|
||||||
|
m_NavMeshData: {fileID: 0}
|
||||||
|
--- !u!1 &221828166
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 221828172}
|
||||||
|
- component: {fileID: 221828169}
|
||||||
|
- component: {fileID: 221828170}
|
||||||
|
- component: {fileID: 221828168}
|
||||||
|
- component: {fileID: 221828167}
|
||||||
|
- component: {fileID: 221828173}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Player
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &221828167
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 221828166}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 10b59caf08f3e2d4b94eb72b7885346d, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_baseSpeed: 5
|
||||||
|
_movementMultiplier: 1
|
||||||
|
--- !u!114 &221828168
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 221828166}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 69ca5998eb951b64499b111100275018, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_baseSpeed: 1
|
||||||
|
_movementMultiplier: 1
|
||||||
|
--- !u!50 &221828169
|
||||||
|
Rigidbody2D:
|
||||||
|
serializedVersion: 4
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 221828166}
|
||||||
|
m_BodyType: 0
|
||||||
|
m_Simulated: 1
|
||||||
|
m_UseFullKinematicContacts: 0
|
||||||
|
m_UseAutoMass: 0
|
||||||
|
m_Mass: 1
|
||||||
|
m_LinearDrag: 0
|
||||||
|
m_AngularDrag: 0.05
|
||||||
|
m_GravityScale: 1
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_Interpolate: 0
|
||||||
|
m_SleepingMode: 1
|
||||||
|
m_CollisionDetection: 0
|
||||||
|
m_Constraints: 0
|
||||||
|
--- !u!114 &221828170
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 221828166}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e5a74cc1b761aae448c854eb652fcc13, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
--- !u!4 &221828172
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 221828166}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 2, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 332317891}
|
||||||
|
- {fileID: 924263135}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 2
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &221828173
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 221828166}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c3737b1292e46ab4ba2a2c139a8c2ef2, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
--- !u!1 &332317890
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 332317891}
|
||||||
|
- component: {fileID: 332317893}
|
||||||
|
- component: {fileID: 332317892}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Square
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &332317891
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 332317890}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 221828172}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!61 &332317892
|
||||||
|
BoxCollider2D:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 332317890}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_Density: 1
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_IsTrigger: 0
|
||||||
|
m_UsedByEffector: 0
|
||||||
|
m_UsedByComposite: 0
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_SpriteTilingProperty:
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
oldSize: {x: 1, y: 1}
|
||||||
|
newSize: {x: 1, y: 1}
|
||||||
|
adaptiveTilingThreshold: 0.5
|
||||||
|
drawMode: 0
|
||||||
|
adaptiveTiling: 0
|
||||||
|
m_AutoTiling: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Size: {x: 1, y: 1}
|
||||||
|
m_EdgeRadius: 0
|
||||||
|
--- !u!212 &332317893
|
||||||
|
SpriteRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 332317890}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_CastShadows: 0
|
||||||
|
m_ReceiveShadows: 0
|
||||||
|
m_DynamicOccludee: 1
|
||||||
|
m_StaticShadowCaster: 0
|
||||||
|
m_MotionVectors: 1
|
||||||
|
m_LightProbeUsage: 1
|
||||||
|
m_ReflectionProbeUsage: 1
|
||||||
|
m_RayTracingMode: 0
|
||||||
|
m_RayTraceProcedural: 0
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_RendererPriority: 0
|
||||||
|
m_Materials:
|
||||||
|
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
|
||||||
|
m_StaticBatchInfo:
|
||||||
|
firstSubMesh: 0
|
||||||
|
subMeshCount: 0
|
||||||
|
m_StaticBatchRoot: {fileID: 0}
|
||||||
|
m_ProbeAnchor: {fileID: 0}
|
||||||
|
m_LightProbeVolumeOverride: {fileID: 0}
|
||||||
|
m_ScaleInLightmap: 1
|
||||||
|
m_ReceiveGI: 1
|
||||||
|
m_PreserveUVs: 0
|
||||||
|
m_IgnoreNormalsForChartDetection: 0
|
||||||
|
m_ImportantGI: 0
|
||||||
|
m_StitchLightmapSeams: 1
|
||||||
|
m_SelectedEditorRenderState: 0
|
||||||
|
m_MinimumChartSize: 4
|
||||||
|
m_AutoUVMaxDistance: 0.5
|
||||||
|
m_AutoUVMaxAngle: 89
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_SortingLayerID: 0
|
||||||
|
m_SortingLayer: 0
|
||||||
|
m_SortingOrder: 0
|
||||||
|
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_FlipX: 0
|
||||||
|
m_FlipY: 0
|
||||||
|
m_DrawMode: 0
|
||||||
|
m_Size: {x: 1, y: 1}
|
||||||
|
m_AdaptiveModeThreshold: 0.5
|
||||||
|
m_SpriteTileMode: 0
|
||||||
|
m_WasSpriteAssigned: 1
|
||||||
|
m_MaskInteraction: 0
|
||||||
|
m_SpriteSortPoint: 0
|
||||||
|
--- !u!1 &756791934
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 756791938}
|
||||||
|
- component: {fileID: 756791937}
|
||||||
|
- component: {fileID: 756791936}
|
||||||
|
- component: {fileID: 756791935}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Camera
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!114 &756791935
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 756791934}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
m_RenderShadows: 1
|
||||||
|
m_RequiresDepthTextureOption: 2
|
||||||
|
m_RequiresOpaqueTextureOption: 2
|
||||||
|
m_CameraType: 0
|
||||||
|
m_Cameras: []
|
||||||
|
m_RendererIndex: -1
|
||||||
|
m_VolumeLayerMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 1
|
||||||
|
m_VolumeTrigger: {fileID: 0}
|
||||||
|
m_VolumeFrameworkUpdateModeOption: 2
|
||||||
|
m_RenderPostProcessing: 0
|
||||||
|
m_Antialiasing: 0
|
||||||
|
m_AntialiasingQuality: 2
|
||||||
|
m_StopNaN: 0
|
||||||
|
m_Dithering: 0
|
||||||
|
m_ClearDepth: 1
|
||||||
|
m_AllowXRRendering: 1
|
||||||
|
m_RequiresDepthTexture: 0
|
||||||
|
m_RequiresColorTexture: 0
|
||||||
|
m_Version: 2
|
||||||
|
--- !u!81 &756791936
|
||||||
|
AudioListener:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 756791934}
|
||||||
|
m_Enabled: 1
|
||||||
|
--- !u!20 &756791937
|
||||||
|
Camera:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 756791934}
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_ClearFlags: 1
|
||||||
|
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||||
|
m_projectionMatrixMode: 1
|
||||||
|
m_GateFitMode: 2
|
||||||
|
m_FOVAxisMode: 0
|
||||||
|
m_SensorSize: {x: 36, y: 24}
|
||||||
|
m_LensShift: {x: 0, y: 0}
|
||||||
|
m_FocalLength: 50
|
||||||
|
m_NormalizedViewPortRect:
|
||||||
|
serializedVersion: 2
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
width: 1
|
||||||
|
height: 1
|
||||||
|
near clip plane: 0.3
|
||||||
|
far clip plane: 1000
|
||||||
|
field of view: 60
|
||||||
|
orthographic: 1
|
||||||
|
orthographic size: 5
|
||||||
|
m_Depth: 0
|
||||||
|
m_CullingMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
m_RenderingPath: -1
|
||||||
|
m_TargetTexture: {fileID: 0}
|
||||||
|
m_TargetDisplay: 0
|
||||||
|
m_TargetEye: 3
|
||||||
|
m_HDR: 1
|
||||||
|
m_AllowMSAA: 1
|
||||||
|
m_AllowDynamicResolution: 0
|
||||||
|
m_ForceIntoRT: 0
|
||||||
|
m_OcclusionCulling: 1
|
||||||
|
m_StereoConvergence: 10
|
||||||
|
m_StereoSeparation: 0.022
|
||||||
|
--- !u!4 &756791938
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 756791934}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: -10}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &783353104
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 783353107}
|
||||||
|
- component: {fileID: 783353106}
|
||||||
|
- component: {fileID: 783353105}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Square
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 2147483647
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!61 &783353105
|
||||||
|
BoxCollider2D:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 783353104}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_Density: 1
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_IsTrigger: 0
|
||||||
|
m_UsedByEffector: 0
|
||||||
|
m_UsedByComposite: 0
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_SpriteTilingProperty:
|
||||||
|
border: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
pivot: {x: 0.5, y: 0.5}
|
||||||
|
oldSize: {x: 1, y: 1}
|
||||||
|
newSize: {x: 1, y: 1}
|
||||||
|
adaptiveTilingThreshold: 0.5
|
||||||
|
drawMode: 0
|
||||||
|
adaptiveTiling: 0
|
||||||
|
m_AutoTiling: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Size: {x: 1, y: 1}
|
||||||
|
m_EdgeRadius: 0
|
||||||
|
--- !u!212 &783353106
|
||||||
|
SpriteRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 783353104}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_CastShadows: 0
|
||||||
|
m_ReceiveShadows: 0
|
||||||
|
m_DynamicOccludee: 1
|
||||||
|
m_StaticShadowCaster: 0
|
||||||
|
m_MotionVectors: 1
|
||||||
|
m_LightProbeUsage: 1
|
||||||
|
m_ReflectionProbeUsage: 1
|
||||||
|
m_RayTracingMode: 0
|
||||||
|
m_RayTraceProcedural: 0
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_RendererPriority: 0
|
||||||
|
m_Materials:
|
||||||
|
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
|
||||||
|
m_StaticBatchInfo:
|
||||||
|
firstSubMesh: 0
|
||||||
|
subMeshCount: 0
|
||||||
|
m_StaticBatchRoot: {fileID: 0}
|
||||||
|
m_ProbeAnchor: {fileID: 0}
|
||||||
|
m_LightProbeVolumeOverride: {fileID: 0}
|
||||||
|
m_ScaleInLightmap: 1
|
||||||
|
m_ReceiveGI: 1
|
||||||
|
m_PreserveUVs: 0
|
||||||
|
m_IgnoreNormalsForChartDetection: 0
|
||||||
|
m_ImportantGI: 0
|
||||||
|
m_StitchLightmapSeams: 1
|
||||||
|
m_SelectedEditorRenderState: 0
|
||||||
|
m_MinimumChartSize: 4
|
||||||
|
m_AutoUVMaxDistance: 0.5
|
||||||
|
m_AutoUVMaxAngle: 89
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_SortingLayerID: 0
|
||||||
|
m_SortingLayer: 0
|
||||||
|
m_SortingOrder: 0
|
||||||
|
m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, type: 3}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_FlipX: 0
|
||||||
|
m_FlipY: 0
|
||||||
|
m_DrawMode: 0
|
||||||
|
m_Size: {x: 1, y: 1}
|
||||||
|
m_AdaptiveModeThreshold: 0.5
|
||||||
|
m_SpriteTileMode: 0
|
||||||
|
m_WasSpriteAssigned: 1
|
||||||
|
m_MaskInteraction: 0
|
||||||
|
m_SpriteSortPoint: 0
|
||||||
|
--- !u!4 &783353107
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 783353104}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 10, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 1
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &924263134
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 924263135}
|
||||||
|
- component: {fileID: 924263136}
|
||||||
|
- component: {fileID: 924263137}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Ground
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &924263135
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 924263134}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: -0.65, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 0.2, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 221828172}
|
||||||
|
m_RootOrder: 1
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &924263136
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 924263134}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 4b3db9faa3a5e9f4db37172c452dbf2a, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
colliderMask:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Bits: 4294967295
|
||||||
|
--- !u!114 &924263137
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 924263134}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 91a5b9cf888de6f4da572ac875fc826c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
7
Samples/2D/Scene/Sample.unity.meta
Normal file
7
Samples/2D/Scene/Sample.unity.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cb7dbd426de18f54c9df9922768b1a6f
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
8
Samples/2D/Scripts.meta
Normal file
8
Samples/2D/Scripts.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 53fb73867b202d4438ab1213be0e9ce2
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@@ -1,7 +1,7 @@
|
|||||||
using Syntriax.Modules.Trigger;
|
using Syntriax.Modules.Trigger;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Syntriax.Modules.Movement.Implementations
|
namespace Syntriax.Modules.Movement.Samples
|
||||||
{
|
{
|
||||||
[RequireComponent(typeof(Rigidbody2D))]
|
[RequireComponent(typeof(Rigidbody2D))]
|
||||||
public class AirMovement1D : MovementBase1D
|
public class AirMovement1D : MovementBase1D
|
||||||
@@ -14,12 +14,12 @@ namespace Syntriax.Modules.Movement.Implementations
|
|||||||
{
|
{
|
||||||
base.Start();
|
base.Start();
|
||||||
|
|
||||||
rigid = GetComponent<Rigidbody2D>();
|
rigid = GetComponentInParent<Rigidbody2D>();
|
||||||
groundTrigger = GetComponentInChildren<IGroundTrigger>();
|
groundTrigger = GetComponentInChildren<IGroundTrigger>();
|
||||||
|
|
||||||
if (groundTrigger != null)
|
if (groundTrigger != null)
|
||||||
{
|
{
|
||||||
groundTrigger.OnTriggered += OnGroundTrigger;
|
groundTrigger.OnTriggerStateChanged += OnGroundTrigger;
|
||||||
CanTakeOver = false;
|
CanTakeOver = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -33,12 +33,8 @@ namespace Syntriax.Modules.Movement.Implementations
|
|||||||
velocity.x += moveValue * Time.fixedDeltaTime;
|
velocity.x += moveValue * Time.fixedDeltaTime;
|
||||||
|
|
||||||
if (moveValue != 0f)
|
if (moveValue != 0f)
|
||||||
{
|
|
||||||
if (Mathf.Abs(velocity.x) > Mathf.Abs(moveValue))
|
if (Mathf.Abs(velocity.x) > Mathf.Abs(moveValue))
|
||||||
velocity.x = moveValue;
|
velocity.x *= .95f;
|
||||||
else if (Mathf.Abs(velocity.x - moveValue) > Mathf.Abs(moveValue))
|
|
||||||
velocity.x += moveValue * Time.fixedDeltaTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
rigid.velocity = velocity;
|
rigid.velocity = velocity;
|
||||||
}
|
}
|
@@ -1,8 +1,9 @@
|
|||||||
using Syntriax.Modules.Trigger;
|
using Syntriax.Modules.Trigger;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Syntriax.Modules.Movement.Implementations
|
namespace Syntriax.Modules.Movement.Samples
|
||||||
{
|
{
|
||||||
|
[System.Serializable]
|
||||||
[RequireComponent(typeof(Rigidbody2D))]
|
[RequireComponent(typeof(Rigidbody2D))]
|
||||||
public class GroundMovement1D : MovementBase1D
|
public class GroundMovement1D : MovementBase1D
|
||||||
{
|
{
|
||||||
@@ -16,12 +17,12 @@ namespace Syntriax.Modules.Movement.Implementations
|
|||||||
{
|
{
|
||||||
base.Start();
|
base.Start();
|
||||||
|
|
||||||
rigid = GetComponent<Rigidbody2D>();
|
rigid = GetComponentInParent<Rigidbody2D>();
|
||||||
groundTrigger = GetComponentInChildren<IGroundTrigger>();
|
groundTrigger = GetComponentInChildren<IGroundTrigger>();
|
||||||
|
|
||||||
if (groundTrigger != null)
|
if (groundTrigger != null)
|
||||||
{
|
{
|
||||||
groundTrigger.OnTriggered += OnGroundTrigger;
|
groundTrigger.OnTriggerStateChanged += OnGroundTrigger;
|
||||||
CanTakeOver = false;
|
CanTakeOver = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
40
Samples/2D/Scripts/MovementInputSample.cs
Normal file
40
Samples/2D/Scripts/MovementInputSample.cs
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
using System;
|
||||||
|
using Syntriax.Modules.Trigger;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Syntriax.Modules.Movement.Samples
|
||||||
|
{
|
||||||
|
public class MovementInputSample : MonoBehaviour
|
||||||
|
{
|
||||||
|
private IMovementController movementController = null;
|
||||||
|
private Rigidbody2D rigid = null;
|
||||||
|
private IGroundTrigger groundTrigger = null;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
movementController = GetComponent<IMovementController>();
|
||||||
|
groundTrigger = GetComponentInChildren<IGroundTrigger>();
|
||||||
|
rigid = GetComponent<Rigidbody2D>();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Vector3 input = Vector3.zero;
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
input = Vector3.zero;
|
||||||
|
input.x = Input.GetAxis("Horizontal");
|
||||||
|
input.y = Input.GetAxis("Vertical");
|
||||||
|
|
||||||
|
movementController.Move(input);
|
||||||
|
|
||||||
|
if (Input.GetKeyDown(KeyCode.Space) && groundTrigger.IsTrigerred)
|
||||||
|
Jump();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Jump()
|
||||||
|
{
|
||||||
|
Vector2 velocity = rigid.velocity;
|
||||||
|
velocity.y = 10f;
|
||||||
|
rigid.velocity = velocity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
11
Samples/2D/Scripts/MovementInputSample.cs.meta
Normal file
11
Samples/2D/Scripts/MovementInputSample.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c3737b1292e46ab4ba2a2c139a8c2ef2
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
19
Samples/Syntriax.Modules.Movement.Samples.asmdef
Normal file
19
Samples/Syntriax.Modules.Movement.Samples.asmdef
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"name": "Syntriax.Modules.Movement.Samples",
|
||||||
|
"rootNamespace": "",
|
||||||
|
"references": [
|
||||||
|
"GUID:efa9a9bc94c60c74684aafb7428fbf61",
|
||||||
|
"GUID:1f5f15fe7e49bdb48a76c5ce9b1c9f2f",
|
||||||
|
"GUID:d4c952ed5f59c5a449cda1b0080ed841",
|
||||||
|
"GUID:c967acc4be781ca44b42a1887eb1ac7a"
|
||||||
|
],
|
||||||
|
"includePlatforms": [],
|
||||||
|
"excludePlatforms": [],
|
||||||
|
"allowUnsafeCode": false,
|
||||||
|
"overrideReferences": false,
|
||||||
|
"precompiledReferences": [],
|
||||||
|
"autoReferenced": true,
|
||||||
|
"defineConstraints": [],
|
||||||
|
"versionDefines": [],
|
||||||
|
"noEngineReferences": false
|
||||||
|
}
|
7
Samples/Syntriax.Modules.Movement.Samples.asmdef.meta
Normal file
7
Samples/Syntriax.Modules.Movement.Samples.asmdef.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 863b8995abde2cf40b8b4cb709452a32
|
||||||
|
AssemblyDefinitionImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Submodule ToggleState deleted from 6afed7407d
1
Trigger
1
Trigger
Submodule Trigger deleted from dabe16b529
14
package.json
Normal file
14
package.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"name": "com.syntriax.movement",
|
||||||
|
"version": "0.2.1",
|
||||||
|
"displayName": "Movement Module",
|
||||||
|
"description": "Dependends On:\nhttps://git.syntriax.com/Syntriax/State.git\nhttps://git.syntriax.com/Syntriax/Trigger.git\nhttps://git.syntriax.com/Syntriax/Factory.git",
|
||||||
|
"unity": "2019.1",
|
||||||
|
"documentationUrl": "https://git.syntriax.com/Syntriax/Movement.git",
|
||||||
|
"keywords": ["Movement"],
|
||||||
|
"author": {
|
||||||
|
"name": "Syntriax",
|
||||||
|
"email": "Syntriax@gmail.com",
|
||||||
|
"url": "https://syntriax.com"
|
||||||
|
}
|
||||||
|
}
|
7
package.json.meta
Normal file
7
package.json.meta
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bc3fcd495f9be6c4ca16b16a8ea637ac
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Reference in New Issue
Block a user