本文整理汇总了C#中BoundingBox.InflateToMinimum方法的典型用法代码示例。如果您正苦于以下问题:C# BoundingBox.InflateToMinimum方法的具体用法?C# BoundingBox.InflateToMinimum怎么用?C# BoundingBox.InflateToMinimum使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BoundingBox
的用法示例。
在下文中一共展示了BoundingBox.InflateToMinimum方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: FindMountPoint
static bool FindMountPoint(HkShapeCutterUtil cutter, HkShape shape, Vector3 direction, float gridSize, List<Sandbox.Definitions.MyCubeBlockDefinition.MountPoint> mountPoints)
{
//VRageRender.MyRenderProxy.DebugDrawLine3D(drawMatrix.Translation, Vector3D.Transform(direction, drawMatrix), Color.Green, Color.Green, false);
//float offset = (gridSize * 0.9f) / 2.0f;
float offset = (gridSize * 0.75f) / 2.0f; //because fracture pieces can be bit inside the cube
Plane plane = new Plane(-direction, offset);
float minimumSize = 0.2f;
Vector3 min, max;
if (cutter.Cut(shape, new Vector4(plane.Normal.X, plane.Normal.Y, plane.Normal.Z, plane.D), out min, out max))
{
var aabb = new BoundingBox(min, max);
aabb.InflateToMinimum(new Vector3(minimumSize));
float centerOffset = gridSize * 0.5f;
// VRageRender.MyRenderProxy.DebugDrawOBB(boxC, Color.Red, 0.02f, true, false);
MyCubeBlockDefinition.MountPoint mountPoint = new MyCubeBlockDefinition.MountPoint();
mountPoint.Normal = new Vector3I(direction);
mountPoint.Start = (aabb.Min + new Vector3(centerOffset)) / gridSize;
mountPoint.End = (aabb.Max + new Vector3(centerOffset)) / gridSize;
mountPoint.Enabled = true;
//because it didnt work if shape wasnt realy near the edge
var zExt = Vector3.Abs(direction) * mountPoint.Start;
bool add = zExt.AbsMax() > 0.5f;
mountPoint.Start -= zExt;
mountPoint.Start -= direction * 0.04f;
mountPoint.End -= Vector3.Abs(direction) * mountPoint.End;
mountPoint.End += direction * 0.04f;
if (add)
{
mountPoint.Start += Vector3.Abs(direction);
mountPoint.End += Vector3.Abs(direction);
}
mountPoints.Add(mountPoint);
return true;
}
return false;
}