Попробуй так.
Code
def Move_Mod(self, task):
if (self.GizmoSt == "on"):
if base.mouseWatcherNode.hasMouse(): # Проверка в окне ли мышь
mpos = base.mouseWatcherNode.getMouse() # Получаем координаты мыши
self.RayGizmo.setFromLens(base.camNode, mpos.getX(), mpos.getY()) # Устанавлиаем их лучу
Point = camera.getPos() # Берем позицию камеры
Vec = render.getRelativeVector(camera, self.RayGizmo.getDirection()) # Берем напраление луча
pos3d = Point3()
nearPoint = Point3()
farPoint = Point3()
base.camLens.extrude(mpos, nearPoint, farPoint)
if (self.GizmoAxis == 'X'):
if abs(Point.getZ() - self.AxisNode.getZ()) > abs(Point.getY() - self.AxisNode.getY()):
pl = Plane(Vec3(0,0,1), self.AxisNode.getPos(render))
else:
pl = Plane(Vec3(0,1,0), self.AxisNode.getPos(render))
if pl.intersectsLine(pos3d,
render.getRelativePoint(camera, nearPoint),
render.getRelativePoint(camera, farPoint)):
self.AxisNode.setX(pos3d.getX() - self.InfAxis.getX())
if (self.GizmoAxis == 'Y'):
if abs(Point.getZ() - self.AxisNode.getZ()) > abs(Point.getX() - self.AxisNode.getX()):
pl = Plane(Vec3(0,0,1), self.AxisNode.getPos(render))
else:
pl = Plane(Vec3(1,0,0), self.AxisNode.getPos(render))
if pl.intersectsLine(pos3d,
render.getRelativePoint(camera, nearPoint),
render.getRelativePoint(camera, farPoint)):
self.AxisNode.setY(pos3d.getY() - self.InfAxis.getY())
if (self.GizmoAxis == 'Z'):
if abs(Point.getX() - self.AxisNode.getX()) > abs(Point.getY() - self.AxisNode.getY()):
pl = Plane(Vec3(1,0,0), self.AxisNode.getPos(render))
else:
pl = Plane(Vec3(0,1,0), self.AxisNode.getPos(render))
if pl.intersectsLine(pos3d,
render.getRelativePoint(camera, nearPoint),
render.getRelativePoint(camera, farPoint)):
self.AxisNode.setZ(pos3d.getZ() - self.InfAxis.getZ())
self.editX.SetValue(str(self.AxisNode.getX())) # устанавливаем в текстовый контрол выбраное значение X(обязательно в строковом)
self.editY.SetValue(str(self.AxisNode.getY())) # //
self.editZ.SetValue(str(self.AxisNode.getZ()))
self.object_key[self.name_selest].setPos(self.AxisNode.getPos()) # синхранизируем положение обьекта с гизмо
return task.cont