Files
HauntedBloodlines/Assets/HTraceWSGI/Scripts/Structs/VoxelizationExactData.cs
2025-05-29 22:31:40 +03:00

44 lines
1.3 KiB
C#

using System;
using HTraceWSGI.Scripts.Globals;
using UnityEngine;
namespace HTraceWSGI.Scripts.Structs
{
[Serializable]
internal class VoxelizationExactData
{
public Vector3Int Resolution;
public Vector3 Bounds;
public Vector3 PreviousVoxelCameraPosition;
public float VoxelSize
{
get { return Bounds.x / Resolution.x; }
}
public float VoxelsPerMeter
{
get { return Resolution.x / Bounds.x; }
}
public void UpdateData(VoxelizationData voxelizationData)
{
Vector3Int resolution = HMath.CalculateVoxelResolution(voxelizationData);
var realBounds = new Vector3Int(voxelizationData.VoxelBounds, voxelizationData.VoxelBounds,
voxelizationData.OverrideBoundsHeightEnable == false ? voxelizationData.VoxelBounds : voxelizationData.OverrideBoundsHeight);
float realVoxelSize = (float)realBounds.x / resolution.x;
float exactVoxelSize = realVoxelSize.RoundToCeilTail(2);
float maxVoxelSize = 0.16f; // default case
if (HConfig.MAX_VOXEL_BOUNDS != 80) //not default case
{
maxVoxelSize = ((float)realBounds.x / resolution.x).RoundToCeilTail(2);
}
exactVoxelSize = Mathf.Clamp(exactVoxelSize, 0.08f, maxVoxelSize); // we want voxel size between 8 and 16 cm
Resolution = resolution;
Bounds = new Vector3(resolution.x * exactVoxelSize, resolution.y * exactVoxelSize, resolution.z * exactVoxelSize);
}
}
}