ph_setautodisable (var maxlinear, var maxangular, var minframes, var mintime)

Überprüft, ob es Objekte gibt, die sich während der letzten paar Frames im Ruhezustand befanden. Ist dem so, werden diese solange desaktiviert, bis sie bewegt, oder Teil einer Kollision werden.

Ohne automatische Deaktivierung (auto-disabling) befinden sich Physik-Entities niemals vollständig im Ruhezustand und erfordern ständig neues Verarbeiten, was CPU-Zeit verbraucht. Selbst wenn eine Physik-Entity scheinbar ruhend auf dem Boden liegt, sinkt sie in Wahrheit aufgrund der Schwerkraft in den Boden ein, dann wird sie ein wenig (vielleicht 0.001 Quants) herausgehoben, sinkt wieder ein usw. Oftmals verursacht dieser Vorgang alle 3 Frames eine Kollision was sich jedoch dadurch vermeiden lässt, dass man die Entity um den Bruchteil eines Quants über dem Grund schweben lässt.

Bei Enginestart trittdie automatische Desaktivierung selbsttätig mit den Default-Werten (0.01, 0.008, 10, 0.1) inkraft. Dies bedeutet, dass Entities dann schweben, wenn sie innerhalb der letzten 10 Physikframes oder 0.1 Sekunden (je nachdem, was länger dauert) sich a) nicht schneller als 0.01 Quants pro Sekunde bewegt und b) nicht schneller, als 0.008 `rad´ pro Sekunde gedreht haben.

In manchen Fällen sind diese Werte zu optimistisch, da Kugeln auf leicht abschüssigem Terrain sehr leicht eine Winkelgeschwindigkeit erreichen. Andererseits kann sich ein Kasten, der in die Kante eines anderen Kastens verhakt ist, sehr langsam bewegen bevor er schliesslich herunterfällt. Es ist daher von Vorteil, die Werte im Game zu verändern und zu sehen, wie die Objekte darauf reagieren. Bleiben sie in sonderbaren Positionen stecken, waren entweder die Maximalwerte zu gross oder die Time-Frame zu kurz. Im Falle des anderen Extrems - überhaupt keine automatische Deaktivierung - sollten Sie ph_num_contacts überwachen und sichergehen, dass es, wann immer keine sichtbare Bewegung vorhanden ist und keine phent_-Anweisungen ausgeführt werden, gleich 0 ist.

Parameter:

maxlinear: Maximale lineare Geschwindigkeit in Quants pro Sekunde, die als Ruhezustand anerkannt wird; Default 0.01.
maxangular: Maximale Winkelgeschwindigkeit, die als Ruhezustand anerkannt wird; Default 0.008
minframes: Mindestzahl an Physik Frames, die ein Objekt im Ruhezustand sein muss, bevor es deaktiviert wird; Default 10.
mintime: Mindestzeit (in Sekunden), die ein Objekt im Ruhezustand sein muss, bevor es deaktiviert wird; Default 0.1.

Bemerkungen:

Geschwindigkeit:

Schnell

Beispiel:

var AutoDisableOn=1; 
...
// Activats/Deactivates Autodisabling
function ToggleDisable()
{
 if (AutoDisableOn)
 { 
    AutoDisableOn=0;
    ph_setautodisable(100,100,100,100); // turn off
 } 
 else
 {
    AutoDisableOn=1;
    ph_setautodisable(0.01, 0.008, 10, 0.1); // turn on and set default values
 }
}

Siehe auch:

phent_addvelcentral

► Aktuelle Version Online