X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=Classes%2FNJInputAnalog.m;h=18a848b545fc8fa390be99b57025ec0eb65ca20a;hp=7b4b15a831c4d0fcfde586972e79560ceb5e93c7;hb=HEAD;hpb=0064c1fbff36795885a9724081af2a17d83c20a3 diff --git a/Classes/NJInputAnalog.m b/Classes/NJInputAnalog.m index 7b4b15a..18a848b 100644 --- a/Classes/NJInputAnalog.m +++ b/Classes/NJInputAnalog.m @@ -9,29 +9,37 @@ #import "NJInputAnalog.h" -static float normalize(long p, long min, long max) { +static float normalize(CFIndex p, CFIndex min, CFIndex max) { return 2 * (p - min) / (float)(max - min) - 1; } @implementation NJInputAnalog { - float magnitude; - long rawMin; - long rawMax; + CFIndex _rawMin; + CFIndex _rawMax; } -- (id)initWithIndex:(int)index rawMin:(long)rawMin_ rawMax:(long)rawMax_ { - if ((self = [super init])) { - self.name = [[NSString alloc] initWithFormat: @"Axis %d", index]; - self.children = @[[[NJInput alloc] initWithName:@"Low" base:self], - [[NJInput alloc] initWithName:@"High" base:self]]; - rawMax = rawMax_; - rawMin = rawMin_; +- (id)initWithElement:(IOHIDElementRef)element + index:(int)index + parent:(NJInputPathElement *)parent +{ + if ((self = [super initWithName:NJINPUT_NAME(NSLocalizedString(@"axis %d", @"axis name"), index) + eid:NJINPUT_EID("Axis", index) + element:element + parent:parent])) { + self.children = @[[[NJInput alloc] initWithName:NSLocalizedString(@"axis low", @"axis low trigger") + eid:@"Low" + parent:self], + [[NJInput alloc] initWithName:NSLocalizedString(@"axis high", @"axis high trigger") + eid:@"High" + parent:self]]; + _rawMax = IOHIDElementGetPhysicalMax(element); + _rawMin = IOHIDElementGetPhysicalMin(element); } return self; } - (id)findSubInputForValue:(IOHIDValueRef)value { - float mag = normalize(IOHIDValueGetIntegerValue(value), rawMin, rawMax); + float mag = normalize(IOHIDValueGetIntegerValue(value), _rawMin, _rawMax); if (mag < -DEAD_ZONE) return self.children[0]; else if (mag > DEAD_ZONE) @@ -41,15 +49,11 @@ static float normalize(long p, long min, long max) { } - (void)notifyEvent:(IOHIDValueRef)value { - magnitude = normalize(IOHIDValueGetIntegerValue(value), rawMin, rawMax); + float magnitude = self.magnitude = normalize(IOHIDValueGetIntegerValue(value), _rawMin, _rawMax); [self.children[0] setMagnitude:fabsf(MIN(magnitude, 0))]; [self.children[1] setMagnitude:fabsf(MAX(magnitude, 0))]; [self.children[0] setActive:magnitude < -DEAD_ZONE]; [self.children[1] setActive:magnitude > DEAD_ZONE]; } -- (float)magnitude { - return magnitude; -} - @end