Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
ai.fluctio.fluctio-sim / Utils / Extensions / VectorExtensions.cs
Size: Mime:
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using JetBrains.Annotations;
using UnityEngine;

namespace Fluctio.FluctioSim.Utils.Extensions
{
	[SuppressMessage("ReSharper", "MemberCanBePrivate.Global")]
	[SuppressMessage("ReSharper", "UnusedMember.Global")]
	[SuppressMessage("ReSharper", "UnusedMethodReturnValue.Global")]
	public static class VectorExtensions
	{
		
		[Pure] public static Vector2 ToVector(this Resolution resolution) => new(
			resolution.width,
			resolution.height);
		
		[Pure] public static Vector3 ComponentDivide(this Vector3 vector1, Vector3 vector2) => new(
			vector1.x / vector2.x,
			vector1.y / vector2.y,
			vector1.z / vector2.z);
		[Pure] public static Vector2 ComponentDivide(this Vector2 vector1, Vector2 vector2) => new(
			vector1.x / vector2.x,
			vector1.y / vector2.y);
		
		[Pure] public static Vector3 ComponentInverse(this Vector3 vector) => Vector3.one.ComponentDivide(vector);
		[Pure] public static Vector2 ComponentInverse(this Vector2 vector) => Vector2.one.ComponentDivide(vector);

		[Pure] public static Vector3 ToVector3(this float number) => Vector3.one * number;
		[Pure] public static Vector2 ToVector2(this float number) => Vector2.one * number;

		[Pure] public static float Average(this Vector3 vector) => (vector.x + vector.y + vector.z) / 3f;
		[Pure] public static float Average(this Vector2 vector) => (vector.x + vector.y) / 2f;

		[Pure] public static List<float> ToList(this Vector3 vector) => new() { vector.x, vector.y, vector.z };
		[Pure] public static List<float> ToList(this Vector2 vector) => new() { vector.x, vector.y };

		[Pure] public static Vector3 Lerp(Vector3 start, Vector3 end, Vector3 t) => new(
			Mathf.Lerp(start.x, end.x, t.x),
			Mathf.Lerp(start.y, end.y, t.y),
			Mathf.Lerp(start.z, end.z, t.z));
		[Pure] public static Vector2 Lerp(Vector2 start, Vector2 end, Vector2 t) => new(
			Mathf.Lerp(start.x, end.x, t.x),
			Mathf.Lerp(start.y, end.y, t.y));
		
	}
}