LitDev 1.2.24.0 DE
http://litdev.uk/LitDev.De.html Extension API

LD3DView LDArray LDBits LDBlueTooth LDCall
LDChart LDClient LDClipboard LDColours LDCommPort
LDController LDControls LDCursors LDDataBase LDDateTime
LDDebug LDDialogs LDDictionary LDEffect LDEmail
LDEncryption LDEvents LDFastArray LDFastShapes LDFigures
LDFile LDFocus LDftp LDGeography LDGraph
LDGraphicsWindow LDHashTable LDHID LDIcon LDImage
LDInline LDIOWarrior LDList LDLogic LDMath
LDMathX LDMatrix LDMusic LDNetwork LDPhysics
LDProcess LDQueue LDRegex LDResources LDScrollBars
LDSearch LDServer LDSettings LDShapes LDShell
LDSort LDSound LDSpeech LDStatistics LDStopwatch
LDText LDTextWindow LDTimer LDTranslate LDUnits
LDUtilities LDVector LDWaveForm LDWebCam LDWindows
LDxml LDZip

LDPhysics
Physik Erweiterung (verwendet Box2D-Engine).
Hilfe unter LDPhysics.Help.

example physics-samples\*.sb
Physics-GettingStartedGuide.pdf
http://blogs.msdn.microsoft.com/smallbasic/2014/06/07/small-basic-box2d-physics-extension


AddChain AddExplosion AddFixedAnchor
AddFixedShape AddInactiveShape AddMovingAnchor
AddMovingShape AddRope AttachShapes
AttachShapesWithJoint AttachShapesWithRotation BoxShape
BrakeTire ChainColour DetachJoint
DetachShapes DisconnectShape DoTimestep
FollowShapeX FollowShapeY GetAllShapesAt
GetAngle GetCollisions GetContacts
GetInertia GetMass GetPan
GetPosition GetRotation GetShapeAt
GetTireInformation GetTireProperties GetVelocity
GroupShapes Help LoadImagesAsCircles
MaxPolygonVertices MaxProxies MoveTire
PanView PositionIterations RayCast
ReadJson RemoveChain RemoveFrozen
RemoveRope RemoveShape Reset
RopeColour Scaling SetAABB
SetAngle SetBoundaries SetBullet
SetDamping SetForce SetGravity
SetGroup SetImpulse SetJointMotor
SetPosition SetRotation SetShapeGravity
SetTire SetTireProperties SetTorque
SetVelocity TimeStep TimestepControl
ToggleMoving ToggleRotation ToggleSensor
TurnTire UngroupShapes UnsetBullet
VelocityIterations VelocityThreshold WakeAll
WriteJson

AddChain(shape1,shape2)
Fügt eine Kette zwischen zwei existierenden Shapes hinzu (Intern: Chain#).
shape1 Der Name der ersten Shape.
shape2 Der Name der zweiten Shape.
returns Der Name der Kette.

AddExplosion(posX,posY,power,damping,colour)
Zeigt eine Explosion von 50 Partikeln a 20kg, die verteilt über 500 ms auseinander streben.
posX Die x-Koordinate der Explosion.
posY Die y-Koordinate der Explosion.
power Die Explosionskraft (Anfangsgeschwindigkeit der Partikel).
damping Die Dämpfung für den Impuls. Je kleiner der Wert, umso größer der Streubereich (Standard: 10).
colour Optionale Farbe der Explosionsteilchen ("" für ohne).

AddFixedAnchor(posX,posY)
Fügt ein kleines, unsichtbares Shape hinzu, welches als Ankerpunkt (zB. für eine Kette) benutzt werden kann (Intern: Ellipse#).
posX Die x-Koordinate des Ankerpunktes.
posY Die y-Koordinate des Ankerpunktes.
returns Der Name des Ankerpunktes.

AddFixedShape(shapeName,friction,restitution)
Fügt der Physics Engine eine bestehende SB-Shape als feste Shape (undynamisch, mit Reaktionen auf andere Shapes, zB. Reibung, Kollision, Rückstoss) hinzu.
shapeName Der Name der Shape.
friction Reibungswert (gewöhnlich 0.0 bis 1.0).
restitution Rückfederung/Abprallwert (gewöhnlich 0.0 bis 1.0).

AddInactiveShape(shapeName)
Fügt der Physics Engine eine bestehende SB-Shape als inaktive Shape (undynamisch, ohne Interaktion mit anderen Shapes) hinzu, welche sich nur mit der PanView-Methode bewegt.
shapeName Der Name der Shape.

AddMovingAnchor(posX,posY)
Fügt ein kleines, unsichtbares und hoch verdichtetes Shape hinzu, welche als beweglicher Ankerpunkt benutzt werden kann (Intern: Ellipse#).
posX Die x-Koordinate des Ankerpunktes.
posY Die y-Koordinate des Ankerpunktes.
returns Der Name des Ankerpunktes.

AddMovingShape(shapeName,friction,restitution,density)
Fügt der Physics Engine eine existierende SB-Shape als bewegliche Shape (dynamisch) hinzu.
shapeName Der Name der Shape.
friction Reibungswert (gewöhnlich 0.0 bis 1.0).
restitution Rückfederung/Abprallwert (gewöhnlich 0.0 bis 1.0).
Ein negativer Wert fügt die Shape mit sehr kleinen Abmessungen hinzu, die es erlauben, ein inaktives Bild anzufügen und es innerhalb einer unregelmäßigen Verbundshape (die das Gesamtbild umfasst) zu gruppieren.

density Die Dichte [kg/m/m = 0.01kg/pxl/pxl] der Shape (Standard: 1).

AddRope(shape1,shape2)
Fügt ein Seil zwischen zwei existierenden Shapes hinzu (Intern: Rope#).
shape1 Der Name der ersten Shape.
shape2 Der Name der zweiten Shape.
returns Der Name des Seils.

AttachShapes(shape1,shape2)
Verbindet zwei Shapes, sodaß diese sich zusammen als Einheit bewegen.
Die Shapes werden durch ein Abstandsgelenk (Joint) verbunden und können beim Angriff etwas wackeln.

shape1 Der Name der ersten Shape.
shape2 Der Name der zweiten Shape.

AttachShapesWithJoint(shape1,shape2,type,collide,parameters)
Verbindet zwei Shapes zur gemeinsamen Bewegung in einem von mehreren Verkettungstypen (Intern: Joint#).
Kann erweitert werden und erfordert Nachschlagen in der Box2D Anleitung.
Oft ist es besser, Shaperotation für die Verkettung zu unterbinden, um sich wie beabsichtigt zu verhalten.
Mehrfachverkettungen können ebenfalls auf Shapes angewandt werden.
Diese Methoden verwenden die anfänglichen Shapepositionen, diese also zuerst setzen.

shape1 Der Name der ersten Shape.
shape2 Der Name der zweiten Shape.
type Einer der folgenden Verkettungstypen:
"Distance" - Behält einen fixen Abstand zwischen den Shapes.
"Gear" - Verknüpft Prismatic oder Revolute Verkettungen (zuvor erstellt) zweier Shapes.
"Line" - Bewegt die Shapes entlang einer anfänglichen Verbindungslinie zwischen den Shapes.
"Mouse" - Bewegt die Shape mit dem Mauszeiger (beide Shapenamen sollten gleich lauten).
"Prismatic_H" - Bewegt die Shapes senkrecht entlang einer Linie zwischen den zwei Shapes.
"Prismatic_V" - Bewegt die Shapes waagrecht entlang einer Linie zwischen den zwei Shapes.
"Pulley" - Ein Zugsystem, eine Shape bewegt sich rauf so wie die andere runter - positioniere die Shapes anfänglich an den Extrempunkten der Zugbewegung.
"Revolute" - Die Shapes können umeinander rotieren.

collide Interaktion verbundener Shapes miteinander? "True" oder "False" (Standard).
parameters Optionale Parameter (Standard: ""), bzw. mehrere Parameter als Array.
"Distance" - Dämpfungsverhältnis (Standard: 0)
"Gear" - Übersetzungsverhältnis, erste Verkettung, zweite Verkettung (Standard: 1, Autoerkennen von Verkettungen)
"Line" - x-Richtung, y-Richtung, Untere Übersetzung, Obere Übersetzung (Standard: Linie verbindet Shapes, unbegrenzt)
"Mouse" - Max. Beschleunigung, Dämpfungsverhältnis (Standard: 10000, 0.7)
"Prismatic_H" - x-Richtung, y-Richtung, Untere Übersetzung, Obere Übersetzung (Standard: 1,0, unbegrenzt)
"Prismatic_V" - x-Richtung, y-Richtung, Untere Übersetzung, Obere Übersetzung (Standard: 0,1, unbegrenzt)
"Pulley" - Zugverhältnis (Flaschenzug, Standard: 1)
"Revolute" - Unterer Winkel, Oberer Winkel (Standard: unbegrenzt)

returns Der Name der Verkettung.

AttachShapesWithRotation(shape1,shape2)
Verbindet zwei Shapes, sodaß diese sich zusammen als Einheit bewegen, erlaubt aber den Shapes einander zu umkreisen oder zu rotieren.
shape1 Der Name der ersten Shape.
shape2 Der Name der zweiten Shape.

BoxShape(shapeName,x1,y1,x2,y2)
Setzt eine Shape auf Verharren innerhalb einer Box/Rahmen in der Ansicht.
Ist ähnlich wie 'PanView', außer daß die Ansicht automatisch nachschwenkt, um die angegebene Shape visuell innerhalb eines Bereichs im GraphicsWindow zu halten.
Es kann nur eine Shape im Rahmen gehalten werden. Zum Zurücksetzen der gehaltenen Shape, shapeName auf "" setzen.

shapeName Der Name der zu haltenden Shape oder "".
x1 Die linke x-Koordinate der Box.
y1 Die obere y-Koordinate der Box.
x2 Die rechte x-Koordinate der Box.
y2 Die untere y-Koordinate der Box.

BrakeTire(shapeName)
Anwenden einer Bremse für eine Reifenshape.
shapeName Die zu bremsende Reifenshape.

ChainColour
Ermittelt oder setzt die Farbe für Ketten.

DetachJoint(jointName)
Trennt zwei Shapes welche zuvor mittels Verkettung verbunden waren.
jointName Der Name der Verkettung (Intern: Joint#).

DetachShapes(shape1,shape2)
Trennt zwei zuvor verbundene Shapes.
shape1 Der Name der ersten Shape.
shape2 Der Name der zweiten Shape.

DisconnectShape(shapeName)
Entfernt eine Shape aus der Physics Engine ohne die Shape aus der Shapes-Liste zu löschen.
shapeName Der Name der Shape.

DoTimestep()
Übergibt kurz an die Physics Engine um Bewegungen und Positionen aller Shapes neu zu berechnen.
example 'Hautptschleife
While "True"
LDPhysics.DoTimestep()
Program.Delay(20)
EndWhile


FollowShapeX(shapeName)
Setzt eine Shape auf stationäres Verharren an der x-Position in der Ansicht.
Ist ähnlich wie 'PanView', außer daß die Ansicht automatisch nachschwenkt, um die angegebene Shape visuell an einer konstanten x-Position zu halten.
Es kann nur eine Shape in x-Richtung verfolgt werden. Zum Zurücksetzen der verfolgenden Shape, shapeName auf "" setzen.

shapeName Der Name der zu verfolgenden Shape oder "".

FollowShapeY(shapeName)
Setzt eine Shape auf stationäres Verharren an der y-Position in der Ansicht.
Ist ähnlich wie 'PanView', außer daß die Ansicht automatisch nachschwenkt, um die angegebene Shape visuell an einer konstanten y-Position zu halten.
Es kann nur eine Shape in y-Richtung verfolgt werden. Zum Zurücksetzen der verfolgenden Shape, shapeName auf "" setzen.

shapeName Der Name der zu verfolgenden Shape oder "".

GetAllShapesAt(posX,posY)
Ermittelt alle PhysicsEngine Shapes (falls vorhanden) an der angegebenen Position als Array.
Wenn 'Pan/Nachschwenken' aktiviert ist, gelten die PhysicsEngine Koordinaten für diese Methode.

posX Die x-Koordinate der Position.
posY Die y-Koordinate der Position.
returns Ein Array mit den Namen aller Shapes an dieser Position oder "".

GetAngle(shapeName)
Ermittelt den Rotationswinkel für eine Shape.
shapeName Der Name der Shape.
returns Der Rotationswinkel [Grad].

GetCollisions(shapeName)
Ermittelt alle Shapes die während des letzten DoTimestep mit der angegebenen Shape kollidiert sind.
shapeName Die auf Kollisionen zu prüfende Shape.
returns Ein Array mit den Namen aller Shapes die mit der angegebenen kollidiert sind (kann leer "" sein oder "Wall" für statisches Hindernis, Physics Engine Rahmen).

GetContacts(posX,posY,distance)
Ermittelt eine Liste von Shapes, die innerhalb einer Entfernung von einem angegebenen Kontaktpunkt kollidieren.
posX Die x-Koordinate des zu überprüfenden Kontaktpunktes.
posY Die y-Koordinate des zu überprüfenden Kontaktpunktes.
distance Die Maximalentfernung der Kollision vom Kontaktpunkt.
returns Ein Array von Kontakten, wobei jeder Kontakt als Array zweier Shapenamen darstellt ist.

GetInertia(shapeName)
Ermittelt das Trägheitsmoment I einer Shape.
shapeName Der Name der Shape.
returns Das Trägheitsmoment der Shape.

GetMass(shapeName)
Ermittelt die Masse einer Shape.
Quadrat. Shape 10x10 pxl = 100pxl*pxl (dh. Box2D Fläche 1m*m) entspricht einer Masse von 1kg (bei Standarddichte 1kg/m/m).

shapeName Der Name der Shape.
returns Die Masse der Shape.

GetPan()
Ermittelt den aktuellen 'Pan' Versatz (s. PanView, FollowShapeX(Y) und BoxShape).
Weltkoordinaten = Bildschirmkoordinaten + Pan Versatz.

returns Ein 2-element. Array mit den aktuellen Pan Versatzwerten.

GetPosition(shapeName)
Ermittelt den Mittelpunkt einer Shape.
shapeName Der Name der Shape.
returns Ein Array mit 2 Elementen für die x- und y-Koordinaten des Mittelpunktes.

GetRotation(shapeName)
Ermittelt die Rotationsgeschwindigkeit einer Shape.
shapeName Der Name der Shape.
returns Die Rotationsgeschwindigkeit [Grad/sec].

GetShapeAt(posX,posY)
Ermittelt eine Shape (falls vorhanden) an der angegebenen Position.
Die Koordinaten für diese Methode sind die Bildschirm Koordinaten wenn 'Pan/Nachschwenken' aktiviert ist.

posX Die x-Koordinate.
posY Die y-Koordinate.
returns Der Name der Shape oder "" wenn sich dort keine befindet.

GetTireInformation(shapeName)
Ermittelt Reifeninformationen wie:
"Skid" (übersteigt dieser Wert die Größe der "AntiSkid" Eigenschaft, rutscht der Reifen weg)
"Crash" (der Wert ist die Aufprallgeschwindigkeit)

shapeName Der Name der Reifenshape.
returns Ein Array mit den Informationen, indexiert durch den Name der Information zB. "Skid".

GetTireProperties(shapeName)
Ermittelt Reifeneigenschaften wie:
"AntiSkid" (höherer Wert reduziert Schleudern/Abdriften)
"Drag" (höherer Wert erhöht Vor-/Rückwärtszug)
"Brake" (höherer Wert erhöht die Bremskraft)
"Straighten" (höherer Wert korrigiert Geradeauslenkung/Spurtreue schneller)
"BrakeStraighten" (höherer Wert korrigiert Geradeauslenkung beim Bremsen schneller)

shapeName Der Name der Reifenshape.
returns Ein Array mit den Eigenschaften, indexiert durch den Name der Eigenschaft zB. "AntiSkid".

GetVelocity(shapeName)
Ermittelt die lineare Geschwindigkeit einer Shape.
shapeName Der Name der Shape.
returns Ein Array mit 2 Elementen welche die Geschwindigkeit der Shape (in x- und y-Richtung) angeben.

GroupShapes(shape1,shape2)
Verbindet zwei Shapes fest miteinander, sodaß diese sich gemeinsam bewegen. Shape1 wird derart zu shape2 hinzugefügt, sodaß sich beide wie eine einzige Shape verhalten.
shape1 Der Name der ersten Shape.
shape2 Der Name der zweiten Shape.

Help()
Diese Methode zeigt lediglich diese Hilfe an.

LDPhysics verwendet Box2D (http://box2d.org) als Engine und stellt eine Verbindung zwischen Box2D und SB her.
Längenverhältnis ist: 10pxl/m, dh. 1pxl entspricht 0.1m in Box2D Einheiten (somit Beschleunigung g von 10m/s/s = 100pxl/s/s).

Nur Shapes die mit der LDPhysics Engine verbunden wurden, werden dabei berücksichtigt. So können gleichzeitig auch normale Shapes verwendet werden (zB. für Hintergrund). Wurde eine Shape an die Engine gekoppelt, ist es am Besten mit dieser nur noch über 'LDShapes...' -Methoden zu interagieren. Alle Positionen sind in SB-GraphicsWindow Koordinaten [Pxl] angegeben und beziehen sich auf den Mittelpunkt der Shape.

Bild- und Textshapes werden wie Rechtecke behandelt und Ellipsen wie Kreise. Es werden auch Dreiecke und konvexe Polygone unterstützt, aber keine Linien (dafür schmales Rechteck). Bilder können ebenfalls als Kreise behandelt werden, indem LoadImagesAsCircles auf "True" setzt wird.
Auch TextBox und Button Steuerelemente können verwendet werden (als Rechtecke behandelt).

Problematisch kann die Verwendung kleiner, sehr schnell bewegter Objekte sein. Diese können manchmal scheinbar durch andere, kleine Objekte hindurchfliegen ohne anzustoßen (s. auch SetBullet).

Auch wenn Shapes sehr unterschiedliche Größen oder Masse haben, besonders wenn sehr große Shapes miteinander verbunden wurden, kann es Probleme geben. Es kann dann nötig sein, die Dichte (Density) dieser Objekte anzupassen (Verankern -Anchors- sind eine Möglichkeit dieses etwas zu automatisieren), ansonsten ist 1 (Standard) ein guter Wert für Dichte. Vermeide zu viele Shapes miteinander zu verbinden.

Es wäre möglich, die Stabilität einiger 'schwieriger' Modelle mittels 'Timestep'-Einstellungen zu erhöhen, die voreingestellten Werte sind jedoch meist ausreichend.

Die Methoden der LDPhysics Engine dürfen nicht direkt aus einer SB Sub aufgerufen werden. Daher sollten dort nur Variablen verwendet werden, die in der Hauptschleife des Programmes die notwendigen Aufrufe an die LDPhysics Engine auslösen.

Dieser Erweiterung liegen Beispielprogramme und ein 'Physics-GettingStartedGuide.pdf' bei. Diese bieten einen guten Einstieg um die neuen Möglichkeiten kennenzulernen.

Fehlermeldungen und Probleme bitte im SBForum (http://social.msdn.microsoft.com/Forums/en-US/smallbasic/threads). Zuvor den Programmcode möglichst vereinfachen und kürzen um das Problem zu isolieren.


LoadImagesAsCircles
Ermittelt oder setzt das Laden einer Bildshape als Kreisform? "True" oder "False" (Standard).

MaxPolygonVertices
Ermittelt oder setzt die maximale Anzahl der Eckpunkte für konvexe Polygone in der Physics Engine (Standard: 8).

MaxProxies
Ermittelt oder setzt die maximale Anzahl für Objekt-'Proxies' in der Physics Engine (Standard: 1024).

MoveTire(shapeName,force)
Bewegt eine Reifenshape durch Anwenden einer vor- oder rückwärts gerichteten Kraft.
shapeName Die zu bewegende Reifenshape.
force Die anzuwendende Kraft (rückwärts < 0 < vorwärts).

PanView(panHorizontal,panVertical)
Schwenkt die Kameraansicht, incl. Fensterbegrenzungen.
panHorizontal Schwenkt die Kamera horizontal (neg. Werte für 'nach links').
panVertical Schwenkt die Kamera vertikal (neg. Werte für 'hoch').

PositionIterations
Ermittelt oder setzt die Positionsiterationen der Physics Engine (Standard: 2).

RayCast(shapeName,angle,distance)
Erstellt einen unsichtbaren 'Leitstrahl' zum Erkennen der Annäherung weiterer Shapes.
shapeName Der Name der Shape, als Ausgangspunkt für den Leitstrahl.
angle Der zu überprüfende Winkel oder ein Array von Winkeln [Grad].
distance Die maximale Entfernung zur Überprüfung.
returns Ein Array der Ergebnisse, indexiert durch Shapenamen ("Wall" für ein statisches Hindernis) und einem Wert entsprechend deren Entfernung (Reihenfolge der Shapes nach Distanz sortiert, näheste zuerst).
Bei Angabe eines Arrays mit Winkeln, nur die näheste Shape/Winkel, wobei der Wert den Winkel anstatt der Entfernung angibt.


ReadJson(fileName,scale,reverseY,stationary,offsetX,offsetY)
Liest ein json Script (R.U.B.E kompatibel) ein und erstellt daraus ein LDPhysics Modell.
S. http://www.iforce2d.net/rube für weitere Details.

fileName Der volle Pfad der einzulesenden json Datei.
scale Die Skalierung für alle Shapes (Standard: 1, keine Skalierung).
reverseY y-Richtung umkehren, von oben nach unten? ("True" oder "False").
stationary Setzt anfangs alle Shapes ruhend, (s. Set)JointMotor'en sind weiterhin aktiv ("True" oder "False").
offsetX Versatz entlang der x-Koordinate für alle Shapes.
offsetY Versatz entlang der y-Koordinate für alle Shapes, zB. hilfreich wenn 'reverseY' gesetzt wurde.
returns Ein Stringarray mit den verwendeten LDPhysics Befehlen zum Erstellen des Modells.

RemoveChain(shapeName)
Entfernt eine Kette.
shapeName Der Name der Kette.

RemoveFrozen()
Entfernt alle angehaltenen Shapes (außerhalb AABB befindlich = 'aus dem Rahmen gefallen').

RemoveRope(shapeName)
Entfernt ein Seil.
shapeName Der Name des Seils.

RemoveShape(shapeName)
Entfernt eine Shape.
shapeName Der Name der Shape.

Reset()
Zurücksetzen (löscht alle Verbindungen zwischen Shapes und der Physics Engine).

RopeColour
Ermittelt oder setzt die für Seile verwendete Farbe.

Scaling
Ermittelt oder setzt die Skalierung [Pixel/m] der Physics Engine (Standard: 10). Es ist nicht ratsam diese zu ändern.

SetAABB(minX,maxX,minY,maxY)
Die AABB (axis-aligned bounding box) - der Rahmen des Physics Universums. Ein Reset Aufruf muß unbedingt erfolgen nachdem diese Grenzen geändert wurden.
minX Linke Koordinate des Universums (Standard: -100).
maxX Rechte Koordinate des Universums (Standard: 200).
minY Obere Koordinate des Universums (Standard: -100).
maxY Untere Koordinate des Universums (Standard: 200).

SetAngle(shapeName,angle)
Setzt den Rotationswinkel für eine Shape zurück.
shapeName Der Name der Shape.
angle Der Rotationswinkel [Grad].

SetBoundaries(left,right,top,bottom)
Setzt feste Begrenzungen für die Fläche (Werte außerhalb des GraphicsWindow entfernen die Begrenzung).
left Der x-Wert der linken Begrenzung.
right Der x-Wert der rechten Begrenzung.
top Der y-Wert der oberen Begrenzung.
bottom Der y-Wert der unteren Begrenzung.

SetBullet(shapeName)
Setzt eine Shape als 'Projektil' (Bullet). Dies verhindert das Hindurchfliegen bei kleinen, schnell bewegten Shapes.
shapeName Der Name der Shape.

SetDamping(shapeName,linear,angular)
Setzt den Dämpfungsfaktor für eine Shape (Standard: 0).
shapeName Der Name der Shape.
linear Linearer Dämpfungsfaktor.
angular Schräger/winkliger Dämpfungsfaktor.

SetForce(shapeName,forceX,forceY)
Setzt eine Kraft, die einer Shape zugeordnet wird (F = m*a bzw. m*g).
shapeName Der Name der Shape.
forceX Die x-Komponente der Kraft.
forceY Die y-Komponente der Kraft.
example 'Beschleunigt shp aufwärts um 1pxl/s/s
LDPhysics.SetForce(shp, 0,-LDPhysics.GetMass(shp))


SetGravity(gravX,gravY)
Setzt die allgemeine Richtung und Größe der Gravitation [10m/s/s = 100pxl/s/s] (Standard: 0, 100).
gravX Die x-Komponente der Gravitation.
gravY Die y-Komponente der Gravitation.

SetGroup(shapeName,group,mask)
Setzt eine Auswahl von Shapes welche mit anderen Shapes interagieren (kollidieren).
shapeName Der Name der zu verwaltenden Shape.
group Die Gruppe, der die aktuelle Shape angehört. Ganzzahl zwischen 0 und 15 (Standard: 0).
mask Ein Array von Gruppen welche mit dieser Shape kollidieren (Standard: alle Gruppen 0,1,2,..,14,15).
Standardmäßig werden alle Shapes als Gruppe 0 erstellt und interagieren mit allen Gruppen 0 bis 15.

example Interaktion einer Shape mit Gruppen 0,1 und 4:
mask="1=0;2=1;3=4;".


SetImpulse(shapeName,impulseX,impulseY)
Setzt den Impuls (I = F*t) für eine Shape (zB. Anschieben eines Wagens, geradeaus).
shapeName Der Name der anzustossenden Shape.
impulseX Die x-Komponente des Impulses.
impulseY Die y-Komponente des Impulses.
example 'Beschleunigt shp aufwärts um 1pxl/s/s
LDPhysics.SetImpulse(shp, 0,-LDPhysics.GetMass(shp)/LDPhysics.TimeStep)


SetJointMotor(jointName,speed,maxForce)
Setzt einen Motor für gewählte Verkettungen (Line, Prismatic_H, Prismatic_V und Revolute).
jointName Der Name der Verkettung.
speed Die gewünschte Motorgeschwindigkeit.
maxForce Die maximale Motorkraft (Achsendrehmoment). 0 stellt den Motor ab.

SetPosition(shapeName,posX,posY,angle)
Setzt die Position einer Shape (zurück).
shapeName Der Name der Shape.
posX Die x-Koordinate des Shape Mittelpunktes.
posY Die y-Koordinate des Shape Mittelpunktes.
angle Der Rotationswinkel [Grad].

SetRotation(shapeName,rotation)
Setzt die Rotations-/Winkelgeschwindigkeit für eine Shape.
shapeName Der Name der Shape.
rotation Die Rotations-/Winkelgeschwindigkeit [Grad/sec].

SetShapeGravity(shapeName,gravX,gravY)
Setzt Richtung und Größe der Gravitation [10m/s/s = 100pxl/s/s] für eine angegebene Einzelshape (Standard: 0, 100).
shapeName Der Name der zu modifizierenden Shape.
gravX Die x-Komponente der Gravitation.
gravY Die y-Komponente der Gravitation.

SetTire(shapeName)
Setzt und behandelt ein Objekt als 'fahrbaren' Reifen für ein Top-Down Spiel.
Gewöhnlich wird die Gravitation vernachlässigt (auf 0 gesetzt) und die Shape sollte bereits zur Engine hinzugefügt sein.
Das Objekt sollte zu Beginn in der Anzeige auf- und vorwärts gerichtet positioniert sein.

shapeName Die als Reifen zu setzende Shape.

SetTireProperties(shapeName,properties)
Setzt Reifeneigenschaften wie:
"AntiSkid" (höherer Wert reduziert Schleudern/Abdriften)
"Drag" (höherer Wert erhöht Vor-/Rückwärtszug)
"Brake" (höherer Wert erhöht die Bremskraft)
"Straighten" (höherer Wert korrigiert Geradeauslenkung/Spurtreue schneller)
"BrakeStraighten" (höherer Wert korrigiert Geradeauslenkung beim Bremsen schneller)

shapeName Der Name der Reifenshape.
properties Ein Array mit einer oder mehreren zu setzenden Eigenschaften.
Der Index ist eine der Eigenschaften (exakte Schreibweise) und der Wert ist der Wert der Eigenschaft.


SetTorque(shapeName,torque)
Setzt ein Drehmoment (M = I*alpha) für eine Shape (zB. Antrieb eines Rades, Rotation).
shapeName Der Name der Shape.
torque Der Wert des aufzubringenden Drehmomentes.
example 'Beschleunigt shp-Drehung um 1rad/s/s (~57°/s/s) im Uhrzeigersinn
LDPhysics.SetTorque(shp, LDPhysics.GetInertia(shp))


SetVelocity(shapeName,velX,velY)
Setzt die lineare Bewegungsgeschwindigkeit für eine Shape.
shapeName Der Name der Shape.
velX Die x-Komponente der Geschwindigkeit.
velY Die y-Komponente der Geschwindigkeit.

TimeStep
Ermittelt oder setzt das Intervall für die zeitliche Schrittweite in der Physics Engine (Standard: 0.025).

TimestepControl(timestep,velocityIterations,positionIterations)
Anpassen der voreingestellten Timestep-Steuerparameter.
timestep Die zeitliche Schrittweite (Standard: 0.025).
velocityIterations Geschwindigkeitsiteration (Standard: 6).
positionIterations Positionsiteration (Standard: 2).

ToggleMoving(shapeName)
Umschalten einer bewegten Shape zum Stillstand und umgekehrt.
Diese Methode setzt eine Rotation ebenfalls an/aus in Übereinstimmung ob bewegt oder statisch.

shapeName Der Name der Shape.

ToggleRotation(shapeName)
Umschalten einer rotierenden Shape zum Stillstand und umgekehrt.
Diese Methode ändert die Rotationseigenschaft für fixe und bewegte Shapes.

shapeName Der Name der Shape.

ToggleSensor(shapeName)
Umschalten einer Shape zum Verhalten als Sensor und umgekehrt.
Eine Sensor Shape interagiert nicht mit anderen Shapes, liefert jedoch weiter Kollisionsdaten.

shapeName Der Name der Shape.

TurnTire(shapeName,torque)
Drehen einer Reifenshape, Links- bzw. Rechtslenkung.
shapeName Die zu drehende Reifenshape.
torque Das Drehmoment/anzuwendende Drehkraft (Drehung nach links < 0 < rechts).

UngroupShapes(shape1,shape2)
Aufheben einer Gruppierung zweier Shapes.
shape1 Der Name der ersten Shape.
shape2 Der Name der zweiten Shape.

UnsetBullet(shapeName)
Aufheben des 'Bullet-Status' einer Shape. Diese wird dann wieder als normale Shape behandelt.
shapeName Der Name der Shape.

VelocityIterations
Ermittelt oder setzt die Geschwindigkeitsiteration der Physics Engine (Standard: 6).

VelocityThreshold
Ermittelt oder setzt den Schwellenwert der Physics Engine für unelastische Kollisionen 'klebende Wände' (Standard: 1).

WakeAll()
Erweckt alle ruhenden Shapes. Shapes ruhen aufgrund nicht einwirkender Kräfte oder Kontakte und erwachen automatisch bei einem Kontakt oder einwirkender Kraft, sodaß diese Aktion nur selten nötig ist.

WriteJson(fileName)
Erstellt ein json Script vom aktuellen LDPhysics Modell (R.U.B.E kompatibel).
S. http://www.iforce2d.net/rube für weitere Details.

fileName Der volle Pfad der zu erstellenden json Datei.