2 // control/fx/vector.qc
8 void( InterpolFunction pFunction, bool pForward ) _IEV_Interpolate =
13 lT = Timer_Time - self._presstime;
14 lCopy = self._parent.self.targetVector;
16 lCopy_x = pFunction( self.startVector_x, self.endVector_x, self.time_x, lT, lCopy_x );
17 lCopy_y = pFunction( self.startVector_y, self.endVector_y, self.time_x, lT, lCopy_y );
18 lCopy_z = pFunction( self.startVector_z, self.endVector_z, self.time_x, lT, lCopy_z );
20 lCopy_x = pFunction( self.endVector_x, self.startVector_x, self.time_y, lT, lCopy_x );
21 lCopy_y = pFunction( self.endVector_y, self.startVector_y, self.time_y, lT, lCopy_y );
22 lCopy_z = pFunction( self.endVector_z, self.startVector_z, self.time_y, lT, lCopy_z );
24 self._parent.self.targetVector = lCopy;
27 void() Item_Effect_Vector_Update =
29 if( self._state == ITEM_STATE_FORWARD ) {
30 if( self._presstime + self.time_x < Timer_Time ) {
31 self._parent.self.targetVector = self.endVector;
32 self._presstime = Timer_Time;
33 self._state = ITEM_STATE_BACKWARD;
35 _IEV_Interpolate( self.interpolForward, true );
37 if( self._presstime + self.time_y < Timer_Time ) {
38 self._parent.self.targetVector = self.startVector;
39 self._presstime = Timer_Time;
40 self._state = ITEM_STATE_FORWARD;
42 _IEV_Interpolate( self.interpolBackward, false );
45 // Check the task state
46 if( ( self.time_y == -1 && self._state == ITEM_STATE_BACKWARD ) ||
47 ( self.time_z >= 0 && self.time_z >= Timer_Time ) )
48 if( self.time_z == -2 )
49 self._runFlag = self._runFlag | RUNFLAG_CHILDDRAWONLY | FLAG_DRAWONLY;
51 Menu_DeleteAfterFrame( self );
55 void() Item_Effect_Vector_Reinit =
57 self._parent.self.targetVector = self.startVector;
58 self._presstime = Timer_Time;
59 self._state = ITEM_STATE_FORWARD;
60 if( self.flag & FLAG_DRAWONLY )
61 self.flag = self.flag - FLAG_DRAWONLY;
64 void() Item_Effect_Vector_Spawn =
66 self.flag = self.flag | FLAG_HIDDEN;
68 self._update = Item_Effect_Vector_Update;
69 self._reinit = Item_Effect_Vector_Reinit;