New PlayMaker actions: GetWorldProps, SetWorldProps

This commit is contained in:
2015-12-15 02:03:06 +06:00
parent 3ba6543f38
commit 69bcec0ca9
9 changed files with 275 additions and 86 deletions

View File

@@ -102,7 +102,7 @@ Prefab:
objectReference: {fileID: 0}
- target: {fileID: 453404, guid: d10e5320df9f84d4186bda0ba98db9ff, type: 2}
propertyPath: m_LocalPosition.z
value: 1.4000001
value: 5
objectReference: {fileID: 0}
- target: {fileID: 453404, guid: d10e5320df9f84d4186bda0ba98db9ff, type: 2}
propertyPath: m_LocalRotation.x
@@ -179,7 +179,7 @@ MonoBehaviour:
_tileRatio: 0.5
_tileAngle: 45
_tileHeight: 16
_stepDepth: 0.1
_stepDepth: 1
_startDepth: 1
--- !u!81 &600542279
AudioListener:
@@ -676,6 +676,7 @@ MonoBehaviour:
colorIndex: 0
actionData:
actionNames:
- IsoTools.PlayMaker.Actions.IsoSetWorldProps
- IsoTools.PlayMaker.Actions.IsoSetMode
- IsoTools.PlayMaker.Actions.IsoSetPosition
- HutongGames.PlayMaker.Actions.Wait
@@ -683,13 +684,22 @@ MonoBehaviour:
-
-
-
actionEnabled: 010101
actionIsOpen: 010101
actionStartIndex: 00000000020000000a000000
actionHashCodes: 672cde03ac9f610448c01101
-
actionEnabled: 01010101
actionIsOpen: 01010101
actionStartIndex: 00000000070000000900000011000000
actionHashCodes: 7607ca02672cde03ac9f610448c01101
unityObjectParams: []
fsmGameObjectParams: []
fsmOwnerDefaultParams:
- ownerOption: 1
gameObject:
useVariable: 0
name:
tooltip:
showInInspector: 0
networkSync: 0
value: {fileID: 600542277}
- ownerOption: 0
gameObject:
useVariable: 0
@@ -725,6 +735,42 @@ MonoBehaviour:
enumName: IsoTools.IsoObject+Mode
intValue: 1
fsmFloatParams:
- useVariable: 1
name:
tooltip:
showInInspector: 0
networkSync: 0
value: 32
- useVariable: 1
name:
tooltip:
showInInspector: 0
networkSync: 0
value: 1
- useVariable: 1
name:
tooltip:
showInInspector: 0
networkSync: 0
value: 90.58
- useVariable: 1
name:
tooltip:
showInInspector: 0
networkSync: 0
value: 0
- useVariable: 1
name:
tooltip:
showInInspector: 0
networkSync: 0
value: 0
- useVariable: 1
name:
tooltip:
showInInspector: 0
networkSync: 0
value: 6.1
- useVariable: 0
name:
tooltip:
@@ -769,9 +815,16 @@ MonoBehaviour:
arrayParamTypes: []
customTypeSizes:
customTypeNames: []
paramDataType: 140000002a000000140000001c0000000f0000000f0000000f0000000100000001000000010000000f0000001700000001000000
paramDataType: 140000000f0000000f0000000f0000000f0000000f0000000f000000140000002a000000140000001c0000000f0000000f0000000f0000000100000001000000010000000f0000001700000001000000
paramName:
- gameObject
- tileSize
- tileRatio
- tileAngle
- tileHeight
- stepDepth
- startDepth
- gameObject
- mode
- gameObject
- vector
@@ -784,8 +837,8 @@ MonoBehaviour:
- time
- finishEvent
- realTime
paramDataPos: 00000000000000000100000000000000000000000100000002000000000000000100000002000000030000000000000003000000
paramByteDataSize: 00000000000000000000000000000000000000000000000000000000010000000100000001000000000000000000000001000000
paramDataPos: 0000000000000000010000000200000003000000040000000500000001000000000000000200000000000000060000000700000008000000000000000100000002000000090000000000000003000000
paramByteDataSize: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000100000001000000000000000000000001000000
events:
- name: FINISHED
isSystemEvent: 1
@@ -894,7 +947,7 @@ Prefab:
objectReference: {fileID: 0}
- target: {fileID: 453404, guid: d10e5320df9f84d4186bda0ba98db9ff, type: 2}
propertyPath: m_LocalPosition.z
value: 1.3000001
value: 4
objectReference: {fileID: 0}
- target: {fileID: 453404, guid: d10e5320df9f84d4186bda0ba98db9ff, type: 2}
propertyPath: m_LocalRotation.x
@@ -952,7 +1005,7 @@ Prefab:
objectReference: {fileID: 0}
- target: {fileID: 453404, guid: d10e5320df9f84d4186bda0ba98db9ff, type: 2}
propertyPath: m_LocalPosition.z
value: 1.2
value: 3
objectReference: {fileID: 0}
- target: {fileID: 453404, guid: d10e5320df9f84d4186bda0ba98db9ff, type: 2}
propertyPath: m_LocalRotation.x
@@ -1111,7 +1164,7 @@ Prefab:
objectReference: {fileID: 0}
- target: {fileID: 453404, guid: d10e5320df9f84d4186bda0ba98db9ff, type: 2}
propertyPath: m_LocalPosition.z
value: 1.1
value: 2
objectReference: {fileID: 0}
- target: {fileID: 453404, guid: d10e5320df9f84d4186bda0ba98db9ff, type: 2}
propertyPath: m_LocalRotation.x

