--(void) update: (JoystickController *)jc {
- //printf("Dir %d inputValue %f\n", [self dir], [self inputValue]);
- if (fabs([self inputValue]) < 0.01)
- return; // dead zone
+- (BOOL)update:(JoystickController *)jc {
+ if (fabsf(self.magnitude) < 0.01) {
+ sign = 0;
+ return NO; // dead zone
+ }
+
+ // If the action crossed over High/Low, this target is done.
+ if (!sign)
+ sign = self.magnitude < 0 ? -1 : 1;
+ else if (sign / self.magnitude < 0) {
+ sign = 0;
+ return NO;
+ }