X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=NJOutputMouseScroll.m;h=7bbf4f80c37973f2add69a609932fc2b8f1ebeea;hp=4aa614db0aa3cfe75e8ed1c3ef3337ac6174b287;hb=48186896d41ccb345e4678c53ab1480059c12d3d;hpb=4f449987e5296701d1da9963789c4817935ab6c8 diff --git a/NJOutputMouseScroll.m b/NJOutputMouseScroll.m index 4aa614d..7bbf4f8 100644 --- a/NJOutputMouseScroll.m +++ b/NJOutputMouseScroll.m @@ -7,51 +7,47 @@ #import "NJOutputMouseScroll.h" -@implementation NJOutputMouseScroll { - int sign; -} +@implementation NJOutputMouseScroll + (NSString *)serializationCode { return @"mouse scroll"; } - (NSDictionary *)serialize { - return @{ @"type": self.class.serializationCode, @"amount": @(_amount) }; + return @{ @"type": self.class.serializationCode, + @"direction": @(_direction), + @"speed": @(_speed) + }; } + (NJOutput *)outputDeserialize:(NSDictionary *)serialization withMappings:(NSArray *)mappings { NJOutputMouseScroll *output = [[NJOutputMouseScroll alloc] init]; - output.amount = [serialization[@"amount"] intValue]; + output.direction = [serialization[@"direction"] intValue]; + output.speed = [serialization[@"direction"] floatValue]; return output; } +- (BOOL)isContinuous { + return !!self.speed; +} + - (void)trigger { - if (!self.magnitude) { + if (!self.speed) { CGEventRef scroll = CGEventCreateScrollWheelEvent(NULL, kCGScrollEventUnitLine, 1, - _amount); + _direction); CGEventPost(kCGHIDEventTap, scroll); CFRelease(scroll); } } - (BOOL)update:(NJDeviceController *)jc { - if (fabsf(self.magnitude) < 0.01f) { - sign = 0; + if (self.magnitude < 0.05f) 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; - } - - int amount = (int)(16.f * fabsf(self.magnitude) * _amount); + int amount = (int)(_speed * self.magnitude * _direction); CGEventRef scroll = CGEventCreateScrollWheelEvent(NULL, kCGScrollEventUnitPixel, 1, @@ -62,8 +58,4 @@ return YES; } -- (BOOL)isContinuous { - return YES; -} - @end