View File

@@ -1,54 +0,0 @@
using UnityEngine;
using HutongGames.PlayMaker;
namespace IsoTools.PlayMaker.Actions {
[ActionCategory("IsoTools")]
[HutongGames.PlayMaker.Tooltip("Change IsoWorld options.")]
public class IsoChangeWorld : FsmStateAction {
public FsmFloat tileSize;
public FsmFloat tileRatio;
public FsmFloat tileAngle;
public FsmFloat tileHeight;
public FsmFloat stepDepth;
public FsmFloat startDepth;
public override void Reset() {
tileSize = new FsmFloat{UseVariable = true};
tileRatio = new FsmFloat{UseVariable = true};
tileAngle = new FsmFloat{UseVariable = true};
tileHeight = new FsmFloat{UseVariable = true};
stepDepth = new FsmFloat{UseVariable = true};
startDepth = new FsmFloat{UseVariable = true};
}
public override void OnEnter() {
DoAction();
Finish();
}
void DoAction() {
var iso_world = GameObject.FindObjectOfType<IsoWorld>();
if ( iso_world ) {
if ( !tileSize.IsNone ) {
iso_world.tileSize = tileSize.Value;
}
if ( !tileRatio.IsNone ) {
iso_world.tileRatio = tileRatio.Value;
}
if ( !tileAngle.IsNone ) {
iso_world.tileAngle = tileAngle.Value;
}
if ( !tileHeight.IsNone ) {
iso_world.tileHeight = tileHeight.Value;
}
if ( !stepDepth.IsNone ) {
iso_world.stepDepth = stepDepth.Value;
}
if ( !startDepth.IsNone ) {
iso_world.startDepth = startDepth.Value;
}
}
}
}
} // IsoTools.PlayMaker.Actions

View File

@@ -45,5 +45,15 @@ namespace IsoTools.PlayMaker.Actions {
}
return _cachedComponent != null;
}
protected bool IsErrorVarClamp(float v, float min, float max) {
return v < min || v > max;
}
protected string ErrorVarClampMsg(string name, float min, float max) {
return string.Format(
"{0} must be greater than {1} and less than {2}",
name, min, max);
}
}
} // IsoTools.PlayMaker.Actions

View File

