engine struktur
-
Hi!
Die Struktur meiner, naja Engine?! Sieht zur Zeit so aus:Objekt: Kümmert sich um die Animationen, also Rotation, Position, Geschwindigkeit, Beschleunigung, etc
Meshobjekt(Erbt von Objekt): Kümmert sich um das Rendern und die Kollisionsabfrage von Objekten, diese Objekte sind:
Terrain
MD2
...
Alle diese Objekt erben von Meshobjekt, also indirekt von ObjektIch lese oft davon, dass man normalerweise alles in einer separaten Klasse World die ganzen Sachen rendert, animiert, etc. Aber wie genau geht das? heißt die Funktion dass einfach:
WELT::Load()
{
Sachen laden
}WELT::Render()
{
Sachen rendern
}[...]
Oder ist dann die verticeslist und auch sonst die ganzen informationen über jedes dreieck in dem "welt" objekt gespeichert?
Ist es sinnvoll die Klasse Objekt das animieren zu überlassen, oder sollte das auch in der klasse meshobject stehen?
Ist ein Partikelsystem ein objekt und ein einziges partikel ein meshobjekt??Naja ich weiß ziemlich viele fragen ...
wär nett wenn ihr sie beantworten könntet!thx im vorraus
stefan
-
Ich lese oft davon, dass man normalerweise alles in einer separaten Klasse World die ganzen Sachen rendert, animiert, etc. Aber wie genau geht das?
So wie du es geschrieben hast Vorteil ist, dass man alles auf einen Blick hat. Meine "Welt" Klasse, heißt CApp, dort wird auch das Fenster erstellt, update, render usw aufgerufen...
Ist es sinnvoll die Klasse Objekt das animieren zu überlassen, oder sollte das auch in der klasse meshobject stehen?
Soll sich *jedes* Objekt (genau gleich) animieren lassen ? Wenn ja : Ab in die Baseclass, sonst ab damit in die abgeleiteten Klassen und dort die erforderten Informationen hinzufügen. Aber pass dann auf dass du keinen Code doppelt schreibt, dann hast du wohl nen Designfehler (meistens )
Ist ein Partikelsystem ein objekt und ein einziges partikel ein meshobjekt??
S.o.
Ein einzelner Partikel muss wohl nur sehr wenig in deiner Welt machen (quasi sich nur der Weltphysik unterwerfen, Collisiondetection evtl nicht unbedingt). Von daher ist zu überlegen ob man nich ne total simple Klasse für einen Partikel erschaffen sollte...Fragen beantwortet ?
-
Soll sich *jedes* Objekt (genau gleich) animieren lassen ?
Achso, hab ich vergessen zu erwähnen: Die "animier" *g* und die render funktionen der meshobjekt und objekt klassen sind "virtual"!
So wie du es geschrieben hast Vorteil ist, dass man alles auf einen Blick hat. Meine "Welt" Klasse, heißt CApp, dort wird auch das Fenster erstellt, update, render usw aufgerufen...
hast du dann in der capp klasse sowas wie CVECTOR3D *m_vertices??
-
Nein, in der CApp hab ich dann ein paar Memberfunktionen : m_particleSystem, m_input o.ä.
Alle Engineklassen haben eine render, update, init und deinit Funktion, die in der gleichnamigen CApp Funktion aufgerufen wird.Vertice o.ä. werden *innerhalb* der Enginefunktionen behandelt, CApp kriegt da nix von mit
-
innerhalb der engine?
speicherst du die vertices dann auch in zB Terrain?
-
Original erstellt von <stefan>:
innerhalb der engine?
speicherst du die vertices dann auch in zB Terrain?Ja, wo denn sonst
-
ich hab mir gedacht man könnte ja die ganzen verictes in der welt klasse speichern
-
Das wäre ein bisschen unpassend.
In jeder Engine Funktion müsstest du dann auf deine globale Weltklasse zugreifen. Die Vertice in der Weltklasse müssten wohl public sein (oder private, mit der engineklasse dann als friend, was aber auf das gleiche hinauslaufen würde).Und da hättest du das erste Problem, wie sollen diese Publicmember aussehen ?
So ?class CWelt { public : //... void render (); //... VERTICE* m_verticeParticle; VERTICE* m_verticeLandscape; VERTICE* m_verticePlayer; VERTICE* m_verticeSky; };
Das ist doch schrecklich, eine Mischung aus C und C++
Außerdem würdest du dann Probleme bekommen wenn du deine Enginefunktionen mal irgendwo anders verwenden möchtest. Du müsstest die Vertice und die Klassenimplementation+deklaration einzelnd "aufsammeln" und kopieren.
Nene, das is nich wirklich gutAlso :
Was zusammengehört in eine Einheit (d.h. .h und .cpp) packen !
-
okay danke, ich machs mit der struktur einfach so weiter wie ichs bis jetzt habe
Danke für die schnellen Antworten!
cu stefan