#include <acknex.h>
#include <ackphysx.h>
#define PRAGMA_PATH "%EXE_DIR%templatesimages"
#define PRAGMA_PATH "%EXE_DIR%templatesmodels"
#define GRAVITY 100
BMAP *bmpTerrain = "rock.tga";
#define skMoveX skill1
#define skMoveY skill2
#define skMoveZ skill3
#define skRotatX skill4
#define skRotatY skill5
#define skRotatZ skill6
action actHc() {
my->pan = 25;
my->flags |= SHADOW;
vec_fill(my->skMoveX, 0);
vec_fill(my->skRotatX, 0);
pXent_settype(me, PH_RIGID, PH_BOX);
while(!key_esc) {
var _accel = 100 * time_step;
var _factor = 1 - time_step * 0.2;
my->skMoveX = clamp(my->skMoveX + (key_w - key_s) * _accel, -400, 800) * _factor;
my->skMoveY = clamp(my->skMoveY + (key_a - key_d) * _accel, -500, 500) * _factor;
my->skMoveZ = clamp(my->skMoveZ + (key_cuu - key_cud) * _accel, -200, 200) * _factor;
VECTOR _vMove;
vec_set(&_vMove, &my->skMoveX);
vec_rotate(&_vMove, vector(my->pan, 0, 0));
pXent_setvelocity(me, &_vMove);
VECTOR _vRot;
_vRot.x = -ang(my->roll) * 10 - my->skMoveY * 0.6;
_vRot.y = ang(my->tilt) * 10 + my->skMoveX * 0.2;
my->skRotatZ = clamp(my->skRotatZ + (key_cul - key_cur) * 4, -80, 80) * _factor;
_vRot.z = my->skMoveY * 0.01 * my->skMoveX * 0.01 + my->skRotatZ;
vec_rotate(&_vRot, vector(my->pan, 0, 0));
pXent_setangvelocity(me, &_vRot);
camera->x = -300;
camera->y = 0;
camera->z = 130;
vec_rotate(&camera->x, vector(my->pan, 0, 0));
vec_add(&camera->x, &my->x);
camera->pan = my->pan;
wait(1);
}
sys_exit(NULL);
}
action actCube() {
my->pan = random(360);
vec_fill(my->scale_x, 4);
my->flags |= SHADOW;
pXent_settype(me, PH_RIGID, PH_BOX);
}
void main() {
video_mode = 10;
fps_max = 60;
wait(3);
on_0 = NULL;
physX_open();
pX_setunit(0.25);
pX_setgravity(vector(0, 0, -GRAVITY));
level_load("");
camera->tilt = -10;
ENTITY *_entTerrain = ent_createterrain(bmpTerrain, nullvector, 1, 1, 16384);
pXent_settype(NULL, PH_STATIC, PH_PLANE); // create a static plane at groundlevel zero
int _i = 0;
for(; _i<100; _i+=1)
ent_create("dumper1.MDL", vector(random(16000)-8000,random(16000)-8000,100), actCube);
ent_create("buggy.MDL", vector(0,0,400), actHc);
}