Half-Life研究所

適当にプログラミングに役立つ情報を紹介していこうと考えてます。
Half-Lifeエンジン・コールバック関数リファレンス

Half-Lifeにはエンジン本体から提供されるコールバック関数という物があり、これらの関数はモジュール作りの要です。 その関数のリファレンスを作成してみました。

エンジンはDLLとのリンクを行った後、コールバック関数のアドレスを格納する構造体へ一気にアドレスの書き込みを行います。 その構造体はg_engfuncsとして宣言されているので、例えばコールバック関数pfnModelIndexをモジュール内で実行する場合は
modelindex = (*g_engfuncs.pfnModelIndex)("models/w_weaponbox.mdl");
のように記述しなければなりませんが、見苦しいので以下の定義がenginecallback.hにて行われています。
#define MODEL_INDEX	(*g_engfuncs.pfnModelIndex)
この定義によって記述は次のようにスッキリした形で行えます。このリファレンスは全てこのような記述で関数を使用することを前提に書いてあります。
modelindex = MODEL_INDEX("models/w_weaponbox.mdl");
ただし、全てのコールバック関数に対して上記のような定義が行われているわけではないので (関数自体が使われていなかったり、直接記述されていたりする)そのような関数には「※未定義」という注釈と共に定義例も記述してあります。 実際にオリジナルソース内で使用されていない関数は構造体サイズの辻褄合わせに残っている可能性も有りうるため、使用には注意しましょう。
このリファレンスはponpokoが勝手に今までの経験を元に「たぶんこういった動作をするのだろう」感覚で作成した物なので動作の説明が間違っている個所もあるかもしれません。 今後実際に関数を使用しながら間違っているものは修正していこうと思います。

Half-Lifeエンジン・コールバック関数一覧

ローカルに取り込んで参照したい時はインデックスリファレンス本体を保存すればOKです。

e-mail:ponpoko@axcx.com