timer()

That's a great function! It measures the time between two timer calls in microseconds, and it is extremely useful if you want to test the speed of the functions and / or instructions. The resolution is really good: 1 / cpu frequency (Hz).

var time_elapsed;

panel main_pan
{
layer = 20;
pos_x = 0;
pos_y = 0;
digits = 30, 30, 6, _a4font, 1, time_elapsed; // we need 6 digits because the value is given in microseconds (uS)
flags = overlay, refresh, visible;
}

function test_scanning() // test the speed of the scan_entity instruction
{
while (player == null) {wait (1);}
temp.x = 360; // horizontal angle
temp.y = 180; // vertical angle
temp.z = 300; // scanning range
timer(); // reset the timer
scan_entity (player.x, temp); // perform the scanning, takes 7 uS on a P4 @2GHz
time_elapsed = timer(); // store the time in time_elapsed
}

on_t = test_scanning;

New collision detection

The c_move, c_trace, c_rotate instructions use now an ellipsoid-based collision detection system for better performance. The shape of the ellipsoid can be set manually using min_x and max_x, or automatically with the c_setminmax instruction. Here's what happens when you try to run into a wall using the old and the new collision detection system:

WED: New path editor

The new path editor allows you to attach entities to paths from within Wed and to retrieve positions, values for the skills associated to the nodes, lenghts and weights for the path edges!