Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 |
union ObjectFlags { unsigned int RawValue; struct { unsigned int Focusable : 1; unsigned int Collideable : 1; unsigned int Lighted : 1; unsigned int Damageable : 1; unsigned int Lootable : 1; unsigned int Interactable : 1; }; }; |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (24.01.2015, 17:27)
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
union { int i; float f; } test; test.f = 1.0; float f1 = test.f; // OK test.i = 1; // Schreibend, alles gut int i = test.i; // Auch OK float f2 = test.f; // Hier undefiniert |
Community-Fossil
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// besser alles in Klassen kapseln, hier einfach mal so: std::size_t ids = 1; // 0 sehe ich mal als ungültig an template <typename T> std::size_t getId(){ static std::size_t id = ids++; return id; } class EineKlasse{ // ließe sich auch als Basisklasse einsetzten die selbst ein template nutzt um die individuelle ID im Konstruktor zu setzen public: std::size_t getType(){ return getId<EineKlasse>(); } } // zur Prüfung dann (ließe sich auch noch schöner machen, automatischer): if(foo.getType() == getId<ErwartetesObjekt>()){ // ... } |
C-/C++-Quelltext |
|
1 2 3 4 |
int main(int _argc, char** _argv) noexcept { asm volatile("lock cmpxchg8b %eax"); return 0; } // ::main |
Okay gerade noch mal Anfangspost gelesen, ich glaube das ist nicht das was du willst
Kann ein Bot ausgeraubt werden? Geb ihm eine Loot-Komponente. Kann ein Bot dir in den Hintern treten? Geb ihm eine Battler-Komponente.
Eine weitere Möglichkeit wäre es, dass z.B. ausraubbare Bots von einer Klasse "Lootable" erben und du dann mit dynamic_cast arbeitest. Der Nachteil davon ist Mehrfach-Vererbung.
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Glocke« (26.01.2015, 12:01)
Da hast du dann Mist gemessen. Virtuelle Funktionen verursachen von sich aus keine nennenswert messbaren Verluste. Verluste erreichst du durch grottenschlechte Aufteilung der Objekte im Hauptspeicher. Sie werden immer und überall genutzt, von Compilern und Betriebssystemen, über OpenAL Soft, bis rauf zu fast jedem Videospiel und in fast jeder Programmiersprache. Im zuvor verlinkten Buch werden auch Strategien genannt, Cache-Misses stark zu reduzieren.Zitat
die auf virtual methods zurückzuführen waren
C-/C++-Quelltext |
|
1 2 3 4 |
int main(int _argc, char** _argv) noexcept { asm volatile("lock cmpxchg8b %eax"); return 0; } // ::main |
Werbeanzeige