예제 #1
0
    /* Tracker event handler */
    private void TrackerChanged(TrackerEvent e)
    {
        for (int i = 0; i < trackerPosition.Capacity; i++)
        {
            trackerPosition[i] = Utils.Convert(tracker.Sensors[i].Position);
        }

        for (int i = 0; i < trackerRotation.Capacity; i++)
        {
            trackerRotation[i] = Utils.Convert(tracker.Sensors[i].Orientation);
        }
    }
예제 #2
0
        protected void deserializeEvent(StateObject state, int bytesRead)
        {
            //Receive message from the server
            formatter = new BinaryFormatter();
            memStream = new MemoryStream(bytesRead - 1);
            memStream.Write(state.Buffer, 0, bytesRead - 1);
            memStream.Position = 0;
            UniVRPNity.Event event_deserialize = (UniVRPNity.Event)formatter.Deserialize(memStream);

            switch (event_deserialize.GetHandlerType())
            {
                case UniVRPNity.Type.Analog:
                    analogEvent = (AnalogEvent) event_deserialize;
                    bufferEvent.Push(analogEvent);
                    break;
                case UniVRPNity.Type.Button:
                    buttonEvent = (ButtonEvent) event_deserialize;
                    bufferEvent.Push(buttonEvent);
                    break;
                case UniVRPNity.Type.Tracker:
                    trackerEvent = (TrackerEvent) event_deserialize;
                    bufferEvent.Push(trackerEvent);
                    break;
                default:
                    throw new Exception("Deserialization of the event failed.\n");
            }
        }
예제 #3
0
 /* Analog event handler */
 private void TrackerChanged(TrackerEvent e)
 {
     position = Utils.Convert(tracker.Sensors[sensor].Position);
     rotation = Utils.Convert(tracker.Sensors[sensor].Orientation);
 }
예제 #4
0
 /* Analog event handler */
 private void TrackerChanged(object sender, TrackerChangeEventArgs e)
 {
     Vrpn.TrackerRemote trackerSender = (Vrpn.TrackerRemote) sender;
     if (remotes.isPresent(trackerSender))
      {
         TrackerEvent trackerEvent = new TrackerEvent(this.remotes[trackerSender].Name);
         trackerEvent.Sensor = e.Sensor;
         trackerEvent.Position = new EventHandlerUtils.Vector3((float)e.Position.X,
             (float)e.Position.Y,
             (float)e.Position.Z);
         trackerEvent.Orientation = new EventHandlerUtils.Quaternion((float)e.Orientation.X,
             (float)e.Orientation.Y,
             (float)e.Orientation.Z,
             (float)e.Orientation.W);
         trackerEvent.Time = e.Time;
         Console.WriteLine("Tracker: " + trackerEvent);
         this.SendEvent(trackerSender, trackerEvent);
      }
      else
      {
          trackerSender.PositionChanged -= new Vrpn.TrackerChangeEventHandler(this.TrackerChanged);
      }
 }
예제 #5
0
 private void Update(TrackerEvent e)
 {
     if (e.Sensor < sensors.Capacity)
     {
         sensors[e.Sensor] = e;
     }
 }
예제 #6
0
 private void TrackerChangedMiddle(TrackerEvent e)
 {
     if (TrackerChanged != null)
         TrackerChanged(e);
 }