本文整理汇总了C#中ObjectArray.Clear方法的典型用法代码示例。如果您正苦于以下问题:C# ObjectArray.Clear方法的具体用法?C# ObjectArray.Clear怎么用?C# ObjectArray.Clear使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ObjectArray
的用法示例。
在下文中一共展示了ObjectArray.Clear方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: coordinates
/// process all triangles within the provided axis-aligned bounding box
/**
basic algorithm:
- convert input aabb to local coordinates (scale down and shift for local origin)
- convert input aabb to a range of heightfield grid points (quantize)
- iterate over all triangles in that subset of the grid
*/
public override void ProcessAllTriangles(ITriangleCallback callback, ref Vector3 aabbMin, ref Vector3 aabbMax)
{
// scale down the input aabb's so they are in local (non-scaled) coordinates
Vector3 invScale = new Vector3(1f, 1f, 1f);
invScale /= m_localScaling;
Vector3 localAabbMin = aabbMin * invScale;
Vector3 localAabbMax = aabbMax * invScale;
// account for local origin
localAabbMin += m_localOrigin;
localAabbMax += m_localOrigin;
//quantize the aabbMin and aabbMax, and adjust the start/end ranges
int[] quantizedAabbMin = new int[3];
int[] quantizedAabbMax = new int[3];
QuantizeWithClamp(quantizedAabbMin, ref localAabbMin, 0);
QuantizeWithClamp(quantizedAabbMax, ref localAabbMax, 1);
// expand the min/max quantized values
// this is to catch the case where the input aabb falls between grid points!
for (int i = 0; i < 3; ++i)
{
quantizedAabbMin[i]--;
quantizedAabbMax[i]++;
}
int startX = 0;
int endX = m_heightStickWidth - 1;
int startJ = 0;
int endJ = m_heightStickLength - 1;
switch (m_upAxis)
{
case 0:
{
if (quantizedAabbMin[1] > startX)
startX = quantizedAabbMin[1];
if (quantizedAabbMax[1] < endX)
endX = quantizedAabbMax[1];
if (quantizedAabbMin[2] > startJ)
startJ = quantizedAabbMin[2];
if (quantizedAabbMax[2] < endJ)
endJ = quantizedAabbMax[2];
break;
}
case 1:
{
if (quantizedAabbMin[0] > startX)
startX = quantizedAabbMin[0];
if (quantizedAabbMax[0] < endX)
endX = quantizedAabbMax[0];
if (quantizedAabbMin[2] > startJ)
startJ = quantizedAabbMin[2];
if (quantizedAabbMax[2] < endJ)
endJ = quantizedAabbMax[2];
break;
};
case 2:
{
if (quantizedAabbMin[0] > startX)
startX = quantizedAabbMin[0];
if (quantizedAabbMax[0] < endX)
endX = quantizedAabbMax[0];
if (quantizedAabbMin[1] > startJ)
startJ = quantizedAabbMin[1];
if (quantizedAabbMax[1] < endJ)
endJ = quantizedAabbMax[1];
break;
}
default:
{
//need to get valid m_upAxis
Debug.Assert(false);
break;
}
}
ObjectArray<Vector3> vertices = new ObjectArray<Vector3>();
Vector3[] tempVectors = new Vector3[3];
for (int j = startJ; j < endJ; j++)
{
for (int x = startX; x < endX; x++)
{
if (m_flipQuadEdges || (m_useDiamondSubdivision && (((j + x) & 1) > 0)))
{
//first triangle
GetVertex(x, j, ref tempVectors[0]);
GetVertex(x + 1, j, ref tempVectors[1]);
GetVertex(x + 1, j + 1, ref tempVectors[2]);
vertices.Clear();
for (int a = 0; a < tempVectors.Length; ++a)
{
//.........这里部分代码省略.........