class PointerRay():
  def __init__(self, MANIPULATION_MANAGER, ID, SCENEGRAPH, NET_TRANS_NODE, PARENT_NODE, TRACKING_TRANSMITTER_OFFSET, POINTER_TRACKING_STATION, POINTER_DEVICE_STATION):
   

    self.tracking_sensor = avango.daemon.nodes.DeviceSensor(DeviceService = avango.daemon.DeviceService())
    self.tracking_sensor.Station.value = POINTER_TRACKING_STATION
    self.tracking_sensor.ReceiverOffset.value = avango.gua.make_identity_mat()
    self.tracking_sensor.TransmitterOffset.value = TRACKING_TRANSMITTER_OFFSET


    self.ray = Ray()
    self.ray.my_constructor(MANIPULATION_MANAGER, ID, SCENEGRAPH, NET_TRANS_NODE, PARENT_NODE, self.tracking_sensor.Matrix, POINTER_DEVICE_STATION)
class MouseRay():
  def __init__(self, MANIPULATION_MANAGER, ID, SCENEGRAPH, NET_TRANS_NODE, PARENT_NODE, TRACKING_STATION, DEVICE_STATION):
   

    self.tracking_sensor = avango.daemon.nodes.DeviceSensor(DeviceService = avango.daemon.DeviceService())
    self.tracking_sensor.Station.value = TRACKING_STATION
    self.tracking_sensor.ReceiverOffset.value = avango.gua.make_identity_mat()
    self.tracking_sensor.TransmitterOffset.value = avango.gua.make_identity_mat()
   
    
    self.mouse_mover = MouseMover()
    self.mouse_mover.my_constructor(self.tracking_sensor, PARENT_NODE.WorldTransform.value)

    self.ray = Ray()
    self.ray.my_constructor(MANIPULATION_MANAGER, ID, SCENEGRAPH, NET_TRANS_NODE, PARENT_NODE, self.mouse_mover.sf_output_mat, DEVICE_STATION)