def compute_side(self, x, y):
""" Computes which sides of dpad are supposed to be active """
## dpad(up, down, left, right)
## dpad8(up, down, left, right, upleft, upright, downleft, downright)
side = self.SIDE_NONE
if x*x + y*y > self.MIN_DISTANCE_P2:
# Compute angle from center of pad to finger position
angle = (atan2(x, y) * 180.0 / PI) + 180
# Translate it to index
index = 0
for a1, a2, i in self.ranges:
if angle >= a1 and angle < a2:
index = i
break
side = self.SIDES[index]
return side
评论列表
文章目录