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

81 lines
2.3 KiB
C#

// (c) Copyright HutongGames, LLC 2010-2012. All rights reserved.
using UnityEngine;
using System;
namespace HutongGames.PlayMaker.Actions
{
[ActionCategory(ActionCategory.Convert)]
[HelpUrl("http://hutonggames.com/playmakerforum/index.php?topic=1711.0")]
[Tooltip("Converts Seconds to a String value representing the time.")]
public class ConvertSecondsToString : FsmStateAction
{
[RequiredField]
[UIHint(UIHint.Variable)]
[Tooltip("The seconds variable to convert.")]
public FsmFloat secondsVariable;
[RequiredField]
[UIHint(UIHint.Variable)]
[Tooltip("A string variable to store the time value.")]
public FsmString stringVariable;
[RequiredField]
[Tooltip("Format. 0 for days, 1 is for hours, 2 for minutes, 3 for seconds and 4 for milliseconds. 5 for total days, 6 for total hours, 7 for total minutes, 8 for total seconds, 9 for total milliseconds, 10 for two digits milliseconds. so {2:D2} would just show the seconds of the current time, NOT the grand total number of seconds, the grand total of seconds would be {8:F0}")]
public FsmString format;
[Tooltip("Repeat every frame. Useful if the seconds variable is changing.")]
public bool everyFrame;
public override void Reset()
{
secondsVariable = null;
stringVariable = null;
everyFrame = false;
format = "{1:D2}h:{2:D2}m:{3:D2}s:{10}ms";
}
public override void OnEnter()
{
DoConvertSecondsToString();
if (!everyFrame)
{
Finish();
}
}
public override void OnUpdate()
{
DoConvertSecondsToString();
}
void DoConvertSecondsToString()
{
TimeSpan t = TimeSpan.FromSeconds(secondsVariable.Value);
string milliseconds_2D = t.Milliseconds.ToString("D3").PadLeft(2, '0');
milliseconds_2D = milliseconds_2D.Substring(0,2);
stringVariable.Value = string.Format(format.Value,
t.Days,
t.Hours,
t.Minutes,
t.Seconds,
t.Milliseconds,
t.TotalDays,
t.TotalHours,
t.TotalMinutes,
t.TotalSeconds,
t.TotalMilliseconds,
milliseconds_2D);
}
#if UNITY_EDITOR
public override string AutoName()
{
return ActionHelpers.AutoNameConvert(this, secondsVariable, stringVariable);
}
#endif
}
}