diff --git a/Editor/ReflectionProbeVolumeEditor.cs b/Editor/ReflectionProbeVolumeEditor.cs deleted file mode 100644 index 685f939..0000000 --- a/Editor/ReflectionProbeVolumeEditor.cs +++ /dev/null @@ -1,172 +0,0 @@ -#if COM_UNITY_MODULES_PHYSICS -using UnityEditor; -using UnityEngine; - -namespace Utils -{ - public class ReflectionProbeVolumeEditor : MonoBehaviour - { - [CustomEditor(typeof(ReflectionProbeVolume), true)] - public class EventManagerEditor : Editor - { - private SerializedProperty resolution; - private SerializedProperty offset; - private SerializedProperty threshold; - private SerializedProperty blendDistance; - - private void OnEnable() - { - resolution = serializedObject.FindProperty("resolution"); - offset = serializedObject.FindProperty("offset"); - threshold = serializedObject.FindProperty("threshold"); - blendDistance = serializedObject.FindProperty("blendDistance"); - } - - public override void OnInspectorGUI() - { - serializedObject.Update(); - EditorGUILayout.PropertyField(resolution); - EditorGUILayout.PropertyField(offset); - EditorGUILayout.PropertyField(threshold); - EditorGUILayout.PropertyField(blendDistance); - serializedObject.ApplyModifiedProperties(); - EditorGUILayout.Space(); - if (GUILayout.Button("Place")) - { - Place(); - } - } - - private void Place() - { - var voxelSize = resolution.intValue; - var offset = this.offset.floatValue; - var threshold = this.threshold.floatValue; - var blendDistance = this.blendDistance.floatValue; - ReflectionProbeVolume reflectionProbeVolume = (ReflectionProbeVolume)target; - var transform = reflectionProbeVolume.transform; - //Gizmos.DrawWireCube(transform.position, transform.localScale); - var startPos = transform.position + transform.right * transform.localScale.x / 2 + transform.up * transform.localScale.y / 2 + transform.forward * transform.localScale.z / 2; - var xVar = transform.localScale.x / voxelSize / 2f; - var zVar = transform.localScale.z / voxelSize / 2f; - var data = new Vector3[voxelSize, voxelSize]; - //Gizmos.color = Color.blue; - for (int x = 0; x < voxelSize; x++) - { - for (int z = 0; z < voxelSize; z++) - { - var rayPos = startPos - transform.right * xVar - transform.forward * zVar; - if (Physics.Raycast(rayPos, Vector2.down, out RaycastHit hit)) - { - var point = hit.point + Vector3.up * offset; - data[x, z] = point; - } - zVar += transform.localScale.z / voxelSize; - } - xVar += transform.localScale.x / voxelSize; - zVar = transform.localScale.z / voxelSize / 2f; - } - - CheckSquare(data, 5, voxelSize, threshold, blendDistance, transform); - CheckSquare(data, 4, voxelSize, threshold, blendDistance, transform); - CheckSquare(data, 3, voxelSize, threshold, blendDistance, transform); - CheckSquare(data, 2, voxelSize, threshold, blendDistance, transform); - - for (int x = 0; x < voxelSize; x++) - { - for (int z = 0; z < voxelSize; z++) - { - if (data[x, z].x != float.PositiveInfinity) - { - var go = new GameObject("Reflection Probe Size: 1"); - go.transform.SetParent(transform); - go.transform.position = data[x, z]; - var reflectionProbe = go.AddComponent(typeof(ReflectionProbe)) as ReflectionProbe; - reflectionProbe.resolution = 16; - reflectionProbe.center = new Vector3(0f, transform.position.y - data[x, z].y, 0f); - reflectionProbe.size = new Vector3(transform.localScale.x / voxelSize + blendDistance, transform.localScale.y, transform.localScale.z / voxelSize + blendDistance); - } - } - } - - Undo.RegisterFullObjectHierarchyUndo(reflectionProbeVolume.gameObject, "Place Reflection Probes"); - } - - private void CheckSquare(Vector3[,] data, int size, int voxelSize, float threshold, float blendDistance, Transform transform) - { - for (int x = 0; x < voxelSize; x++) - { - for (int z = 0; z < voxelSize; z++) - { - if (x + size <= voxelSize && z + size <= voxelSize) - { - bool valid = true; - var point = Vector3.zero; - for (int i = 0; i < size; i++) - { - for (int k = 0; k < size; k++) - { - var pos = data[x + i, z + k]; - if (pos != Vector3.positiveInfinity) - { - if (Compare(data[x, z].y, pos.y, threshold)) - { - point += pos; - - } - else - { - valid = false; - } - } - } - } - if (valid) - { - point /= size * size; - - var go = new GameObject("Reflection Probe Size: " + size); - go.transform.SetParent(transform); - go.transform.position = point; - var reflectionProbe = go.AddComponent(typeof(ReflectionProbe)) as ReflectionProbe; - if (size == 2) - { - reflectionProbe.resolution = 16; - } - else if (size == 3) - { - reflectionProbe.resolution = 32; - } - else if (size == 4) - { - reflectionProbe.resolution = 32; - } - else if (size == 5) - { - reflectionProbe.resolution = 64; - } - - reflectionProbe.center = new Vector3(0f, transform.position.y - point.y, 0f); - reflectionProbe.size = new Vector3(transform.localScale.x / voxelSize * size + blendDistance, transform.localScale.y, transform.localScale.z / voxelSize * size + blendDistance); - - for (int i = 0; i < size; i++) - { - for (int k = 0; k < size; k++) - { - data[x + i, z + k] = Vector3.positiveInfinity; - } - } - } - } - } - } - } - - private bool Compare(float arg0, float arg1, float threshold) - { - return Mathf.Abs(arg0 - arg1) < threshold; - } - } - } -} -#endif diff --git a/Editor/ReflectionProbeVolumeEditor.cs.meta b/Editor/ReflectionProbeVolumeEditor.cs.meta deleted file mode 100644 index 8742fe7..0000000 --- a/Editor/ReflectionProbeVolumeEditor.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a77b3177fd3b4754cb1b855b831c5424 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Runtime/ReflectionProbeVolume.cs b/Runtime/ReflectionProbeVolume.cs deleted file mode 100644 index 18cc6d7..0000000 --- a/Runtime/ReflectionProbeVolume.cs +++ /dev/null @@ -1,110 +0,0 @@ -#if COM_UNITY_MODULES_PHYSICS -using System.Diagnostics; -using UnityEngine; - -namespace Utils -{ - public class ReflectionProbeVolume : MonoBehaviour - { - [Min(1)] - public int resolution = 4; - public float offset = 2; - public float blendDistance = 1; - [Min(0)] - public float threshold = .5f; - - [Conditional("UNITY_EDITOR")] - private void OnDrawGizmosSelected() - { - Gizmos.DrawWireCube(transform.position, transform.localScale); - var startPos = transform.position + transform.right * transform.localScale.x / 2 + transform.up * transform.localScale.y / 2 + transform.forward * transform.localScale.z / 2; - var xVar = transform.localScale.x / resolution / 2f; - var zVar = transform.localScale.z / resolution / 2f; - var data = new Vector3[resolution, resolution]; - Gizmos.color = Color.blue; - for (int x = 0; x < resolution; x++) - { - for (int z = 0; z < resolution; z++) - { - var rayPos = startPos - transform.right * xVar - transform.forward * zVar; - if (Physics.Raycast(rayPos, Vector2.down, out RaycastHit hit)) - { - var point = hit.point + Vector3.up * offset; - data[x, z] = point; - } - zVar += transform.localScale.z / resolution; - } - xVar += transform.localScale.x / resolution; - zVar = transform.localScale.z / resolution / 2f; - } - - CheckSquare(data, 5); - CheckSquare(data, 4); - CheckSquare(data, 3); - CheckSquare(data, 2); - - for (int x = 0; x < resolution; x++) - { - for (int z = 0; z < resolution; z++) - { - if (data[x, z] != Vector3.positiveInfinity) - { - Gizmos.DrawSphere(data[x, z], .1f); - } - } - } - } - - private void CheckSquare(Vector3[,] data, int size) - { - for (int x = 0; x < resolution; x++) - { - for (int z = 0; z < resolution; z++) - { - if (x + size <= resolution && z + size <= resolution) - { - bool valid = true; - var point = Vector3.zero; - for (int i = 0; i < size; i++) - { - for (int k = 0; k < size; k++) - { - var pos = data[x + i, z + k]; - if (pos != Vector3.positiveInfinity) - { - if (Compare(data[x, z].y, pos.y)) - { - point += pos; - - } - else - { - valid = false; - } - } - } - } - if (valid) - { - point /= size * size; - Gizmos.DrawSphere(point, size * .1f); - for (int i = 0; i < size; i++) - { - for (int k = 0; k < size; k++) - { - data[x + i, z + k] = Vector3.positiveInfinity; - } - } - } - } - } - } - } - - private bool Compare(float arg0, float arg1) - { - return Mathf.Abs(arg0 - arg1) < threshold; - } - } -} -#endif diff --git a/Runtime/ReflectionProbeVolume.cs.meta b/Runtime/ReflectionProbeVolume.cs.meta deleted file mode 100644 index a5bf09f..0000000 --- a/Runtime/ReflectionProbeVolume.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a740d05cae346654fbd4dc576e6405ab -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/package.json b/package.json index 72824d5..a453450 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ru.shazbot.utils", - "version": "4.1.1", + "version": "5.0.0", "displayName": "Utils", "description": "Utility useful for almost any project.", "licensesUrl": "https://git.shazbot.ru/Utils.git/tree/LICENSE.md",