long KE_WriteToStream(KEF_Handle Stream, void * Buffer, long Size)
動作
Streamにたいして書き込みをおこないます.
引数
Stream : コマンド内容の文字列のポインタ
Buffer : 書き込むデータのアドレス
Size : 書き込むデータのバイト数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_ReadFromStream(KEF_Handle Stream, void * Buffer, long Size)
動作
Streamにから読み込みをおこないます.
引数
Stream : コマンド内容の文字列のポインタ
Buffer : 読み込むデータのアドレス
Size : 読み込むデータのバイト数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_SendLispCommand(char * str)
動作
Lispにコマンドを送信します.
引数
str : コマンド内容の文字列のポインタ
返値
成功すると非0の値,
失敗すると0が返る.
例
KE_SendLispCommand("(def a (cons 'a 'b))");
char * KE_GetLispAnswer()
動作
KE_SendLispCommandにたいするLispの応答のテキストを出力します.
返値
Lispの応答のテキスト.
long KE_XPhBodySaveToFile(KEF_Handle obj, char * filename)
動作
物体をファイルに保存します.
引数
obj : 物体オブジェクトのハンドル
filename : 保存するファイルの名前
返値
成功すると非0の値,
失敗すると0が返る.
long KEF_Handle KE_XPhBodyLoadFromFile(char * filename)
動作
物体をファイルから読み込む.
引数
filename : 読み込むファイルの名前
返値
成功すると読み込まれた物体オブジェクトのハンドル,
失敗するとNULLが返る.
KEF_Handle KE_LoadXPhBody(char * filename)
動作
"*.x"ファイルの読み込み(text形式のみ)
引数
filename : 読み込むファイル名の文字列
返値
物体オブジェクトのハンドル
解説
読み込めるファイルの形式は現在"*.x"の
text形式のみとなっております.
階層構造を持つファイルの場合はメッシュごとに
物体オブジェクトが作られ根元のオブジェクトが返ります.
複数のマテリアルが割り当てられている場合は
最初に割り当てられたもののみ有効になります.
また,読み込む物体は表裏がそろえられていて
辺に接する面の数が2となる多面体でないと
衝突判定が正常に働かない場合があります.
ファイルの作成や変換にはtrueSpaceやMetasequoiaが
適していると思われます.
例
KEF_Handle hobj;
hobj = KE_LoadXPhBody("box.x");
KEF_Handle KE_MakeEmptyXPhBody()
動作
空の物体オブジェクトの作成
返値
物体オブジェクトのハンドル
例
KEF_Handle hobj;
hobj = KE_MakeEmptyXPhBody();
long KE_DeleteXPhBody(KEF_Handle obj)
動作
物体オブジェクトの消去
引数
obj : 物体オブジェクトのハンドル
返値
消去に成功すると非0の値,
消去に失敗すると0が返る.
例
KEF_Handle hobj;
hobj = KE_LoadXPhBody("box.x");
KE_DeleteXPhBody(hobj);
long KE_DeleteAllXPhBody()
動作
すべての物体の消去
返値
消去に成功すると非0の値,
消去に失敗すると0が返る.
例
KE_DeleteAllXPhBody();
long KE_LoadXPhBodyVisual(KEF_Handle obj, char * filename)
動作
物体に見かけの形状を設定します.
引数
obj : 物体オブジェクトのハンドル
filename : 見かけの形状をあらわすファイル名の文字列
返値
成功すると非0の値,
失敗すると0が返る.
例
KEF_Handle hobj;
hobj = KE_LoadXPhBody("box.x");
KE_LoadXPhBodyVisual(hobj, "lbox.x");
long KE_XPhBodyCollisionBoxApprox(KEF_Handle obj)
動作
物体の衝突判定用の形状を表示用の物体を内包する箱に設定します.
引数
obj : 物体オブジェクトのハンドル
返値
成功すると非0の値,
失敗すると0が返る
例
KEF_Handle hobj;
hobj = KE_LoadXPhBody("missle.x");
KE_XPhBodyCollisionBoxApprox(hobj);
long KE_SetXPhBodyPhysicsMode(KEF_Handle obj, mode)
動作
物体の運動モード設定
引数
obj : 物体オブジェクトのハンドル
mode : 0.固定オブジェクト, ほか未定
返値
成功すると非0の値,
失敗すると0が返る.
例
KEF_Handle hobj;
hobj = KE_LoadXPhBody("floor.x");
KE_SetXPhBodyPhysicsMode(hobj, 0);
long KE_GetXPhBodyPhysicsMode(KEF_Handle obj, long * mode)
動作
物体の運動モードの取得
引数
obj : 物体オブジェクトのハンドル
mode : 0.固定オブジェクト, ほか未定
返値
成功すると非0の値,
失敗すると0が返る.
例
KEF_Handle hobj;
hobj = KE_LoadXPhBody("floor.x");
KE_SetXPhBodyPhysicsMode(hobj, 0);
long KE_SetXPhBodyMat(KEF_Handle obj, float * Matrix)
動作
物体の位置と姿勢を設定します
引数
obj : 物体オブジェクトのハンドル
Matrix : 物体の位置と姿勢をあらわす行列
float Matrix[16] =
{
xx, xy, xz, 0.0f //x軸の方向
yx, yy, yz, 0.0f //y軸の方向
zx, zy, zz, 0.0f //z軸の方向
lx, ly, lz, 1.0f //物体の中心位置
}
返値
成功すると非0の値,
失敗すると0が返る.
例
KEF_Handle hobj;
float Matrix[] = {
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, 5.0f, 0.0f, 1.0f,
}
hobj = KE_LoadXPhBody("box.x");
KE_SetXPhBodyMat(hobj, Matrix);
long KE_GetXPhBodyMat(KEF_Handle obj, float * Matrix)
動作
物体の親の座標系に対する位置と姿勢を取得します
引数
obj : 物体オブジェクトのハンドル
Matrix : 取得した物体の位置と姿勢を受け取る行列
float Matrix[16] =
{
xx, xy, xz, 0.0f //x軸の方向
yx, yy, yz, 0.0f //y軸の方向
zx, zy, zz, 0.0f //z軸の方向
lx, ly, lz, 1.0f //物体の中心位置
}
返値
成功すると非0の値,
失敗すると0が返る.
例
KEF_Handle hobj;
float Matrix[16];
hobj = KE_GetXPhBodyMat("box.x");
KE_GetXPhBodyMat(hobj, Matrix);
long KE_GetXPhBodyGMat(KEF_Handle obj, float * Matrix)
動作
物体のワールド座標系に対する位置と姿勢を取得します
引数
obj : 物体オブジェクトのハンドル
Matrix : 取得した物体の位置と姿勢を受け取る行列
float Matrix[16] =
{
xx, xy, xz, 0.0f //x軸の方向
yx, yy, yz, 0.0f //y軸の方向
zx, zy, zz, 0.0f //z軸の方向
lx, ly, lz, 1.0f //物体の中心位置
}
返値
成功すると非0の値,
失敗すると0が返る.
例
KEF_Handle hobj;
float Matrix[16];
hobj = KE_GetXPhBodyMat("box.x");
KE_GetXPhBodyGMat(hobj, Matrix);
long KE_XPhBodySetVisualMaterial(KEF_Handle obj, float * diffuse, float * ambient
, float * specular, float power)
動作
物体の見かけの上のマテリアルを設定します.
引数
obj : 物体オブジェクトのハンドル
diffuse : マテリアルの拡散反射成分
float diffuse[4] =
{ r, g, b, a //赤, 緑, 青, 不透明度 }
ambient : マテリアルの周辺光反射成分
float ambient[4] =
{ r, g, b, a //赤, 緑, 青, 不透明度 }
specular : マテリアルの鏡面反射成分
float specular[4] =
{ r, g, b, a //赤, 緑, 青, 不透明度 }
power : 鏡面反射の鮮明度
返値
成功すると非0の値,
失敗すると0が返る.
例
KEF_Handle hobj;
hobj = KE_LoadXPhBody("mball.x");
float diffuse[4] = {1.0f, 1.0f, 1.0f, 1.0f};
float ambient[4] = {0.5f, 0.5f, 0.5f, 1.0f};
float specular[4] = {0.25f, 0.25f, 0.25f, 0.0f};
float power = 10.0f;
KE_XPhBodySetVisualMaterial(hobj, diffuse, ambient, specular, power);
long KE_XPhBodyGetVisualMaterial(KEF_Handle obj, float * diffuse, float * ambient
, float * specular, float * power)
動作
物体の見かけの上のマテリアルを取得しますし.
引数
obj : 物体オブジェクトのハンドル
diffuse : 取得したマテリアルの拡散反射成分
float diffuse[4] =
{ r, g, b, a //赤, 緑, 青, 不透明度 }
ambient : 取得したマテリアルの周辺光反射成分
float ambient[4] =
{ r, g, b, a //赤, 緑, 青, 不透明度 }
specular : 取得したマテリアルの鏡面反射成分
float specular[4] =
{ r, g, b, a //赤, 緑, 青, 不透明度 }
power : 取得した鏡面反射の鮮明度
返値
成功すると非0の値,
失敗すると0が返る.
例
KEF_Handle hobj;
hobj = KE_LoadXPhBody("mball.x");
float diffuse[4];
float ambient[4];
float specular[4];
float power;
KE_XPhBodyGetVisualMaterial(hobj, diffuse, ambient, specular, &power);
long KE_XPhBodyAddForce(KEF_Handle obj, float * Point, float * Force)
動作
物体に指定した座標から力を加えます.
引数
obj : 物体オブジェクトのハンドル
Point : 力を加える点のワールド座標上でのベクトル
float Point[3] = { x, y, z }
Force : 与える力のベクトル
float Force[3] = { x, y, z }
返値
成功すると非0の値,
失敗すると0が返る.
例
KEF_Handle hobj;
hobj = KE_LoadXPhBody("box.x");
float Matrix[16];
KE_GetXPhBodyGMat(hobj, Matrix);
float Point[] = {Matrix[12], Matrix[13], Matrix[14]};
float Force[] = {0.0f, 10.0f, 0.0f};
KE_XPhBodyAddForce(hobj, Point, Force);
long KE_XPhBodyAddLinearForce(KEF_Handle obj, float * Force)
動作
物体に指定した座標から力を加えます.
引数
obj : 物体オブジェクトのハンドル
Force : 与える力のベクトル
float Force[3] = { x, y, z }
返値
成功すると非0の値,
失敗すると0が返る.
例
KEF_Handle hobj;
hobj = KE_LoadXPhBody("box.x");
float Force[] = {0.0f, 10.0f, 0.0f};
KE_XPhBodyAddLinearForce(hobj, Force);
long KE_XPhBodyAddAngularForce(KEF_Handle obj, float * Force)
動作
物体に指定した座標から力を加えます.
引数
obj : 物体オブジェクトのハンドル
Force : 与えるトルクのベクトル
float Force[3] = { x, y, z }
返値
成功すると非0の値,
失敗すると0が返る.
例
KEF_Handle hobj;
hobj = KE_LoadXPhBody("box.x");
float Force[] = {0.0f, 10.0f, 0.0f};
KE_XPhBodyAddAngularForce(hobj, Force);
long KE_XPhBodyGetVelocity(KEF_Handle obj, float * Velocity)
動作
物体の速度ベクトルを取得します.
引数
obj : 物体オブジェクトのハンドル
Velocity : 速度ベクトルをうけとる配列
float Velocity[3] = { x, y, z }
返値
成功すると非0の値,
失敗すると0が返る.
例
KEF_Handle hobj;
hobj = KE_LoadXPhBody("box.x");
float Velocity[3];
KE_XPhBodyGetVelocity(hobj, Velocity);
long KE_XPhBodySetVelocity(KEF_Handle obj, float * Velocity)
動作
物体の速度ベクトルを設定します.
引数
obj : 物体オブジェクトのハンドル
Velocity : 速度ベクトルをうけとる配列
float Velocity[3] = { x, y, z }
返値
成功すると非0の値,
失敗すると0が返る.
例
KEF_Handle hobj;
hobj = KE_LoadXPhBody("box.x");
float Velocity[3] = {1.0f, 0.0f, 0.0f};
KE_XPhBodySetVelocity(hobj, Velocity);
long KE_XPhBodyGetAVelocity(KEF_Handle obj, float * Velocity)
動作
物体の角速度ベクトルを取得します.
引数
obj : 物体オブジェクトのハンドル
Velocity : 角速度ベクトルをうけとる配列
float Velocity[3] = { x, y, z }
返値
成功すると非0の値,
失敗すると0が返る.
例
KEF_Handle hobj;
hobj = KE_LoadXPhBody("box.x");
float Velocity[3];
KE_XPhBodyGetAVelocity(hobj, Velocity);
long KE_XPhBodySetAVelocity(KEF_Handle obj, float * Velocity)
動作
物体の角速度ベクトルを設定します.
引数
obj : 物体オブジェクトのハンドル
Velocity : 角速度ベクトルをうけとる配列
float Velocity[3] = { x, y, z }
返値
成功すると非0の値,
失敗すると0が返る.
例
KEF_Handle hobj;
hobj = KE_LoadXPhBody("box.x");
float Velocity[3] = {0.0f, 1.0f, 0.0f};
KE_XPhBodySetAVelocity(hobj, Velocity);
long KE_SetXPhCameraMat(float * Matrix)
動作
カメラの位置と姿勢を設定します
引数
Matrix : カメラの位置と姿勢をあらわす行列
float Matrix[16] =
{
xx, xy, xz, 0.0f //x軸の方向
yx, yy, yz, 0.0f //y軸の方向
zx, zy, zz, 0.0f //z軸の方向
lx, ly, lz, 1.0f //物体の中心位置
}
返値
成功すると非0の値,
失敗すると0が返る.
例
float Matrix[] = {
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f, 0.0f,
0.0f, 0.0f, 1.0f, 0.0f,
0.0f, -5.0f, 0.0f, 1.0f,
}
KE_SetXPhCameraMat(Matrix);
long KE_SetXPhProjection(float * Matrix)
動作
投影行列を設定します
引数
Matrix : 投影行列
float Matrix[16];
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetXPhProjection(float * Matrix)
動作
投影行列を取得します.
引数
Matrix : 投影行列
float Matrix[16];
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetXPhCameraMat(float * Matrix)
動作
カメラの位置と姿勢を取得します
引数
obj : 物体オブジェクトのハンドル
Matrix : 取得した物体の位置と姿勢を受け取る行列
float Matrix[16] =
{
xx, xy, xz, 0.0f //x軸の方向
yx, yy, yz, 0.0f //y軸の方向
zx, zy, zz, 0.0f //z軸の方向
lx, ly, lz, 1.0f //物体の中心位置
}
返値
成功すると非0の値,
失敗すると0が返る.
例
float Matrix[16];
KE_GetXPhCameraMat(Matrix);
long KE_SetViewPlaneDistance(float _value)
動作
カメラと正規化された投影面までの距離を設定します.
引数
_value : カメラと正規化された投影面までの距離
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetViewPlaneDistance(float * _value)
動作
カメラと正規化された投影面までの距離を取得します.
引数
_value : カメラと正規化された投影面までの距離
返値
成功すると非0の値,
失敗すると0が返る.
long KE_SetXPhSimulationFlag(long _value)
動作
シミュレーションを行うかどうかを設定する
引数
_value : 非0(tなど)ならばシミュレーションをおこなう
0ならばシミュレーションをおこなわない.
返値
成功すれば非0の値,
失敗すれば0が返る.
long KE_SetXPhVertexTransformMat(KEF_Handle obj, float * Matrix)
動作
物体の頂点をMatrixで変換します
引数
obj : 物体オブジェクトのハンドル
Matrix : 頂点を変換する行列
float Matrix[16] =
{
xx, xy, xz, 0.0f //x軸の方向
yx, yy, yz, 0.0f //y軸の方向
zx, zy, zz, 0.0f //z軸の方向
lx, ly, lz, 1.0f //物体の中心位置
}
返値
成功すると非0の値,
失敗すると0が返る.
例
KEF_Handle hobj;
float Matrix[] = {
2.0f, 0.0f, 0.0f, 0.0f,
0.0f, 2.0f, 0.0f, 0.0f,
0.0f, 0.0f, 2.0f, 0.0f,
0.0f, 0.0f, 0.0f, 1.0f,
}
hobj = KE_LoadXPhBody("box.x");
KE_SetXPhVertexTransformMat(hobj, Matrix); //2倍に拡大される
long KE_SetCollisionReboundCoeff(float _value)
動作
デフォルトの跳ね返り係数の設定
引数
_value : 跳ね返り係数を設定する
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetCollisionReboundCoeff(float * _value)
動作
デフォルトの跳ね返り係数の取得
引数
_value : 跳ね返り係数を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_SetCollisionSpringCoeff(float _value)
動作
デフォルトの接触時のばね係数の設定
引数
_value : 接触時のばね係数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetCollisionSpringCoeff(float * _value)
動作
デフォルトの接触時のばね係数の取得
引数
_value : 接触時のばね係数を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_SetCollisionStaticFrictionCoeff(float _value)
動作
デフォルトの接触時の静摩擦係数の設定
引数
_value : 接触時の静摩擦係数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetCollisionStaticFrictionCoeff(float * _value)
動作
デフォルトの接触時の静摩擦係数の取得
引数
_value : 接触時の静摩擦係数を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_SetCollisionDynamicFrictionCoeff(float _value)
動作
デフォルトの接触時の動摩擦係数の設定
引数
_value : 動摩擦係数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetCollisionDynamicFrictionCoeff(float * _value)
動作
デフォルトの接触時の動摩擦係数の取得
引数
_value : 動摩擦係数を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_SetCollisionVerticalDamperCoeff(float _value)
動作
デフォルトの接触時の垂直方向の粘性摩擦係数の設定
引数
_value : 接触時の垂直方向の粘性摩擦係数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetCollisionVerticalDamperCoeff(float * _value)
動作
デフォルトの接触時の垂直方向の粘性摩擦係数の取得
引数
_value : 接触時の垂直方向の粘性摩擦係数を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_SetCollisionHorizontalDamperCoeff(float _value)
動作
デフォルトの接触時の水平方向の粘性摩擦係数の設定
引数
_value : 接触時の水平方向の粘性摩擦係数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetCollisionHorizontalDamperCoeff(float * _value)
動作
デフォルトの接触時の水平方向の粘性摩擦係数の取得
引数
_value : 接触時の水平方向の粘性摩擦係数を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_SetInterferencePermitDistance(float _value)
動作
デフォルトのめり込み許容量の設定
引数
_value : めり込み許容量
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetInterferencePermitDistance(float * _value)
動作
デフォルトのめり込み許容量の取得
引数
_value : めり込み許容量を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_SetGravity(float _value)
動作
重力係数の設定
引数
_value : 重力係数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetGravity(float * _value)
動作
重力係数の取得
引数
_value : 重力係数を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_SetCollisionSatisfyCoefficientScale(float _value)
動作
制約問題を解く際の最急降下法のステップ幅を設定する
引数
_value : 最急降下法のステップ幅
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetCollisionSatisfyCoefficientScale(float * _value)
動作
制約問題を解く際の最急降下法のステップ幅を取得
引数
_value : 最急降下法のステップ幅を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_SetCollisionSatisfyRepeatMax(long _value)
動作
接触の制約力を最急降下法で計算するときの
1回の衝突判定につきおこなわれる最大の反復回数を設定する.
引数
_value : 反復回数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetCollisionSatisfyRepeatMax(long * _value)
動作
接触の制約力を最急降下法で計算するときの最大の反復回数を取得
引数
_value : 反復回数を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_SetLinkSatisfyRepeatMax(long _value)
動作
接触以外(関節など)の制約力を最急降下法で計算するときの
1回の衝突判定につきおこなわれる最大の反復回数を設定する.
引数
_value : 反復回数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetLinkSatisfyRepeatMax(long * _value)
動作
接触以外(関節など)の制約力を最急降下法で計算するときの最大の反復回数を取得
引数
_value : 反復回数を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_SetRetryCollisionMax(long _value)
動作
1stepの間に衝突判定をおこなう回数を設定する.
引数
_value : 衝突判定をおこなう回数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetRetryCollisionMax(long * _value)
動作
1stepの間に衝突判定をおこなう回数を取得
引数
_value : 衝突判定をおこなう回数を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_SetSimulationStepSize(long _value)
動作
シミュレーションのステップサイズの設定
引数
_value : ステップサイズ
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetSimulationStepSize(long * _value)
動作
シミュレーションのステップサイズを取得
引数
_value : ステップサイズを受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_SetSimulationRepeatSize(long _value)
動作
1回の描画にstepを進める回数の設定.
1000倍した値を設定する
引数
_value : 1回の描画にstepを進める回数の1000倍
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetSimulationRepeatSize(long * _value)
動作
1回の描画にstepを進める回数の取得.
1000倍した値が取得される.
引数
_value : 1回の描画にstepを進める回数の1000倍の値を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
KEF_Handle KE_XPhBodySetCFunction(KEF_Handle obj
, KES_XPhBodyFunctions * BodyFuncs)
動作
物体にstepごとに呼ばれる関数を設定します.
引数
obj : 物体オブジェクトのハンドル
BodyFuncs : 物体にstepごとに呼ばれる関数などを保持する構造体のアドレス
struct KES_XPhBodyFunctions
{
char * CallFunc; //ステップごとの呼び出される関数を指定する文字列
char * OnDeleteFunc; //物体が消去されるときに呼び出される関数を指定する文字列
char * OnLoadFunc; //物体を読み込むときにdataを読み込むための関数を指定する文字列
char * OnSaveFunc; //物体を保存するときにdataを保存するための関数を指定する文字列
void * data; //それぞれの関数が呼ばれるときに引数として与えられるアドレス
};
返値
設定した関数を保持するオブジェクトのハンドルが返ります,
消去に失敗すると0が返る.
解説
CallFuncとOnDeleteFuncに設定する関数は次のような形で宣言する
__declspec(dllexport) long KE_XPhBodyCFunctionCallBack(KEF_Handle obj, void * data);
OnLoadFuncに設定する関数は次のような形で宣言する
__declspec(dllexport) void * KEF_XPhBodyLoadCallBack(KEF_Handle obj, KEF_Handle stream);
streamはデータを保存するためのハンドルである.
読み込んだデータは関数の返値としてあたえる.
OnSaveFuncに設定する関数は次のような形で宣言する
__declspec(dllexport) long KEF_XPhBodySaveCallBack(KEF_Handle obj, KEF_Handle stream, void * data);
CallFuncなどの関数を指定する文字列は次のようなフォーマットで書く
"モジュール名 関数名"
たとえば
"Test.dll TestFunc"
"My.exe MyFunc"
KEF_Handle KE_XPhBodyGetCFunction(KEF_Handle obj
, char * CallFunc, KES_XPhBodyFunctions * BodyFuncs)
動作
CallFuncに対応する関数の情報を取得します.
引数
obj : 物体オブジェクトのハンドル
CallFunc : 関数名
BodyFuncs : 物体にstepごとに呼ばれる関数などを受け取る構造体のアドレス
struct KES_XPhBodyFunctions
{
char * CallFunc; //ステップごとの呼び出される関数を指定する文字列
char * OnDeleteFunc; //物体が消去されるときに呼び出される関数を指定する文字列
char * OnLoadFunc; //物体を読み込むときにdataを読み込むための関数を指定する文字列
char * OnSaveFunc; //物体を保存するときにdataを保存するための関数を指定する文字列
void * data; //それぞれの関数が呼ばれるときに引数として与えられるアドレス
};
返値
設定した関数を保持するオブジェクトのハンドルが返ります,
消去に失敗すると0が返る.
解説
KES_XPhBodyFunctionsについてはKE_XPhBodySetCFunctionの項目を参照
KEF_Handle KE_XPhBodyGetCFunction(KEF_Handle funccarry
, KES_XPhBodyFunctions * BodyFuncs)
動作
設定した関数を保持するオブジェクトのハンドルから対応する関数の情報を取得します.
引数
funccarry : 設定した関数を保持するオブジェクトのハンドル
BodyFuncs : 物体にstepごとに呼ばれる関数などを受け取る構造体のアドレス
struct KES_XPhBodyFunctions
{
char * CallFunc; //ステップごとの呼び出される関数を指定する文字列
char * OnDeleteFunc; //物体が消去されるときに呼び出される関数を指定する文字列
char * OnLoadFunc; //物体を読み込むときにdataを読み込むための関数を指定する文字列
char * OnSaveFunc; //物体を保存するときにdataを保存するための関数を指定する文字列
void * data; //それぞれの関数が呼ばれるときに引数として与えられるアドレス
};
返値
設定した関数を保持するオブジェクトのハンドルが返ります,
消去に失敗すると0が返る.
解説
KES_XPhBodyFunctionsについてはKE_XPhBodySetCFunctionの項目を参照
long KE_XPhBodySetSameCGroupEachChild(KEF_Handle obj)
動作
物体とそれより下層にあるオブジェクトそれぞれに対する
衝突判定をおこなわないように設定します.
引数
obj : 物体オブジェクトのハンドル
返値
成功すると非0の値,
失敗すると0が返る.
long XPhBodyGetKeyState(long key)
動作
キーが押されているかどうか判定します.
引数
key : キーコード
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodySetMass(KEF_Handle obj, float mass)
動作
物体の質量を設定します.
引数
obj : 物体オブジェクトのハンドル
mass : 質量
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodyGetMass(KEF_Handle obj, float * mass)
動作
物体の質量を取得します.
引数
obj : 物体オブジェクトのハンドル
mass : 質量を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodySetInertiaTensor(KEF_Handle obj
, float m00, float m01, float m02
, float m10, float m11, float m12
, float m20, float m21, float m22)
動作
物体の慣性テンソルを設定します.
引数
obj : 物体オブジェクトのハンドル
m00〜m22 : 慣性テンソル
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodyGetInertiaTensor(KEF_Handle obj
, float * m00, float * m01, float * m02
, float * m10, float * m11, float * m12
, float * m20, float * m21, float * m22)
動作
物体の慣性テンソルを取得します.
引数
obj : 物体オブジェクトのハンドル
m00〜m22 : 慣性テンソルを受け取る変数へのアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodyGetInertiaTensorFromAABB(KEF_Handle obj)
動作
物体を内包するAABB(Axis Aligned Boiunding Box)をもとに
慣性テンソルを求めます.
引数
obj : 物体オブジェクトのハンドル
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodyGetAABB(KEF_Handle obj
, float * x0, float * y0, float * z0
, float * x1, float * y1, float * z1)
動作
物体を内包するAABB(Axis Aligned Bounding Box)を取得します.
引数
obj : 物体オブジェクトのハンドル
x0, y0, z0 : AABBのx軸, y軸, z軸の値が最小となる頂点の座標を受け取る変数のアドレス
x1, y1, z1 : AABBのx軸, y軸, z軸の値が最大となる頂点の座標を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
KEF_Handle KE_XPhBodyAddJointChild(KEF_Handle obj, KEF_Handle child
, float px, float py, float pz
, float ax, float ay, float az
, float dx, float dy, float dz
, float radius)
動作
物体に子の物体を加えるとともに関節を作ります.
引数
obj : 物体オブジェクトのハンドル
child : 子供の物体オブジェクトのハンドル
px, py, pz : 関節の位置
ax, ay, az : 関節の軸
dx, dy, dz : 回転の基準とする方向
radius : トルク接続点の距離(トルクバネの係数のようなもの)
返値
関節オブジェクトのハンドル.
long KE_XPhBodyAddFixedChild(KEF_Handle obj, KEF_Handle child)
動作
物体に子の物体を親に固定されているものとして加えます.
引数
obj : 物体オブジェクトのハンドル
child : 子供の物体オブジェクトのハンドル
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodyRemoveChild(KEF_Handle obj)
動作
子の物体を親からはずします.
引数
obj : はずす物体オブジェクトのハンドル
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodyRemoveFromWorld(KEF_Handle obj)
動作
ワールドから物体を除外します.
引数
obj : 除外する物体オブジェクトのハンドル
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodyAddToWorld(KEF_Handle obj)
動作
ワールドに物体を加えます.
引数
obj : 除外する物体オブジェクトのハンドル
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointSetTorque(KEF_Handle jnt, float _value)
動作
関節に発生させるトルクを設定します
引数
jnt : 関節オブジェクトのハンドル
_value : 関節に発生させるトルク
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointSetTorque2(KEF_Handle jnt, float _value)
動作
関節の第2軸に発生させるトルクを設定します
引数
jnt : 関節オブジェクトのハンドル
_value : 関節に発生させるトルク
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointSetRotationalDamper(KEF_Handle jnt, float _value)
動作
関節の回転にかかる粘性摩擦係数を設定します
引数
jnt : 関節オブジェクトのハンドル
_value : 粘性摩擦係数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointGetRotationalDamper(KEF_Handle jnt, float * _value)
動作
関節の回転にかかる粘性摩擦係数を取得します
引数
jnt : 関節オブジェクトのハンドル
_value : 粘性摩擦係数を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointSetRotationalDamper2(KEF_Handle jnt, float _value)
動作
関節の第2軸にかかる粘性摩擦係数を設定します
引数
jnt : 関節オブジェクトのハンドル
_value : 粘性摩擦係数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointGetRotationalDamper2(KEF_Handle jnt, float * _value)
動作
関節の第2軸にかかる粘性摩擦係数を取得します
引数
jnt : 関節オブジェクトのハンドル
_value : 粘性摩擦係数を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointSetBrake(KEF_Handle jnt, float _value)
動作
関節のブレーキにかかる力を指定します.
引数
jnt : 関節オブジェクトのハンドル
_value : ブレーキにかかる力
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointGetBrake(KEF_Handle jnt, float * _value)
動作
関節のブレーキにかかる力を取得します.
引数
jnt : 関節オブジェクトのハンドル
_value : ブレーキにかかる力を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointSetBrake2(KEF_Handle jnt, float _value)
動作
関節のブレーキにかかる力を指定します.
引数
jnt : 関節オブジェクトのハンドル
_value : ブレーキにかかる力
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointGetBrake2(KEF_Handle jnt, float * _value)
動作
関節のブレーキにかかる力を取得します.
引数
jnt : 関節オブジェクトのハンドル
_value : ブレーキにかかる力を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointSetMinTheta(KEF_Handle jnt, float _value)
動作
関節の回転角の最小値を指定します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の回転角の最小値
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointGetMinTheta(KEF_Handle jnt, float * _value)
動作
関節の回転角の最小値を取得します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の回転角の最小値を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointSetMinTheta2(KEF_Handle jnt, float _value)
動作
関節の第2軸の回転角の最小値を指定します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の回転角の最小値
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointGetMinTheta2(KEF_Handle jnt, float * _value)
動作
関節の第2軸の回転角の最小値を取得します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の回転角の最小値を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointSetMaxTheta(KEF_Handle jnt, float _value)
動作
関節の回転角の最大値を指定します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の回転角の最大値
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointGetMaxTheta(KEF_Handle jnt, float * _value)
動作
関節の回転角の最大値を取得します
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の回転角の最大値を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointSetMaxTheta2(KEF_Handle jnt, float _value)
動作
関節の第2軸の回転角の最大値を指定します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の回転角の最大値
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointGetMaxTheta2(KEF_Handle jnt, float * _value)
動作
関節の第2軸の回転角の最大値を取得します
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の回転角の最大値を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointSetStaticFrictionCoeff(KEF_Handle jnt, float _value)
動作
関節の静摩擦係数を設定します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の静摩擦係数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointGetStaticFrictionCoeff(KEF_Handle jnt, float * _value)
動作
関節の静摩擦係数を取得します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の静摩擦係数を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointSetStaticFrictionCoeff2(KEF_Handle jnt, float _value)
動作
関節の第2軸にかかる静摩擦係数を設定します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の静摩擦係数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointGetStaticFrictionCoeff2(KEF_Handle jnt, float * _value)
動作
関節の第2軸にかかる静摩擦係数を取得します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の静摩擦係数を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointSetDynamicFrictionCoeff(KEF_Handle jnt, float _value)
動作
関節の動摩擦係数を設定します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の動摩擦係数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointGetDynamicFrictionCoeff(KEF_Handle jnt, float * _value)
動作
関節の動摩擦係数を取得します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の動摩擦係数を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointSetDynamicFrictionCoeff2(KEF_Handle jnt, float _value)
動作
関節の第2軸にかかる動摩擦係数を設定します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の動摩擦係数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointGetDynamicFrictionCoeff2(KEF_Handle jnt, float * _value)
動作
関節の第2軸にかかる動摩擦係数を取得します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の動摩擦係数を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointSetDynamicFrictionCoeff2(KEF_Handle jnt, float _value)
動作
関節の数を設定します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointGetDynamicFrictionCoeff2(KEF_Handle jnt, float * _value)
動作
関節の数を取得します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointGetDTheta(KEF_Handle jnt, float * _value)
動作
関節の角速度を取得します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の角速度を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointGetDTheta2(KEF_Handle jnt, float * _value)
動作
関節の第2軸の角速度を取得します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の角速度を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointGetTheta(KEF_Handle jnt, float * _value)
動作
関節の回転角を取得します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の回転角を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhJointGetTheta2(KEF_Handle jnt, float * _value)
動作
関節の第2軸の回転角を取得します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の回転角を受け取る変数のアドレス
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodySetEAirRegistance1(KEF_Handle obj, float _value);
動作
速度に比例する空気抵抗を設定します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodyGetEAirRegistance1(KEF_Handle obj, float_value);
動作
速度に比例する空気抵抗を取得します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodySetEAirRegistance2(KEF_Handle obj, float _value);
動作
速度に比例する空気抵抗を設定します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodyGetEAirRegistance2(KEF_Handle obj, float_value);
動作
速度に比例する空気抵抗を取得します.
引数
jnt : 関節オブジェクトのハンドル
_value : 関節の数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodyJointSpringCoeff(KEF_Handle jnt, float value)
動作
関節を表現するバネののバネ係数を設定します.
引数
jnt : 関節オブジェクトのハンドル
value : バネ係数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodyJointSpringDamper(KEF_Handle jnt, float value)
動作
関節を表現するバネの粘性摩擦係数を設定します.
引数
jnt : 関節オブジェクトのハンドル
value : 粘性摩擦係数
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodyJointAxisSpringLimit(KEF_Handle jnt, float value)
動作
関節の軸を表現するバネの伸びの限界を設定します.
引数
jnt : 関節オブジェクトのハンドル
value : バネの伸びの限界
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodyJointTorqueSpringLimit(KEF_Handle jnt, float value)
動作
関節のトルクを伝える働きをするバネの伸びの限界を設定します.
引数
jnt : 関節オブジェクトのハンドル
value : バネの伸びの限界
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodyJointLimitFlag(KEF_Handle jnt, long value)
動作
関節に回転の限界を設けるかどうか設定をおこないます.
引数
jnt : 関節オブジェクトのハンドル
value : 非0ならば関節に回転の限界を設ける
0ならば関節に回転の限界を設けない
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodyJointLimitFlag2(KEF_Handle jnt, long value)
動作
関節の2番目の回転軸に対して回転の限界を設けるかどうか設定をおこないます.
引数
jnt : 関節オブジェクトのハンドル
value : 非0ならば関節に回転の限界を設ける
0ならば関節に回転の限界を設けない
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhBodyJointGuessParam(KEF_Handle jnt)
動作
関節のパラメータを質量や慣性テンソルなどの値から
バネ係数などのパラメータを設定します.
引数
jnt : 関節オブジェクトのハンドル
返値
成功すると非0の値,
失敗すると0が返る.
long KE_XPhDrawLine(float * Color, float * P0, float * P1)
動作
3次元空間に線を描画.
引数
Color : 線の色
float Color[4] =
{ r, g, b, a //赤, 緑, 青, 不透明度 }
P0 : 線の始点
float P0[3] =
{ x, y, z }
P1 : 線の終点
float P1[3] =
{ x, y, z }
返値
交差が検出されると非0の値,
交差が検出されないと0が返る.
long KE_XPhRayPick(float * Direction, float * Position
, KES_XPhRayPickData * RPData)
動作
Positionを始点としてDirection方向に伸びる半直線と
物体オブジェクトの面の交差を求め一番近い物体オブジェクトと
交点位置と半直線のパラメータparamをRPDataに返す.
半直線の式は
x = Direction * param + Position
である.
引数
Direction : 線の方向
float Direction[3] =
{ x, y, z }
Position : 線の始点
float Position[3] =
{ x, y, z }
RPData : 交差情報の構造体へのアドレス
struct KES_XPhRayPickData
{
KEF_Handle obj; //交差した物体オブジェクトのハンドル
KES_Vector3D XP; //交点
float param; //半直線のパラメータ
};
KES_Vector3Dの宣言は次のとおり
struct KES_Vector3D
{
float x, y, z;
};
返値
交差が検出されると非0の値,
交差が検出されないと0が返る.
long KE_XPhRayPickNCBody(KEF_Handle obj, float * Direction, float * Position
, KES_XPhRayPickData * RPData)
動作
Positionを始点としてDirection方向に伸びる半直線と
物体オブジェクトの面の交差を求め一番近い物体オブジェクトと
交点位置と半直線のパラメータparamをRPDataに返す.
そのさいobjとそれより下層の物体との交差判定を無視します.
半直線の式は
x = Direction * param + Position
である.
引数
Direction : 線の方向
float Direction[3] =
{ x, y, z }
Position : 線の始点
float Position[3] =
{ x, y, z }
RPData : 交差情報の構造体へのアドレス
struct KES_XPhRayPickData
{
KEF_Handle obj; //交差した物体オブジェクトのハンドル
KES_Vector3D XP; //交点
float param; //半直線のパラメータ
};
KES_Vector3Dの宣言は次のとおり
struct KES_Vector3D
{
float x, y, z;
};
返値
交差が検出されると非0の値,
交差が検出されないと0が返る.
long KE_XPhSetZClip(float clipnear, float clipfar)
動作
Z Clip面の設定.
引数
clipnear : near clip面までの距離
clipfar : far clip面までの距離
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetXPhBodyRenderData(KEF_Handle obj, KES_RenderData * RD)
動作
レンダリング用情報の取得
引数
obj : 物体オブジェクトのハンドル
RD : レンダリング用データ
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetXPhBodyCollisionData(KEF_Handle obj, KES_RenderData * RD)
動作
衝突判定用情報の取得
引数
obj : 物体オブジェクトのハンドル
RD : 衝突判定用データ
返値
成功すると非0の値,
失敗すると0が返る.
long KE_GetXPhBodyEnume(KEF_EnumeObject * CB)
動作
物体オブジェクトの列挙
引数
CB : 物体列挙用のコールバック関数などの情報
返値
成功すると非0の値,
失敗すると0が返る.
long KE_SetCollisionVertices(KEF_Handle obj, long VertexNum, KES_Vertex * Vertices
, long FaceNum, KES_Face * Faces)
動作
物体オブジェクトの衝突判定用形状の設定
引数
obj : 物体オブジェクトのハンドル
VertexNum : 頂点の数
Vertices : 頂点の配列
FaceNum : 面の数
Faces : 面の配列
返値
成功すると非0の値,
失敗すると0が返る.
long KE_SetXPhBodyTexture(KEF_Handle obj, char * texturefilename)
動作
テクスチャーの設定
引数
obj : 物体オブジェクトのハンドル
texturefilename : テクスチャーファイル名
返値
成功すると非0の値,
失敗すると0が返る.
KEF_Handle KE_XPhBodyGetChild(KEF_Handle obj)
動作
物体の子供のうち先頭にある物体オブジェクトを取得します.
引数
obj : 物体オブジェクトのハンドル
返値
成功すると子供のうち先頭にある物体オブジェクトのハンドルが返り,
失敗すると0が返る.
KEF_Handle KE_XPhBodyGetParent(KEF_Handle obj)
動作
親の物体オブジェクトを取得します.
引数
obj : 物体オブジェクトのハンドル
返値
成功すると親の物体オブジェクトのハンドルが返り,
失敗すると0が返る.
KEF_Handle KE_XPhBodyGetJuniorNoLoop(KEF_Handle obj)
動作
同じ階層にある次の物体オブジェクトを取得します.
引数
obj : 物体オブジェクトのハンドル
返値
成功すると同じ階層にある次の物体オブジェクトのハンドルが返り,
失敗すると0が返る.
KEF_Handle KE_XPhBodyGetSeniorNoLoop(KEF_Handle obj)
動作
同じ階層にある前の物体オブジェクトを取得します.
引数
obj : 物体オブジェクトのハンドル
返値
成功すると同じ階層にある前の物体オブジェクトのハンドルが返り,
失敗すると0が返る.
long KE_KLPlugInXPhBodyCall(char * funcname, KEF_Handle obj)
動作
funcnameの関数をobjを引数として呼びます.
引数
funcname : 関数を指定する文字列
次のようなフォーマットで書く
"モジュール名 関数名"
たとえば
"Test.dll TestFunc"
"My.exe MyFunc"
この文字列が示す関数は
次のような形で宣言する.
extern "C" __declspec(dllexport) long TestFunc(KEF_Handle obj);
obj : 物体オブジェクトのハンドル
返値
成功すると非0が返り,
失敗すると0が返る.
long KE_XPhBodyEnableCollisionPair(KEF_Handle obj, KEF_Handle obj2, long flg)
動作
指定した2つの物体の間での衝突判定を有効にするか無効にするか設定します.
引数
obj : 物体オブジェクトのハンドル
obj2 : 物体オブジェクトのハンドル
flg : 非0ならば有効,0ならば無効.
返値
成功すると非0の値,
失敗すると0が返る.
KEF_Handle KE_XPhBodyGetCurrentJoint(KEF_Handle obj)
動作
物体に設定されている関節を取得します.
引数
obj : 物体オブジェクトのハンドル
返値
成功すると関節オブジェクトのハンドルが返り,
失敗すると0が返る.