public abstract class Raum extends java.lang.Object implements java.io.Serializable, java.lang.Comparable<Raum>
Modifier and Type | Field and Description |
---|---|
static java.awt.Color[] |
farbzyklus
Ein einfacher Farbzyklus, der fuer die Leucht-Animationen genommen wird
|
protected Punkt |
position
Die absolute Position des Raum-Objekts.
|
protected static boolean |
roh
Ob die Kollisionstests Roh oder fein ablaufen sollen.
|
Constructor and Description |
---|
Raum() |
Modifier and Type | Method and Description |
---|---|
void |
afterRender(java.awt.Graphics2D g,
BoundingRechteck r)
Dreht die Zeichenfläche wieder zurück in den Ausgangszustand.
|
void |
aktivMachen()
Macht dieses Objekt zu einem Aktiv-Objekt.
Ab dem Aufruf dieser Methode laesst es sich von Passiv-Objekten aufhalten und wird - solange dies nicht ueber den Methodenaufruf schwerkraftAktivSetzen(false) deaktiviert wird - von einer kuenstlichen
Schwerkraft angezogen. |
Collider |
aktuellerCollider()
Gibt den aktuellen Collider dieses
Raum -Objekts zurück. |
void |
beeinflussbarSetzen(boolean beeinflussbar)
Physik-Methode - funktioniert nur bei Newton'schen Raum-Objekten
Setzt, ob dieses
Raum -Objekt beeinflussbar sein soll für Impulse von
anderen Objekten, die mit diesem Kollidieren. |
void |
beforeRender(java.awt.Graphics2D g,
BoundingRechteck r)
Dreht die Zeichenfläche um den Mittelpunkt des Raumes um die gegebenen Grad, bevor mit dem
Zeichenn begonnen wird.
Diese Methode sollte nicht außerhalb der Engine verwendet werden. |
boolean |
beinhaltet(Punkt p)
Prueft, ob ein bestimmter Punkt innerhalb des Raum-Objekts liegt.
|
void |
bewegen(float dX,
float dY)
Bewegt dieses
Raum -Objekt. |
boolean |
bewegen(Vektor v)
Bewegt dieses
Raum -Objekt. |
void |
boundsUebernehmen(Raum boundHilfe)
Übernimmt für die Collision Detection die Bounds eines anderen
Raum -Objektes. |
void |
colliderSetzen(Collider collider)
Setzt einen neuen Collider für dieses
Raum -Objekt. |
int |
compareTo(Raum r)
Hilfsmethode für die Sortierung der Räume nach dem Z-Index.
|
abstract BoundingRechteck |
dimension()
Methode zum Beschreiben der rechteckigen Fläche, die dieses Objekt einnimmt.
Diese Methode wird zentral für die Trefferkollisionen innerhalb der Engine benutzt und gehört zu den wichtigsten Methoden der Klasse und der Engine. |
void |
drehenAbsolut(double grad)
Dreht ein Objekt auf die angegebene Gradzahl um den Mittelpunkt des Raumes.
|
void |
drehenRelativ(double grad)
Dreht ein Objekt um die angegebene Gradzahl um den Mittelpunkt des Raumes.
|
void |
einfluesseZuruecksetzen()
Physik-Methode - funktioniert nur bei Newton'schen Raum-Objekten
Setzt alle Einflüsse auf dieses
Raum -Objekt zurück. |
abstract Collider |
erzeugeCollider()
Erzeugt einen neuen Collider für dieses Objekt.
|
protected Collider |
erzeugeLazyCollider()
Erzeugt einen Collider auf Lazy Art: Es wird das durch die
dimension() -Methode berechnete BoundingRechteck benutzt, um einen
simplen Box-Collider zu erstellen. |
void |
fallReagierbarAnmelden(FallReagierbar f,
int kritischeTiefe)
Meldet einen
FallReagierbar -Listener an. |
BoundingRechteck[] |
flaechen()
Berechnet exakter alle Rechteckigen Flaechen, auf denen dieses Objekt liegt.
Diese Methode wird von komplexeren Gebilden, wie geometrischen oder Listen ueberschrieben. |
void |
geschwindigkeitHinzunehmen(Vektor geschwindigkeit)
Physik-Methode - funktioniert nur bei Newton'schen Raum-Objekten
Addiert hart (also ohne Rücksicht auf das Gewicht des Objekts) eine neue Geschwindigkeit
auf die aktuelle Geschwindigkeit dieses
Raum -Objektes. |
void |
geschwindigkeitSetzen(Vektor geschwindigkeit)
Physik-Methode - funktioniert nur bei Newton'schen Raum-Objekten
Setzt die Geschwindigkeit, die dieses
Raum -Objekt haben soll. |
float |
getBreite()
Gibt die Breite des Objekts zurück.
|
Vektor |
getForce()
Physik-Methode - funktioniert nur bei Newton'schen Raum-Objekten
Gibt aus die Kraft aus, die auf dieses
Raum -Objekt dauerhaft wirkt. |
float |
getHoehe()
Gibt die Höhe des Objekts zurück.
|
float |
getMasse()
Physik-Methode - funktioniert nur bei Newton'schen Raum-Objekten
Gibt aus die Masse dieses
Raum -Objektes aus. |
float |
getOpacity()
Gibt die aktuelle Opacity des Raumes zurück.
|
float |
getX()
Gibt die x-Koordinate der linken oberen Ecke zurück.
|
float |
getY()
Gibt die y-Koordinate der linken oberen Ecke zurück.
|
double |
gibDrehung()
Gibt die aktuelle Drehung des Raumes in Grad zurück.
|
static java.awt.Color |
halbesAlpha(java.awt.Color c)
Erstellt eine Halbdurchsichtige Farbe mit den selben RGB-Werten, wie die eingegebene.
Diese Methode wird intern verwendet. |
static void |
heavyComputingSetzen(boolean heavy)
Setzt, ob sämtliche Kollisionstests in der Engine Alpha grob oder fein sein sollen.
|
int |
hoehenUnterschied(Raum m)
Berechnet den Höhenunterschied zwischen dem Fuß des höheren und dem Kopf des tieferen
Raum-Objekts.
|
void |
impulsHinzunehmen(Vektor impuls)
Physik-Methode - funktioniert nur bei Newton'schen Raum-Objekten
Wirkt einen Impuls auf das
Raum -Objekt aus. |
boolean |
inFlaeche(BoundingRechteck r)
Prüft, ob dieses Raum-Objekt in ener bestimmten festen Fläche ist.
|
boolean |
istBeeinflussbar()
Physik-Methode - funktioniert nur bei Newton'schen Raum-Objekten
Gibt aus, ob dieses
Raum -Objekt beeinflussbar, also durch Impulse beweglich ist. |
void |
konstanteKraftSetzen(Vektor kraft)
Physik-Methode - funktioniert nur bei Newton'schen Raum-Objekten
Setzt die Kraft, die auf dieses
Raum -Objekt dauerhaft wirken soll. |
void |
kraftAnwenden(Vektor kraft,
float t_kraftuebertrag)
Physik-Methode - funktioniert nur bei Newton'schen Raum-Objekten
Setzt einen neuen Impuls auf dieses
Raum -Objekt, indem eine bestimmte
Kraft für eine bestimmte Zeit auf dieses Objekt wirkt. |
void |
kritischeTiefeSetzen(int tiefe)
Setzt die kritische Tiefe neu.
|
protected void |
leuchterAbmelden(Leuchtend l)
Meldet ein Leuchtend-Objekt am vorgesehenen LeuchtMacher-Objekt ab.
Prinzipiell sollte diese Methode nur innerhalb der Engine aufgerufen werden |
protected void |
leuchterAnmelden(Leuchtend l)
Meldet ein Leuchtend-Objekt an dem vorgesehenen LeuchtErsteller Objekt an.
Diese Methode ist dafür vorgesehen, dass sie nur im Konstruktor der dieses Interface implementierenden Instanz aufgerufen wird, und zwar mit dem this -Pointer,
sprich:: super.leuchterAnmelden(this);
Prinzipiell sollte diese Methode nur innerhalb der Engine aufgerufen werden |
void |
loeschen()
Diese Methode loescht alle eventuell vorhandenen Referenzen innerhalb der Engine auf dieses
Objekt, damit es problemlos geloescht werden kann.
Achtung: zwar werden hierdurch alle Referenzen geloescht, die nur innerhalb der Engine liegen (dies betrifft vor allem Animationen etc), jedoch nicht die innerhalb eines Knoten -Objektes!!!!!!!!!Das heisst, wenn das Objekt an einem Knoten liegt (was immer der Fall ist, wenn es auch gezeichnet wird (siehe die Wurzel des Fensters)), muss es trotzdem selbst geloescht werden, dies erledigt diese Methode nicht!!. |
float |
luftwiderstandskoeffizient()
Physik-Methode - funktioniert nur bei Newton'schen Raum-Objekten
Gibt den Luftwiderstandskoeffizienten dieses
Raum-Objektes aus. |
void |
luftwiderstandskoeffizientSetzen(float luftwiderstandskoeffizient)
Physik-Methode - funktioniert nur bei Newton'schen Raum-Objekten
Setzt den Luftwiderstandskoeffizienten für dieses
Raum -Objekt. |
void |
masseSetzen(float masse)
Physik-Methode - funktioniert nur bei Newton'schen Raum-Objekten
Setzt die Masse für dieses
Raum -Objekt. |
Punkt |
mittelPunkt()
Methode zum schnellen Herausfinden des Mittelpunktes des Raum-Objektes.
|
void |
mittelpunktSetzen(int x,
int y)
Verschiebt die Raum-Figur so, dass ihr Mittelpunkt die eingegebenen Koordinaten hat.
|
void |
mittelpunktSetzen(Punkt p)
Verschiebt die Raum-Figur so, dass ihr Mittelpunkt die eingegebenen Koordinaten hat.
Diese Methode Arbeitet nach dem Mittelpunkt des das Objekt abdeckenden BoundingRechtecks durch den Aufruf der Methode zentrum() . |
void |
neutralMachen()
Macht dieses
Raum -Objekt fuer die Physik zu einem Neutralen Objekt, also
einem Objekt das per se nicht an der Physik teilnimmt. |
void |
newtonschMachen()
TODO: Dokumentation
|
void |
passivMachen()
Macht dieses Objekt zu einem Passiv-Objekt.
|
Punkt |
position()
Gibt die Position der linken oberen Ecke zurück.
|
void |
positionSetzen(float x,
float y)
Setzt die Position des Objektes gänzlich neu auf der Zeichenebene.
|
void |
positionSetzen(Punkt p)
Setzt die Position des Objektes gänzlich neu auf der Zeichenebene.
|
int |
positionX()
Einfache Methode, die die X-Koordinate der linken oberen Ecke des das
Raum -Objekt exakt umrandenden BoundingRechteck 's auf der
Zeichenebene zurueckgibt. |
int |
positionY()
Einfache Methode, die die Y-Koordinate der linken oberen Ecke des das
Raum -Objekt exakt umrandenden BoundingRechteck 's auf der
Zeichenebene zurueckgibt. |
protected static boolean |
problem(int z1,
int z2)
Interne Testmethode, die ein mathematisch simples Konzept hat.
Es gibt kein Problem, wenn die Zahlen das selbe Vorzeichen haben oder wenn eine der beiden Zahlen gleich 0 ist. |
boolean |
schneidet(Raum r)
Test, ob ein anderes Raum-Objekt von diesem geschnitten wird.
|
void |
schwerkraftAktivSetzen(boolean aktiv)
Setzt, ob dieses
Raum -Objekt von Schwerkraft beeinflusst wird. |
void |
schwerkraftSetzen(int schwerkraft)
Setzt die Schwerkraft fuer dieses spezielle Objekt.
Achtung: Standardwert: 4 Groesserer Wert = langsamer Fallen Kleinerer Wert = schneller Fallen Negativer Wert : Moege Gott uns allen gnaedig sein... |
void |
setOpacity(float opacity)
Setzt die Opacity des Raumes.
|
void |
setX(float x)
Setzt die x-Koordinate der Position des Objektes gänzlich neu auf der Zeichenebene.
|
void |
setY(float y)
Setzt die y-Koordinate der Position des Objektes gänzlich neu auf der Zeichenebene.
|
void |
setzeMeterProPixel(float mpp)
Setzt die Meter pro Pixel für die Zeichenebene.
|
boolean |
sichtbar()
Gibt an, ob das Raum-Objekt sichtbar ist.
|
void |
sichtbarSetzen(boolean sichtbar)
Setzt die Sichtbarkeit des Objektes.
|
boolean |
sprung(int kraft)
Laesst das
Raum -Objekt einen Sprung von variabler Kraft machen. |
void |
stehReagierbarAnmelden(StehReagierbar s)
Diese Methode meldet einen
StehReagierbar -Listener neu an.Dieser wird nach der Anmeldung immer dann einmalig durch den Aufruf seiner stehReagieren() -Methode informiert, wenn dieses Raum -Objekt nach
dem Fall/Sprung wieder auf einem Passiv-Objekt zu stehen kommt.ACHTUNG! Ein Raum -Objekt kann hoechstens einen
StehReagierbar -Listener besitzen!Diese Methode mach natuerlich nur Sinn, wenn sie an einem Aktiv-Objekt ausgefuehrt wird. |
boolean |
steht()
Prueft, ob dieses Objekt als Aktiv-Objekt steht.
Diese Methode steht nicht in direktem Zusammenhang mit dem Interface StehReagierbar , denn durch diese Methode
laesst sich zu jedem beliebigen Zeitpunkt erfragen, ob das Raum -Objekt steht,
nicht jedoch - wie durch StehReagierbar - am genauen Zeitpunkt des zum Stehen
kommens hierauf reagieren.Diese Methode macht natuerlich nur dann sinn, wenn sie an einem Aktiv-Objekt ausgefuehrt wird. |
boolean |
stehtAuf(Raum m)
Berechnet, ob dieses Raum-Objekt exakt ueber einem zweiten steht.
Dies waere fuer die Engine ein Stehen auf diesem. |
void |
verschieben(float dX,
float dY)
Verschiebt das Objekt.
Hierbei wird nichts anderes gemacht, als verschieben(new
Vektor(dX, dY)) auszufuehren. |
void |
verschieben(Vektor v)
Verschiebt das Objekt ohne Bedingungen auf der Zeichenebene.
|
abstract void |
zeichnen(java.awt.Graphics2D g,
BoundingRechteck r)
Zeichnet das Objekt.
|
void |
zeichnenBasic(java.awt.Graphics2D g,
BoundingRechteck r)
Die Basiszeichenmethode.
Sie schließt eine Fallabfrage zur Sichtbarkeit ein. |
Punkt |
zentrum()
Berechnet das Zentrum des Raum-Objekts als Punkt auf der Zeichenebene.
|
void |
zIndex(int z)
Setzt den Z-Index dieses Raumes.
|
static java.awt.Color |
zuFarbeKonvertieren(java.lang.String t)
Diese Methode ordnet einem String ein Color-Objekt zu.
Hierdurch ist in den Klassen außerhalb der Engine keine awt-Klasse nötig. |
public static final java.awt.Color[] farbzyklus
protected static boolean roh
protected Punkt position
public static void heavyComputingSetzen(boolean heavy)
heavy
- Ist dieser Wert true
, werden intern Kollisionstests genauer, aber
rechenintensiver. Ist er false
, werden diese Kollisionstests schneller, aber
ungenauer.Game.rechenintensiveArbeitSetzen(boolean)
public static java.awt.Color zuFarbeKonvertieren(java.lang.String t)
t
- Der Name der Farbe.public static final java.awt.Color halbesAlpha(java.awt.Color c)
c
- Die Farbe, deren im Alphawert gesenkte Instanz erstellt werden soll.protected static boolean problem(int z1, int z2)
true
, falls diese Zahlenkonstellation ein Problem ist, sonst
false
.public void zIndex(int z)
z
- zu setzender Indexpublic void neutralMachen()
Raum
-Objekt fuer die Physik zu einem Neutralen Objekt, also
einem Objekt das per se nicht an der Physik teilnimmt.public void passivMachen()
public void aktivMachen()
schwerkraftAktivSetzen(false)
deaktiviert wird - von einer kuenstlichen
Schwerkraft angezogen.schwerkraftAktivSetzen(boolean)
public void newtonschMachen()
public boolean sprung(int kraft)
Raum
-Objekt einen Sprung von variabler Kraft machen. Dies
funktioniert jedoch nur dann, wenn das Objekt auch ein Aktiv-Objekt ist. Ansonsten ist
wird hier eine Fehlermeldung ausgegeben.kraft
- Die Kraft dieses Sprunges. Je hoeher dieser Wert, desto hoeher der Sprung.true
, wenn das Raum
-Objekt erfolgreich springen konnte.
false
, wenn das Raum
-Objekt nicht springen konnte.Raum
-Objekt
kein Aktiv-Objekt mit aktivierter Schwerkraft (Standard) ist oder Raum
-Objekt als Aktiv-Objekt nicht auf einem Passiv-Objekt steht.public void schwerkraftAktivSetzen(boolean aktiv)
Raum
-Objekt von Schwerkraft beeinflusst wird. Macht nur dann
Sinn, wenn das Objekt, an dem diese Methode ausgefuehrt wird, ein Aktiv-Objekt ist.aktiv
- true
, wenn Schwerkraft aktiv sein soll, sonst false
.aktivMachen()
public void schwerkraftSetzen(int schwerkraft)
schwerkraft
- Der Wert fuer die Schwerkraft der Physik.aktivMachen()
public void fallReagierbarAnmelden(FallReagierbar f, int kritischeTiefe)
FallReagierbar
-Listener an.
Dieser wird ab sofort immer dann informiert, wenn dieses Raum
-Objekt unter eine
bestimmte Höhe faellt. Diese wird als kritische Tiefe bezeichnet. Der Listener wird ab
diesem Zeitpunkt dauerhaft aufgerufen, solange das Objekt unterhalb dieser Toleranzgrenze
ist. Deshalb sollte in der implementierten Reaktionsmethode des
FallReagierbar
-Interfaces die Höhe so neu gesetzt werden, dass das
Raum
-Objekt nicht mehr unterhalb der kritischen Tiefe ist.
ACHTUNG!
Jedes Raum
-Objekt hat HÖCHSTENS einen FallReagierbar
-Listener.
Das bedeutet, dass es nicht möglich ist, dass mehrere FallReagierbar
-Listener
über ein Objekt informiert werden.
Die kritische Tiefe jedoch lässt sich problemlos immer wieder neu setzen, über die
Methode kritischeTiefeSetzen(int tiefe)
.
Diese Methode mach natürlich nur Sinn, wenn sie an einem Aktiv-Objekt ausgeführt wird.
Andernfalls gibt es eine Fehlermeldung!f
- Das anzumeldende FallReagierbar
kritischeTiefe
- Die Tiefe ab der der Listener dauerhaft durch den Aufruf seiner Reaktionsmethode
informiert wird, solange das Raum
-Objekt hierunter ist.FallReagierbar
,
kritischeTiefeSetzen(int)
public void kritischeTiefeSetzen(int tiefe)
FallReagierbar
-Listener
dieses Raum
-Objektes aufgerufen - dauerhaft so lange, bis das
Raum
-Objekt nicht mehr unterhalb dieser Tiefe ist.tiefe
- Die neue kritische Tiefe. Die Tiefe ab der der Listener dauerhaft durch den Aufruf
seiner Reaktionsmethode informiert wird, solange das Raum
-Objekt hierunter
ist.FallReagierbar
,
fallReagierbarAnmelden(FallReagierbar, int)
public void stehReagierbarAnmelden(StehReagierbar s)
StehReagierbar
-Listener neu an.stehReagieren()
-Methode informiert, wenn dieses Raum
-Objekt nach
dem Fall/Sprung wieder auf einem Passiv-Objekt zu stehen kommt.Raum
-Objekt kann hoechstens einen
StehReagierbar
-Listener besitzen!s
- Der StehReagierbar
-Listener, der ab sofort bei jedem neuen zum Stehen kommen
dieses Raum
-Objekts informiert wird.StehReagierbar
public boolean steht()
StehReagierbar
, denn durch diese Methode
laesst sich zu jedem beliebigen Zeitpunkt erfragen, ob das Raum
-Objekt steht,
nicht jedoch - wie durch StehReagierbar
- am genauen Zeitpunkt des zum Stehen
kommens hierauf reagieren.true
, wenn dieses Raum
-Objekt als Aktiv-Objekt auf
einem Passiv-Objekt steht. Steht dieses Raum
-Objekt als Aktiv-Objekt
nicht auf einem Passiv-Objekt, oder ist dieses Raum
-Objekt kein
Aktiv-Objekt, so ist die Rueckgabe false
.public boolean bewegen(Vektor v)
Raum
-Objekt. Der Unterschied zum Verschieben ist
folgender:verschieben
.v
- Die Bewegung beschreibender Vektortrue
, wenn sich dieses Raum
-Objekt ohne Probleme bewegen
liess. Konnte es wegen der Physik (Aktiv-Objekt von Passiv-Objekt geblockt) nicht
vollstaendig verschoben werden, so wird false
zurueckgegeben.true
, da diese
Problemlos verschoben werden können.bewegen(float, float)
,
verschieben(Vektor)
,
verschieben(float, float)
public void bewegen(float dX, float dY)
Raum
-Objekt. Der Unterschied zum Verschieben ist
folgender:verschieben
.dX
- Der X-Anteil der Verschiebung (Delta-X)dY
- Der Y-Anteil der Verschiebung (Delta-Y)bewegen(Vektor)
,
verschieben(Vektor)
,
verschieben(float, float)
public void setzeMeterProPixel(float mpp)
mpp
- Die Anzahl an Metern, die auf einen Pixel fallen.10(.0f)
=> Auf einen Pixel fallen 10 Meter. => Ein Meter = 0,1
Pixel0.1f
=> Auf einen Pixel fallen 0,1 Meter. => Ein Meter =
10 PixelnewtonschMachen()
public void impulsHinzunehmen(Vektor impuls)
Raum
-Objekt aus. Dieser ändert - abhängig von seiner
Richtung, Intensität sowie von der Mass des Raum-Objekts eine
Geschwindigkeitsänderung.impuls
- Der Impuls, der diesem Raum
-Objekt zugeführt werden soll.masseSetzen(float)
,
konstanteKraftSetzen(Vektor)
,
setzeMeterProPixel(float)
,
newtonschMachen()
public void geschwindigkeitHinzunehmen(Vektor geschwindigkeit)
Raum
-Objektes. Die neue Geschwidiggeschwindigkeit
- die Geschwindigkeit, die zu der aktuellen Geschwindigkeit von diesem Raum
-Objekt.
hinzuaddiert werden soll. Die neue Geschwindigkeit ist damit v1 + v2
. masseSetzen(float)
,
konstanteKraftSetzen(Vektor)
,
setzeMeterProPixel(float)
,
luftwiderstandskoeffizientSetzen(float)
,
newtonschMachen()
public float luftwiderstandskoeffizient()
Raum-Objektes
aus.public boolean istBeeinflussbar()
Raum
-Objekt beeinflussbar, also durch Impulse beweglich ist.
Was das heisst, kannst Du in der Setter-Methode nachlesen.true
, falls dieses Raum
-Objekt beeinflussbar ist, sonst
false
.beeinflussbarSetzen(boolean)
,
newtonschMachen()
public float getMasse()
Raum
-Objektes aus. Diese ist relevant
Impulsrechnungen, z.B. wenn 2 Objekte kollidieren.Raum
-Objektes in korrekter Einheit. WICHTIG: Die
Einheiten für physikalische Größen innerhalb der Engine entsprechen denen aus der klassischen
Mechanik. Die Einheit für Masse ist [kg]masseSetzen(float)
,
newtonschMachen()
public Vektor getForce()
Raum
-Objekt dauerhaft wirkt. So lässt
sich z.B. eine dynamische Schwerkraft realisieren.Raum
-Objektes konstant wirkt. WICHTIG:
Die Einheiten für physikalische Größen innerhalb der Engine entsprechen denen aus der
klassischen Mechanik. Die Einheit für Kraft ist [N] = [kg * (m / s^2)]beeinflussbarSetzen(boolean)
,
newtonschMachen()
public void luftwiderstandskoeffizientSetzen(float luftwiderstandskoeffizient)
Raum
-Objekt. Je größer dieser
Wert ist, desto stärker ist der Luftwiderstand auf das Raum-Objekt
. (F_w = luftwiderstandskoeffizient * v^2)
luftwiderstandskoeffizient
- Der Luftwiderstandskoeffizient, der für dieses Raum
-Objekt gelten soll. Ist
dieser Wert 0
, so wirkt kein Luftwiderstand auf das Objekt.luftwiderstandskoeffizient()
,
newtonschMachen()
public void beeinflussbarSetzen(boolean beeinflussbar)
Raum
-Objekt beeinflussbar sein soll für Impulse von
anderen Objekten, die mit diesem Kollidieren. Ist es nicht beeinflussbar, so prallen
(beeinflussbare) Objekte einfach an ihm ab. Typische unbeeinflussbare Objekte sind:Raum
-Objekt beeinflussbar, so kann es an anderen Objekten
abprallen bzw. von ihnen blockiert werden. Es kann sie nicht verschieben. Typische
beeinflussbare Objekte sind: beeinflussbar
- ist dieser Wert true
, so ist dieses Objekt ab sofort beeinflussbar.
Sonst ist es ab sofort nicht beeinflussbar.istBeeinflussbar()
,
newtonschMachen()
public void masseSetzen(float masse)
Raum
-Objekt. Es hat ab sofort diese Masse. Diese hat
Auswirkungen auf Impulsrechnung und die Dynamik dieses Objekts..masse
- die Mass, die dieses Raum
-Objekt ab sofort haben soll. WICHTIG: Die
Einheiten für physikalische Größen innerhalb der Engine entsprechen denen aus der
klassischen Mechanik. Die Einheit für Masse ist [kg]getMasse()
,
newtonschMachen()
public void konstanteKraftSetzen(Vektor kraft)
Raum
-Objekt dauerhaft wirken soll. So lässt sich
z.B. eine dynamische Schwerkraft realisieren: Kreis ball = ...
[...]
ball.kraftSetzen(new Vektor(0,9.81)); // Setze eine Schwerkraft mit 9,81 kg * m/s^2
kraft
- die Kraft, die auf dieses Raum
-Objekt konstant wirken soll. WICHTIG:
Die Einheiten für physikalische Größen innerhalb der Engine entsprechen denen aus der
klassischen Mechanik. Die Einheit für Kraft ist [N] = [kg * (m / s^2)]getForce()
,
newtonschMachen()
public void geschwindigkeitSetzen(Vektor geschwindigkeit)
Raum
-Objekt haben soll.geschwindigkeit
- die Geschwindikeit, die auf dieses Raum
-Objekt mit sofortiger Wirkung annehmen
soll. WICHTIG: Die Einheiten für physikalische Größen innerhalb der Engine
entsprechen denen aus der klassischen Mechanik. Die Einheit für Geschwindigkeit ist [m /
s]newtonschMachen()
public void einfluesseZuruecksetzen()
Raum
-Objekt zurück. Dies bedeutet: * die auf
dieses Objekt einwirkende, konstante Kraft wird 0. * die Geschwindigkeit dieses Objekts wird
0.newtonschMachen()
public void kraftAnwenden(Vektor kraft, float t_kraftuebertrag)
Raum
-Objekt, indem eine bestimmte
Kraft für eine bestimmte Zeit auf dieses Objekt wirkt.
Es gilt für ausreichend kleines t
: p = F * t
Dies ist die grundlegende Berechnung für den Impuls.kraft
- Eine Kraft, die (modellhaft) auf dieses Raum
-Objekt wirken soll.
WICHTIG: Die Einheiten für physikalische Größen innerhalb der Engine entsprechen
denen aus der klassischen Mechanik. Die Einheit für Kraft ist [N] = [kg * (m /
s^2)]
t_kraftuebertrag
- Die Zeit, über die die obige Kraft auf dieses Raum
-Objekt wirken soll.
WICHTIG: Die Einheiten für physikalische Größen innerhalb der Engine entsprechen
denen aus der klassischen Mechanik. Die Einheit für Zeit ist [s]newtonschMachen()
public final void sichtbarSetzen(boolean sichtbar)
sichtbar
- Ob das Objekt sichtbar sein soll oder nicht.false
, so
wird es nicht im Fenster gezeichnet.Physik
nicht als Kollision. Unsichtbare Raum-Objekte werden somit
bei Trefferkollisionen ausgelassen.sichtbar()
,
Physik
public final boolean sichtbar()
true
, wenn das Raum-Objekt zur Zeit sichtbar ist.sichtbarSetzen(boolean)
protected final void leuchterAnmelden(Leuchtend l)
this
-Pointer,
sprich:super.leuchterAnmelden(this);
Prinzipiell sollte diese Methode nur innerhalb der Engine aufgerufen werdenl
- Der anzumeldende Leuchterprotected final void leuchterAbmelden(Leuchtend l)
l
- Der abzumeldende Leuchterpublic final void zeichnenBasic(java.awt.Graphics2D g, BoundingRechteck r)
g
- Das zeichnende Graphics-Objektr
- Das BoundingRechteck, dass die Kameraperspektive Repraesentiert.zeichnen(Graphics2D, BoundingRechteck)
public abstract void zeichnen(java.awt.Graphics2D g, BoundingRechteck r)
g
- Das zeichnende Graphics-Objektr
- Das BoundingRechteck, dass die Kameraperspektive Repraesentiert.public void positionSetzen(float x, float y)
mittelpunktSetzen(int x, int y)
.x
- neue x
-Koordinatey
- neue y
-KoordinatepositionSetzen(Punkt)
,
mittelpunktSetzen(int, int)
,
setX(float)
,
setY(float)
public void positionSetzen(Punkt p)
mittelpunktSetzen(int x, int y)
.p
- Der neue ZielpunktpositionSetzen(float, float)
,
mittelpunktSetzen(int, int)
,
setX(float)
,
setY(float)
public abstract BoundingRechteck dimension()
public void verschieben(Vektor v)
v
- Der Vektor, der die Verschiebung des Objekts angibt.Vektor
,
verschieben(float, float)
,
bewegen(Vektor)
,
bewegen(float, float)
public void mittelpunktSetzen(int x, int y)
zentrum()
. Daher ist diese Methode in der Anwendung
auf ein Knoten-Objekt nicht unbedingt sinnvoll.x
- Die x
-Koordinate des neuen Mittelpunktes des Objektesy
- Die y
-Koordinate des neuen Mittelpunktes des ObjektesmittelpunktSetzen(Punkt)
,
verschieben(Vektor)
,
positionSetzen(float, float)
,
zentrum()
public void mittelpunktSetzen(Punkt p)
zentrum()
. Daher ist diese Methode im Anwand auf
ein Knoten-Objekt nicht unbedingt sinnvoll.mittelPunktSetzen(p.x, p.y)
.p
- Der neue Mittelpunkt des Raum-ObjektsmittelpunktSetzen(int, int)
,
verschieben(Vektor)
,
positionSetzen(float, float)
,
zentrum()
public float getX()
x
-KoordinategetY()
,
position()
public Punkt zentrum()
dimension()
berechnet, und zwar über die
Methode des resultierenden BoundingRechtecks:dimension().zentrum()
public float getBreite()
raum.dimension().breite
.dimension()
public void setX(float x)
mittelpunktSetzen(int x, int y)
.x
- neue x
-KoordinatepositionSetzen(float, float)
,
mittelpunktSetzen(int, int)
,
setY(float)
public float getHoehe()
raum.dimension().hoehe
.dimension()
public int positionX()
Raum
-Objekt exakt umrandenden BoundingRechteck
's auf der
Zeichenebene zurueckgibt.public float getY()
y
-KoordinategetX()
,
position()
public int positionY()
Raum
-Objekt exakt umrandenden BoundingRechteck
's auf der
Zeichenebene zurueckgibt.public final boolean schneidet(Raum r)
r
- Das Objekt, das auf Kollision mit diesem getestet werden soll.public void setY(float y)
mittelpunktSetzen(int x, int y)
.y
- neue y
-KoordinatepositionSetzen(float, float)
,
mittelpunktSetzen(int, int)
,
setX(float)
public final Collider aktuellerCollider()
Raum
-Objekts zurück.Raum
-Objekts, der für die Collision
Detection verwendet wird.colliderSetzen(Collider)
,
schneidet(Raum)
public abstract Collider erzeugeCollider()
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.colliderSetzen(Collider)
@NoExternalUse public final void beforeRender(java.awt.Graphics2D g, BoundingRechteck r)
public Punkt mittelPunkt()
dimension()
,
position()
@NoExternalUse public final void afterRender(java.awt.Graphics2D g, BoundingRechteck r)
public final boolean beinhaltet(Punkt p)
p
- Der Punkt, der auf Inhalt im Objekt getestet werden soll.public BoundingRechteck[] flaechen()
dimension()
als Inhalt.Knoten
protected Collider erzeugeLazyCollider()
dimension()
-Methode berechnete BoundingRechteck
benutzt, um einen
simplen Box-Collider zu erstellen.public void verschieben(float dX, float dY)
verschieben(new
Vektor(dX, dY))
auszufuehren. Insofern ist diese Methode dafuer gut, sich nicht mit
der Klasse Vektor auseinandersetzen zu muessen.dX
- Die Verschiebung in Richtung XdY
- Die Verschiebung in Richtung Yverschieben(Vektor)
,
bewegen(Vektor)
,
bewegen(float, float)
public void colliderSetzen(Collider collider)
Raum
-Objekt. Nach Aufruf dieser Methode
ist der standardisierte Collider, der intern automatisch gesetzt wird (jedoch meist
nicht optimal ist), außer Kraft und nur noch der hier übergebene Collider ist für die
Collision Detection relevant.collider
- Der neue Collider, der für die Schnitt-Überprüfung verwendet wird.schneidet(Raum)
,
boundsUebernehmen(Raum)
public void boundsUebernehmen(Raum boundHilfe)
Raum
-Objektes.boundHilfe
- Ein weiteres Raum-Objekt, dessen prinzipiellen Bounds übernommen werden sollen.Raum
-Objektes
vom Ursprung der Zeichenebene aus entspricht dem Offset des Colliders
relativ zu diesem Raum
-Objekt.colliderSetzen(Collider)
public Punkt position()
dimension()
.Punkt
-Objektesdimension()
public boolean stehtAuf(Raum m)
m
- Das Raum-Objekt, fuer das getestet werden soll, ob dieses auf ihm steht,true
, wenn dieses Objekt auf dem eingegeben steht, sonst
false
public int hoehenUnterschied(Raum m)
m
- Das Raum-Objekt, dessen Höhenunterschied zu diesem gefunden werden sollpublic void loeschen()
Knoten
-Objektes!!!!!!!!!public boolean inFlaeche(BoundingRechteck r)
r
- Die kritische Fläche, auf deren schneiden mit diesem Raum-Objekt getestet werden soll.true
, wenn dieses Raum-Objekt sich mit dem BoundingRechteck schneidet,
sonst false
.public double gibDrehung()
public void drehenAbsolut(double grad)
grad
- Grad, auf die gedreht werden soll.public void drehenRelativ(double grad)
grad
- Grad, um die gedreht werden soll.@API public float getOpacity()
@API public void setOpacity(float opacity)
0.0f
entspricht einem komplett durchsichtigen Raum.1.0f
entspricht einem undurchsichtigem Raum.@NoExternalUse public int compareTo(Raum r)
compareTo
in interface java.lang.Comparable<Raum>
zIndex
,
zIndex(int)