コード例 #1
0
        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);
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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);
                }
            }
        }