From 5faab5714053572e53633358ed486d0f30ae2f3a Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Sun, 13 Dec 2015 21:32:21 +0600 Subject: [PATCH] New PlayMaker actions: Resize, SetMode --- Assembly-CSharp.csproj | 2 + Assets/IsoTools/Examples/Scenes/Scene07.unity | 4 + .../PlayMaker/Actions/IsoGetPosition.cs | 10 +- .../IsoTools/PlayMaker/Actions/IsoGetSize.cs | 10 +- .../PlayMaker/Actions/IsoGetTilePosition.cs | 10 +- .../IsoTools/PlayMaker/Actions/IsoResize.cs | 93 +++++++++++++++++++ .../PlayMaker/Actions/IsoResize.cs.meta | 12 +++ .../IsoTools/PlayMaker/Actions/IsoSetMode.cs | 32 +++++++ .../PlayMaker/Actions/IsoSetMode.cs.meta | 12 +++ .../PlayMaker/Actions/IsoSetPosition.cs | 43 ++++++--- .../IsoTools/PlayMaker/Actions/IsoSetSize.cs | 43 ++++++--- .../PlayMaker/Actions/IsoSetTilePosition.cs | 43 ++++++--- .../PlayMaker/Actions/IsoTranslate.cs | 10 +- 13 files changed, 262 insertions(+), 62 deletions(-) create mode 100644 Assets/IsoTools/PlayMaker/Actions/IsoResize.cs create mode 100644 Assets/IsoTools/PlayMaker/Actions/IsoResize.cs.meta create mode 100644 Assets/IsoTools/PlayMaker/Actions/IsoSetMode.cs create mode 100644 Assets/IsoTools/PlayMaker/Actions/IsoSetMode.cs.meta diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index 1382efb..ee1b6bb 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -55,6 +55,8 @@ + + diff --git a/Assets/IsoTools/Examples/Scenes/Scene07.unity b/Assets/IsoTools/Examples/Scenes/Scene07.unity index e1783e3..17188b3 100644 --- a/Assets/IsoTools/Examples/Scenes/Scene07.unity +++ b/Assets/IsoTools/Examples/Scenes/Scene07.unity @@ -994,6 +994,10 @@ Prefab: propertyPath: _position.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 11417528, guid: c1b9b2ad3a021c549aa9190df3101248, type: 2} + propertyPath: _mode + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: c1b9b2ad3a021c549aa9190df3101248, type: 2} m_IsPrefabParent: 0 diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoGetPosition.cs b/Assets/IsoTools/PlayMaker/Actions/IsoGetPosition.cs index 00c8515..ff19e8f 100644 --- a/Assets/IsoTools/PlayMaker/Actions/IsoGetPosition.cs +++ b/Assets/IsoTools/PlayMaker/Actions/IsoGetPosition.cs @@ -46,11 +46,11 @@ namespace IsoTools.PlayMaker.Actions { void DoGetPosition() { var go = Fsm.GetOwnerDefaultTarget(gameObject); if ( UpdateCache(go) ) { - var position = isoObject.position; - vector.Value = position; - x.Value = position.x; - y.Value = position.y; - z.Value = position.z; + var value = isoObject.position; + vector.Value = value; + x.Value = value.x; + y.Value = value.y; + z.Value = value.z; } } } diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoGetSize.cs b/Assets/IsoTools/PlayMaker/Actions/IsoGetSize.cs index 6beee4a..39de20f 100644 --- a/Assets/IsoTools/PlayMaker/Actions/IsoGetSize.cs +++ b/Assets/IsoTools/PlayMaker/Actions/IsoGetSize.cs @@ -46,11 +46,11 @@ namespace IsoTools.PlayMaker.Actions { void DoGetSize() { var go = Fsm.GetOwnerDefaultTarget(gameObject); if ( UpdateCache(go) ) { - var size = isoObject.size; - vector.Value = size; - x.Value = size.x; - y.Value = size.y; - z.Value = size.z; + var value = isoObject.size; + vector.Value = value; + x.Value = value.x; + y.Value = value.y; + z.Value = value.z; } } } diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoGetTilePosition.cs b/Assets/IsoTools/PlayMaker/Actions/IsoGetTilePosition.cs index 095652d..c4a1b38 100644 --- a/Assets/IsoTools/PlayMaker/Actions/IsoGetTilePosition.cs +++ b/Assets/IsoTools/PlayMaker/Actions/IsoGetTilePosition.cs @@ -46,11 +46,11 @@ namespace IsoTools.PlayMaker.Actions { void DoGetPosition() { var go = Fsm.GetOwnerDefaultTarget(gameObject); if ( UpdateCache(go) ) { - var position = isoObject.tilePosition; - vector.Value = position; - x.Value = position.x; - y.Value = position.y; - z.Value = position.z; + var value = isoObject.tilePosition; + vector.Value = value; + x.Value = value.x; + y.Value = value.y; + z.Value = value.z; } } } diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoResize.cs b/Assets/IsoTools/PlayMaker/Actions/IsoResize.cs new file mode 100644 index 0000000..4ef19c4 --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoResize.cs @@ -0,0 +1,93 @@ +using UnityEngine; +using HutongGames.PlayMaker; + +namespace IsoTools.PlayMaker.Actions { + [ActionCategory("IsoTools")] + [HutongGames.PlayMaker.Tooltip("Resizes a IsoObject. Use a Vector3 variable and/or XYZ components. To leave any axis unchanged, set variable to 'None'.")] + public class IsoResize : IsoComponentAction { + [RequiredField] + [CheckForComponent(typeof(IsoObject))] + public FsmOwnerDefault gameObject; + + [UIHint(UIHint.Variable)] + public FsmVector3 vector; + + public FsmFloat x; + public FsmFloat y; + public FsmFloat z; + + public bool perSecond; + public bool everyFrame; + public bool lateUpdate; + public bool fixedUpdate; + + public override void Reset() { + gameObject = null; + vector = null; + x = new FsmFloat{UseVariable = true}; + y = new FsmFloat{UseVariable = true}; + z = new FsmFloat{UseVariable = true}; + perSecond = true; + everyFrame = true; + lateUpdate = false; + fixedUpdate = false; + } + + public override void OnPreprocess() { + Fsm.HandleFixedUpdate = true; + } + + public override void OnEnter() { + if ( !everyFrame && !lateUpdate && !fixedUpdate ) { + DoResize(); + Finish(); + } + } + + public override void OnUpdate() { + if ( !lateUpdate && !fixedUpdate ) { + DoResize(); + } + } + + public override void OnLateUpdate() { + if ( lateUpdate ) { + DoResize(); + } + if ( !everyFrame ) { + Finish(); + } + } + + public override void OnFixedUpdate() { + if ( fixedUpdate ) { + DoResize(); + } + if ( !everyFrame ) { + Finish(); + } + } + + void DoResize() { + var go = Fsm.GetOwnerDefaultTarget(gameObject); + if ( UpdateCache(go) ) { + var value = vector.IsNone + ? new Vector3(x.Value, y.Value, z.Value) + : vector.Value; + + if ( !x.IsNone ) { + value.x = x.Value; + } + if ( !y.IsNone ) { + value.y = y.Value; + } + if ( !z.IsNone ) { + value.z = z.Value; + } + + isoObject.size += + value * (perSecond ? Time.deltaTime : 1.0f); + } + } + } +} // IsoTools.PlayMaker.Actions \ No newline at end of file diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoResize.cs.meta b/Assets/IsoTools/PlayMaker/Actions/IsoResize.cs.meta new file mode 100644 index 0000000..97178cd --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoResize.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0cc9c814428694df6a2a04949e881f7b +timeCreated: 1450019890 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoSetMode.cs b/Assets/IsoTools/PlayMaker/Actions/IsoSetMode.cs new file mode 100644 index 0000000..951f10f --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoSetMode.cs @@ -0,0 +1,32 @@ +using UnityEngine; +using HutongGames.PlayMaker; + +namespace IsoTools.PlayMaker.Actions { + [ActionCategory("IsoTools")] + [HutongGames.PlayMaker.Tooltip("Sets the Mode of a IsoObject.")] + public class IsoSetMode : IsoComponentAction { + [RequiredField] + [CheckForComponent(typeof(IsoObject))] + public FsmOwnerDefault gameObject; + + [ObjectType(typeof(IsoObject.Mode))] + public FsmEnum mode; + + public override void Reset() { + gameObject = null; + mode = IsoObject.Mode.Mode2d; + } + + public override void OnEnter() { + DoSetMode(); + Finish(); + } + + void DoSetMode() { + var go = Fsm.GetOwnerDefaultTarget(gameObject); + if ( UpdateCache(go) ) { + isoObject.mode = (IsoObject.Mode)mode.Value; + } + } + } +} // IsoTools.PlayMaker.Actions \ No newline at end of file diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoSetMode.cs.meta b/Assets/IsoTools/PlayMaker/Actions/IsoSetMode.cs.meta new file mode 100644 index 0000000..7fd478b --- /dev/null +++ b/Assets/IsoTools/PlayMaker/Actions/IsoSetMode.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 600989817e43d430a96dfdbbba8dde76 +timeCreated: 1450019570 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoSetPosition.cs b/Assets/IsoTools/PlayMaker/Actions/IsoSetPosition.cs index 99a2962..20b4ecf 100644 --- a/Assets/IsoTools/PlayMaker/Actions/IsoSetPosition.cs +++ b/Assets/IsoTools/PlayMaker/Actions/IsoSetPosition.cs @@ -18,26 +18,32 @@ namespace IsoTools.PlayMaker.Actions { public bool everyFrame; public bool lateUpdate; + public bool fixedUpdate; public override void Reset() { - gameObject = null; - vector = null; - x = new FsmFloat{UseVariable = true}; - y = new FsmFloat{UseVariable = true}; - z = new FsmFloat{UseVariable = true}; - everyFrame = false; - lateUpdate = false; + gameObject = null; + vector = null; + x = new FsmFloat{UseVariable = true}; + y = new FsmFloat{UseVariable = true}; + z = new FsmFloat{UseVariable = true}; + everyFrame = false; + lateUpdate = false; + fixedUpdate = false; + } + + public override void OnPreprocess() { + Fsm.HandleFixedUpdate = true; } public override void OnEnter() { - if ( !everyFrame && !lateUpdate ) { + if ( !everyFrame && !lateUpdate && !fixedUpdate ) { DoSetPosition(); Finish(); } } public override void OnUpdate() { - if ( !lateUpdate ) { + if ( !lateUpdate && !fixedUpdate ) { DoSetPosition(); } } @@ -51,24 +57,33 @@ namespace IsoTools.PlayMaker.Actions { } } + public override void OnFixedUpdate() { + if ( fixedUpdate ) { + DoSetPosition(); + } + if ( !everyFrame ) { + Finish(); + } + } + void DoSetPosition() { var go = Fsm.GetOwnerDefaultTarget(gameObject); if ( UpdateCache(go) ) { - var position = vector.IsNone + var value = vector.IsNone ? isoObject.position : vector.Value; if ( !x.IsNone ) { - position.x = x.Value; + value.x = x.Value; } if ( !y.IsNone ) { - position.y = y.Value; + value.y = y.Value; } if ( !z.IsNone ) { - position.z = z.Value; + value.z = z.Value; } - isoObject.position = position; + isoObject.position = value; } } } diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoSetSize.cs b/Assets/IsoTools/PlayMaker/Actions/IsoSetSize.cs index 4f66456..cfd30cf 100644 --- a/Assets/IsoTools/PlayMaker/Actions/IsoSetSize.cs +++ b/Assets/IsoTools/PlayMaker/Actions/IsoSetSize.cs @@ -18,26 +18,32 @@ namespace IsoTools.PlayMaker.Actions { public bool everyFrame; public bool lateUpdate; + public bool fixedUpdate; public override void Reset() { - gameObject = null; - vector = null; - x = new FsmFloat{UseVariable = true}; - y = new FsmFloat{UseVariable = true}; - z = new FsmFloat{UseVariable = true}; - everyFrame = false; - lateUpdate = false; + gameObject = null; + vector = null; + x = new FsmFloat{UseVariable = true}; + y = new FsmFloat{UseVariable = true}; + z = new FsmFloat{UseVariable = true}; + everyFrame = false; + lateUpdate = false; + fixedUpdate = false; + } + + public override void OnPreprocess() { + Fsm.HandleFixedUpdate = true; } public override void OnEnter() { - if ( !everyFrame && !lateUpdate ) { + if ( !everyFrame && !lateUpdate && !fixedUpdate ) { DoSetSize(); Finish(); } } public override void OnUpdate() { - if ( !lateUpdate ) { + if ( !lateUpdate && !fixedUpdate ) { DoSetSize(); } } @@ -51,24 +57,33 @@ namespace IsoTools.PlayMaker.Actions { } } + public override void OnFixedUpdate() { + if ( fixedUpdate ) { + DoSetSize(); + } + if ( !everyFrame ) { + Finish(); + } + } + void DoSetSize() { var go = Fsm.GetOwnerDefaultTarget(gameObject); if ( UpdateCache(go) ) { - var size = vector.IsNone + var value = vector.IsNone ? isoObject.size : vector.Value; if ( !x.IsNone ) { - size.x = x.Value; + value.x = x.Value; } if ( !y.IsNone ) { - size.y = y.Value; + value.y = y.Value; } if ( !z.IsNone ) { - size.z = z.Value; + value.z = z.Value; } - isoObject.size = size; + isoObject.size = value; } } } diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoSetTilePosition.cs b/Assets/IsoTools/PlayMaker/Actions/IsoSetTilePosition.cs index 0d92ec8..bc1c0a8 100644 --- a/Assets/IsoTools/PlayMaker/Actions/IsoSetTilePosition.cs +++ b/Assets/IsoTools/PlayMaker/Actions/IsoSetTilePosition.cs @@ -18,26 +18,32 @@ namespace IsoTools.PlayMaker.Actions { public bool everyFrame; public bool lateUpdate; + public bool fixedUpdate; public override void Reset() { - gameObject = null; - vector = null; - x = new FsmFloat{UseVariable = true}; - y = new FsmFloat{UseVariable = true}; - z = new FsmFloat{UseVariable = true}; - everyFrame = false; - lateUpdate = false; + gameObject = null; + vector = null; + x = new FsmFloat{UseVariable = true}; + y = new FsmFloat{UseVariable = true}; + z = new FsmFloat{UseVariable = true}; + everyFrame = false; + lateUpdate = false; + fixedUpdate = false; + } + + public override void OnPreprocess() { + Fsm.HandleFixedUpdate = true; } public override void OnEnter() { - if ( !everyFrame && !lateUpdate ) { + if ( !everyFrame && !lateUpdate && !fixedUpdate ) { DoSetTilePosition(); Finish(); } } public override void OnUpdate() { - if ( !lateUpdate ) { + if ( !lateUpdate && !fixedUpdate ) { DoSetTilePosition(); } } @@ -51,24 +57,33 @@ namespace IsoTools.PlayMaker.Actions { } } + public override void OnFixedUpdate() { + if ( fixedUpdate ) { + DoSetTilePosition(); + } + if ( !everyFrame ) { + Finish(); + } + } + void DoSetTilePosition() { var go = Fsm.GetOwnerDefaultTarget(gameObject); if ( UpdateCache(go) ) { - var tile_position = vector.IsNone + var value = vector.IsNone ? isoObject.tilePosition : vector.Value; if ( !x.IsNone ) { - tile_position.x = x.Value; + value.x = x.Value; } if ( !y.IsNone ) { - tile_position.y = y.Value; + value.y = y.Value; } if ( !z.IsNone ) { - tile_position.z = z.Value; + value.z = z.Value; } - isoObject.tilePosition = tile_position; + isoObject.tilePosition = value; } } } diff --git a/Assets/IsoTools/PlayMaker/Actions/IsoTranslate.cs b/Assets/IsoTools/PlayMaker/Actions/IsoTranslate.cs index b1e0a9a..9d3ad4b 100644 --- a/Assets/IsoTools/PlayMaker/Actions/IsoTranslate.cs +++ b/Assets/IsoTools/PlayMaker/Actions/IsoTranslate.cs @@ -71,22 +71,22 @@ namespace IsoTools.PlayMaker.Actions { void DoTranlate() { var go = Fsm.GetOwnerDefaultTarget(gameObject); if ( UpdateCache(go) ) { - var translate = vector.IsNone + var value = vector.IsNone ? new Vector3(x.Value, y.Value, z.Value) : vector.Value; if ( !x.IsNone ) { - translate.x = x.Value; + value.x = x.Value; } if ( !y.IsNone ) { - translate.y = y.Value; + value.y = y.Value; } if ( !z.IsNone ) { - translate.z = z.Value; + value.z = z.Value; } isoObject.position += - translate * (perSecond ? Time.deltaTime : 1.0f); + value * (perSecond ? Time.deltaTime : 1.0f); } } }