5.7 KiB
INERTIA
Interfejs do wbudowanego silnika fizycznego 2D o tej samej nazwie (Inertia). Zarządza ciałami sztywnymi: tworzeniem obiektów, ich wiązaniem z animacjami, polem grawitacji, prędkościami, tłumieniem i przykładaniem sił. Wykorzystany w Reksio i Kretes w Akcji.
Każdy obiekt fizyczny ma identyfikator (objectId) — wartość całkowitą używaną przez większość metod do wskazania ciała. Plik definiujący świat fizyczny ma rozszerzenie .INE i jest ładowany jednorazowo metodą LOAD.
Metody
ADDFORCE
void ADDFORCE(INTEGER objectId, INTEGER forceX, INTEGER forceY)
Przykłada siłę do obiektu w osiach X i Y.
Parametry
objectId— identyfikator obiektu.forceX,forceY— składowe siły.
Przykłady
EXTWORLD^ADDFORCE(1,-500,0);
EXTWORLD^ADDFORCE(1,0,-50);
CREATESPHERE
void CREATESPHERE(INTEGER objectId, INTEGER posX, INTEGER posY, INTEGER radius)
Tworzy w silniku fizycznym sferę o podanej pozycji środka i promieniu, przypisując jej wskazany identyfikator.
Parametry
objectId— identyfikator nowego obiektu.posX,posY— pozycja środka sfery.radius— promień sfery.
Przykłady
EXTWORLD^CREATESPHERE(5,10,10,10);
DELETEBODY
void DELETEBODY(INTEGER objectId)
Usuwa obiekt z silnika fizycznego.
Parametry
objectId— identyfikator usuwanego obiektu.
Przykłady
EXTWORLD^DELETEBODY(IHANDLEDEL);
EXTWORLD^DELETEBODY(IRAKIETAOBJ);
GETPOSITIONX
INTEGER GETPOSITIONX(INTEGER objectId)
Zwraca aktualną pozycję X obiektu o podanym identyfikatorze.
Parametry
objectId— identyfikator obiektu.
Zwraca: INTEGER — koordynata X.
GETPOSITIONY
INTEGER GETPOSITIONY(INTEGER objectId)
Zwraca aktualną pozycję Y obiektu o podanym identyfikatorze.
Parametry
objectId— identyfikator obiektu.
Zwraca: INTEGER — koordynata Y.
GETSPEED
DOUBLE GETSPEED(INTEGER objectId)
Zwraca prędkość obiektu o podanym identyfikatorze (długość wektora prędkości liniowej).
Parametry
objectId— identyfikator obiektu.
Zwraca: DOUBLE — wartość prędkości.
LINK
void LINK(INTEGER objectId, STRING animoName, BOOL flag1, BOOL flag2)
Wiąże obiekt fizyczny z animacją ANIMO — pozycja animacji jest aktualizowana na podstawie symulacji fizyki. Znaczenie obu flag boolowskich nie zostało jeszcze ustalone (w grach zawsze podawane są jako TRUE).
Parametry
objectId— identyfikator obiektu fizycznego.animoName— nazwa zmiennejANIMO.flag1,flag2— flagi konfiguracyjne (znaczenie nieustalone).
Przykłady
EXTWORLD^LINK(1,"ANNSZCZUREK",TRUE,TRUE);
EXTWORLD^LINK(IOBIEKT,["ANNSTRZAL_"+ISTRZAL],TRUE,TRUE);
LOAD
void LOAD(STRING path)
Ładuje plik .INE z definicją świata fizycznego.
Parametry
path— ścieżka do pliku.INE.
Przykłady
EXTWORLD^LOAD("WORLD.INE");
RESETTIMER
void RESETTIMER()
Resetuje wewnętrzny zegar symulacji.
Przykłady
EXTWORLD^RESETTIMER();
SETGRAVITY
void SETGRAVITY(DOUBLE gravityX, DOUBLE gravityY)
Ustawia globalny wektor grawitacji. Wartość (0, 0) wyłącza grawitację.
Parametry
gravityX,gravityY— składowe grawitacji.
Przykłady
EXTWORLD^SETGRAVITY(0,0);
SETLINEARDAMPING
void SETLINEARDAMPING(INTEGER objectId, INTEGER linearDamping)
Ustawia tłumienie liniowe (stopniowe spowalnianie prędkości liniowej) dla obiektu.
Parametry
objectId— identyfikator obiektu.linearDamping— wartość tłumienia.
Przykłady
EXTWORLD^SETLINEARDAMPING(1,300);
SETMATERIAL
void SETMATERIAL(INTEGER objectId, STRING material)
Ustawia materiał obiektu. Materiały kontrolują, w jaki sposób obiekty reagują na kontakt (sztywność, sprężystość, tarcie). W skryptach gier spotykana jest m.in. nazwa "TRIGGER", dla której silnik wywołuje na powiązanej animacji sygnał ONSIGNAL^TRIGGER.
Parametry
objectId— identyfikator obiektu.material— nazwa materiału.
Przykłady
EXTWORLD^SETMATERIAL(IOBIEKT,"TRIGGER");
SETPOSITION
void SETPOSITION(INTEGER objectId, INTEGER posX, INTEGER posY)
Ustawia bezwzględną pozycję obiektu w świecie fizycznym.
Parametry
objectId— identyfikator obiektu.posX,posY— nowa pozycja.
Przykłady
EXTWORLD^SETPOSITION(IOBIEKT,[ANNSZCZUREK^GETCENTERX()+70],[ANNSZCZUREK^GETCENTERY()-1]);
EXTWORLD^SETPOSITION(IRAKIETAOBJ,ANNDODATKI_7^GETPOSITIONX(),ANNDODATKI_7^GETPOSITIONY());
SETVELOCITY
void SETVELOCITY(INTEGER objectId, INTEGER speedX, INTEGER speedY)
Ustawia prędkość obiektu w osiach X i Y.
Parametry
objectId— identyfikator obiektu.speedX,speedY— składowe prędkości.
Przykłady
EXTWORLD^SETVELOCITY(1,0,0);
EXTWORLD^SETVELOCITY(IOBIEKT,8,0);
TICK
void TICK()
Wykonuje pojedynczy krok symulacji. Bez wywołania TICK świat fizyczny pozostaje zamrożony — typowo wywoływane z sygnału ONTICK TIMER.
Przykłady
EXTWORLD^TICK();
UNLINK
void UNLINK(INTEGER objectId)
Zrywa powiązanie obiektu z animacją utworzone metodą LINK.
Parametry
objectId— identyfikator obiektu.
Przykłady
EXTWORLD^UNLINK(IID);
EXTWORLD^UNLINK(1);
Sygnały
ONINIT
Wywoływany w momencie inicjalizacji obiektu.
ONSIGNAL
Wywoływany po otrzymaniu sygnału (zobacz Zdarzenia i sygnały).