//This is the listener that is called by the event manager //It transforms and adds the received report to the reports list void Record(string name, VRPNButton.ButtonReport report) { if (firstReport) { firstTime_sec = report.msg_time.tv_sec; firstTime_usec = report.msg_time.tv_usec; firstReport = false; } if (report.msg_time.tv_usec < firstTime_usec) { report.msg_time.tv_sec = report.msg_time.tv_sec - (firstTime_sec + 1); report.msg_time.tv_usec = (report.msg_time.tv_usec + 1000000) - firstTime_usec; } else { report.msg_time.tv_sec = report.msg_time.tv_sec - firstTime_sec; report.msg_time.tv_usec = report.msg_time.tv_usec - firstTime_usec; } VRPNButton.ButtonReportNew newReport = new VRPNButton.ButtonReportNew(); VRPNManager.TimeValNew newMsgTime = new VRPNManager.TimeValNew(); newMsgTime.tv_sec = (int)report.msg_time.tv_sec; newMsgTime.tv_usec = (int)report.msg_time.tv_usec; newReport.msg_time = newMsgTime; newReport.button = report.button; newReport.state = report.state; data.list.Add(newReport); }
//VRPNButtonRecording Constructor public VRPNButtonRecording(string nName, float nTime, VRPNButton.ButtonReports nData) { name = nName; reportTime = nTime; data = nData; e = data.list.GetEnumerator(); while (e.MoveNext()) { VRPNButton.ButtonReportNew report = e.Current; int test; if (!buttons.TryGetValue(report.button, out test)) { buttons.Add(report.button, report.button); } lastTime = report.msg_time.tv_sec + (report.msg_time.tv_usec / 1000000f); } e = data.list.GetEnumerator(); }
//Método que se encarga de estar pendiente de los mensajes que se envían desde los botones del dispositivo void CambioEnUnBoton(string name, VRPNButton.ButtonReport report) { //Info para el Log if (estaMostrandoInfoBoton) { Debug.Log("Name: " + name + " Button: " + report.button + " State:" + report.state); } //Si el botón del que se recibe reporte es el izquierdo if(report.button == 0) { //Si el reporte es que se oprimió el botón if (report.state == 1) { cubo.GetComponent<MeshRenderer>().material.color = Color.red; } //Si el reporte es que se soltó el botón else { cubo.GetComponent<MeshRenderer>().material.color = colorOriginal; } } //Si el botón del que se recibe reporte es el derecho else if (report.button == 1) { //Si el reporte es que se oprimió el botón if (report.state == 1) { cubo.GetComponent<MeshRenderer>().material.color = Color.blue; } //Si el reporte es que se soltó el botón else { cubo.GetComponent<MeshRenderer>().material.color = colorOriginal; } } }
//Método que se encarga de estar pendiente de los mensajes que se envían desde los botones del dispositivo void CambioEnUnBoton(string name, VRPNButton.ButtonReport report) { //Info para el Log if (estaMostrandoInfoBoton) { Debug.Log("Name: " + name + " Button: " + report.button + " State:" + report.state); } //Si el control que se está revisando es el izquierdo if (sensor == 0) { switch (report.button) { //Boton del medio case 0: if (report.state == 0) { capsulas[0].localScale = capsulasEscalaOriginal[0]; } else if (report.state == 1) { capsulas[0].localScale = new Vector3(capsulasEscalaOriginal[0].x, capsulasEscalaOriginal[0].y * 2, capsulasEscalaOriginal[0].z); } break; //Boton 1 case 1: if (report.state == 0) { capsulas[1].localScale = capsulasEscalaOriginal[1]; } else if (report.state == 1) { capsulas[1].localScale = new Vector3(capsulasEscalaOriginal[1].x, capsulasEscalaOriginal[1].y * 2, capsulasEscalaOriginal[1].z); } break; //Boton 2 case 2: if (report.state == 0) { capsulas[2].localScale = capsulasEscalaOriginal[2]; } else if (report.state == 1) { capsulas[2].localScale = new Vector3(capsulasEscalaOriginal[2].x, capsulasEscalaOriginal[2].y * 2, capsulasEscalaOriginal[2].z); } break; //Boton 3 case 3: if (report.state == 0) { capsulas[3].localScale = capsulasEscalaOriginal[3]; } else if (report.state == 1) { capsulas[3].localScale = new Vector3(capsulasEscalaOriginal[3].x, capsulasEscalaOriginal[3].y * 2, capsulasEscalaOriginal[3].z); } break; //Boton 4 case 4: if (report.state == 0) { capsulas[4].localScale = capsulasEscalaOriginal[4]; } else if (report.state == 1) { capsulas[4].localScale = new Vector3(capsulasEscalaOriginal[4].x, capsulasEscalaOriginal[4].y * 2, capsulasEscalaOriginal[4].z); } break; //Bumper case 5: if (report.state == 0) { capsulas[5].localScale = capsulasEscalaOriginal[5]; } else if (report.state == 1) { capsulas[5].localScale = new Vector3(capsulasEscalaOriginal[5].x, capsulasEscalaOriginal[5].y * 2, capsulasEscalaOriginal[5].z); } break; //Joystick case 6: if (report.state == 0) { capsulas[6].localScale = capsulasEscalaOriginal[6]; } else if (report.state == 1) { capsulas[6].localScale = new Vector3(capsulasEscalaOriginal[6].x, capsulasEscalaOriginal[6].y * 2, capsulasEscalaOriginal[6].z); } break; default: break; } } //Si el control que se está revisando es el derecho else if (sensor == 1) { switch (report.button) { //Boton del medio case 7: if (report.state == 0) { capsulas[0].localScale = capsulasEscalaOriginal[0]; } else if (report.state == 1) { capsulas[0].localScale = new Vector3(capsulasEscalaOriginal[0].x, capsulasEscalaOriginal[0].y * 2, capsulasEscalaOriginal[0].z); } break; //Boton 1 case 8: if (report.state == 0) { capsulas[1].localScale = capsulasEscalaOriginal[1]; } else if (report.state == 1) { capsulas[1].localScale = new Vector3(capsulasEscalaOriginal[1].x, capsulasEscalaOriginal[1].y * 2, capsulasEscalaOriginal[1].z); } break; //Boton 2 case 9: if (report.state == 0) { capsulas[2].localScale = capsulasEscalaOriginal[2]; } else if (report.state == 1) { capsulas[2].localScale = new Vector3(capsulasEscalaOriginal[2].x, capsulasEscalaOriginal[2].y * 2, capsulasEscalaOriginal[2].z); } break; //Boton 3 case 10: if (report.state == 0) { capsulas[3].localScale = capsulasEscalaOriginal[3]; } else if (report.state == 1) { capsulas[3].localScale = new Vector3(capsulasEscalaOriginal[3].x, capsulasEscalaOriginal[3].y * 2, capsulasEscalaOriginal[3].z); } break; //Boton 4 case 11: if (report.state == 0) { capsulas[4].localScale = capsulasEscalaOriginal[4]; } else if (report.state == 1) { capsulas[4].localScale = new Vector3(capsulasEscalaOriginal[4].x, capsulasEscalaOriginal[4].y * 2, capsulasEscalaOriginal[4].z); } break; //Bumper case 12: if (report.state == 0) { capsulas[5].localScale = capsulasEscalaOriginal[5]; } else if (report.state == 1) { capsulas[5].localScale = new Vector3(capsulasEscalaOriginal[5].x, capsulasEscalaOriginal[5].y * 2, capsulasEscalaOriginal[5].z); } break; //Joystick case 13: if (report.state == 0) { capsulas[6].localScale = capsulasEscalaOriginal[6]; } else if (report.state == 1) { capsulas[6].localScale = new Vector3(capsulasEscalaOriginal[6].x, capsulasEscalaOriginal[6].y * 2, capsulasEscalaOriginal[6].z); } break; default: break; } } }