diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index 66f17c7..2ce97de 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -55,6 +55,8 @@ + + @@ -66,13 +68,20 @@ + + + + + + + diff --git a/Assets/IsoTools/Examples/Scenes/Scene07.unity b/Assets/IsoTools/Examples/Scenes/Scene07.unity index 255ce7e..89f611d 100644 --- a/Assets/IsoTools/Examples/Scenes/Scene07.unity +++ b/Assets/IsoTools/Examples/Scenes/Scene07.unity @@ -135,7 +135,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 453404, guid: d10e5320df9f84d4186bda0ba98db9ff, type: 2} propertyPath: m_LocalPosition.z - value: 1.5000001 + value: 1.3000001 objectReference: {fileID: 0} - target: {fileID: 453404, guid: d10e5320df9f84d4186bda0ba98db9ff, type: 2} propertyPath: m_LocalRotation.x @@ -1504,7 +1504,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 453404, guid: d10e5320df9f84d4186bda0ba98db9ff, type: 2} propertyPath: m_LocalPosition.z - value: 1.4000001 + value: 1.2 objectReference: {fileID: 0} - target: {fileID: 453404, guid: d10e5320df9f84d4186bda0ba98db9ff, type: 2} propertyPath: m_LocalRotation.x @@ -1566,7 +1566,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 453404, guid: d10e5320df9f84d4186bda0ba98db9ff, type: 2} propertyPath: m_LocalPosition.z - value: 1.2 + value: 1.5000001 objectReference: {fileID: 0} - target: {fileID: 453404, guid: d10e5320df9f84d4186bda0ba98db9ff, type: 2} propertyPath: m_LocalRotation.x @@ -1697,7 +1697,7 @@ Transform: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1708422616} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -0.0000076293945, y: 63.999996, z: 1.3000001} + m_LocalPosition: {x: -0.0000076293945, y: 63.999996, z: 1.1} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} @@ -2144,7 +2144,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 453404, guid: d10e5320df9f84d4186bda0ba98db9ff, type: 2} propertyPath: m_LocalPosition.z - value: 1.1 + value: 1.4000001 objectReference: {fileID: 0} - target: {fileID: 453404, guid: d10e5320df9f84d4186bda0ba98db9ff, type: 2} propertyPath: m_LocalRotation.x diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoGetDrag.cs b/Assets/IsoTools/PlayMaker/Actions/IsoGetDrag.cs new file mode 100644 index 0000000..0b5ff3c --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoGetDrag.cs @@ -0,0 +1,44 @@ +using UnityEngine; +using HutongGames.PlayMaker; +using IsoTools.PlayMaker.Internal; + +namespace IsoTools.PlayMaker.Actions { + [ActionCategory("IsoTools.Physics")] + [HutongGames.PlayMaker.Tooltip( + "Gets the Drag of a IsoRigidbody and stores it in a Float Variable.")] + public class IsoGetDrag : IsoComponentAction { + [RequiredField] + [CheckForComponent(typeof(IsoRigidbody))] + public FsmOwnerDefault gameObject; + + [RequiredField] + [UIHint(UIHint.Variable)] + public FsmFloat storeResult; + + public bool everyFrame; + + public override void Reset() { + gameObject = null; + storeResult = null; + everyFrame = false; + } + + public override void OnEnter() { + DoAction(); + if ( !everyFrame ) { + Finish(); + } + } + + public override void OnUpdate() { + DoAction(); + } + + void DoAction() { + var go = Fsm.GetOwnerDefaultTarget(gameObject); + if ( UpdateCache(go) ) { + storeResult.Value = isoRigidbody.drag; + } + } + } +} // IsoTools.PlayMaker.Actions \ No newline at end of file diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoGetDrag.cs.meta b/Assets/IsoTools/PlayMaker/Actions/IsoGetDrag.cs.meta new file mode 100644 index 0000000..26bb406 --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoGetDrag.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b325fb1bc25fa4247b1102fe5ca8aa13 +timeCreated: 1450621080 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoGetMass.cs b/Assets/IsoTools/PlayMaker/Actions/IsoGetMass.cs new file mode 100644 index 0000000..0b10a04 --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoGetMass.cs @@ -0,0 +1,44 @@ +using UnityEngine; +using HutongGames.PlayMaker; +using IsoTools.PlayMaker.Internal; + +namespace IsoTools.PlayMaker.Actions { + [ActionCategory("IsoTools.Physics")] + [HutongGames.PlayMaker.Tooltip( + "Gets the Mass of a IsoRigidbody and stores it in a Float Variable.")] + public class IsoGetMass : IsoComponentAction { + [RequiredField] + [CheckForComponent(typeof(IsoRigidbody))] + public FsmOwnerDefault gameObject; + + [RequiredField] + [UIHint(UIHint.Variable)] + public FsmFloat storeResult; + + public bool everyFrame; + + public override void Reset() { + gameObject = null; + storeResult = null; + everyFrame = false; + } + + public override void OnEnter() { + DoAction(); + if ( !everyFrame ) { + Finish(); + } + } + + public override void OnUpdate() { + DoAction(); + } + + void DoAction() { + var go = Fsm.GetOwnerDefaultTarget(gameObject); + if ( UpdateCache(go) ) { + storeResult.Value = isoRigidbody.mass; + } + } + } +} // IsoTools.PlayMaker.Actions \ No newline at end of file diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoGetMass.cs.meta b/Assets/IsoTools/PlayMaker/Actions/IsoGetMass.cs.meta new file mode 100644 index 0000000..0d74f4a --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoGetMass.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: daefced600ce84c6a955e1697b458114 +timeCreated: 1450621053 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoIsKinematic.cs b/Assets/IsoTools/PlayMaker/Actions/IsoIsKinematic.cs new file mode 100644 index 0000000..cc994e9 --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoIsKinematic.cs @@ -0,0 +1,50 @@ +using UnityEngine; +using HutongGames.PlayMaker; +using IsoTools.PlayMaker.Internal; + +namespace IsoTools.PlayMaker.Actions { + [ActionCategory("IsoTools.Physics")] + [HutongGames.PlayMaker.Tooltip( + "Tests if a IsoRigidbody is kinematic.")] + public class IsoIsKinematic : IsoComponentAction { + [RequiredField] + [CheckForComponent(typeof(IsoRigidbody))] + public FsmOwnerDefault gameObject; + + public FsmEvent trueEvent; + public FsmEvent falseEvent; + + [UIHint(UIHint.Variable)] + public FsmBool storeResult; + + public bool everyFrame; + + public override void Reset() { + gameObject = null; + trueEvent = null; + falseEvent = null; + storeResult = null; + everyFrame = false; + } + + public override void OnEnter() { + DoAction(); + if ( !everyFrame ) { + Finish(); + } + } + + public override void OnUpdate() { + DoAction(); + } + + void DoAction() { + var go = Fsm.GetOwnerDefaultTarget(gameObject); + if ( UpdateCache(go) ) { + var value = isoRigidbody.isKinematic; + storeResult.Value = value; + Fsm.Event(value ? trueEvent : falseEvent); + } + } + } +} // IsoTools.PlayMaker.Actions \ No newline at end of file diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoIsKinematic.cs.meta b/Assets/IsoTools/PlayMaker/Actions/IsoIsKinematic.cs.meta new file mode 100644 index 0000000..ca9e4c4 --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoIsKinematic.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 98f632c63797046b1a8f1898d00bc756 +timeCreated: 1450621255 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoIsSleeping.cs b/Assets/IsoTools/PlayMaker/Actions/IsoIsSleeping.cs new file mode 100644 index 0000000..b870a1b --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoIsSleeping.cs @@ -0,0 +1,50 @@ +using UnityEngine; +using HutongGames.PlayMaker; +using IsoTools.PlayMaker.Internal; + +namespace IsoTools.PlayMaker.Actions { + [ActionCategory("IsoTools.Physics")] + [HutongGames.PlayMaker.Tooltip( + "Tests if a IsoRigidbody is sleeping.")] + public class IsoIsSleeping : IsoComponentAction { + [RequiredField] + [CheckForComponent(typeof(IsoRigidbody))] + public FsmOwnerDefault gameObject; + + public FsmEvent trueEvent; + public FsmEvent falseEvent; + + [UIHint(UIHint.Variable)] + public FsmBool storeResult; + + public bool everyFrame; + + public override void Reset() { + gameObject = null; + trueEvent = null; + falseEvent = null; + storeResult = null; + everyFrame = false; + } + + public override void OnEnter() { + DoAction(); + if ( !everyFrame ) { + Finish(); + } + } + + public override void OnUpdate() { + DoAction(); + } + + void DoAction() { + var go = Fsm.GetOwnerDefaultTarget(gameObject); + if ( UpdateCache(go) ) { + var value = isoRigidbody.IsSleeping(); + storeResult.Value = value; + Fsm.Event(value ? trueEvent : falseEvent); + } + } + } +} // IsoTools.PlayMaker.Actions \ No newline at end of file diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoIsSleeping.cs.meta b/Assets/IsoTools/PlayMaker/Actions/IsoIsSleeping.cs.meta new file mode 100644 index 0000000..83d193e --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoIsSleeping.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 57163cba226bd4f199a950f56d1f2a5c +timeCreated: 1450621269 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoSetDrag.cs b/Assets/IsoTools/PlayMaker/Actions/IsoSetDrag.cs new file mode 100644 index 0000000..7676bc2 --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoSetDrag.cs @@ -0,0 +1,43 @@ +using UnityEngine; +using HutongGames.PlayMaker; +using IsoTools.PlayMaker.Internal; + +namespace IsoTools.PlayMaker.Actions { + [ActionCategory("IsoTools.Physics")] + [HutongGames.PlayMaker.Tooltip( + "Sets the Drag of a IsoRigidbody.")] + public class IsoSetDrag : IsoComponentAction { + [RequiredField] + [CheckForComponent(typeof(IsoRigidbody))] + public FsmOwnerDefault gameObject; + + [RequiredField] + public FsmFloat drag; + + public bool everyFrame; + + public override void Reset() { + gameObject = null; + drag = 1.0f; + everyFrame = false; + } + + public override void OnEnter() { + DoAction(); + if ( !everyFrame ) { + Finish(); + } + } + + public override void OnUpdate() { + DoAction(); + } + + void DoAction() { + var go = Fsm.GetOwnerDefaultTarget(gameObject); + if ( UpdateCache(go) ) { + isoRigidbody.drag = drag.Value; + } + } + } +} // IsoTools.PlayMaker.Actions \ No newline at end of file diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoSetDrag.cs.meta b/Assets/IsoTools/PlayMaker/Actions/IsoSetDrag.cs.meta new file mode 100644 index 0000000..dff4331 --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoSetDrag.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7f83d153bf736469ca580e60ea2ca79c +timeCreated: 1450621092 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoSetMass.cs b/Assets/IsoTools/PlayMaker/Actions/IsoSetMass.cs new file mode 100644 index 0000000..8c69f79 --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoSetMass.cs @@ -0,0 +1,43 @@ +using UnityEngine; +using HutongGames.PlayMaker; +using IsoTools.PlayMaker.Internal; + +namespace IsoTools.PlayMaker.Actions { + [ActionCategory("IsoTools.Physics")] + [HutongGames.PlayMaker.Tooltip( + "Sets the Mass of a IsoRigidbody.")] + public class IsoSetMass : IsoComponentAction { + [RequiredField] + [CheckForComponent(typeof(IsoRigidbody))] + public FsmOwnerDefault gameObject; + + [RequiredField] + public FsmFloat mass; + + public bool everyFrame; + + public override void Reset() { + gameObject = null; + mass = 1.0f; + everyFrame = false; + } + + public override void OnEnter() { + DoAction(); + if ( !everyFrame ) { + Finish(); + } + } + + public override void OnUpdate() { + DoAction(); + } + + void DoAction() { + var go = Fsm.GetOwnerDefaultTarget(gameObject); + if ( UpdateCache(go) ) { + isoRigidbody.mass = mass.Value; + } + } + } +} // IsoTools.PlayMaker.Actions \ No newline at end of file diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoSetMass.cs.meta b/Assets/IsoTools/PlayMaker/Actions/IsoSetMass.cs.meta new file mode 100644 index 0000000..8bc8fcd --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoSetMass.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: cabad94a5a31c4d3ba9c52a4929937a4 +timeCreated: 1450621064 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoSleep.cs b/Assets/IsoTools/PlayMaker/Actions/IsoSleep.cs new file mode 100644 index 0000000..bcaca3b --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoSleep.cs @@ -0,0 +1,30 @@ +using UnityEngine; +using HutongGames.PlayMaker; +using IsoTools.PlayMaker.Internal; + +namespace IsoTools.PlayMaker.Actions { + [ActionCategory("IsoTools.Physics")] + [HutongGames.PlayMaker.Tooltip( + "Force a IsoRigidbody to Sleep.")] + public class IsoSleep : IsoComponentAction { + [RequiredField] + [CheckForComponent(typeof(IsoRigidbody))] + public FsmOwnerDefault gameObject; + + public override void Reset() { + gameObject = null; + } + + public override void OnEnter() { + DoAction(); + Finish(); + } + + void DoAction() { + var go = Fsm.GetOwnerDefaultTarget(gameObject); + if ( UpdateCache(go) ) { + isoRigidbody.Sleep(); + } + } + } +} // IsoTools.PlayMaker.Actions \ No newline at end of file diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoSleep.cs.meta b/Assets/IsoTools/PlayMaker/Actions/IsoSleep.cs.meta new file mode 100644 index 0000000..b46fd49 --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoSleep.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 42caab2ac33764ad3ade186dfccd29f1 +timeCreated: 1450621114 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: