Jump to content

Casting Byte Ptr to Tvec3


Volker
 Share

Recommended Posts

Probably something like this would work, but it seems like a good idea to add this to mathlib:

void _stdcall EntityCollisionCallback( TEntity entity0, TEntity entity1, byte* position, byte* normal, byte* force, flt speed )
{
TVec3 hitforce;
hitforce.X=force[0];
hitforce.Y=force[4];
hitforce.Z=force[8];
}

Ryzen 9 RX 6800M ■ 16GB XF8 Windows 11 ■
Ultra ■ LE 2.53DWS 5.6  Reaper ■ C/C++ C# ■ Fortran 2008 ■ Story ■
■ Homepage: https://canardia.com ■

Link to comment
Share on other sites

void _stdcall EntityCollisionCallback( TEntity entity0, TEntity entity1, byte* position, byte* normal, byte* force, flt speed )
{
TVec3 hitforce;
hitforce.X=force[0];
hitforce.Y=force[4];
hitforce.Z=force[8];
}

 

Ehm, you mean I should use C++ code in Blitzmax?

 

The most of the EntityCollisionCallback parameters seem to be pretty useless if I can't get them in an usable format for Blitzmax.

Core2DuoE6570 / Windows7 64bit / 4 Gb RAM / Geforce GTX 260 896Mb / LE 2.3

Dell Inspiron 1720 / Vista SP2 / C2D 2.4 / 8600 GM

Link to comment
Share on other sites

Well, you can use C++ code in BlitzMax, but that's not the point here now.

BlitzMax should have a similar method to construct a foreign type from pointers, like in the C++ example I showed.

Indeed, Josh started to use those wierd [] operators for float arrays some time ago, so instead of saying Vec3(1,2,3) he says [1,2,3]. So I think the Byte Ptr problem could be easily solved using the fact that Vec3 is just an array of 3 subsequent float (4 byte) values.

Ryzen 9 RX 6800M ■ 16GB XF8 Windows 11 ■
Ultra ■ LE 2.53DWS 5.6  Reaper ■ C/C++ C# ■ Fortran 2008 ■ Story ■
■ Homepage: https://canardia.com ■

Link to comment
Share on other sites

Probably something like this would work, but it seems like a good idea to add this to mathlib:

void _stdcall EntityCollisionCallback( TEntity entity0, TEntity entity1, byte* position, byte* normal, byte* force, flt speed )
{
TVec3 hitforce;
hitforce.X=force[0];
hitforce.Y=force[4];
hitforce.Z=force[8];
}

Why so complicated?

TVec3 *pHitForce = reinterpret_cast<TVec3*>(force);

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...