📄 a6engine.pas
字号:
//////////////////////////////////////////////////////////////////////
// Acknex engine DLL/EXE header for C++
// (c) Conitec / jcl 2004
//////////////////////////////////////////////////////////////////////
//
// Delphi Conversion for using the A6_5x Engine (acknex.dll) done by
// Michal Messerschmidt aka LazyDog of Lazy Dog Software
// (www.LazyDogSoftware.com)
//
// SDK Version 6.50.6
//
// tested on Delphi 5,6,7,2005 & 2006
//////////////////////////////////////////////////////////////////////
Unit A6Engine;
Interface
{$DEFINE USEWINDOWSUNIT}
{$IFDEF USEWINDOWSUNIT}
Uses Windows;
{$ENDIF}
Type Var_ = Type LongInt; // use of the 2nd "Type" makes code completion show Var_ instead of LongInt
PVar_ = ^Var_; // also compiler catches any attempt to assign to a Var_ without using _VAR helper function
{$IFNDEF USEWINDOWSUNIT}
PPoint = ^TPoint;
TPoint = record
x: Longint;
y: Longint;
end;
PRect = ^TRect;
TRect = record
case Integer of
0: (Left, Top, Right, Bottom: Integer);
1: (TopLeft, BottomRight: TPoint);
end;
DWORD = Longword;
{$IFDEF VER130} //Delphi 5
PByte = ^Byte;
PSingle = ^Single;
PLongint = ^Longint;
{$ENDIF}
{$ENDIF}
{$I 'ATypes.pas'} // engine structs and flags
//////////////////////////////////////////////////////////////////////
Type
// define a struct with pointers to all exported engine variables
PEngine_Vars = ^TEngine_Vars;
TEngine_Vars = Packed Record
{$I 'avars.pas'}
end;
var ev : PEngine_Vars;
{$I 'afuncs.pas'} // include a list of engine functions
//helper functions to move variables to/from c-script & engine
//names kept the same as the A5 sdk
function Int2Fix(i : LongInt) : Var_; // int -> var
function Fix2Int(x : Var_) : LongInt; // var -> int
function Float2Fix(f : Double) : Var_; // double -> var
function Fix2Float(x : Var_) : Double; // var -> float
//helper functions to move variables to/from c-script & engine
//these are identical to the above but use the same names as the A6 sdk
function _VAR(i : LongInt) : Var_; overload; // int -> var
function _VAR(f : double) : Var_; overload; // double -> var, overloaded
function _INT(x : Var_) : LongInt; // var -> int
function _FLOAT(x : Var_) : Double; // var -> float
function _CHR(s : PString) : PChar; // STRING* -> char*
// Reading and writing to engine variables requires you to use the correct data type
//
//
// to set an engine variable
//
// ev.max_loops^ := _VAR(100); or ev.max_loops^ := Int2Fix(100);
// ev.fps_max^ := _VAR(60); or ev.fps_max^ := Int2Fix(60);
//
// read an int from an engine variable
//
// I := _INT(ev.max_loops^); or I := Fix2Int(ev.max_loops^);
// I := _INT(ev.fps_max^); or I := fix2Int(ev.fps_max^);
//
// read a float from an engine variable
//
// f := _FLOAT(Entity.pan); or f := Fix2Float(Entity.pan);
IMPLEMENTATION
Const DLLName = 'acknex.dll';
function Int2Fix(i : LongInt) : Var_; // int -> var
begin
Result := i shl 10;
end;
function Fix2Int(x : Var_) : LongInt; // var -> long
begin
Result := x shr 10;
end;
function Float2Fix(f : Double) : Var_; // double -> var
begin
Result := trunc(f * (1 shl 10));
end;
function Fix2Float(x : Var_) : Double; // var -> float
var d : Double;
begin
d := x;
Result := d / (1 shl 10);
end;
function _VAR(i : LongInt) : Var_; // int -> var
begin
Result := i shl 10;
end;
function _VAR(f : double) : Var_; // double -> var, overloaded
begin
Result := trunc(f * (1 shl 10));
end;
function _INT(x : Var_) : LongInt; // var -> int
begin
Result := x shr 10;
end;
function _FLOAT(x : Var_) : Double; // var -> float
var d : Double;
begin
d := x;
Result := d / (1 shl 10);
end;
function _CHR(s : PString) : PChar; // STRING* -> char*
begin
Result := s.char;
end;
function ang; external DLLName;
function sign; external DLLName;
function fraction; external DLLName;
function _integer; external DLLName name 'integer';
function _random; external DLLName name 'random';
function randomize; external DLLName;
function absv; external DLLName;
function sinv; external DLLName;
function cosv; external DLLName;
function tanv; external DLLName;
function asinv; external DLLName;
function acosv; external DLLName;
function atanv; external DLLName;
function expv; external DLLName;
function logv; external DLLName;
function log10v; external DLLName;
function sqrtv; external DLLName;
function powv; external DLLName;
function maxv; external DLLName;
function minv; external DLLName;
function fsin; external DLLName;
function fcos; external DLLName;
function ftan; external DLLName;
function fasin; external DLLName;
function facos; external DLLName;
function fatan; external DLLName;
function accelerate; external DLLName;
function clamp; external DLLName;
function cycle; external DLLName;
// var vector math
function ang_add; external DLLName;
function ang_rotate; external DLLName;
function vec_length; external DLLName;
function vec_dist; external DLLName;
function vec_dot; external DLLName;
function vec_normalize; external DLLName;
function vec_accelerate; external DLLName;
function vec_add; external DLLName;
function vec_diff; external DLLName;
function vec_inverse; external DLLName;
function vec_lerp; external DLLName;
function vec_rotate; external DLLName;
function vec_scale; external DLLName;
function vec_set; external DLLName;
function vec_sub; external DLLName;
function vec_for_angle; external DLLName;
function vec_to_angle; external DLLName;
function vec_for_bone; external DLLName;
function ang_for_bone; external DLLName;
function vec_for_normal; external DLLName;
function vec_for_vertex; external DLLName;
function vec_for_min; external DLLName;
function vec_for_max; external DLLName;
function vec_for_mesh; external DLLName;
function vec_to_mesh; external DLLName;
function vec_for_uv; external DLLName;
function vec_to_uv; external DLLName;
function vec_for_screen; external DLLName;
function vec_to_screen; external DLLName;
function rel_for_screen; external DLLName;
function rel_to_screen; external DLLName;
function vector; external DLLName;
// float 4x4 matrix math
function mat_identity; external DLLName;
function mat_inverse; external DLLName;
function mat_multiply; external DLLName;
function mat_scale; external DLLName;
function mat_set; external DLLName;
function mat_transpose; external DLLName;
// functions with char* arguments also accept a CScript STRING*.
// To distinguish, the char* must consist of at least 3 characters.
// Otherwise use the _str conversion function.
function str_create; external DLLName;
function str_cpy; external DLLName;
function str_for_asc; external DLLName;
function str_for_num; external DLLName;
function str_cat; external DLLName;
function str_cat_num; external DLLName;
function str_clip; external DLLName;
function str_trunc; external DLLName;
function str_lwr; external DLLName;
function str_upr; external DLLName;
function str_cmp; external DLLName;
function str_cmpi; external DLLName;
function str_cmpni; external DLLName;
function str_len; external DLLName;
function str_stri; external DLLName;
function str_remove; external DLLName;
function str_to_asc; external DLLName;
function str_to_num; external DLLName;
function str_cursor; external DLLName;
// bitmap
function bmap_create; external DLLName;
function bmap_createblack; external DLLName;
procedure bmap_remove; external DLLName;
function bmap_for_entity; external DLLName;
function bmap_for_screen; external DLLName;
function bmap_for_buffer; external DLLName;
function bmap_preload; external DLLName;
function bmap_purge; external DLLName;
function bmap_load; external DLLName;
function bmap_save; external DLLName;
function bmap_to_cubemap; external DLLName;
function bmap_to_mipmap; external DLLName;
function bmap_to_normals; external DLLName;
function bmap_to_uv; external DLLName;
function bmap_to_format; external DLLName;
function bmap_height; external DLLName;
function bmap_width; external DLLName;
function bmap_lock; external DLLName;
function bmap_unlock; external DLLName;
function bmap_blit; external DLLName;
function bmap_fill; external DLLName;
function pixel_for_bmap; external DLLName;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -