private void ProcessSpriteRender(MinMaxAABB sceneBounds, UnityEngine.SpriteRenderer spriteRenderer) { var entity = GetPrimaryEntity(spriteRenderer); SpriteUtility.CreateSpriteComponent(DstEntityManager, entity, spriteRenderer); sceneBounds.Encapsulate(spriteRenderer.bounds.ToAABB()); }
public void Execute(ArchetypeChunk chunk, int chunkIndex, int firstEntityIndex) { if (!chunk.DidChange(RectTransformType, LastSystemVersion) && !chunk.DidChange(LocalToWorldType, LastSystemVersion)) { return; } var rectTransforms = chunk.GetNativeArray(RectTransformType); var localToWorld = chunk.GetNativeArray(LocalToWorldType); var worldRectTransforms = chunk.GetNativeArray(WorldRectTransformType); MinMaxAABB combined = MinMaxAABB.Empty; for (int i = 0; i != rectTransforms.Length; i++) { var transformed = AABB.Transform(localToWorld[i].Value, rectTransforms[i].Value); worldRectTransforms[i] = new WorldRectTransform { Value = transformed }; combined.Encapsulate(transformed); } chunk.SetChunkComponentData(ChunkWorldRectTransformType, new ChunkWorldRectTransform { Value = combined }); }
public void Execute(ArchetypeChunk chunk, int chunkIndex, int firstEntityIndex) { if (!chunk.DidChange(RendererBounds, LastSystemVersion) && !chunk.DidChange(LocalToWorld, LastSystemVersion)) { return; } //@TODO: Delta change... var worldBounds = chunk.GetNativeArray(WorldRenderBounds); var localBounds = chunk.GetNativeArray(RendererBounds); var localToWorld = chunk.GetNativeArray(LocalToWorld); MinMaxAABB combined = MinMaxAABB.Empty; for (int i = 0; i != localBounds.Length; i++) { var transformed = AABB.Transform(localToWorld[i].Value, localBounds[i].Value); worldBounds[i] = new WorldRenderBounds { Value = transformed }; combined.Encapsulate(transformed); } chunk.SetChunkComponentData(ChunkWorldRenderBounds, new ChunkWorldRenderBounds { Value = combined }); }
public static void Encapsulate_float3_new_min() { var aabb = new MinMaxAABB(); aabb.Encapsulate(new float3(-1.0f)); TestUtils.AreEqual(float3.zero, aabb.Max); TestUtils.AreEqual(new float3(-1.0f), aabb.Min); }
public static void IsEmpty_min_gt_max() { var aabb = new MinMaxAABB { Min = new float3(1.0f), Max = new float3(-1.0f) }; TestUtils.IsFalse(aabb.IsEmpty); }
public static void Encapsulate_float3_new_miny_maxxz() { var aabb = new MinMaxAABB(); aabb.Encapsulate(new float3(1.0f, -1.0f, 1.0f)); TestUtils.AreEqual(new float3(0.0f, -1.0f, 0.0f), aabb.Min); TestUtils.AreEqual(new float3(1.0f, 0.0f, 1.0f), aabb.Max); }
public static void ContainsAabb() { var aabb1 = new MinMaxAABB(new float3(-1.0f), new float3(1.0f)); var aabb2 = new MinMaxAABB(new float3(-0.5f), new float3(0.5f)); TestUtils.IsTrue(aabb1.Contains(aabb2)); TestUtils.IsFalse(aabb2.Contains(aabb1)); }
public static void Encapsulate_MinMaxAABB_trivial() { var aabb = new MinMaxAABB(); aabb.Encapsulate(new MinMaxAABB()); TestUtils.AreEqual(float3.zero, aabb.Min); TestUtils.AreEqual(float3.zero, aabb.Max); }
public static void ContainsAabb_Trivial() { var aabb1 = new MinMaxAABB(); var aabb2 = new MinMaxAABB(); TestUtils.IsTrue(aabb1.Contains(aabb2)); TestUtils.IsTrue(aabb2.Contains(aabb1)); }
public static void Constructor() { var min = new float3(38.95940399169921875f, -24.644245147705078125f, 27.7903194427490234375f); var max = new float3(71.30234527587890625f, 52.2211151123046875f, 99.07735443115234375f); var aabb = new MinMaxAABB(min, max); TestUtils.AreEqual(min, aabb.Min); TestUtils.AreEqual(max, aabb.Max); }
public static void Expand_NegativeDistance() { var aabb = new MinMaxAABB(new float3(-0.5f), new float3(0.5f)); aabb.Expand(-1.0f); TestUtils.AreEqual(new float3(0.5f), aabb.Min); TestUtils.AreEqual(new float3(-0.5f), aabb.Max); }
public static AABB GetEncompassingAABB(MinMaxAABB a, MinMaxAABB b) { MinMaxAABB returnAABB = new MinMaxAABB(); returnAABB.Min = math.min(a.Min, b.Min); returnAABB.Max = math.max(a.Max, b.Max); return(returnAABB); }
public static void GrowAABB(ref MinMaxAABB sourceAABB, float3 includePoint) { sourceAABB.Min.x = math.min(sourceAABB.Min.x, includePoint.x); sourceAABB.Min.y = math.min(sourceAABB.Min.y, includePoint.y); sourceAABB.Min.z = math.min(sourceAABB.Min.z, includePoint.z); sourceAABB.Max.x = math.max(sourceAABB.Max.x, includePoint.x); sourceAABB.Max.y = math.max(sourceAABB.Max.y, includePoint.y); sourceAABB.Max.z = math.max(sourceAABB.Max.z, includePoint.z); }
public static void Convert_AABB_to_MinMaxAABB() { AABB aabb = new AABB { Center = new float3(1.5f), HalfExtents = new float3(0.5f) }; MinMaxAABB minmax = aabb; TestUtils.AreEqual(new float3(1.0f), minmax.Min); TestUtils.AreEqual(new float3(2.0f), minmax.Max); }
public static void SurfaceArea() { var min = new float3(-47.989063262939453125f, 28.037994384765625f, -9.756519317626953125f); var max = new float3(43.84253692626953125f, 101.54019927978515625f, -7.03227138519287109375f); var aabb = new MinMaxAABB { Min = min, Max = max }; TestUtils.AreEqual(14400.470703125f, aabb.SurfaceArea, 1, true); }
public static void Equals_diff_maxz() { MinMaxAABB aabb1 = new MinMaxAABB(); MinMaxAABB aabb2 = new MinMaxAABB { Max = new float3(0.0f, 0.0f, 1.0f) }; TestUtils.IsFalse(aabb1.Equals(aabb2)); TestUtils.IsFalse(aabb2.Equals(aabb1)); }
public static void Equals() { MinMaxAABB aabb1 = new MinMaxAABB { Min = new float3(-123.0f, 0.5182f, 20.0f), Max = new float3(1.0f, -1.0f, 0.99191f) }; MinMaxAABB aabb2 = aabb1; TestUtils.IsTrue(aabb1.Equals(aabb2)); TestUtils.IsTrue(aabb2.Equals(aabb1)); }
public static void Encapsulate_MinMaxAABB_new_minz_maxxy() { var aabb = new MinMaxAABB(); aabb.Encapsulate(new MinMaxAABB { Min = new float3(0.0f, 0.0f, -1.0f), Max = new float3(1.0f, 1.0f, 0.0f) }); TestUtils.AreEqual(new float3(0.0f, 0.0f, -1.0f), aabb.Min); TestUtils.AreEqual(new float3(1.0f, 1.0f, 0.0f), aabb.Max); }
public static void Convert_MinMaxAABB_to_AABB() { var minmax = new MinMaxAABB { Min = new float3(1.0f), Max = new float3(2.0f) }; AABB aabb = minmax; TestUtils.AreEqual(new float3(1.5f), aabb.Center); TestUtils.AreEqual(new float3(0.5f), aabb.HalfExtents); }
public static void Encapsulate_MinMaxAABB_new_min() { var aabb = new MinMaxAABB(); var p = new float3(-1.0f); aabb.Encapsulate(new MinMaxAABB { Min = p }); TestUtils.AreEqual(float3.zero, aabb.Max); TestUtils.AreEqual(p, aabb.Min); }
MinMaxAABB GetMinMax() { MinMaxAABB bounds = MinMaxAABB.Empty; foreach (SubScene subScene in targets) { bounds.Encapsulate(subScene.SceneBoundingVolume); } return(bounds); }
public static void Extents() { var min = new float3(48.152984619140625f, -33.58978271484375f, -37.498805999755859375f); var max = new float3(111.2894439697265625f, -9.473724365234375f, 25.39115142822265625f); var aabb = new MinMaxAABB { Min = min, Max = max }; var expected = new float3(63.1364593505859375f, 24.116058349609375f, 62.889957427978515625f); TestUtils.AreEqual(expected, aabb.Extents); }
public static void Center() { var min = new float3(47.902675628662109375f, -34.302494049072265625f, 22.7147884368896484375f); var max = new float3(84.1039886474609375f, 23.274578094482421875f, 58.204532623291015625f); var aabb = new MinMaxAABB { Min = min, Max = max }; var expected = new float3(66.00333404541015625f, -5.513957977294921875f, 40.459659576416015625f); TestUtils.AreEqual(expected, aabb.Center); }
public static void CreateFromCenterAndHalfExtents() { var center = new float3(-29.2458133697509765625f, 1.21094369888305664063f, 34.281322479248046875f); var halfExtents = new float3(8.8238582611083984375f, 72.26158905029296875f, 47.658290863037109375f); var expectedMin = new float3(-38.069671630859375f, -71.0506439208984375f, -13.3769683837890625f); var expectedMax = new float3(-20.421955108642578125f, 73.4725341796875f, 81.93961334228515625f); var aabb = MinMaxAABB.CreateFromCenterAndHalfExtents(center, halfExtents); TestUtils.AreEqual(expectedMin, aabb.Min); TestUtils.AreEqual(expectedMax, aabb.Max); }
public static void CreateFromCenterAndExtents() { var center = new float3(-29.2458133697509765625f, 1.21094369888305664063f, 34.281322479248046875f); var extents = new float3(71.5140533447265625f, 33.691967010498046875f, 29.8891429901123046875f); var expectedMin = new float3(-65.002838134765625f, -15.635040283203125f, 19.336750030517578125f); var expectedMax = new float3(6.5112133026123046875f, 18.056926727294921875f, 49.225894927978515625f); var aabb = MinMaxAABB.CreateFromCenterAndExtents(center, extents); TestUtils.AreEqual(expectedMin, aabb.Min); TestUtils.AreEqual(expectedMax, aabb.Max); }
public static void HalfExtents() { var min = new float3(-14.3485383987426757813f, 28.68161773681640625f, -40.28060150146484375f); var max = new float3(4.26444864273071289063f, 99.3212738037109375f, 27.9023494720458984375f); var aabb = new MinMaxAABB { Min = min, Max = max }; var expected = new float3(9.3064937591552734375f, 35.319828033447265625f, 34.0914764404296875f); TestUtils.AreEqual(expected, aabb.HalfExtents); }
public void Execute() { for (var i = 0; i < Chunks.Length; ++i) { if (SharedComponentIndex == Chunks[i].GetSharedComponentIndex(FilterType)) { MinMaxAABB bounds = ChunkWorldBounds.Value; bounds.Encapsulate(Chunks[i].GetChunkComponentData(ChunkWorldRenderBoundsType).Value); ChunkWorldBounds.Value = bounds; } } }
void IJob.Execute() { MinMaxAABB combined = MinMaxAABB.Empty; for (int i = InputLength - 1; i != -1; i--) { combined.Encapsulate(Input[i].c0); combined.Encapsulate(Input[i].c1); } Output[OutputIndex] = !combined.IsEmpty ? new Bounds { min = combined.Min, max = combined.Max } : default(Bounds); }
public static void ContainsAabb_BarelyNotContained() { var aabb1 = new MinMaxAABB(new float3(-1.0f), new float3(1.0f)); var aabb2 = new MinMaxAABB(new float3(-1.0f), new float3(1.0f + EPSILON, 1.0f, 1.0f)); var aabb3 = new MinMaxAABB(new float3(-1.0f), new float3(1.0f, 1.0f + EPSILON, 1.0f)); var aabb4 = new MinMaxAABB(new float3(-1.0f), new float3(1.0f, 1.0f, 1.0f + EPSILON)); var aabb5 = new MinMaxAABB(new float3(-1.0f - EPSILON, -1.0f, -1.0f), new float3(1.0f)); var aabb6 = new MinMaxAABB(new float3(-1.0f, -1.0f - EPSILON, -1.0f), new float3(1.0f)); var aabb7 = new MinMaxAABB(new float3(-1.0f, -1.0f, -1.0f - EPSILON), new float3(1.0f)); TestUtils.IsFalse(aabb1.Contains(aabb2)); TestUtils.IsFalse(aabb1.Contains(aabb3)); TestUtils.IsFalse(aabb1.Contains(aabb4)); TestUtils.IsFalse(aabb1.Contains(aabb5)); TestUtils.IsFalse(aabb1.Contains(aabb6)); TestUtils.IsFalse(aabb1.Contains(aabb7)); }
public static MinMaxAABB GetActiveWorldMinMax(World world, UnityEngine.Object[] targets) { MinMaxAABB bounds = MinMaxAABB.Empty; if (world == null) return bounds; var entities = world.EntityManager; foreach (SubScene subScene in targets) { foreach (var section in GetActiveWorldSections(World.DefaultGameObjectInjectionWorld, subScene.SceneGUID)) { if (entities.HasComponent<SceneBoundingVolume>(section)) bounds.Encapsulate(entities.GetComponentData<SceneBoundingVolume>(section).Value); } } return bounds; }