#ifndef OPENB3D_OPENB3DLIB_OPENB3DLIB_BMX_DEBUG_WIN32_X64_H
#define OPENB3D_OPENB3DLIB_OPENB3DLIB_BMX_DEBUG_WIN32_X64_H

#include <brl.mod/blitz.mod/.bmx/blitz.bmx.debug.win32.x64.h>
#include <pub.mod/glew.mod/.bmx/glew.bmx.debug.win32.x64.h>
#include "source.bmx.debug.win32.x64.h"
int __bb_openb3d_openb3dlib_openb3dlib();
extern void AnimateMesh(BBBYTE* bbt_ent1,BBFLOAT bbt_framef,BBINT bbt_start_frame,BBINT bbt_end_frame);
extern void AnimateMesh2(BBBYTE* bbt_ent1,BBFLOAT bbt_framef,BBINT bbt_start_frame,BBINT bbt_end_frame);
extern void AnimateMesh3(BBBYTE* bbt_ent1);
extern void VertexDeform(BBBYTE* bbt_ent);
extern BBBYTE* AnimationKeysCopy(BBBYTE* bbt_obj);
extern BBBYTE* BrushCopy(BBBYTE* bbt_obj);
extern BBINT CompareBrushes(BBBYTE* bbt_brush1,BBBYTE* bbt_brush2);
extern void ExtractFrustum(BBBYTE* bbt_obj);
extern BBFLOAT EntityInFrustum(BBBYTE* bbt_obj,BBBYTE* bbt_ent);
extern void CameraUpdate(BBBYTE* bbt_obj);
extern void CameraRender(BBBYTE* bbt_obj);
extern void UpdateSprite(BBBYTE* bbt_obj,BBBYTE* bbt_sprite);
extern void AddTransformedSpriteToSurface(BBBYTE* bbt_obj,BBBYTE* bbt_sprite,BBBYTE* bbt_surf);
extern void RenderListAdd(BBBYTE* bbt_obj,BBBYTE* bbt_mesh);
extern void accPerspective(BBBYTE* bbt_obj,BBFLOAT bbt_fovy,BBFLOAT bbt_aspect,BBFLOAT bbt_zNear,BBFLOAT bbt_zFar,BBFLOAT bbt_pixdx,BBFLOAT bbt_pixdy,BBFLOAT bbt_eyedx,BBFLOAT bbt_eyedy,BBFLOAT bbt_focus);
extern void accFrustum(BBBYTE* bbt_obj,BBFLOAT bbt_left_,BBFLOAT bbt_right_,BBFLOAT bbt_bottom,BBFLOAT bbt_top,BBFLOAT bbt_zNear,BBFLOAT bbt_zFar,BBFLOAT bbt_pixdx,BBFLOAT bbt_pixdy,BBFLOAT bbt_eyedx,BBFLOAT bbt_eyedy,BBFLOAT bbt_focus);
extern void UpdateProjMatrix(BBBYTE* bbt_obj);
extern void CameraUpdateEntityRender(BBBYTE* bbt_ent,BBBYTE* bbt_cam);
extern void UpdateEntityAnim(BBBYTE* bbt_mesh);
extern void LightUpdate(BBBYTE* bbt_obj);
extern BBINT CountAllChildren(BBBYTE* bbt_obj,BBINT bbt_no_children);
extern BBBYTE* GetChildFromAll(BBBYTE* bbt_obj,BBINT bbt_child_no,BBINT* bbt_no_children,BBBYTE* bbt_ent);
extern BBINT Hidden(BBBYTE* bbt_obj);
extern void AlignToVector(BBBYTE* bbt_obj,BBFLOAT bbt_x,BBFLOAT bbt_y,BBFLOAT bbt_z,BBINT bbt_axis,BBFLOAT bbt_rate);
extern void UpdateMat(BBBYTE* bbt_obj,BBBYTE bbt_load_identity);
extern void AddParent(BBBYTE* bbt_obj,BBBYTE* bbt_parent_ent);
extern void UpdateChildren(BBBYTE* bbt_ent_p);
extern BBFLOAT EntityDistanceSquared(BBBYTE* bbt_obj,BBBYTE* bbt_ent2);
extern void MQ_Update(BBBYTE* bbt_obj);
extern void MQ_GetInvMatrix(BBBYTE* bbt_obj,BBBYTE* bbt_mat0);
extern void MQ_GetMatrix(BBBYTE* bbt_obj,BBBYTE* bbt_mat3);
extern BBINT MQ_SetMatrix(BBBYTE* bbt_obj);
extern void MQ_GetScaleXYZ(BBBYTE* bbt_obj,BBFLOAT* bbt_width,BBFLOAT* bbt_height,BBFLOAT* bbt_depth);
extern void MQ_Turn(BBBYTE* bbt_obj,BBFLOAT bbt_ang,BBFLOAT bbt_vx,BBFLOAT bbt_vy,BBFLOAT bbt_vz,BBINT bbt_glob);
extern void MatrixLoadIdentity(BBBYTE* bbt_obj);
extern BBBYTE* MatrixCopy(BBBYTE* bbt_obj);
extern void MatrixOverwrite(BBBYTE* bbt_obj,BBBYTE* bbt_mat);
extern BBBYTE* MatrixGetInverse(BBBYTE* bbt_obj,BBBYTE* bbt_mat);
extern void MatrixMultiply(BBBYTE* bbt_obj,BBBYTE* bbt_mat);
extern void MatrixTranslate(BBBYTE* bbt_obj,BBFLOAT bbt_x,BBFLOAT bbt_y,BBFLOAT bbt_z);
extern void MatrixScale(BBBYTE* bbt_obj,BBFLOAT bbt_x,BBFLOAT bbt_y,BBFLOAT bbt_z);
extern void MatrixRotate(BBBYTE* bbt_obj,BBFLOAT bbt_rx,BBFLOAT bbt_ry,BBFLOAT bbt_rz);
extern void MatrixRotatePitch(BBBYTE* bbt_obj,BBFLOAT bbt_ang);
extern void MatrixRotateYaw(BBBYTE* bbt_obj,BBFLOAT bbt_ang);
extern void MatrixRotateRoll(BBBYTE* bbt_obj,BBFLOAT bbt_ang);
extern void MatrixFromQuaternion(BBBYTE* bbt_obj,BBFLOAT bbt_x,BBFLOAT bbt_y,BBFLOAT bbt_z,BBFLOAT bbt_w);
extern void MatrixTransformVec(BBBYTE* bbt_obj,BBFLOAT* bbt_rx,BBFLOAT* bbt_ry,BBFLOAT* bbt_rz,BBINT bbt_addTranslation);
extern void MatrixTranspose(BBBYTE* bbt_obj);
extern void MatrixSetTranslate(BBBYTE* bbt_obj,BBFLOAT bbt_x,BBFLOAT bbt_y,BBFLOAT bbt_z);
extern void MatrixMultiply2(BBBYTE* bbt_obj,BBBYTE* bbt_mat);
extern void MatrixGetInverse2(BBBYTE* bbt_obj,BBBYTE* bbt_mat);
extern BBFLOAT MatrixGetPitch(BBBYTE* bbt_obj);
extern BBFLOAT MatrixGetYaw(BBBYTE* bbt_obj);
extern BBFLOAT MatrixGetRoll(BBBYTE* bbt_obj);
extern void MatrixFromToRotation(BBBYTE* bbt_obj,BBFLOAT bbt_ix,BBFLOAT bbt_iy,BBFLOAT bbt_iz,BBFLOAT bbt_jx,BBFLOAT bbt_jy,BBFLOAT bbt_jz);
extern void MatrixToQuat(BBBYTE* bbt_obj,BBFLOAT* bbt_qx,BBFLOAT* bbt_qy,BBFLOAT* bbt_qz,BBFLOAT* bbt_qw);
extern void MatrixQuaternion_FromAngleAxis(BBFLOAT bbt_angle,BBFLOAT bbt_ax,BBFLOAT bbt_ay,BBFLOAT bbt_az,BBFLOAT* bbt_rx,BBFLOAT* bbt_ry,BBFLOAT* bbt_rz,BBFLOAT* bbt_rw);
extern void MatrixQuaternion_MultiplyQuat(BBFLOAT bbt_x1,BBFLOAT bbt_y1,BBFLOAT bbt_z1,BBFLOAT bbt_w1,BBFLOAT bbt_x2,BBFLOAT bbt_y2,BBFLOAT bbt_z2,BBFLOAT bbt_w2,BBFLOAT* bbt_rx,BBFLOAT* bbt_ry,BBFLOAT* bbt_rz,BBFLOAT* bbt_rw);
extern void MatrixInterpolateMatrix(BBBYTE* bbt_m,BBBYTE* bbt_a,BBFLOAT bbt_alpha);
extern void MeshColor(BBBYTE* bbt_obj,BBFLOAT bbt_r,BBFLOAT bbt_g,BBFLOAT bbt_b,BBFLOAT bbt_a);
extern void MeshRed(BBBYTE* bbt_obj,BBFLOAT bbt_r);
extern void MeshGreen(BBBYTE* bbt_obj,BBFLOAT bbt_g);
extern void MeshBlue(BBBYTE* bbt_obj,BBFLOAT bbt_b);
extern void MeshAlpha(BBBYTE* bbt_obj,BBFLOAT bbt_a);
extern void CopyBonesList(BBBYTE* bbt_ent,BBBYTE* bbt_bones);
extern BBBYTE* CollapseAnimMesh(BBBYTE* bbt_obj,BBBYTE* bbt_mesh);
extern BBBYTE* CollapseChildren(BBBYTE* bbt_obj,BBBYTE* bbt_ent0,BBBYTE* bbt_mesh);
extern void TransformMesh(BBBYTE* bbt_obj,BBBYTE* bbt_mat);
extern void GetBounds(BBBYTE* bbt_obj);
extern void TreeCheck(BBBYTE* bbt_obj);
extern void MeshRender(BBBYTE* bbt_obj);
extern void UpdateShadow(BBBYTE* bbt_obj);
extern BBBYTE* PickMain(BBFLOAT bbt_ax,BBFLOAT bbt_ay,BBFLOAT bbt_az,BBFLOAT bbt_bx,BBFLOAT bbt_by,BBFLOAT bbt_bz,BBFLOAT bbt_radius);
extern void SetShadowColor(BBINT bbt_R,BBINT bbt_G,BBINT bbt_B,BBINT bbt_A);
extern void ShadowInit();
extern void RemoveShadowfromMesh(BBBYTE* bbt_obj,BBBYTE* bbt_M);
extern void ShadowObjectUpdate(BBBYTE* bbt_Cam);
extern void RenderVolume();
extern void UpdateAnim(BBBYTE* bbt_obj);
extern void ShadowObjectInit(BBBYTE* bbt_obj);
extern void InitShadow(BBBYTE* bbt_obj);
extern void UpdateCaster(BBBYTE* bbt_obj);
extern void ShadowRenderWorldZFail();
extern void SpriteTexCoords(BBBYTE* bbt_obj,BBINT bbt_cell_x,BBINT bbt_cell_y,BBINT bbt_cell_w,BBINT bbt_cell_h,BBINT bbt_tex_w,BBINT bbt_tex_h,BBINT bbt_uv_set);
extern void SpriteVertexColor(BBBYTE* bbt_obj,BBINT bbt_v,BBFLOAT bbt_r,BBFLOAT bbt_g,BBFLOAT bbt_b);
extern BBBYTE* SurfaceCopy(BBBYTE* bbt_obj);
extern void SurfaceColor(BBBYTE* bbt_obj,BBFLOAT bbt_r,BBFLOAT bbt_g,BBFLOAT bbt_b,BBFLOAT bbt_a);
extern void SurfaceRed(BBBYTE* bbt_obj,BBFLOAT bbt_r);
extern void SurfaceGreen(BBBYTE* bbt_obj,BBFLOAT bbt_g);
extern void SurfaceBlue(BBBYTE* bbt_obj,BBFLOAT bbt_b);
extern void SurfaceAlpha(BBBYTE* bbt_obj,BBFLOAT bbt_a);
extern void SurfaceUpdateNormals(BBBYTE* bbt_obj);
extern BBFLOAT TriangleNX(BBBYTE* bbt_obj,BBINT bbt_tri_no);
extern BBFLOAT TriangleNY(BBBYTE* bbt_obj,BBINT bbt_tri_no);
extern BBFLOAT TriangleNZ(BBBYTE* bbt_obj,BBINT bbt_tri_no);
extern void UpdateVBO(BBBYTE* bbt_obj);
extern void FreeVBO(BBBYTE* bbt_obj);
extern void RemoveTri(BBBYTE* bbt_obj,BBINT bbt_tri);
extern void UpdateTerrain(BBBYTE* bbt_obj);
extern void RecreateROAM(BBBYTE* bbt_obj);
extern void drawsub(BBBYTE* bbt_obj,BBINT bbt_l,BBFLOAT* bbt_v0,BBFLOAT* bbt_v1,BBFLOAT* bbt_v2);
extern void TerrainUpdateNormals(BBBYTE* bbt_obj);
extern void col_tree_sub(BBBYTE* bbt_obj,BBINT bbt_l,BBFLOAT* bbt_v0,BBFLOAT* bbt_v1,BBFLOAT* bbt_v2);
extern BBBYTE* TextureCopy(BBBYTE* bbt_obj);
extern BBBYTE* TexInList(BBBYTE* bbt_obj);
extern void FilterFlags(BBBYTE* bbt_obj);
extern BBBYTE* StaticChar(BBINT bbt_classid,BBINT bbt_varid);
extern BBINT* StaticInt(BBINT bbt_classid,BBINT bbt_varid);
extern BBFLOAT* StaticFloat(BBINT bbt_classid,BBINT bbt_varid);
extern BBBYTE* StaticEntity(BBINT bbt_classid,BBINT bbt_varid);
extern BBBYTE* StaticCamera(BBINT bbt_classid,BBINT bbt_varid);
extern BBBYTE* StaticPivot(BBINT bbt_classid,BBINT bbt_varid);
extern BBBYTE* StaticSurface(BBINT bbt_classid,BBINT bbt_varid);
extern BBINT StaticListSize(BBINT bbt_classid,BBINT bbt_varid);
extern BBBYTE* StaticIterListAction(BBINT bbt_classid,BBINT bbt_varid,BBINT* bbt_id);
extern BBBYTE* StaticIterListCamera(BBINT bbt_classid,BBINT bbt_varid,BBINT* bbt_id);
extern BBBYTE* StaticIterListEntity(BBINT bbt_classid,BBINT bbt_varid,BBINT* bbt_id);
extern BBBYTE* StaticIterListShadowObject(BBINT bbt_classid,BBINT bbt_varid,BBINT* bbt_id);
extern BBBYTE* StaticIterListTerrain(BBINT bbt_classid,BBINT bbt_varid,BBINT* bbt_id);
extern BBBYTE* StaticIterListTexture(BBINT bbt_classid,BBINT bbt_varid,BBINT* bbt_id);
extern BBBYTE* StaticIterVectorLight(BBINT bbt_classid,BBINT bbt_varid,BBINT* bbt_id);
extern BBINT* ActionInt(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBINT* AnimationKeysInt(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBFLOAT* AnimationKeysFloat(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBFLOAT* BoneFloat(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* BoneAnimationKeys(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* BoneMatrix(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBINT* BrushInt(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBINT* BrushUInt(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBFLOAT* BrushFloat(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* BrushString(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* BrushTextureArray(BBBYTE* bbt_obj,BBINT bbt_varid,BBINT bbt_index);
extern BBBYTE* CameraBool(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBINT* CameraInt(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBFLOAT* CameraFloat(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBINT* EntityInt(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBFLOAT* EntityFloat(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* EntityString(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* EntityEntity(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* EntityBrush(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* EntityMatrix(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBINT EntityListSize(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* EntityIterListEntity(BBBYTE* bbt_obj,BBINT bbt_varid,BBINT* bbt_id);
extern void EntityListPushBackEntity(BBBYTE* bbt_obj,BBINT bbt_varid,BBBYTE* bbt_ent);
extern BBBYTE* LightChar(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBFLOAT* LightFloat(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBFLOAT* MatrixFloat(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBINT* MeshInt(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBFLOAT* MeshFloat(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* MeshMatrix(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBINT MeshListSize(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* MeshIterListSurface(BBBYTE* bbt_obj,BBINT bbt_varid,BBINT* bbt_id);
extern BBBYTE* MeshIterVectorBone(BBBYTE* bbt_obj,BBINT bbt_varid,BBINT* bbt_id);
extern BBBYTE* MeshVectorBone(BBBYTE* bbt_obj,BBINT bbt_varid);
extern void MeshListPushBackSurface(BBBYTE* bbt_obj,BBINT bbt_varid,BBBYTE* bbt_surf);
extern void MeshListPushBackBone(BBBYTE* bbt_obj,BBINT bbt_varid,BBBYTE* bbt_bone);
extern BBBYTE* ShadowObjectChar(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBINT* ShadowObjectInt(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* ShadowObjectMesh(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* ShadowObjectSurface(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBINT* SpriteInt(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBFLOAT* SpriteFloat(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBSHORT* SurfaceUShort(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBINT* SurfaceInt(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBINT* SurfaceUInt(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBFLOAT* SurfaceFloat(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* SurfaceBrush(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* SurfaceShader(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBFLOAT* TerrainFloat(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* TerrainCamera(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* TerrainShader(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBINT* TextureInt(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBINT* TextureUInt(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBFLOAT* TextureFloat(BBBYTE* bbt_obj,BBINT bbt_varid);
extern BBBYTE* TextureString(BBBYTE* bbt_obj,BBINT bbt_varid);

#endif
