This repository has been archived on 2026-05-02. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
CompuLogic/Assets/Scripts/Utils.cs
T
2020-12-11 17:15:37 +01:00

60 lines
1.6 KiB
C#
Executable File

using System;
using System.Collections;
using System.Linq;
using UnityEngine;
using Random = UnityEngine.Random;
namespace UntitledLogicGame
{
public static class Utils
{
#region String Utils
public static string RandomString(int length)
{
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
return new string(Enumerable.Repeat(chars, length)
.Select(s => s[Random.Range(0, s.Length)]).ToArray());
}
#endregion
#region Bool Utils
public static bool[][] AllBoolArrayValues(int length)
{
int count = (int)Math.Pow(2, length);
return new ArrayList[count].Select((v, i) => i.ToBoolArray(length)).ToArray();
}
#endregion
#region Unity Utils
public static void RandomName(string prefix, GameObject obj)
{
obj.name = $"{prefix}_{RandomString(5)}";
}
#endregion
}
public static class Extensions
{
public static bool[] ToBoolArray(this int value, int length)
{
string str = Convert.ToString(value, 2).PadLeft(length, '0');
return str.Select((x) => x == '1').ToArray();
}
public static int ToInt(this bool[] array)
{
return array.Select((v, i) => (v ? 1 : 0) << (array.Length - i - 1)).Sum();
}
public static Vector3 Round(this Vector3 v)
{
return new Vector3(Mathf.Round(v.x), Mathf.Round(v.y), Mathf.Round(v.z));
}
}
}