@@ -0,0 +1,67 @@
using UnityEngine;
using HutongGames.PlayMaker;
namespace IsoTools.PlayMaker.Actions {
[ActionCategory("IsoTools")]
[HutongGames.PlayMaker.Tooltip(
"Gets an options of a IsoWorld.")]
public class IsoGetWorldProps : IsoComponentAction<IsoWorld> {
[RequiredField]
[CheckForComponent(typeof(IsoWorld))]
public FsmOwnerDefault gameObject;
[UIHint(UIHint.Variable)]
public FsmFloat tileSize;
[UIHint(UIHint.Variable)]
public FsmFloat tileRatio;
[UIHint(UIHint.Variable)]
public FsmFloat tileAngle;
[UIHint(UIHint.Variable)]
public FsmFloat tileHeight;
[UIHint(UIHint.Variable)]
public FsmFloat stepDepth;
[UIHint(UIHint.Variable)]
public FsmFloat startDepth;
public bool everyFrame;
public override void Reset() {
gameObject = null;
tileSize = null;
tileRatio = null;
tileAngle = null;
tileHeight = null;
stepDepth = null;
startDepth = 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) ) {
tileSize.Value = isoWorld.tileSize;
tileRatio.Value = isoWorld.tileRatio;
tileAngle.Value = isoWorld.tileAngle;
tileHeight.Value = isoWorld.tileHeight;
stepDepth.Value = isoWorld.stepDepth;
startDepth.Value = isoWorld.startDepth;
}
}
}
} // IsoTools.PlayMaker.Actions

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 571909e63f3954244b08fd7338e68605
timeCreated: 1450110259
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,70 @@
using UnityEngine;
using HutongGames.PlayMaker;
namespace IsoTools.PlayMaker.Actions {
[ActionCategory("IsoTools")]
[HutongGames.PlayMaker.Tooltip(
"Sets an options of a IsoWorld.")]
public class IsoSetWorldProps : IsoComponentAction<IsoWorld> {
[RequiredField]
[CheckForComponent(typeof(IsoWorld))]
[HutongGames.PlayMaker.Tooltip("The IsoWorld to props.")]
public FsmOwnerDefault gameObject;
public FsmFloat tileSize;
public FsmFloat tileRatio;
public FsmFloat tileAngle;
public FsmFloat tileHeight;
public FsmFloat stepDepth;
public FsmFloat startDepth;
public override void Reset() {
gameObject = null;
tileSize = new FsmFloat{UseVariable = true};
tileRatio = new FsmFloat{UseVariable = true};
tileAngle = new FsmFloat{UseVariable = true};
tileHeight = new FsmFloat{UseVariable = true};
stepDepth = new FsmFloat{UseVariable = true};
startDepth = new FsmFloat{UseVariable = true};
}
public override string ErrorCheck() {
if ( !tileSize.IsNone && IsErrorVarClamp(tileSize.Value, IsoWorld.MinTileSize, IsoWorld.MaxTileSize) ) {
return ErrorVarClampMsg("TileSize", IsoWorld.MinTileSize, IsoWorld.MaxTileSize);
}
if ( !tileRatio.IsNone && IsErrorVarClamp(tileRatio.Value, IsoWorld.MinTileRatio, IsoWorld.MaxTileRatio) ) {
return ErrorVarClampMsg("TileRation", IsoWorld.MinTileRatio, IsoWorld.MaxTileRatio);
}
if ( !tileAngle.IsNone && IsErrorVarClamp(tileAngle.Value, IsoWorld.MinTileAngle, IsoWorld.MaxTileAngle)) {
return ErrorVarClampMsg("TileAngle", IsoWorld.MinTileAngle, IsoWorld.MaxTileAngle);
}
if ( !tileHeight.IsNone && IsErrorVarClamp(tileHeight.Value, IsoWorld.MinTileHeight, IsoWorld.MaxTileHeight) ) {
return ErrorVarClampMsg("TileHeight", IsoWorld.MinTileHeight, IsoWorld.MaxTileHeight);
}
if ( !stepDepth.IsNone && IsErrorVarClamp(stepDepth.Value, IsoWorld.MinStepDepth, IsoWorld.MaxStepDepth) ) {
return ErrorVarClampMsg("StepDepth", IsoWorld.MinStepDepth, IsoWorld.MaxStepDepth);
}
if ( !startDepth.IsNone && IsErrorVarClamp(startDepth.Value, IsoWorld.MinStartDepth, IsoWorld.MaxStartDepth) ) {
return ErrorVarClampMsg("StartDepth", IsoWorld.MinStartDepth, IsoWorld.MaxStartDepth);
}
return "";
}
public override void OnEnter() {
DoAction();
Finish();
}
void DoAction() {
var go = Fsm.GetOwnerDefaultTarget(gameObject);
if ( UpdateCache(go) ) {
if ( !tileSize .IsNone ) { isoWorld.tileSize = tileSize .Value; }
if ( !tileRatio .IsNone ) { isoWorld.tileRatio = tileRatio .Value; }
if ( !tileAngle .IsNone ) { isoWorld.tileAngle = tileAngle .Value; }
if ( !tileHeight.IsNone ) { isoWorld.tileHeight = tileHeight.Value; }
if ( !stepDepth .IsNone ) { isoWorld.stepDepth = stepDepth .Value; }
if ( !startDepth.IsNone ) { isoWorld.startDepth = startDepth.Value; }
}
}
}
} // IsoTools.PlayMaker.Actions

