add method

MathTime add(
  1. dynamic r
)

Implementation

MathTime add( dynamic r ){
	if( r is MathTime ){
		if( _minus != r._minus ){
			// this - -r
			return sub( r.minus() );
		}
		MathTime ll = dup( this );
		ll._update();
		MathTime rr = dup( r );
		rr._update();
		MathTime t = MathTime(
			ll._minus,
			ll._hour  + rr._hour,
			ll._min   + rr._min,
			ll._sec   + rr._sec,
			ll._frame + rr._frame
			);
		t.reduce();
		return t;
	}
	double rr = ClipMath.toDouble(r);
	if( _minus != (rr < 0.0) ){
		// this - -rr
		return sub( -rr );
	}
	MathTime ll = dup( this );
	ll._update();
	MathTime rrr = floatToTime( rr );
	MathTime t = MathTime(
		ll._minus,
		ll._hour  + rrr._hour,
		ll._min   + rrr._min,
		ll._sec   + rrr._sec,
		ll._frame + rrr._frame
		);
	t.reduce();
	return t;
}