How can I translate this C++ code snippet into C# ?
void fm_getAABB(..., const float *points, ...)
{
// ...
const unsigned char *source = (const unsigned char *) points;
//...
const float *p = (const float *) source;
//...
}
I’ve already tried to use a C++ to C# converter, but it doesn’t seem able to translate it either.
EDIT:
Here’s the whole function:
void fm_getAABB(unsigned int vcount, const float *points, unsigned int pstride,
float *bmin, float *bmax)
{
const unsigned char *source = (const unsigned char *) points;
bmin[0] = points[0];
bmin[1] = points[1];
bmin[2] = points[2];
bmax[0] = points[0];
bmax[1] = points[1];
bmax[2] = points[2];
for (unsigned int i = 1; i < vcount; i++)
{
source+=pstride;
const float *p = (const float *) source;
if ( p[0] < bmin[0] ) bmin[0] = p[0];
if ( p[1] < bmin[1] ) bmin[1] = p[1];
if ( p[2] < bmin[2] ) bmin[2] = p[2];
if ( p[0] > bmax[0] ) bmax[0] = p[0];
if ( p[1] > bmax[1] ) bmax[1] = p[1];
if ( p[2] > bmax[2] ) bmax[2] = p[2];
}
}
One option is to translate this as-is, by using the unsafe mode of C#. C# is perfectly capable of running this code with small modifications. You need to remove the const modifier for example.
If you manage to produce a managed-only version that would be preferable of course. But it is not entirely clear that that is even possible: Your function is performing certain pointer manipulations which might lead to unaligned access. Managed arrays cannot pe accessed in an unaligned way using managed-only features.