public static bool hitObject(MeshFilter[] meshFilters, Ray rayWorld, out MeshFilter minMf, out float minDist) { List <BoundsDistance> mfHitBounds = new List <BoundsDistance>(); foreach (var mf in meshFilters) { if (!mf.gameObject.activeInHierarchy) { continue; } var bounds = mf.renderer.bounds; float dist; if (!bounds.IntersectRay(rayWorld, out dist)) { continue; } mfHitBounds.Add(new BoundsDistance() { mf = mf, distance = dist }); Debug.Log("Candidate (Bounds) : " + mf.gameObject.name); } mfHitBounds.Sort((x, y) => (x.distance < y.distance ? -1 : 1)); bool found = false; minMf = null; minDist = Mathf.Infinity; foreach (BoundsDistance mfDists in mfHitBounds) { #if false if (minDist < mfDists.distance) { break; } #endif MeshFilter mf = mfDists.mf; Vector3 rayOrigin = mf.transform.InverseTransformPoint(rayWorld.origin); Vector3 rayDirection = mf.transform.worldToLocalMatrix * (Vector4)rayWorld.direction; Mesh m = mf.sharedMesh; float dist; if (!TriangleTester.hitTriangleAll(rayOrigin, rayDirection, m.vertices, m.triangles, out dist)) { continue; } found = true; if (dist < minDist) { minDist = dist; minMf = mf; } } return(found); }
public void AnalyzeTest8_NotForm() { // check with 0 as dimensions NUnit.Framework.Assert.IsFalse(TriangleTester.GetTriangleType(0, 0, 0)); }
void Awake() { tT = (TriangleTester)target; }
public void AnalyzeTest7_NotForm() { NUnit.Framework.Assert.IsFalse(TriangleTester.GetTriangleType(-10, -10, 9)); // check wherther negative value will pass the test }
public void AnalyzeTest6_IsEquilateral() { NUnit.Framework.Assert.IsTrue(TriangleTester.GetTriangleType(88, 88, 88)); // check triangle with three same dimensions }
public void AnalyzeTest4_IsIsosceles() { NUnit.Framework.Assert.IsTrue(TriangleTester.GetTriangleType(20, 10, 10)); // check triangle with two same dimensions }
public void AnalyzeTest2_IsScalene() { // check triangle with three different dimensions NUnit.Framework.Assert.IsTrue(TriangleTester.GetTriangleType(78, 89, 100)); }
public void AnalyzeTest_IsScalene() { NUnit.Framework.Assert.IsTrue(TriangleTester.GetTriangleType(1, 2, 3)); // check triangle with three different dimensions }