X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=JSActionAnalog.m;h=ae347fa9ad85774e7ac9ad41ba8ff109117df3d4;hp=e7d6eba8f6b2d08687e8e775f241fc30ffd97db0;hb=dd1f684886c2809133356bb9b335a35293e8849e;hpb=e68c19b5923618b763543c74bf8dd6f85d4d323e diff --git a/JSActionAnalog.m b/JSActionAnalog.m index e7d6eba..ae347fa 100644 --- a/JSActionAnalog.m +++ b/JSActionAnalog.m @@ -10,44 +10,44 @@ #import "JSActionAnalog.h" -@implementation JSActionAnalog +@implementation JSActionAnalog { + float magnitude; +} @synthesize offset, scale; - (id)initWithIndex:(int)newIndex offset:(float)offset_ scale:(float)scale_ { if ((self = [super init])) { - self.subActions = @[[[SubAction alloc] initWithIndex:0 name:@"Low" base:self], - [[SubAction alloc] initWithIndex:1 name:@"High" base:self]]; + self.children = @[[[JSAction alloc] initWithName:@"Low" base:self], + [[JSAction alloc] initWithName:@"High" base:self]]; self.index = newIndex; self.offset = offset_; self.scale = scale_; - self.name = [[NSString alloc] initWithFormat: @"Axis %d", self.index + 1]; + self.name = [[NSString alloc] initWithFormat: @"Axis %d", self.index]; } return self; } - (id)findSubActionForValue:(IOHIDValueRef)value { int raw = IOHIDValueGetIntegerValue(value); - float parsed = [self getRealValue:raw]; - - if (parsed < -DEAD_ZONE) - return self.subActions[0]; - else if (parsed > DEAD_ZONE) - return self.subActions[1]; + float mag = offset + scale * raw; + if (mag < -DEAD_ZONE) + return self.children[0]; + else if (mag > DEAD_ZONE) + return self.children[1]; else return nil; } - (void)notifyEvent:(IOHIDValueRef)value { int raw = IOHIDValueGetIntegerValue(value); - float parsed = [self getRealValue:raw]; - [self.subActions[0] setActive:parsed < -DEAD_ZONE]; - [self.subActions[1] setActive:parsed > DEAD_ZONE]; + magnitude = offset + scale * raw; + [self.children[0] setActive:magnitude < -DEAD_ZONE]; + [self.children[1] setActive:magnitude > DEAD_ZONE]; } -- (float)getRealValue:(int)value { - return offset + scale * value; +- (float)magnitude { + return magnitude; } - @end