View File

@@ -31,7 +31,37 @@ namespace IsoTools {
Vector2 _sectorsMinNumPos = Vector2.zero;
Vector2 _sectorsMaxNumPos = Vector2.zero;
Vector2 _sectorsNumPosCount = Vector2.zero;
// ------------------------------------------------------------------------
//
// Constants
//
// ------------------------------------------------------------------------
public static readonly float DefTileSize = 32.0f;
public static readonly float MinTileSize = Mathf.Epsilon;
public static readonly float MaxTileSize = float.MaxValue;
public static readonly float DefTileRatio = 0.5f;
public static readonly float MinTileRatio = 0.25f;
public static readonly float MaxTileRatio = 1.0f;
public static readonly float DefTileAngle = 45.0f;
public static readonly float MinTileAngle = 0.0f;
public static readonly float MaxTileAngle = 90.0f;
public static readonly float DefTileHeight = DefTileSize;
public static readonly float MinTileHeight = MinTileSize;
public static readonly float MaxTileHeight = MaxTileSize;
public static readonly float DefStepDepth = 0.1f;
public static readonly float MinStepDepth = Mathf.Epsilon;
public static readonly float MaxStepDepth = float.MaxValue;
public static readonly float DefStartDepth = 1.0f;
public static readonly float MinStartDepth = float.MinValue;
public static readonly float MaxStartDepth = float.MaxValue;
// ------------------------------------------------------------------------
//
// Sorting properties
@@ -39,61 +69,61 @@ namespace IsoTools {
// ------------------------------------------------------------------------
[SerializeField]
public float _tileSize = 32.0f;
public float _tileSize = DefTileSize;
public float tileSize {
get { return _tileSize; }
set {
_tileSize = Mathf.Max(value, Mathf.Epsilon);
_tileSize = Mathf.Clamp(value, MinTileSize, MaxTileSize);
ChangeSortingProperty();
}
}
[SerializeField]
public float _tileRatio = 0.5f;
public float _tileRatio = DefTileRatio;
public float tileRatio {
get { return _tileRatio; }
set {
_tileRatio = Mathf.Clamp(value, 0.25f, 1.0f);
_tileRatio = Mathf.Clamp(value, MinTileRatio, MaxTileRatio);
ChangeSortingProperty();
}
}
[SerializeField]
public float _tileAngle = 45.0f;
public float _tileAngle = DefTileAngle;
public float tileAngle {
get { return _tileAngle; }
set {
_tileAngle = Mathf.Clamp(value, 0.0f, 90.0f);
_tileAngle = Mathf.Clamp(value, MinTileAngle, MaxTileAngle);
ChangeSortingProperty();
}
}
[SerializeField]
public float _tileHeight = 32.0f;
public float _tileHeight = DefTileHeight;
public float tileHeight {
get { return _tileHeight; }
set {
_tileHeight = Mathf.Max(value, Mathf.Epsilon);
_tileHeight = Mathf.Clamp(value, MinTileHeight, MaxTileHeight);
ChangeSortingProperty();
}
}
[SerializeField]
public float _stepDepth = 0.1f;
public float _stepDepth = DefStepDepth;
public float stepDepth {
get { return _stepDepth; }
set {
_stepDepth = value;
_stepDepth = Mathf.Clamp(value, MinStepDepth, MaxStepDepth);
ChangeSortingProperty();
}
}
[SerializeField]
public float _startDepth = 1.0f;
public float _startDepth = DefStartDepth;
public float startDepth {
get { return _startDepth; }
set {
_startDepth = value;
_startDepth = Mathf.Clamp(value, MinStartDepth, MaxStartDepth);
ChangeSortingProperty();
}
}
@@ -631,12 +661,12 @@ namespace IsoTools {
#if UNITY_EDITOR
void Reset() {
tileSize = 32.0f;
tileRatio = 0.5f;
tileAngle = 45.0f;
tileHeight = 32.0f;
stepDepth = 0.1f;
startDepth = 1.0f;
tileSize = DefTileSize;
tileRatio = DefTileRatio;
tileAngle = DefTileAngle;
tileHeight = DefTileHeight;
stepDepth = DefStepDepth;
startDepth = DefStartDepth;
}
void OnValidate() {