BBGamelib.CCSequence.update C# (CSharp) Method

update() public method

public update ( float t ) : void
t float
return void
		public override void update (float t)
		{
			int found = 0;
			float new_t = 0;

			CCAction action0 = _actions [0];
			CCAction action1 = _actions [1];

			if(FloatUtils.Small(t , _split) ) {
				// action[0]
				found = 0;
				if( !FloatUtils.EQ(_split , 0) )
					new_t = t / _split;
				else
					new_t = 1;
				
			} else {
				// action[1]
				found = 1;
				if (FloatUtils.EQ( _split , 1) )
					new_t = 1;
				else
					new_t = (t-_split) / (1 - _split );
			}
			
			if ( found==1 ) {
				
				if( _last == -1 ) {
					// action[0] was skipped, execute it.
					action0.startWithTarget(_target);
					action0.update(1.0f);
					action0.stop();
				}
				else if( _last == 0 )
				{
					// switching to action 1. stop action 0.
					action0.update(1.0f);
					action0.stop();
				}
			}
			else if(found==0 && _last==1 )
			{
				// Reverse mode ?
				// XXX: Bug. this case doesn't contemplate when _last==-1, found=0 and in "reverse mode"
				// since it will require a hack to know if an action is on reverse mode or not.
				// "step" should be overriden, and the "reverseMode" value propagated to inner Sequences.
				action1.update(0);
				action1.stop();
			}
			
			// Last action found and it is done.
			if( found == _last && _actions[found].isDone() ) {
				return;
			}
			
			// New action. Start it.
			if( found != _last )
				_actions[found].startWithTarget(_target);
			
			_actions[found].update(new_t);
			_last = found;
		}