#ifndef NEWTONB3D_NEWTONBODY_BMX_RELEASE_WIN32_X86_H
#define NEWTONB3D_NEWTONBODY_BMX_RELEASE_WIN32_X86_H

#include <brl.mod/blitz.mod/.bmx/blitz.bmx.release.win32.x86.h>
#include <brl.mod/appstub.mod/.bmx/appstub.bmx.release.win32.x86.h>
#include <brl.mod/audio.mod/.bmx/audio.bmx.release.win32.x86.h>
#include <brl.mod/bank.mod/.bmx/bank.bmx.release.win32.x86.h>
#include <brl.mod/bankstream.mod/.bmx/bankstream.bmx.release.win32.x86.h>
#include <brl.mod/basic.mod/.bmx/basic.bmx.release.win32.x86.h>
#include <brl.mod/bmploader.mod/.bmx/bmploader.bmx.release.win32.x86.h>
#include <brl.mod/d3d7max2d.mod/.bmx/d3d7max2d.bmx.release.win32.x86.h>
#include <brl.mod/d3d9max2d.mod/.bmx/d3d9max2d.bmx.release.win32.x86.h>
#include <brl.mod/data.mod/.bmx/data.bmx.release.win32.x86.h>
#include <brl.mod/directsoundaudio.mod/.bmx/directsoundaudio.bmx.release.win32.x86.h>
#include <brl.mod/eventqueue.mod/.bmx/eventqueue.bmx.release.win32.x86.h>
#include <brl.mod/freeaudioaudio.mod/.bmx/freeaudioaudio.bmx.release.win32.x86.h>
#include <brl.mod/freetypefont.mod/.bmx/freetypefont.bmx.release.win32.x86.h>
#include <brl.mod/glgraphics.mod/.bmx/glgraphics.bmx.release.win32.x86.h>
#include <brl.mod/glmax2d.mod/.bmx/glmax2d.bmx.release.win32.x86.h>
#include <brl.mod/gnet.mod/.bmx/gnet.bmx.release.win32.x86.h>
#include <brl.mod/jpgloader.mod/.bmx/jpgloader.bmx.release.win32.x86.h>
#include <brl.mod/map.mod/.bmx/map.bmx.release.win32.x86.h>
#include <brl.mod/maxlua.mod/.bmx/maxlua.bmx.release.win32.x86.h>
#include <brl.mod/maxutil.mod/.bmx/maxutil.bmx.release.win32.x86.h>
#include <brl.mod/oggloader.mod/.bmx/oggloader.bmx.release.win32.x86.h>
#include <brl.mod/openalaudio.mod/.bmx/openalaudio.bmx.release.win32.x86.h>
#include <brl.mod/pngloader.mod/.bmx/pngloader.bmx.release.win32.x86.h>
#include <brl.mod/retro.mod/.bmx/retro.bmx.release.win32.x86.h>
#include <brl.mod/tgaloader.mod/.bmx/tgaloader.bmx.release.win32.x86.h>
#include <brl.mod/threads.mod/.bmx/threads.bmx.release.win32.x86.h>
#include <brl.mod/timer.mod/.bmx/timer.bmx.release.win32.x86.h>
#include <brl.mod/timerdefault.mod/.bmx/timerdefault.bmx.release.win32.x86.h>
#include <brl.mod/wavloader.mod/.bmx/wavloader.bmx.release.win32.x86.h>
#include <pub.mod/freejoy.mod/.bmx/freejoy.bmx.release.win32.x86.h>
#include <pub.mod/freeprocess.mod/.bmx/freeprocess.bmx.release.win32.x86.h>
#include <pub.mod/macos.mod/.bmx/macos.bmx.release.win32.x86.h>
#include <pub.mod/opengles.mod/.bmx/opengles.bmx.release.win32.x86.h>
#include <pub.mod/vulkan.mod/.bmx/vulkan.bmx.release.win32.x86.h>
#include <pub.mod/xmmintrin.mod/.bmx/xmmintrin.bmx.release.win32.x86.h>
#include <newton.mod/dynamics.mod/.bmx/dynamics.bmx.release.win32.x86.h>
#include <openb3d.mod/b3dglgraphics.mod/.bmx/b3dglgraphics.bmx.release.win32.x86.h>
int _bb_newtonb3d_newtonbody();
struct _m_newtonbody_TNewtonBody_obj;
void __m_newtonbody_TNewtonBody_New(struct _m_newtonbody_TNewtonBody_obj* o);
void __m_newtonbody_TNewtonBody_OnTransform_pfi(struct _m_newtonbody_TNewtonBody_obj*,BBFLOAT*,BBINT);
void __m_newtonbody_TNewtonBody_OnForceAndTorque_fi(struct _m_newtonbody_TNewtonBody_obj*,BBFLOAT,BBINT);
typedef void (*_m_newtonbody_TNewtonBody_ToggleShadow_i_m)(struct _m_newtonbody_TNewtonBody_obj*,BBINT);
void __m_newtonbody_TNewtonBody_ToggleShadow_i(struct _m_newtonbody_TNewtonBody_obj*,BBINT);
typedef void (*_m_newtonbody_TNewtonBody_Remove_m)(struct _m_newtonbody_TNewtonBody_obj*);
void __m_newtonbody_TNewtonBody_Remove(struct _m_newtonbody_TNewtonBody_obj*);
typedef BBINT (*_m_newtonbody_TNewtonBody_AlignNewtonMatrix_TTNMatrix_m)(struct _m_newtonbody_TNewtonBody_obj*,struct newton_dynamics_TNMatrix_obj*);
BBINT __m_newtonbody_TNewtonBody_AlignNewtonMatrix_TTNMatrix(struct _m_newtonbody_TNewtonBody_obj*,struct newton_dynamics_TNMatrix_obj*);
typedef BBINT (*_m_newtonbody_TNewtonBody_AlignEntity_pf_m)(struct _m_newtonbody_TNewtonBody_obj*,BBFLOAT*);
BBINT __m_newtonbody_TNewtonBody_AlignEntity_pf(struct _m_newtonbody_TNewtonBody_obj*,BBFLOAT*);
struct BBClass__m_newtonbody_TNewtonBody {
	struct BBClass_newton_dynamics_TNBody*  super;
	void      (*free)( BBObject *o );
	BBDebugScope* debug_scope;
	unsigned int instance_size;
	void      (*ctor)( BBOBJECT o );
	void      (*dtor)( BBOBJECT o );
	BBSTRING  (*ToString)( BBOBJECT x );
	int       (*Compare)( BBOBJECT x,BBOBJECT y );
	BBOBJECT  (*SendMessage)( BBOBJECT o,BBOBJECT m,BBOBJECT s );
	BBINTERFACETABLE itable;
	void*     extra;
	unsigned int obj_size;
	newton_dynamics_TNBody_OnForceAndTorque_fi_m m_OnForceAndTorque_fi;
	newton_dynamics_TNBody_OnTransform_pfi_m m_OnTransform_pfi;
	newton_dynamics_TNBody_SetMatrix_TTNMatrix_m m_SetMatrix_TTNMatrix;
	newton_dynamics_TNBody_GetMatrix_TTNMatrix_m m_GetMatrix_TTNMatrix;
	newton_dynamics_TNBody_GetMassMatrix_vfvfvfvf_m m_GetMassMatrix_vfvfvfvf;
	newton_dynamics_TNBody_GetRotation_vfvfvfvf_m m_GetRotation_vfvfvfvf;
	newton_dynamics_TNBody_GetInvMass_vfvfvfvf_m m_GetInvMass_vfvfvfvf;
	newton_dynamics_TNBody_GetInertiaMatrix_TTNMatrix_m m_GetInertiaMatrix_TTNMatrix;
	newton_dynamics_TNBody_GetInvInertiaMatrix_TTNMatrix_m m_GetInvInertiaMatrix_TTNMatrix;
	newton_dynamics_TNBody_GetOmega_vfvfvf_m m_GetOmega_vfvfvf;
	newton_dynamics_TNBody_GetVelocity_vfvfvf_m m_GetVelocity_vfvfvf;
	newton_dynamics_TNBody_GetForce_vfvfvf_m m_GetForce_vfvfvf;
	newton_dynamics_TNBody_GetTorque_vfvfvf_m m_GetTorque_vfvfvf;
	newton_dynamics_TNBody_GetForceAcc_vfvfvf_m m_GetForceAcc_vfvfvf;
	newton_dynamics_TNBody_GetTorqueAcc_vfvfvf_m m_GetTorqueAcc_vfvfvf;
	newton_dynamics_TNBody_GetCentreOfMass_vfvfvf_m m_GetCentreOfMass_vfvfvf;
	newton_dynamics_TNBody_GetAngularDamping_vfvfvf_m m_GetAngularDamping_vfvfvf;
	newton_dynamics_TNBody_NewtonBodyGetAABB_vfvfvfvfvfvf_m m_NewtonBodyGetAABB_vfvfvfvfvfvf;
	newton_dynamics_TNBody_SetAngularDamping_fff_m m_SetAngularDamping_fff;
	newton_dynamics_TNBody_SetForceAndTorqueCallback_F_TTNBodyfi_v__m m_SetForceAndTorqueCallback_F_TTNBodyfi_v_;
	newton_dynamics_TNBody_SetTransformCallback_F_TTNBodypfi_v__m m_SetTransformCallback_F_TTNBodypfi_v_;
	newton_dynamics_TNBody_SetOmega_ffff_m m_SetOmega_ffff;
	newton_dynamics_TNBody_SetForce_ffff_m m_SetForce_ffff;
	newton_dynamics_TNBody_SetVelocity_ffff_m m_SetVelocity_ffff;
	newton_dynamics_TNBody_SetTorque_ffff_m m_SetTorque_ffff;
	newton_dynamics_TNBody_SetMassProperties_fTTNCollision_m m_SetMassProperties_fTTNCollision;
	newton_dynamics_TNBody_SetLinearDamping_f_m m_SetLinearDamping_f;
	newton_dynamics_TNBody_GetType_m m_GetType;
	newton_dynamics_TNBody_GetCollidable_m m_GetCollidable;
	newton_dynamics_TNBody_SetCollidable_i_m m_SetCollidable_i;
	newton_dynamics_TNBody_AddForce_fff_m m_AddForce_fff;
	newton_dynamics_TNBody_AddTorque_fff_m m_AddTorque_fff;
	newton_dynamics_TNBody_CalculateInverseDynamicsForce_ffffvfvfvf_m m_CalculateInverseDynamicsForce_ffffvfvfvf;
	newton_dynamics_TNBody__forceAndTorqueCallback_v_pbfi_f f__forceAndTorqueCallback_v_pbfi;
	newton_dynamics_TNBody__defaultForceAndTorqueCallback_v_pbfi_f f__defaultForceAndTorqueCallback_v_pbfi;
	newton_dynamics_TNBody__transformCallback_v_pbpfi_f f__transformCallback_v_pbpfi;
	newton_dynamics_TNBody__defaultTransformCallback_v_pbpfi_f f__defaultTransformCallback_v_pbpfi;
	newton_dynamics_TNBody_Destroy_m m_Destroy;
	_m_newtonbody_TNewtonBody_ToggleShadow_i_m m_ToggleShadow_i;
	_m_newtonbody_TNewtonBody_Remove_m m_Remove;
	_m_newtonbody_TNewtonBody_AlignNewtonMatrix_TTNMatrix_m m_AlignNewtonMatrix_TTNMatrix;
	_m_newtonbody_TNewtonBody_AlignEntity_pf_m m_AlignEntity_pf;
};

struct _m_newtonbody_TNewtonBody_obj {
	struct BBClass__m_newtonbody_TNewtonBody* clas;
	BBBYTE* _newton_dynamics_tnbody_bodyptr;
	void(* _newton_dynamics_tnbody__fatcallback)(struct newton_dynamics_TNBody_obj*,BBFLOAT,BBINT);
	void(* _newton_dynamics_tnbody__transcallback)(struct newton_dynamics_TNBody_obj*,BBFLOAT*,BBINT);
	struct openb3d_openb3dex_TMesh_obj* __m_newtonbody_tnewtonbody_mesh;
	BBFLOAT __m_newtonbody_tnewtonbody_mass;
	struct openb3d_openb3dex_TShadowObject_obj* __m_newtonbody_tnewtonbody_shadow;
};
extern struct BBClass__m_newtonbody_TNewtonBody _m_newtonbody_TNewtonBody;
BBINT _m_newtonbody_PrintMatrix(struct openb3d_openb3dex_TMatrix_obj* bbt_matrix,BBINT bbt_indent);

#endif
