/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
* All rights reserved.
*
* This source code is licensed under the license found in the
* LICENSE file in the root directory of this source tree.
*/
using System;
using Meta.WitAi.Attributes;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Serialization;
using Utilities;
namespace Meta.WitAi.Utilities
{
[AddComponentMenu("Wit.ai/Utilities/Conversions/Float to String")]
public class FloatToStringEvent : MonoBehaviour
{
[FormerlySerializedAs("format")]
[Tooltip("The format value to be used on the float")]
[SerializeField] private string _floatFormat;
[Tooltip("The format of the string itself. {0} will represent the float value provided")]
[SerializeField] private string _stringFormat;
[Space(WitRuntimeStyles.HeaderPaddingTop)]
[TooltipBox("Triggered when ConvertFloatToString(float) is called. The string in this event will be formatted based on the format fields.")]
[SerializeField] private StringEvent onFloatToString = new StringEvent();
///
/// Converts a float to a string using the component format values and emits an onFloatToString event.
///
///
public void ConvertFloatToString(float value)
{
string floatStringValue;
if (string.IsNullOrEmpty(_floatFormat))
{
floatStringValue = value.ToString();
}
else
{
floatStringValue = value.ToString(_floatFormat);
}
if (string.IsNullOrEmpty(_stringFormat))
{
onFloatToString?.Invoke(floatStringValue);
}
else
{
onFloatToString?.Invoke(string.Format(_stringFormat, floatStringValue));
}
}
}
[Serializable]
public class StringEvent : UnityEvent {}
}