VECTOR temp_vec;
vec_set(temp_vec, mouse_dir3d);
vec_normalize(temp_vec, 90000000);
vec_add(temp_vec, camera.x); // Vektor für den Trace vorbereitet
BMAP* temp_bmap = bmap_for_entity(me,0); // Die Bitmap geladen
var alphawert;
COLOR farbe;
var format = bmap_lock(temp_bmap, 0); // Bitmap gelockt und Format gespeichert
var pixel;
my.push = 99999; //Push erhöht, damit nur diese Enitity vom Trace getroffen werden kann
wait(1); // einen Frame warten, das c_trace in event_funktionen sonst nicht funktioniert
while(mouse_ent == me) // solange die maus über dem Sprite ist
{
if (c_trace(camera.x, temp_vec, (IGNORE_PUSH | SCAN_TEXTURE | USE_POLYGON)) > 0) // falls der trace von der camera durch den mousezeiger etwas trifft
{
if(hit.entity == me) // falls das sprite selbst getroffen wurde
{
pixel = pixel_for_bmap(temp_bmap, hit.u1, hit.v1); // pixel an trefferstelle auslesen (geht nicht)
pixel_to_vec(farbe, alphawert, format, pixel); // pixelwerte speichern
debug1 = hit.u1; // bleibt immer 0
debug2++; // wird korrekt hochgezählt, solange der mauszeiger über dem sprite ist
}
vec_set(temp_vec, mouse_dir3d);
vec_normalize(temp_vec, 90000000);
vec_add(temp_vec, camera.x); // trace-vektor neu berechnet, da sich die mausposition über dem sprite ja ändert
}
wait(1);
}
bmap_unlock(temp_bmap); // Bitmap wieder freigegeben
debug1 = -2; // wird korrekt zurückgesetzt, wenn die maus das sprite verlässt!
my.push = 1; // push wieder reduzieren