You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.8 KiB
D
86 lines
2.8 KiB
D
/*
|
|
OpenMW - The completely unofficial reimplementation of Morrowind
|
|
Copyright (C) 2008 Nicolay Korslund
|
|
Email: < korslund@gmail.com >
|
|
WWW: http://openmw.snaptoad.com/
|
|
|
|
This file (bindings.d) is part of the OpenMW package.
|
|
|
|
OpenMW is distributed as free software: you can redistribute it
|
|
and/or modify it under the terms of the GNU General Public License
|
|
version 3, as published by the Free Software Foundation.
|
|
|
|
This program is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
version 3 along with this program. If not, see
|
|
http://www.gnu.org/licenses/ .
|
|
|
|
*/
|
|
|
|
module bullet.bindings;
|
|
|
|
/*
|
|
* This module is the interface between D and the C++ code that
|
|
* handles Bullet.
|
|
*/
|
|
|
|
typedef void* BulletShape;
|
|
|
|
extern(C):
|
|
|
|
// Initialize the dynamic world. Returns non-zero if an error occurs.
|
|
int bullet_init();
|
|
|
|
// Set physics modes
|
|
void bullet_nextMode();
|
|
void bullet_walk();
|
|
void bullet_fly();
|
|
void bullet_ghost();
|
|
|
|
// Warp the player to a specific location.
|
|
void bullet_movePlayer(float x, float y, float z);
|
|
|
|
// Request that the player moves in this direction
|
|
void bullet_setPlayerDir(float x, float y, float z);
|
|
|
|
// Get the current player position, after physics and collision have
|
|
// been applied.
|
|
void bullet_getPlayerPos(float *x, float *y, float *z);
|
|
|
|
// Create a box shape. Used for bounding boxes. The box is a trimesh
|
|
// and is hollow (you can walk inside it.)
|
|
void bullet_createBoxShape(float minX, float minY, float minZ,
|
|
float maxX, float maxY, float maxZ,
|
|
float *trans,float *matrix);
|
|
|
|
// Create a triangle shape. This is cumulative, all meshes created
|
|
// with this function are added to the same shape. Since the various
|
|
// parts of a mesh can be differently transformed and we are putting
|
|
// them all in one shape, we must transform the vertices manually.
|
|
void bullet_createTriShape(int numFaces,
|
|
void *triArray,
|
|
int numVerts,
|
|
void *vertArray,
|
|
float *trans,float *matrix);
|
|
|
|
// "Flushes" the meshes created with createTriShape, returning the
|
|
// pointer to the final shape object.
|
|
BulletShape bullet_getFinalShape();
|
|
|
|
// Insert a static mesh with the given translation, quaternion
|
|
// rotation and scale. The quaternion is assumed to be in Ogre format,
|
|
// ie. with the W first.
|
|
void bullet_insertStatic(BulletShape shp, float *pos,
|
|
float *quat, float scale);
|
|
|
|
// Move the physics simulation 'delta' seconds forward in time
|
|
void bullet_timeStep(float delta);
|
|
|
|
// Deallocate objects
|
|
void bullet_cleanup();
|
|
|