SOUND* sound_oeffnen = "door_open.wav";
var sound_oeffnen_handle;
SOUND* sound_schliessen = "door_open.wav";
var sound_schliessen_handle;
var Oeffnungs_abfrage = 0;
void anmbeh(ENTITY* ent, var *mode, var type)
{
var anmbeh = 0;
var anim_percentage;
// var Oeffnungs_abfrage = 0;
*mode = 1;
while(anmbeh < 100 && type == 0 )
{
anmbeh += 8 * time_step;
ent_animate(my, "open", anmbeh, NULL);
anim_percentage = cycle(anim_percentage, 0, 100);
wait(1);
}
while(anmbeh <100 && type == 1 && Oeffnungs_abfrage == 0)
{
anmbeh += 8 * time_step;
ent_animate(my, "close", anmbeh, NULL);
anim_percentage = cycle(anim_percentage, 0, 100);
Oeffnungs_abfrage = 1;
wait(1);
}
*mode = 0;
// Oeffnungs_abfrage = 0;
}
function highlight_event()
{
if (event_type == EVENT_TOUCH) // der Behälter wurde mit der Maus berührt?
{
my.ambient = 100; // dann lass' ihn heller aussehen
}
else // der Behälter wird nicht mehr berührt
if (event_type == EVENT_RELEASE) // wurde die Maus von ihm wegbewegt?
{
my.ambient = 0; // dann stelle seinen Anfangs-Ambient-Wert wieder her (null)
}
}
MATERIAL* Bauerntuer_mat =
{
// section: Diffuse:
// entry: Red
diffuse_red = 255;
// entry: Green
diffuse_green = 255;
// entry: Blue
diffuse_blue = 255;
// section: Ambient:
// entry: Red
ambient_red = 50.0; //org. je 16.0
// entry: Green
ambient_green = 50.0;
// entry: Blue
ambient_blue = 50.0;
// // section: Sun:
// // entry: Red
// specular_red = 64.0;
// // entry: Green
// specular_green = 64.0;
// // entry: Blue
// specular_blue = 64.0;
// section: Static Lighting:
// entry: Red
emissive_red = 255.0;
// entry: Green
emissive_green = 255.0;
// entry: Blue
emissive_blue = 255.0;
//
flags = tangent | ENABLE_RENDER;
effect = "NM_Shader.fx";
}
action modeltuer() // diese Aktion ist beiden Z. zugewiesen
{
my.material=Bauerntuer_mat;
var *anm_mode = sys_malloc(sizeof(var));
*anm_mode = 0;
// mache das Modell Mausempfindlich
my.emask = ENABLE_TOUCH | ENABLE_RELEASE;
// starte d. Function highlight_event wenn das Modell berührt oder losgelassen wird
my.event = highlight_event;
while(1)
{
if((key_o) && (*anm_mode == 0) && (my.ambient > 50))
{
anmbeh(my, anm_mode, 0); //0 = type (siehe oben)
snd_play (sound_oeffnen,100,0);
set (my,PASSABLE);
}
if((key_p) && (*anm_mode == 0) && (my.ambient > 50))
{
anmbeh(my, anm_mode, 1); //1 = type (siehe oben)
snd_play (sound_oeffnen,100,0);
}
Oeffnungs_abfrage = 0;
wait(1);
}
set (my,POLYGON);
}