Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Ok, ich muss mich in nen Quellcode von jemand reinlesen, allerdings ist er dürftig, Beziehungsweise gar nicht kommenentiert und von programmieren hab ich nicht gaz so die Ahnung...

Also folgendes die eine Komponente hat follgenden Quellcode:

#include <cray.h>

void IN_Init (void)

{

}

void IN_Shutdown (void)

{

}

void IN_Commands (void)

{

}

void IN_Move (usercmd_t *cmd)

{

}

nun meine Frage... bewirkt das überhaupt was? ich meine ist doch alles leer oder nicht?

Geschrieben

richtig ! das bewirkt gar nichts !

was mich wundert ist, dass er das compiliert....

Leere Funktionen sollten m.E. nach so aussehen:

void foo()

{

; // !!!!!!!!!!!!!

}

Was das Pogramm sonst so macht können wir Dir nur sagen, wenn mehr Infos herausgibst ! Um was gehts eigentlich ????:confused:

Geschrieben

im grunde ist es übungsprogramm glaub ich... soll wohl gesamt ein labrynth durch das man gehen kann... es besteht aus recht vielen komponenten und ich soll mal sehen wie man es vereinfachen kann... also denke ich mal da hat man sich ne nette aufgabe überlegt wie ich C besser lerne

Geschrieben

die ist ziemlich lang... und definiert ein paar sachen und schließt einige viele weitere header dateien ein:

hier mal ein kleiner auszug aus der cray.h

#include "zone.h"

#include "mathlib.h"

typedef struct

{

vec3_t origin;

vec3_t angles;

int index;

int frame;

int color;

int ground;

int shine;

} entity_state_t;

Geschrieben

Für mich sieht das nach 3D-Daten aus.

#include "zone.h" // wäre auch noch evtl. aufschlußreich einzusehen

#include "mathlib.h"

typedef struct

{

vec3_t origin; // Orginal Vektoren (x,y,z) in Grad oder Rad deshalb Vec3 _t könnte temporär bedeuten, dann kämen die woanders her

vec3_t angles; // Die Rotationswinkel in Grad vermutlich

int index; // Keine Ahnung

int frame; // Ein Frame-Counter, damit man sieht, an welcher Stelle die Animation sich gerade befindet.

int color; // Farbe (könnte auch Textur beinhalten) fürs Objekt, Fläche oder die Umgebung

int ground; // Untergrund Farbe oder Textur

int shine; // Vielleicht ein Schalter für Reflektionen?

} entity_state_t; // aktueller Stand

Es wäre möglich, daß es sich hier sogar nur um eine einzelne Vertice (=Dreiecksfläche) handelt und da sich Objekte wiederum woanders befinden, müßte also diese Struct in einem Array drin sein. Vec ist meistens die Abkürzung für Vector, 3 für 3 Koordinaten. Könnte allerdings auch ein Vector aus 3D-Koordinaten sein, jedoch dann ist eine einzelne Farbe etwas dürftig.

Das sollst Du dann wohl selber ausfüllen:

void IN_Init (void) // Hier müssen Startpositionen, tempöräre Daten, etc. initialisiert werden

{

}

void IN_Shutdown (void) // Abschluß sollte reservierten Speicher freigeben

{

}

void IN_Commands (void) // Hier sollte man bestimmte Befehle abarbeiten (z.B. "Kamera bewegen", "Sichtwinkel umschalten", "Textur wechseln", etc.)

{

}

void IN_Move (usercmd_t *cmd) // Zeiger auf eine Bewegungsstruktur für Pfadanimationen o.ä.

{

}

Es scheint mir, daß es sich hierbei um eine 3D-Engine handeln soll. Doch mit dem bissel hier kann man da immer noch nicht genaue Rückschlüsse ziehen. Es fehlt noch viel zu viel. Import von Objekt/Umgebungs/Texturdaten/Animationdaten, Rotationen, Animationen, Berechnung allgemein, Ausgabe (OpenGL, DX, Software-Renderer...) Matrizenfunktionen (sind praktisch immer notwendig bei aktuellen 3D-Renderern), und und und.

Sollte es sich tatsächlich um sowas handeln, empfehle ich Dir mal z.B. einsicht in den Quake-Sourcecode zu nehmen (frei downloadbar auf IDs Homepage). Dann weißt Du, was da noch alles auf einen zukommen würde. Sowas ist selbst für Vollprofis eine echte Herausforderung, die nicht jeder bewältigt bekommt.

Es müssen also noch weitaus mehr Strukturen, Funktionen, Klassen, usw. vorhanden sein, sonst kann man damit nichts anfangen. Solltest Du mit Vektorrechnung und Matrizen nicht so bewandelt sein, sieht es sehr schlecht für Dich aus, hier irgendwas Brauchbares draus zu machen.

Geschrieben

Das sind scheinbar plattform-abhängige Funktionen, die (noch) nicht implementiert worden sind (oder deren Funktionalitäten an einer anderen Stelle implementiert sind).

@Crush: das -ist- der Q source ;)

Geschrieben

Das erklärt vieles. Vielleicht ist mir wegen der Gemeinsamkeiten auch deshalb der Quake-Source eingefallen. Die Commands sind dann bestimmt die Shell-Eingaben. Ich finde den jedoch extrem unübersichtlich und alles andere als schön um sowas zu lernen. Da gibt´s wesentlich bessere Beispiele. Ist schon böse und gemein einen Azubi an ´nen Q-Src ranzuhängen. Wetten, daß von den Leuten dort selber keiner durchblickt!

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...