Intro
Guten Abend
Da ich bisher nicht eine einzige halbwegs saubere Lösung für eine Vektor Implementierung im GM gefunden habe hab ich mal so etwas selbst auf die Beine gestellt.
Das Ganze ist allein mit GML gescriptet, nutzt also keine DLL, und erstellt auch keine Instanzen.
Mehr Examples werden folgen. Wer ein Tutorial oder so allgemein zum Thema Vektoren schreiben mag darf das gerne auf Grundlage dieser Extension machen.
Funktionen
Handling
vector_new(x, y);
Erstellt einen Vektor und gibt dessen ID zurück.
vector_get_x(vector);
Gibt den X-Wert eines Vektors aus.
vector_get_y(vector);
Gibt den Y-Wert eines Vektors aus.
vector_set(vector, x, y);
Setzt X und Y Wert eines Vektors.
vector_set_x(vector, x);
Setzt den X-Wert eines Vektors.
vector_set_y(vector, y);
Setzt den Y-Wert eines Vektors.
vector_clone(vector);
Erstellt einen neuen identischen Vektor und gibt dessen ID zurück.
vector_to_string(vector);
Gibt X und Y Werte eines Vektors als String aus. (Debugging)
vector_free(vector);
Gibt einen Vektor frei.
vector_copy(vector1, vector2);
Kopiert den Vektor 2 in Vektor 1.
vector_memory_info();
Gibt die aktuelle Speicherlast der Vektoren an. (Debugging)
vector_import(object, "vector");
Importiert einen Vektor eines anderen Objekts und gibt die ID der lokalen Kopie wieder.
Mathe
vector_length(vector);
Gibt die Länge eines Vektors zurück.
vector_length_sq(vector);
Gibt die quadrierte Länge eines Vektors zurück. (Schneller)
vector_normalize(vector);
Normalisiert einen Vektor.
vector_multiply(vector, i);
Miltipliziert einen Vektor mit einer Zahl.
vector_devide(vector, i);
Teilt einen Vector durch eine Zahl.
vector_add(vector1, vector2);
Addiert Vektor 2 zu Vektor 1.
vector_subtract(vector1, vector2);
Zieht Vektor 2 von Vektor 1 ab.
vector_dot(vector1, vector2);
Gibt das Dot-Produkt zweier Vektoren zurück.
vector_x_add(vector, add);
Fügt dem X Wert eines Vectors eine Zahl hinzu.
vector_y_add(vector, add);
Fügt dem Y Wert eines Vectors eine Zahl hinzu.
vector_direction(vector);
Gibt die Richtung eines Vectors aus.
Download
Version 1.00<br /> Gex & Example<br /> (zip 14 KB)
*.gex an sich: 4,18 KB
(Ein so sauberes Movement mit so wenig Code soll mir erst mal einer zeigen )
Guten Abend
Da ich bisher nicht eine einzige halbwegs saubere Lösung für eine Vektor Implementierung im GM gefunden habe hab ich mal so etwas selbst auf die Beine gestellt.
Das Ganze ist allein mit GML gescriptet, nutzt also keine DLL, und erstellt auch keine Instanzen.
Mehr Examples werden folgen. Wer ein Tutorial oder so allgemein zum Thema Vektoren schreiben mag darf das gerne auf Grundlage dieser Extension machen.
Funktionen
Handling
vector_new(x, y);
Erstellt einen Vektor und gibt dessen ID zurück.
vector_get_x(vector);
Gibt den X-Wert eines Vektors aus.
vector_get_y(vector);
Gibt den Y-Wert eines Vektors aus.
vector_set(vector, x, y);
Setzt X und Y Wert eines Vektors.
vector_set_x(vector, x);
Setzt den X-Wert eines Vektors.
vector_set_y(vector, y);
Setzt den Y-Wert eines Vektors.
vector_clone(vector);
Erstellt einen neuen identischen Vektor und gibt dessen ID zurück.
vector_to_string(vector);
Gibt X und Y Werte eines Vektors als String aus. (Debugging)
vector_free(vector);
Gibt einen Vektor frei.
vector_copy(vector1, vector2);
Kopiert den Vektor 2 in Vektor 1.
vector_memory_info();
Gibt die aktuelle Speicherlast der Vektoren an. (Debugging)
vector_import(object, "vector");
Importiert einen Vektor eines anderen Objekts und gibt die ID der lokalen Kopie wieder.
Mathe
vector_length(vector);
Gibt die Länge eines Vektors zurück.
vector_length_sq(vector);
Gibt die quadrierte Länge eines Vektors zurück. (Schneller)
vector_normalize(vector);
Normalisiert einen Vektor.
vector_multiply(vector, i);
Miltipliziert einen Vektor mit einer Zahl.
vector_devide(vector, i);
Teilt einen Vector durch eine Zahl.
vector_add(vector1, vector2);
Addiert Vektor 2 zu Vektor 1.
vector_subtract(vector1, vector2);
Zieht Vektor 2 von Vektor 1 ab.
vector_dot(vector1, vector2);
Gibt das Dot-Produkt zweier Vektoren zurück.
vector_x_add(vector, add);
Fügt dem X Wert eines Vectors eine Zahl hinzu.
vector_y_add(vector, add);
Fügt dem Y Wert eines Vectors eine Zahl hinzu.
vector_direction(vector);
Gibt die Richtung eines Vectors aus.
Download
Version 1.00<br /> Gex & Example<br /> (zip 14 KB)
*.gex an sich: 4,18 KB
(Ein so sauberes Movement mit so wenig Code soll mir erst mal einer zeigen )
Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von florpp ()