Posted By: Superku
min/max und ein Frame Wartezeit [GER/ ENG] - 05/29/15 16:46
Ich finde es seither sehr unschön, dass man bei Entities, welche per ent_create() dynamisch erstellt werden, 1 Frame zu warten hat, ehe man die min_x/ max_x (nach einem c_setminmax() Aufruf oder (NARROW | FAT))
ändern kann. Insbesondere ist dies bei Projektilen, Raketen und ähnlichen Dingen unschön, was sich besonders bei niedrigen Frameraten bemerkbar macht. Workarounds (wie ein verspätetes Setzen der Bounding Box Dimensionen und 1-Frame lange c_trace Kollision) sind daher gelegentlich notwendig.
Im Handbuch fand ich unter dem Eintrag zu "min_x" folgenden Hinweis, an welchen ich mich noch grob erinnern konnte:
Heißt das aber, dass dieses Verhalten nach 7.84 nicht mehr eintreten sollte, das heißt dass ein Code der Form
die Bounding Box der Rakete ohne ein "wait(1)" tatsächlich manipulieren sollte?
Wenn ja, wo liegt der Fehler (ein Setzen von collision_mode = 2; bewirkt nichts)?
ändern kann. Insbesondere ist dies bei Projektilen, Raketen und ähnlichen Dingen unschön, was sich besonders bei niedrigen Frameraten bemerkbar macht. Workarounds (wie ein verspätetes Setzen der Bounding Box Dimensionen und 1-Frame lange c_trace Kollision) sind daher gelegentlich notwendig.
Im Handbuch fand ich unter dem Eintrag zu "min_x" folgenden Hinweis, an welchen ich mich noch grob erinnern konnte:
Quote:
Bei Versionen unter 7.84, warten Sie einen Frame (wait(1)) nach Erstellen der Entity, ehe Sie die Bounding-Box setzen.
Heißt das aber, dass dieses Verhalten nach 7.84 nicht mehr eintreten sollte, das heißt dass ein Code der Form
Code:
void rocket_init() { //c_setminmax(my); my.eflags |= NARROW | FAT; vec_set(my.min_x,vector(-8,-4,-4)); vec_set(my.max_x,vector(24,4,4)); } void rocket_create() { you = ent_create("rocket.mdl",nullvector,rocket_init); ... }
die Bounding Box der Rakete ohne ein "wait(1)" tatsächlich manipulieren sollte?
Wenn ja, wo liegt der Fehler (ein Setzen von collision_mode = 2; bewirkt nichts)?