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: