Files
beyond/Assets/ThirdParty/PlayMaker/Actions/Device/GetDeviceAcceleration.cs
2024-11-20 15:21:28 +01:00

92 lines
1.9 KiB
C#

// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved.
using UnityEngine;
namespace HutongGames.PlayMaker.Actions
{
[ActionCategory(ActionCategory.Device)]
[Tooltip("Gets the last measured linear acceleration of a device and stores it in a Vector3 Variable.")]
public class GetDeviceAcceleration : FsmStateAction
{
// TODO: Figure out some nice mapping options for common use cases.
/* public enum MappingOptions
{
Flat,
Vertical
}
[Tooltip("Flat is god for marble rolling games, vertical is good for Doodle Jump type games.")]
public MappingOptions mappingOptions;
*/
[UIHint(UIHint.Variable)]
public FsmVector3 storeVector;
[UIHint(UIHint.Variable)]
public FsmFloat storeX;
[UIHint(UIHint.Variable)]
public FsmFloat storeY;
[UIHint(UIHint.Variable)]
public FsmFloat storeZ;
public FsmFloat multiplier;
public bool everyFrame;
public override void Reset()
{
storeVector = null;
storeX = null;
storeY = null;
storeZ = null;
multiplier = 1;
everyFrame = false;
}
public override void OnEnter()
{
DoGetDeviceAcceleration();
if (!everyFrame)
Finish();
}
public override void OnUpdate()
{
DoGetDeviceAcceleration();
}
void DoGetDeviceAcceleration()
{
/* var dir = Vector3.zero;
switch (mappingOptions)
{
case MappingOptions.Flat:
dir.x = Input.acceleration.x;
dir.y = Input.acceleration.z;
dir.z = Input.acceleration.y;
break;
case MappingOptions.Vertical:
dir.x = Input.acceleration.x;
dir.y = Input.acceleration.y;
dir.z = Input.acceleration.x;
break;
}
*/
var dir = new Vector3(Input.acceleration.x, Input.acceleration.y, Input.acceleration.z);
if (!multiplier.IsNone)
{
dir *= multiplier.Value;
}
storeVector.Value = dir;
storeX.Value = dir.x;
storeY.Value = dir.y;
storeZ.Value = dir.z;
}
}
}