40 lines
877 B
C#
40 lines
877 B
C#
using System;
|
|
using UnityEngine;
|
|
|
|
namespace Mapbox.Examples.Voxels
|
|
{
|
|
public class VoxelFetcher : MonoBehaviour
|
|
{
|
|
[SerializeField]
|
|
VoxelColorMapper[] _voxels;
|
|
|
|
public GameObject GetVoxelFromColor(Color color)
|
|
{
|
|
GameObject matchingVoxel = _voxels[0].Voxel;
|
|
var minDistance = Mathf.Infinity;
|
|
foreach (var voxel in _voxels)
|
|
{
|
|
var distance = GetDistanceBetweenColors(voxel.Color, color);
|
|
if (distance < minDistance)
|
|
{
|
|
matchingVoxel = voxel.Voxel;
|
|
minDistance = distance;
|
|
}
|
|
}
|
|
return matchingVoxel;
|
|
}
|
|
|
|
public static float GetDistanceBetweenColors(Color color1, Color color2)
|
|
{
|
|
return Mathf.Sqrt(Mathf.Pow(color1.r - color2.r, 2f) + Mathf.Pow(color1.g - color2.g, 2f) + Mathf.Pow(color1.b - color2.b, 2f));
|
|
}
|
|
}
|
|
|
|
[Serializable]
|
|
public class VoxelColorMapper
|
|
{
|
|
public Color Color;
|
|
public GameObject Voxel;
|
|
}
|
|
}
|