X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=NJOutputMouseMove.m;h=bca5d2d042221ece61ede692a11250403fbe295b;hp=8efb8cb29c174c1708b5b55762e81c0bd9dd3f87;hb=4f449987e5296701d1da9963789c4817935ab6c8;hpb=35be7b3d4cc4b32ab3488f6585b7dbac3d42b5cc diff --git a/NJOutputMouseMove.m b/NJOutputMouseMove.m index 8efb8cb..bca5d2d 100644 --- a/NJOutputMouseMove.m +++ b/NJOutputMouseMove.m @@ -9,9 +9,7 @@ #import "NJDeviceController.h" -@implementation NJOutputMouseMove { - int sign; -} +@implementation NJOutputMouseMove -(BOOL) isContinuous { return YES; @@ -22,41 +20,43 @@ } - (NSDictionary *)serialize { - return @{ @"type": self.class.serializationCode, @"axis": @(_axis) }; + return @{ @"type": self.class.serializationCode, + @"axis": @(_axis), + @"speed": @(_speed), + }; } + (NJOutput *)outputDeserialize:(NSDictionary *)serialization withMappings:(NSArray *)mappings { NJOutputMouseMove *output = [[NJOutputMouseMove alloc] init]; output.axis = [serialization[@"axis"] intValue]; + output.speed = [serialization[@"speed"] floatValue]; + if (!output.speed) + output.speed = 4; return output; } - (BOOL)update:(NJDeviceController *)jc { - if (fabsf(self.magnitude) < 0.01) { - sign = 0; + if (self.magnitude < 0.05) return NO; // dead zone - } - - // If the input crossed over High/Low, this output is done. - if (!sign) - sign = self.magnitude < 0 ? -1 : 1; - else if (sign / self.magnitude < 0) { - sign = 0; - return NO; - } CGFloat height = NSScreen.mainScreen.frame.size.height; - // TODO - float speed = 4.f; - if (jc.frontWindowOnly) - speed = 12.f; float dx = 0.f, dy = 0.f; - if (_axis == 0) - dx = self.magnitude * speed; - else - dy = self.magnitude * speed; + switch (_axis) { + case 0: + dx = -self.magnitude * _speed; + break; + case 1: + dx = self.magnitude * _speed; + break; + case 2: + dy = -self.magnitude * _speed; + break; + case 3: + dy = self.magnitude * _speed; + break; + } NSPoint mouseLoc = jc.mouseLoc; mouseLoc.x += dx; mouseLoc.y -= dy;