public void UpdateObject(int objectIndex, Bounds bounds, int group) { if (bounds.IsCleared()) { Log.Fatal("OctreeContainer: UpdateObject: Invalid bounds."); } if (group < 0) { Log.Fatal("OctreeContainer: UpdateObject: group < 0."); } if (group >= 32) { Log.Fatal("OctreeContainer: UpdateObject: group >= 32."); } Vector3 boundsMin = bounds.Minimum; Vector3 boundsMax = bounds.Maximum; OctreeContainer_UpdateObject(nativeObject, objectIndex, ref boundsMin, ref boundsMax, group); }
public int AddObject(Bounds bounds, int group) { if (bounds.IsCleared()) { Log.Fatal("OctreeContainer: AddObject: Invalid bounds."); } if (group < 0) { Log.Fatal("OctreeContainer: AddObject: group < 0."); } if (group >= 32) { Log.Fatal("OctreeContainer: AddObject: group >= 32."); } Vector3 boundsMin = bounds.Minimum; Vector3 boundsMax = bounds.Maximum; return(OctreeContainer_AddObject(nativeObject, ref boundsMin, ref boundsMax, group)); }
protected override void OnSpaceBoundsUpdate(ref SpaceBounds newBounds) { base.OnSpaceBoundsUpdate(ref newBounds); if (rigidBody != null) { var tr = Transform.Value; var trNoScale = new Transform(tr.Position, tr.Rotation); Bounds bounds = Bounds.Cleared; foreach (var p in rigidBodyLocalPoints) { bounds.Add(trNoScale * new Vector3(p, 0)); } if (!bounds.IsCleared()) { bounds.Expand(new Vector3(0, 0, 0.001)); var b = new SpaceBounds(bounds); newBounds = SpaceBounds.Merge(newBounds, b); } } }