07.05.2016

Przemieszczanie obiektu wizualnego

W grze przemieścić można obiekty, które niekoniecznie muszą mieć animowane sekwencje ramek, dlatego funkcje realizujące przemieszczanie są składowymi ogólnego obiektu wizualnego (zdefiniowane w "engine2d\resources.cpp").
Funkcja visObj::startMove dodaje timer z callback'iem (visObjCallback) do rzucania zdarzenia programowego EVENT_MOVE_OBJ, które jest wykorzystywane do aktualizacji macierzy sektorów, poprzez funkcję visObj::deltaMove, oraz do renderowania tego obiektu funkcją visObj::draw.

Funkcja visObj::deltaMove, oprócz modyfikowania współrzędnych, wykonuje też następujące czynności:
* Oblicza jakie jest nowe położenie obiektu w macierzy sektorów (poprzez ustawione wcześniej zmienne: dx, dy).
* Oblicza nowy rozmiar (w sektorach) zajmowany przez obiekt w macierzy sektorów (po aktualizacji współrzędnych).
* Modyfikuje kontenery sektorów ze wskaźnikami do tego obiektu (jeżeli położenie lub rozmiar obiektu wykroczył poza sektory z wcześniejszego stanu).
* Sprawdza czy przemieszczenie nie osiągnęło ustalonego wcześniej zasięgu (poprzez zmienne: x_moveRange, y_moveRange), jeżeli tak to przemieszczenie jest zastopowane za pomocą visObj::stopMove.

Brak komentarzy:

Prześlij komentarz