#include <acknex.h>
#include <default.c>
#include <ackphysx.h>
void main()
{
physX_open();
// Set shadow
shadow_stencil = 2;
level_load("PLATE.WMB");
wait(3);
// Set camera
vec_set(camera->x, vector(-265, -30, 90));
vec_set(camera->pan, vector(0, -11, 0));
// Create player
ENTITY *e = ent_create("CUBE.MDL", vector(0, 0, 100), NULL);
//vec_set(e->scale_x, vector(2, 2, 2));
//vec_set(e->scale_x, vector(0.5, 0.5, 0.5));
set(e, SHADOW);
pXent_settype(e, PH_CHAR, PH_CAPSULE /*PH_BOX*/);
// Create
ENTITY *box = ent_create("CUBE.MDL", vector(20, 20, 50), NULL);
set(box, SHADOW);
pXent_settype(box, PH_RIGID, PH_BOX /*PH_CAPSULE*/);
// Player movement
var player_gravity = 0.1;
var player_speed = 0;
ENTITY *sphere = ent_create(SPHERE_MDL, vector(-20, 0, 100), NULL);
set(sphere, SHADOW);
pXent_settype(sphere, PH_RIGID, PH_SPHERE);
pXent_setmaterial(sphere, vector(100, 0, 0), vector(100, 100, 100), vector(0, 1, 0));
// Create static wall
ENTITY *wall = ent_create(CUBE_MDL, vector(0, 40, 20), NULL);
vec_set(wall->scale_x, vector(5, 0.5, 5));
c_setminmax(wall);
set(wall, LIGHT | SHADOW);
vec_set(wall->blue, vector(150, 0, 0));
pXent_settype(wall, PH_STATIC, PH_BOX);
//
while(1)
{
// Add gravity to speed
player_speed += player_gravity;
// Move charachter downward
pXent_move(e, NULL, vector((key_cuu - key_cud) * 2 * time_step, (key_cul - key_cur) * 2 * time_step, -player_speed * time_step));
// Debug entity z
DEBUG_VAR(e->z, 10);
VECTOR temp;
vec_set(temp, e->x);
temp.z -= 1000;
my = e;
var dist = c_trace(e->x, temp, IGNORE_ME | USE_BOX);
DEBUG_VAR(dist, 22);
// Distance to ground
DEBUG_VAR(e->z - dist, 34);
//DEBUG_VAR(pX_stats(1), 50);
// Wait frame
wait(1);
}
}