diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index 1d719fe..d2ee3cc 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -51,6 +51,7 @@ + diff --git a/Assets/IsoTools/Examples/Scenes/Scene07.unity b/Assets/IsoTools/Examples/Scenes/Scene07.unity index 7633b9e..9410475 100644 --- a/Assets/IsoTools/Examples/Scenes/Scene07.unity +++ b/Assets/IsoTools/Examples/Scenes/Scene07.unity @@ -1857,13 +1857,13 @@ MonoBehaviour: colorIndex: 0 actionData: actionNames: - - IsoTools.PlayMaker.Actions.IsoAddForce + - IsoTools.PlayMaker.Actions.IsoAddExplosionForce customNames: - actionEnabled: 01 actionIsOpen: 01 actionStartIndex: 00000000 - actionHashCodes: febdb401 + actionHashCodes: ed711102 unityObjectParams: [] fsmGameObjectParams: [] fsmOwnerDefaultParams: @@ -1887,35 +1887,29 @@ MonoBehaviour: fsmArrayParams: [] fsmEnumParams: [] fsmFloatParams: - - useVariable: 1 - name: - tooltip: - showInInspector: 0 - networkSync: 0 - value: 0 - - useVariable: 1 - name: - tooltip: - showInInspector: 0 - networkSync: 0 - value: 0 - useVariable: 0 name: tooltip: showInInspector: 0 networkSync: 0 - value: 13 - fsmIntParams: [] - fsmBoolParams: [] - fsmVector2Params: [] - fsmVector3Params: - - useVariable: 1 + value: 15 + - useVariable: 0 name: tooltip: showInInspector: 0 networkSync: 0 - value: {x: 0, y: 0, z: 0} - - useVariable: 1 + value: 10 + - useVariable: 0 + name: + tooltip: + showInInspector: 0 + networkSync: 0 + value: 0 + fsmIntParams: [] + fsmBoolParams: [] + fsmVector2Params: [] + fsmVector3Params: + - useVariable: 0 name: tooltip: showInInspector: 0 @@ -1925,24 +1919,22 @@ MonoBehaviour: fsmRectParams: [] fsmQuaternionParams: [] stringParams: [] - byteData: 000000000100000000 + byteData: 0100000000 arrayParamSizes: arrayParamTypes: [] customTypeSizes: customTypeNames: [] - paramDataType: 140000001c0000001c0000000f0000000f0000000f000000070000000700000001000000 + paramDataType: 140000001c0000000f0000000f0000000f0000000700000001000000 paramName: - gameObject - - atPosition - - vector - - x - - y - - z - - space + - center + - force + - radius + - upwardsModifier - forceMode - everyFrame - paramDataPos: 000000000000000001000000000000000100000002000000000000000400000008000000 - paramByteDataSize: 000000000000000000000000000000000000000000000000040000000400000001000000 + paramDataPos: 00000000000000000000000001000000020000000000000004000000 + paramByteDataSize: 00000000000000000000000000000000000000000400000001000000 events: - name: FINISHED isSystemEvent: 1 diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoAddExplosionForce.cs b/Assets/IsoTools/PlayMaker/Actions/IsoAddExplosionForce.cs new file mode 100644 index 0000000..5717b3d --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoAddExplosionForce.cs @@ -0,0 +1,78 @@ +using UnityEngine; +using HutongGames.PlayMaker; +using IsoTools.PlayMaker.Internal; + +namespace IsoTools.PlayMaker.Actions { + [ActionCategory("IsoTools")] + [HutongGames.PlayMaker.Tooltip( + "Applies a force to a IsoRigidbody that simulates explosion effects. " + + "The explosion force will fall off linearly with distance.")] + public class IsoAddExplosionForce : IsoComponentAction { + [RequiredField] + [CheckForComponent(typeof(IsoRigidbody))] + [HutongGames.PlayMaker.Tooltip( + "The IsoRigidbody to add the explosion force to.")] + public FsmOwnerDefault gameObject; + + [RequiredField] + [HutongGames.PlayMaker.Tooltip( + "The center of the explosion.")] + public FsmVector3 center; + + [RequiredField] + [HutongGames.PlayMaker.Tooltip( + "The strength of the explosion.")] + public FsmFloat force; + + [RequiredField] + [HutongGames.PlayMaker.Tooltip( + "The radius of the explosion.")] + public FsmFloat radius; + + [HutongGames.PlayMaker.Tooltip( + "Applies the force as if it was applied from beneath the object.")] + public FsmFloat upwardsModifier; + + [HutongGames.PlayMaker.Tooltip( + "The type of force to apply.")] + public ForceMode forceMode; + + [HutongGames.PlayMaker.Tooltip( + "Repeat every frame.")] + public bool everyFrame; + + public override void Reset() { + gameObject = null; + center = null; + force = null; + radius = null; + upwardsModifier = 0.0f; + forceMode = ForceMode.Force; + everyFrame = false; + } + + public override void OnPreprocess() { + Fsm.HandleFixedUpdate = true; + } + + public override void OnEnter() { + DoAction(); + if ( !everyFrame ) { + Finish(); + } + } + + public override void OnFixedUpdate() { + DoAction(); + } + + void DoAction() { + var go = Fsm.GetOwnerDefaultTarget(gameObject); + if ( UpdateCache(go) ) { + isoRigidbody.AddExplosionForce( + force.Value, center.Value, radius.Value, + upwardsModifier.Value, forceMode); + } + } + } +} // IsoTools.PlayMaker.Actions diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoAddExplosionForce.cs.meta b/Assets/IsoTools/PlayMaker/Actions/IsoAddExplosionForce.cs.meta new file mode 100644 index 0000000..5b64ae8 --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoAddExplosionForce.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8925808e9509b47b187c8890c644ba0c +timeCreated: 1450615607 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: