public TriangleCallback() { _processTriangle = new ProcessTriangleDelegate(ProcessTriangleUnmanaged); _native = btTriangleCallbackWrapper_new( Marshal.GetFunctionPointerForDelegate(_processTriangle)); }
public TriangleCallback() { _processTriangle = new ProcessTriangleDelegate(ProcessTriangleUnmanaged); _native = btTriangleCallbackWrapper_new( Marshal.GetFunctionPointerForDelegate(_processTriangle)); }
public TriangleCallback() { _processTriangle = new ProcessTriangleDelegate(ProcessTriangleUnmanaged); IntPtr native = btTriangleCallbackWrapper_new( Marshal.GetFunctionPointerForDelegate(_processTriangle)); InitializeUserOwned(native); }
/// <summary> /// Construct primitive definitions and pass to provided processors. /// </summary> private static void TraversePrimitives(PrimitiveTopology primitiveTopology, int countVertices, ProcessPointDelegate processPoint, ProcessLineDelegate processLine, ProcessTriangleDelegate processTriangle) { switch (primitiveTopology) { case PrimitiveTopology.PointList: for (var i = 0u; i < countVertices; i++) { processPoint(i); } break; case PrimitiveTopology.LineList: for (var i = 0u; i < countVertices; i += 2) { processLine(i, i + 1); } break; case PrimitiveTopology.LineStrip: for (var i = 0u; i < countVertices - 1; i++) { processLine(i, i + 1); } break; case PrimitiveTopology.TriangleList: for (var i = 0u; i < countVertices; i += 3) { processTriangle(i, i + 1, i + 2); } break; case PrimitiveTopology.TriangleStrip: var flip = false; for (var i = 0u; i < countVertices - 2; i++) { if (flip) { processTriangle(i, i + 2, i + 1); } else { processTriangle(i, i + 1, i + 2); } flip = !flip; } break; default: throw new ArgumentOutOfRangeException(nameof(primitiveTopology), primitiveTopology, default); } }