Hallo alle zusammen,
ich habe bisher noch nicht viel mit lite-C gemacht und bin gleich am Anfang auf folgendes Problem gestoßen.

Ich möchte gerne eine Tür über einen Trigger öffnen.
Dazu habe ich einen kleinen Testlevel mit zwei Räumen und einer Verbindungstür erstellt und darin einen ball als Spieler platziert.

Nun habe ich folgendes lite-C Programm geschrieben und die action door()
im WED an die Map-Entity die die Tür darstellt angebunden.
Code:

#include <acknex.h>
#include <default.c>

ENTITY* sky = {type = "skycube+6.tga"; flags2 = SKY | CUBE | VISIBLE;}
float fTilt = 10.0;
ENTITY* ent_door = NULL;
ENTITY* ent_ball = NULL;
var initpan;

void main()
{
level_load("small_level.wmb");
wait(2);


// while (ent_door == NULL) {wait(1);}
//
// initpan = ent_door.pan;
//
// while(ent_door.pan < initpan+90)
// {
// c_rotate(ent_door, vector(4*time_step,0,0), IGNORE_MAPS);
// wait(1);
// }
//
while(1)
{
if(key_pgup)
fTilt += time_step;
if(key_pgdn)
fTilt -= time_step;

wait(1);
}
}

action ball()
{
ent_ball = my;
ent_ball.trigger_range = 50;
vec_set(camera.x, my.x);
camera.y += 10;
camera.tilt = fTilt;

VECTOR* move_vec = vector(0,0,0);

while(1)
{
if(key_cur)
{
ent_ball.pan -= 5*time_step;
}
if(key_cul)
{
ent_ball.pan += 5*time_step;
}
if(key_cuu)
{
move_vec.x = 5*time_step;
}
if(key_cud)
{
move_vec.x = -5*time_step;
}
c_move(ent_ball,move_vec,nullvector,ACTIVATE_TRIGGER);
move_vec.x = 0;
vec_set(camera.x, ent_ball.x);
camera.pan = ent_ball.pan;
camera.tilt = fTilt;
wait(1);
}
}

function door_event()
{
if (event_type == EVENT_TRIGGER)
{
while (ent_door == NULL) {wait(1);}

ent_door.emask &= !ENABLE_TRIGGER;

initpan = ent_door.pan;

while(ent_door.pan < initpan+90)
{
c_rotate(ent_door, vector(4*time_step,0,0), IGNORE_YOU);
wait(1);
}
}
}
action door()
{
ent_door = my;
ent_door.trigger_range = 50;
ent_door.emask |= ENABLE_TRIGGER;
ent_door.event = door_event;
}


Wenn ich das Programm starte, kann ich im Debug-Modus sehen das die function door_event auch korrekt aufgerufen wird, wenn mein Ball in der Trigger-Range der Tür gelangt und auch in der While-Schleife der pan der Tür geändert wird.
Nur wird die Tür im Level nicht bewegt.

Wenn ich jedoch die Rotation der Tür in der main-Funktion ausführe (ist hier auskommentiert) dann sehe ich im Level wie sich die Tür dreht.

Was mache ich falsch? Gibts da einen Trick den ich noch nicht durchschaut habe?

Vielen Dank für jeden Hinweis.

Gruß
dinosaur