public class Knoten extends Raum implements Listung
Ein Knoten ist eine Sammlung vielen Raum-Objekten, die hierdurch einheitlich bewegt, und einheitlich behandelt werden koennen.
farbzyklus, position, roh
Constructor and Description |
---|
Knoten()
Konstruktor für Objekte der Klasse Knoten
|
Modifier and Type | Method and Description |
---|---|
void |
add(Raum... m)
Kombinationsmethode.
|
void |
add(Raum m)
Fuegt ein Raum-Objekt diesem Knoten hinzu.
|
Raum[] |
alleElemente()
Gibt alle Elemente des Knotens in Form eines
Raum -Objekt-Arays aus. |
boolean |
besitzt(Raum m)
Prueft, ob ein bestimmtes Raum-Objekt in diesem Knoten gelagert ist.
|
boolean |
bewegen(Vektor v)
Bewegt jedes angelegte Objekt für sich allein (Physik-Modus)!
|
BoundingRechteck |
dimension()
Die dimension()-Methode.
|
void |
entfernen(Raum m)
Entfernt ein Raum-Objekt von diesem Knoten.
|
void |
entfernenOhnePhysikAbmelden(Raum m)
Entfernt ein Raum-Objekt von diesem Knoten, ohne seine Physik zu beeinflussen.
|
Collider |
erzeugeCollider()
Erzeugt einen neuen Collider für dieses Objekt.
|
BoundingRechteck[] |
flaechen()
Berechnet exakter alle Rechteckigen Flaechen, auf denen dieses Objekt liegt.
|
void |
leeren()
Entfernt alle Raum-Objekte von diesem Knoten, die an diesem Knoten gelagert sind.
|
void |
leerenOhnePhysikAbmelden()
Loescht alle Raum-Objekte, die an diesem Knoten gelagert sind, ohne sie jedoch von ihrer Physik her zu beeinflussen.
|
void |
verschieben(Vektor v)
Verschiebt diesen Knoten.
|
void |
zeichnen(java.awt.Graphics2D g,
BoundingRechteck r)
Zeichnet den Knoten.
|
afterRender, aktivMachen, aktuellerCollider, beeinflussbarSetzen, beforeRender, beinhaltet, bewegen, boundsUebernehmen, colliderSetzen, compareTo, drehenAbsolut, drehenRelativ, einfluesseZuruecksetzen, erzeugeLazyCollider, fallReagierbarAnmelden, geschwindigkeitHinzunehmen, geschwindigkeitSetzen, getForce, getMasse, gibDrehung, halbesAlpha, heavyComputingSetzen, hoehenUnterschied, impulsHinzunehmen, inFlaeche, istBeeinflussbar, kraftAnwenden, kraftSetzen, kritischeTiefeSetzen, leuchterAbmelden, leuchterAnmelden, loeschen, luftwiderstandskoeffizient, luftwiderstandskoeffizientSetzen, masseSetzen, mittelPunkt, mittelpunktSetzen, mittelpunktSetzen, neutralMachen, newtonschMachen, passivMachen, position, positionSetzen, positionSetzen, positionX, positionY, problem, schneidet, schwerkraftAktivSetzen, schwerkraftSetzen, setzeMeterProPixel, sichtbar, sichtbarSetzen, sprung, stehReagierbarAnmelden, steht, stehtAuf, verschieben, zeichnenBasic, zentrum, zIndex, zuFarbeKonvertieren
public void leeren()
Entfernt alle Raum-Objekte von diesem Knoten, die an diesem Knoten gelagert sind.
ACHTUNG
Sollte Physik benutzt werden:
Diese Methode macht alle abgemeldeten Raum
-Objekt fuer die Physik neutral!!!
Sollte dies NICHT gewuenscht sein, gibt es hierfuer die Methode leerenOhnePhysikAbmelden()
.
leerenOhnePhysikAbmelden()
public void leerenOhnePhysikAbmelden()
Loescht alle Raum-Objekte, die an diesem Knoten gelagert sind, ohne sie jedoch von ihrer Physik her zu beeinflussen.
public void entfernen(Raum m)
Entfernt ein Raum-Objekt von diesem Knoten.
War es mehrfach angesteckt, so werden alle Verbindungen geloescht, war es niemals angemeldet, so passiert gar nichts.
Achtung!!
Sollte Physik benutzt werden:
Diese Methode macht alle abgemeldeten Raum
-Objekt fuer die Physik neutral!!!
Sollte dies NICHT gewuenscht sein, gibt es hierfuer die Methode entfernenOhnePhysikAbmelden()
.
m
- Das von diesem Knoten zu entfernende Raum-ObjektentfernenOhnePhysikAbmelden(Raum)
public void entfernenOhnePhysikAbmelden(Raum m)
Entfernt ein Raum-Objekt von diesem Knoten, ohne seine Physik zu beeinflussen.
War es mehrfach angesteckt, so werden alle Verbindungen geloescht, war es niemals angemeldet, so passiert gar nichts.
m
- Das von diesem Knoten zu entfernende Raum-Objektpublic boolean besitzt(Raum m)
Prueft, ob ein bestimmtes Raum-Objekt in diesem Knoten gelagert ist.
ACHTUNG
Diese Methode prueft nicht eventuelle Unterknoten, ob diese vielleiht das Raum-Objekt beinhalten, sondern nur den eigenen Inhalt!
m
- Das Raum-Objekt, das auf Vorkommen in diesem Knoten ueberprueft werden solltrue
, wenn das Raum-Objekt ein- oder auch mehrmals an diesem Knoten liegtpublic void add(Raum... m)
Kombinationsmethode. Hiermit kann man so viele Raum-Objekte gleichzeitig an den Knoten anmelden, wie man will.
Beispiel:
//Der Knoten, um alle Objekte zu sammeln
Knoten knoten = new Knoten();
//Lauter gebastelte Raum-Objekte
Raum r1
Raum r2;
Raum r3;
Raum r4;
Raum r5
Raum r6;
Raum r7;
Raum r8;
Raum r9
Raum r10;
Raum r11;
Raum r12;
//Eine Methode, um alle anzumelden:
knoten.add(r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12);
Das Ergebnis: 11 Zeilen Programmcode gespart.
public void add(Raum m)
Fuegt ein Raum-Objekt diesem Knoten hinzu.
Das zugefuegte Objekt wird ab dann in alle Methoden des Knotens (verschieben(), dimension()
etc.) mit eingebunden.
m
- Das hinzuzufuegende Raum-Objektpublic Raum[] alleElemente()
Gibt alle Elemente des Knotens in Form eines Raum
-Objekt-Arays aus.
Raum
-Objekt-Aray.public boolean bewegen(Vektor v)
Bewegt jedes angelegte Objekt für sich allein (Physik-Modus)!
Das bedeutet, dass das Blockiertwerden eines einzelnen Raum
-Objektes an diesem Knoten nicht automatisch alle anderen Objekte blockiert.
bewegen
in class Raum
v
- Der die Verschiebung beschreibende Vektor.true
, wenn bei allen anderen Objekten die Rueckgabe auch true
ist. Sonst ist die Rueckgabe false
.Raum.bewegen(int, int)
public void verschieben(Vektor v)
Verschiebt diesen Knoten.
Das heisst, dass saemtliche anliegenden Raum-Objekte gleichermassen Verschoben werden.
verschieben
in class Raum
v
- Der Vektor, der die Verschiebung angibt.Vektor
,
Raum.verschieben(int, int)
public void zeichnen(java.awt.Graphics2D g, BoundingRechteck r)
Zeichnet den Knoten.
Das heisst, der Zeichnen-Befehl wird an die Unterobjekte weitergetragen.
Diese Methode ist nur intern von Bedeutung
public BoundingRechteck dimension()
Die dimension()-Methode.
Gibt ein BoundingRechteck
aus, das alle Komponente dieses Knotens bedeckt.
public BoundingRechteck[] flaechen()
Berechnet exakter alle Rechteckigen Flaechen, auf denen dieses Objekt liegt.
Diese Methode wird von komplexeren Gebilden, wie geometrischen oder Listen ueberschrieben.
public Collider erzeugeCollider()
Erzeugt einen neuen Collider für dieses Objekt. Diese Methode approximiert für das Objekt der jeweils implementierenden Raum
-Klasse einen möglichst “guten” Collider; also einen solchen, der das tatsächliche Objekt möglichst genau umfängt, aber auch möglichst wenig Rechenarbeit beansprucht.
Raum
-Objekte, die an diesem Knoten angehängt sind.erzeugeCollider
in class Raum
Raum.colliderSetzen(Collider)