Du bist nicht angemeldet.

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

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

1

03.11.2004, 16:08

objektmanager

ich bin gerade dabei mir einen objektmanager zu schreiben. wie würdet ihr solch einen aufbauen? wollte eigebtlich einen "ganz normalen" schreiben, mit nachrichtensystem usw.
was haltet ihr von flexiblen, dynamischen varianten mit rtti, sodass man den typ eines objekts zur kompilierzeit nicht kennen muss? dieser angebliche "risiege vorteil" ist für mich nicht ganz erkennbar. wenn ich einen "Normalen" manager mit vererbung verwende und alle meine objekte von einer basisklasse ableite, kenne ich meine objekt-typen zur kompilierzeit des managers (bibliothek) ja auch nicht. wäre sehr dankbar für ein beispiel, bei welchem einem die variante mit rtti einen einen vorteil bringt.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

2

03.11.2004, 23:07

Du hast einen Szenegrafen mit einer menge Blätter, "Verzweigungen", Transform-Knoten, Anim-Transform-Knoten etc. Du willst jetzt z.B. allen Anim-Transform-Knoten das gerade 12 Uhr geworden ist und sie bitte die trafo so einstellen sollen, dass alle Uhrzeiger nach oben stehen. Dazu gehst Du den Grafen durch, schaust bei jedem Element, ob es ein Anim-Transform-Knoten ist und wenn ja, sagst Du Ihm die Uhrzeit.

Oder überhaupt die Unterscheidung in Blätter und Verzweigungen wird sehr häufig abgefragt. Hier z.B. eine typische rekusive Funktion zum Speichern der Szene in das tri Format (und praktisch gleich auch bei anderen Formaten):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static void save_entities ( ssgEntity *e )
{
  if ( e -> isAKindOf ( ssgTypeBranch() ) )
  {
    ssgBranch *br = (ssgBranch *) e ;

    for ( int i = 0 ; i < br -> getNumKids () ; i++ )
      save_entities ( br -> getKid ( i ) ) ;
  }
  else
  if ( e -> isAKindOf ( ssgTypeVtxTable() ) )
  {
    ssgVtxTable *vt = (ssgVtxTable *) e ;
    save_vtx_table ( vt ) ;
  }
}


getKid gibt es nur bei branches - also muss erst mit isAKindOf nachgefragt werden. In dem Programm wurde übrigens das RTTI System händisch programmiert.
"Games are algorithmic entertainment."