X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=JSActionAnalog.m;h=06552a967509f721cd0228fc6f977fd189c36ff1;hp=5aded63d3ad01e51dc8da6d926d2e4f8c26cd655;hb=51d43664909060e85c943c4d63cc3cff307ceb1d;hpb=724979785b445dcba8a9861c2531ae0308bdf40a diff --git a/JSActionAnalog.m b/JSActionAnalog.m index 5aded63..06552a9 100644 --- a/JSActionAnalog.m +++ b/JSActionAnalog.m @@ -10,7 +10,9 @@ #import "JSActionAnalog.h" -@implementation JSActionAnalog +@implementation JSActionAnalog { + float magnitude; +} @synthesize offset, scale; @@ -28,11 +30,10 @@ - (id)findSubActionForValue:(IOHIDValueRef)value { int raw = IOHIDValueGetIntegerValue(value); - float parsed = [self getRealValue:raw]; - - if (parsed < -DEAD_ZONE) + float mag = offset + scale * raw; + if (mag < -DEAD_ZONE) return self.children[0]; - else if (parsed > DEAD_ZONE) + else if (mag > DEAD_ZONE) return self.children[1]; else return nil; @@ -40,14 +41,13 @@ - (void)notifyEvent:(IOHIDValueRef)value { int raw = IOHIDValueGetIntegerValue(value); - float parsed = [self getRealValue:raw]; - [self.children[0] setActive:parsed < -DEAD_ZONE]; - [self.children[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