void Update() { /***************************************************************/ //Update Workspace as function of camera /***************************************************************/ //PluginImport.UpdateWorkspace(myHapticCamera.transform.rotation.eulerAngles.y); //To be deprecated //Update the Workspace as function of camera for (int i = 0; i < workspaceUpdateValue.Length; i++) { workspaceUpdateValue[i] = myHapticCamera.transform.rotation.eulerAngles.y; } PluginImport.UpdateHapticWorkspace(ConverterClass.ConvertFloatArrayToIntPtr(workspaceUpdateValue)); /***************************************************************/ //Update cube workspace /***************************************************************/ myGenericFunctionsClassScript.UpdateGraphicalWorkspace(); /***************************************************************/ //Haptic Rendering Loop /***************************************************************/ PluginImport.RenderHaptic(); //Associate the cursor object with the haptic proxy value myGenericFunctionsClassScript.GetProxyValues(); }
void Start() { if (PluginImport.InitHapticDevice()) { Debug.Log("OpenGL Context Launched"); Debug.Log("Haptic Device Launched"); myGenericFunctionsClassScript.SetHapticWorkSpace(); myGenericFunctionsClassScript.GetHapticWorkSpace(); //Update Workspace as function of camera //PluginImport.UpdateWorkspace(myHapticCamera.transform.rotation.eulerAngles.y);//To be deprecated //Update the Workspace as function of camera for (int i = 0; i < workspaceUpdateValue.Length; i++) { workspaceUpdateValue[i] = myHapticCamera.transform.rotation.eulerAngles.y; } PluginImport.UpdateHapticWorkspace(ConverterClass.ConvertFloatArrayToIntPtr(workspaceUpdateValue)); //Set Mode of Interaction /* * Mode = 0 Contact * Mode = 1 Manipulation - So objects will have a mass when handling them * Mode = 2 Custom Effect - So the haptic device simulate vibration and tangential forces as power tools * Mode = 3 Puncture - So the haptic device is a needle that puncture inside a geometry */ PluginImport.SetMode(ModeIndex); //Show a text descrition of the mode myGenericFunctionsClassScript.IndicateMode(); } else { Debug.Log("Haptic Device cannot be launched"); } /***************************************************************/ //Set Environmental Haptic Effect /***************************************************************/ // Constant Force Example - We use this environmental force effect to simulate the weight of the cursor myGenericFunctionsClassScript.SetEnvironmentConstantForce(); /***************************************************************/ //Setup the Haptic Geometry in the OpenGL context //And read haptic characteristics /***************************************************************/ myGenericFunctionsClassScript.SetHapticGeometry(); //Get the Number of Haptic Object //Debug.Log ("Total Number of Haptic Objects: " + PluginImport.GetHapticObjectCount()); /***************************************************************/ //Launch the Haptic Event for all different haptic objects /***************************************************************/ PluginImport.LaunchHapticEvent(); }
void SetPunctureStack(int nbLayer, string[] name, float[] array) { IntPtr[] objname = new IntPtr[nbLayer]; //Assign object encounter along puncture vector to the Object array for (int i = 0; i < nbLayer; i++) { objname[i] = ConverterClass.ConvertStringToByteToIntPtr(name[i]); } PluginImport.SetPunctureLayers(nbLayer, objname, ConverterClass.ConvertFloatArrayToIntPtr(array)); }
void Update() { if (cochlea == null) { cochlea = StatsManager.instance.GetActiveCochlea(); } if (PluginImport.GetButtonState(1, 2)) { if (!hasStarted) // user hasn't pressed start { DetachCochlea(); hasStarted = true; } } if (PluginImport.GetButtonState(1, 1) & !hasEnded) { hasEnded = true; StatsManager.instance.SetFullReset(false); simMonitor.IncrementReset(); SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); } /***************************************************************/ //Update Workspace as function of camera /***************************************************************/ //PluginImport.UpdateWorkspace(myHapticCamera.transform.rotation.eulerAngles.y);//To be deprecated //Update the Workspace as function of camera for (int i = 0; i < workspaceUpdateValue.Length; i++) { workspaceUpdateValue[i] = myHapticCamera.transform.rotation.eulerAngles.y; } PluginImport.UpdateHapticWorkspace(ConverterClass.ConvertFloatArrayToIntPtr(workspaceUpdateValue)); /***************************************************************/ //Update cube workspace /***************************************************************/ myGenericFunctionsClassScript.UpdateGraphicalWorkspace(); /***************************************************************/ //Haptic Rendering Loop /***************************************************************/ PluginImport.RenderHaptic(); //Associate the cursor object with the haptic proxy value myGenericFunctionsClassScript.GetProxyValues(isKinematic); }
void Update() { /***************************************************************/ //Act on the rigid body of the Manipulated object // if Mode = Manipulation Mode /***************************************************************/ if (PluginImport.GetMode() == 1) { ActivatingGrabbedObjectPropperties(); } /***************************************************************/ //Update Workspace as function of camera /***************************************************************/ //PluginImport.UpdateWorkspace(myHapticCamera.transform.rotation.eulerAngles.y); //To be deprecated //Update the Workspace as function of camera for (int i = 0; i < workspaceUpdateValue.Length; i++) { workspaceUpdateValue[i] = myHapticCamera.transform.rotation.eulerAngles.y; } PluginImport.UpdateHapticWorkspace(ConverterClass.ConvertFloatArrayToIntPtr(workspaceUpdateValue)); /***************************************************************/ //Update cube workspace /***************************************************************/ myGenericFunctionsClassScript.UpdateGraphicalWorkspace(); /***************************************************************/ //Haptic Rendering Loop /***************************************************************/ PluginImport.RenderHaptic(); //Associate the cursor object with the haptic proxy value myGenericFunctionsClassScript.GetProxyValues(); myGenericFunctionsClassScript.GetTouchedObject(); //Debug.Log ("Button 1: " + PluginImport.GetButton1State()); // To be deprecated //Debug.Log ("Button 2: " + PluginImport.GetButton2State()); // To be deprecated //Debug.Log("Device 1: Button 1: " + PluginImport.GetButtonState(1, 1)); //Debug.Log("Device 1: Button 2: " + PluginImport.GetButtonState(1, 2)); }
void Update() { /***************************************************************/ //Update two Workspaces as function of camera for each /***************************************************************/ //PluginImport.UpdateTwoWorkspace(myHapticCamera.transform.rotation.eulerAngles.y, myHapticCamera.transform.rotation.eulerAngles.y); //Update the Workspace as function of camera - Note that two different reference can be used to update each workspace for (int i = 0; i < workspaceUpdateValue.Length; i++) { workspaceUpdateValue[i] = myHapticCamera.transform.rotation.eulerAngles.y; } PluginImport.UpdateHapticWorkspace(ConverterClass.ConvertFloatArrayToIntPtr(workspaceUpdateValue)); /***************************************************************/ //Update 2 cubes workspaces /***************************************************************/ myGenericFunctionsClassScript.UpdateTwoGraphicalWorkspaces(); /***************************************************************/ //Haptic Rendering Loop /***************************************************************/ PluginImport.RenderHaptic(); /***************************************************************/ //Update Haptic Object Transform /***************************************************************/ myGenericFunctionsClassScript.UpdateHapticObjectMatrixTransform(); //myGenericFunctionsClassScript.GetProxyValues(); myGenericFunctionsClassScript.GetTwoProxyValues(); //myGenericFunctionsClassScript.GetTouchedObject(); /*Debug.Log("Device 1: Button 1: " + PluginImport.GetButtonState(1, 1)); * Debug.Log("Device 1: Button 2: " + PluginImport.GetButtonState(1, 2)); * Debug.Log("Device 2: Button 1: " + PluginImport.GetButtonState(2, 1)); * Debug.Log("Device 2: Button 2: " + PluginImport.GetButtonState(2, 2));*/ /*if(PluginImport.GetHapticContact(1)) * Debug.Log("Device 1 touches: " + PluginImport.GetTouchedObjId(1) + " " + ConverterClass.ConvertIntPtrToByteToString(PluginImport.GetTouchedObjName(1))); * if (PluginImport.GetHapticContact(2)) * Debug.Log("Device 2 touches: " + PluginImport.GetTouchedObjId(2) + " " + ConverterClass.ConvertIntPtrToByteToString(PluginImport.GetTouchedObjName(2)));*/ }
void Update() { /***************************************************************/ //Update Workspace as function of camera /***************************************************************/ //PluginImport.UpdateWorkspace(myHapticCamera.transform.rotation.eulerAngles.y);//To be deprecated //Update the Workspace as function of camera for (int i = 0; i < workspaceUpdateValue.Length; i++) { workspaceUpdateValue[i] = myHapticCamera.transform.rotation.eulerAngles.y; } PluginImport.UpdateHapticWorkspace(ConverterClass.ConvertFloatArrayToIntPtr(workspaceUpdateValue)); /***************************************************************/ //Update cube workspace /***************************************************************/ myGenericFunctionsClassScript.UpdateGraphicalWorkspace(); /***************************************************************/ //Haptic Rendering Loop /***************************************************************/ PluginImport.RenderHaptic(); //Associate the cursor object with the haptic proxy value myGenericFunctionsClassScript.GetProxyValues(); //myGenericFunctionsClassScript.GetTouchedObject(); //Reset the writing on the board //if(ConverterClass.ConvertIntPtrToByteToString( PluginImport.GetTouchedObjectName()) == "reset") // GetTouchedObjectName - To be deprecated if (ConverterClass.ConvertIntPtrToByteToString(PluginImport.GetTouchedObjName(1)) == "reset") { myWritingScript.cleanBoard(); //Change the Color of the button material myResetButton.GetComponent <Renderer>().material.color = buttonResetColors[1]; } else { myResetButton.GetComponent <Renderer>().material.color = buttonResetColors[0]; } }
void Update() { if (PluginImport.GetButtonState(1, 2)) { DetachCochlea(); } if (PluginImport.GetButtonState(1, 1) & !hasEnded) { hasEnded = true; simMonitor.End(); } /***************************************************************/ //Update Workspace as function of camera /***************************************************************/ //PluginImport.UpdateWorkspace(myHapticCamera.transform.rotation.eulerAngles.y);//To be deprecated //Update the Workspace as function of camera for (int i = 0; i < workspaceUpdateValue.Length; i++) { workspaceUpdateValue[i] = myHapticCamera.transform.rotation.eulerAngles.y; } PluginImport.UpdateHapticWorkspace(ConverterClass.ConvertFloatArrayToIntPtr(workspaceUpdateValue)); /***************************************************************/ //Update cube workspace /***************************************************************/ myGenericFunctionsClassScript.UpdateGraphicalWorkspace(); /***************************************************************/ //Haptic Rendering Loop /***************************************************************/ PluginImport.RenderHaptic(); //Associate the cursor object with the haptic proxy value myGenericFunctionsClassScript.GetProxyValues(isKinematic); }
void Update() { /***************************************************************/ //Update Workspace as function of camera /***************************************************************/ //PluginImport.UpdateWorkspace(myHapticCamera.transform.rotation.eulerAngles.y);//To be deprecated //Update the Workspace as function of camera for (int i = 0; i < workspaceUpdateValue.Length; i++) { workspaceUpdateValue[i] = myHapticCamera.transform.rotation.eulerAngles.y; } PluginImport.UpdateHapticWorkspace(ConverterClass.ConvertFloatArrayToIntPtr(workspaceUpdateValue)); /***************************************************************/ //Update cube workspace /***************************************************************/ myGenericFunctionsClassScript.UpdateGraphicalWorkspace(); /***************************************************************/ //Haptic Rendering Loop /***************************************************************/ PluginImport.RenderHaptic(); //Associate the cursor object with the haptic proxy value myGenericFunctionsClassScript.GetProxyValues(); myGenericFunctionsClassScript.GetTouchedObject(); //Debug.Log ("Button 1: " + PluginImport.GetButton1State()); // To be deprecated //Debug.Log ("Button 2: " + PluginImport.GetButton2State()); // To be deprecated Debug.Log("원래 되던 디바이스의 위 1: " + PluginImport.GetButtonState(0, 1)); Debug.Log("원래 되던 디바이스의 아래 2: " + PluginImport.GetButtonState(0, 2)); Debug.Log("안되던 디바이스의 위 1: " + PluginImport.GetButtonState(1, 1)); Debug.Log("안되던 디바이스의 아래 2: " + PluginImport.GetButtonState(1, 2)); }
void Update() { /***************************************************************/ //Act on the rigid body of the Manipulated object // if Mode = Manipulation Mode /***************************************************************/ if (PluginImport.GetMode() == 1) { ActivatingGrabbedObjectPropperties(); } /***************************************************************/ //Update Workspace as function of camera /***************************************************************/ //PluginImport.UpdateWorkspace(myHapticCamera.transform.rotation.eulerAngles.y); //To be deprecated //Update the Workspace as function of camera for (int i = 0; i < workspaceUpdateValue.Length; i++) { workspaceUpdateValue[i] = myHapticCamera.transform.rotation.eulerAngles.y; } PluginImport.UpdateHapticWorkspace(ConverterClass.ConvertFloatArrayToIntPtr(workspaceUpdateValue)); /***************************************************************/ //Update cube workspace /***************************************************************/ myGenericFunctionsClassScript.UpdateGraphicalWorkspace(); /***************************************************************/ //Haptic Rendering Loop /***************************************************************/ PluginImport.RenderHaptic(); //Associate the cursor object with the haptic proxy value myGenericFunctionsClassScript.GetProxyValues(); myGenericFunctionsClassScript.GetTouchedObject(); Debug.Log("Button 1: " + PluginImport.GetButton1State()); // To be deprecated Debug.Log("Button 2: " + PluginImport.GetButton2State()); // To be deprecated Debug.Log("Device 1: Button 1: " + PluginImport.GetButtonState(1, 1)); Debug.Log("Device 1: Button 2: " + PluginImport.GetButtonState(1, 2)); // if (PluginImport.GetButtonState(1, 2)) //{ // makeJengaBlocks(); //} if (PluginImport.GetButtonState(1, 1)) { Debug.Log("Device 1 : Button Up Pressed"); } else if (PluginImport.GetButtonState(1, 2)) { Debug.Log("Device 1 : Button Down Pressed"); } if (PluginImport.GetButtonState(2, 1)) { Debug.Log("Device 2 : Button Up Pressed"); } else if (PluginImport.GetButtonState(2, 2)) { Debug.Log("Device 2 : Button Down Pressed"); } const float rotSpeed = 1.0f; if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow)) { myHapticCamera.transform.RotateAround(Vector3.zero, new Vector3(0.0f, 1.0f, 0.0f), rotSpeed); } if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow)) { myHapticCamera.transform.RotateAround(Vector3.zero, new Vector3(0.0f, 1.0f, 0.0f), -rotSpeed); } }
void Update() { /***************************************************************/ //Update Workspace as function of camera /***************************************************************/ //PluginImport.UpdateWorkspace(myHapticCamera.transform.rotation.eulerAngles.y);//To be deprecated //Update the Workspace as function of camera for (int i = 0; i < workspaceUpdateValue.Length; i++) { workspaceUpdateValue[i] = myHapticCamera.transform.rotation.eulerAngles.y; } PluginImport.UpdateHapticWorkspace(ConverterClass.ConvertFloatArrayToIntPtr(workspaceUpdateValue)); /***************************************************************/ //Update cube workspace /***************************************************************/ myGenericFunctionsClassScript.UpdateGraphicalWorkspace(); /***************************************************************/ //Haptic Rendering Loop /***************************************************************/ PluginImport.RenderHaptic(); //Associate the cursor object with the haptic proxy value myGenericFunctionsClassScript.GetProxyValues(); //For the Puncture Mode effect if (PluginImport.GetMode() == 3) { //Debug.Log ("Contact state is set to " + PluginImport.GetContact()); //Debug.Log ("Penetration State " + PluginImport.GetPenetrationRatio()); double[] myScp = new double[3]; myScp = ConverterClass.ConvertIntPtrToDouble3(PluginImport.GetFirstScpPt()); //Debug.Log (" SCP " + myScp[0] + " " + myScp[1] + " " + myScp[2]); Vector3 posInjectionHole; posInjectionHole = ConverterClass.ConvertDouble3ToVector3(myScp); GameObject.Find("InjectionMarker").transform.position = posInjectionHole; /*double[] myProx = new double[3]; * myProx = ConverterClass.ConvertIntPtrToDouble3(PluginImport.GetProxyPosition()); * * Vector3 posProx; * posProx = ConverterClass.ConvertDouble3ToVector3(myProx); * GameObject.Find ("ProxyTipMarker").transform.position = posProx;*/ /*double[] myDev = new double[3]; * myDev = ConverterClass.ConvertIntPtrToDouble3(PluginImport.GetDevicePosition()); * * Vector3 posDevice; * posDevice = ConverterClass.ConvertDouble3ToVector3(myDev); * GameObject.Find ("DeviceTipMarker").transform.position = posDevice;*/ double[] myPinch = new double[3]; myPinch = ConverterClass.ConvertIntPtrToDouble3(PluginImport.GetPunctureDirection()); Vector3 start = new Vector3(); start = ConverterClass.ConvertDouble3ToVector3(myScp); Vector3 end = new Vector3(); end = ConverterClass.ConvertDouble3ToVector3(myPinch); end.Normalize(); Debug.DrawLine(start, start + end * maxPenetration, Color.green); //Ray Cast so we can determine the limitation of the puncture RaycastHit[] hits; hits = Physics.RaycastAll(start, end, maxPenetration); if (hits.Length != 0) { //Declare a float array to store the tissue layer float[] tissueLayers = new float[hits.Length]; //Declare a string array to store the name of the tissue layer string[] punctObjects = new string[hits.Length]; int nbLayer = 0; for (int i = 0; i < hits.Length; i++) { RaycastHit hit = hits[i]; //Only if the object is declared as touchable if (hit.collider.gameObject.tag == "Touchable") { tissueLayers[nbLayer] = hit.distance; punctObjects[nbLayer] = hit.collider.name; nbLayer++; } } /*Declaration of the Puncture Stack * Additionally, on the basis of the puncture stack components, the plugin setup a penetration restriction * - due to the fact that Proxy Method along such constraint line is not accurate - most probably due to the fact * that device position and proxy position differ because the constraint applies forces onto the device. * So, the plugin impedes the proxy to penetrate in underlying layer when their popthrough values is null */ SetPunctureStack(nbLayer, punctObjects, tissueLayers); } } }
void Start() { if (PluginImport.InitHapticDevice()) { Debug.Log("OpenGL Context Launched"); Debug.Log("Haptic Device Launched"); myGenericFunctionsClassScript.SetHapticWorkSpace(); myGenericFunctionsClassScript.GetHapticWorkSpace(); //Update Workspace as function of camera //PluginImport.UpdateWorkspace(myHapticCamera.transform.rotation.eulerAngles.y);//To be deprecated //Update the Workspace as function of camera for (int i = 0; i < workspaceUpdateValue.Length; i++) { workspaceUpdateValue[i] = myHapticCamera.transform.rotation.eulerAngles.y; } PluginImport.UpdateHapticWorkspace(ConverterClass.ConvertFloatArrayToIntPtr(workspaceUpdateValue)); //Set Mode of Interaction /* * Mode = 0 Contact * Mode = 1 Manipulation - So objects will have a mass when handling them * Mode = 2 Custom Effect - So the haptic device simulate vibration and tangential forces as power tools * Mode = 3 Puncture - So the haptic device is a needle that puncture inside a geometry */ PluginImport.SetMode(ModeIndex); //Show a text descrition of the mode myGenericFunctionsClassScript.IndicateMode(); //Set the touchable face(s) PluginImport.SetTouchableFace(ConverterClass.ConvertStringToByteToIntPtr(TouchableFace)); } else { Debug.Log("Haptic Device cannot be launched"); } /***************************************************************/ //Set Environmental Haptic Effect /***************************************************************/ // Viscous Force Example //myGenericFunctionsClassScript.SetEnvironmentViscosity (); myGenericFunctionsClassScript.SetEnvironmentFriction(); // Constant Force Example - We use this environmental force effect to simulate the weight of the cursor //myGenericFunctionsClassScript.SetEnvironmentConstantForce(); //Custom Force Effect Vibration Motor //myGenericFunctionsClassScript.SetVibrationMotor(); //Custom Force Effect Vibration at Contact//Good for p1ulsation //myGenericFunctionsClassScript.SetVibrationContact(); //Custom Tangential Force corresponding to that of a rotating power tool (e.g. Drill, Polisher, Grinder) // if tool is angled set direction to 0,1,0 otherwise it does not matter (Tool will be straight) //myGenericFunctionsClassScript.SetTangentialForce(); /***************************************************************/ //Setup the Haptic Geometry in the OpenGL context /***************************************************************/ myGenericFunctionsClassScript.SetHapticGeometry(); //Get the Number of Haptic Object //Debug.Log ("Total Number of Haptic Objects: " + PluginImport.GetHapticObjectCount()); /***************************************************************/ //Launch the Haptic Event for all different haptic objects /***************************************************************/ PluginImport.LaunchHapticEvent(); }
void Start() { blocks = new GameObject[height * 3]; if (jenga) { makeJengaBlocks(); } else { for (int i = 0; i < 5; i++) { float antX = init.transform.position.x; float antY = init.transform.position.y; float antZ = init.transform.position.z; init.transform.position = new Vector3(antX + 1.1f, antY + 0.4f, antZ); generarBloques(); } Invoke("quitarPiso", time); } if (PluginImport.InitHapticDevice()) { Debug.Log("OpenGL Context Launched"); Debug.Log("Haptic Device Launched"); myGenericFunctionsClassScript.SetHapticWorkSpace(); myGenericFunctionsClassScript.GetHapticWorkSpace(); //Update Workspace as function of camera //PluginImport.UpdateWorkspace(myHapticCamera.transform.rotation.eulerAngles.y); //To be deprecated //Update the Workspace as function of camera for (int i = 0; i < workspaceUpdateValue.Length; i++) { workspaceUpdateValue[i] = myHapticCamera.transform.rotation.eulerAngles.y; } PluginImport.UpdateHapticWorkspace(ConverterClass.ConvertFloatArrayToIntPtr(workspaceUpdateValue)); //Set Mode of Interaction /* * Mode = 0 Contact * Mode = 1 Manipulation - So objects will have a mass when handling them * Mode = 2 Custom Effect - So the haptic device simulate vibration and tangential forces as power tools * Mode = 3 Puncture - So the haptic device is a needle that puncture inside a geometry */ PluginImport.SetMode(ModeIndex); //Show a text descrition of the mode myGenericFunctionsClassScript.IndicateMode(); //Set the touchable face(s) PluginImport.SetTouchableFace(ConverterClass.ConvertStringToByteToIntPtr(TouchableFace)); } else { Debug.Log("Haptic Device cannot be launched"); } /***************************************************************/ //Set Environmental Haptic Effect /***************************************************************/ // Viscous Force Example myGenericFunctionsClassScript.SetEnvironmentViscosity(); // Constant Force Example - We use this environmental force effect to simulate the weight of the cursor myGenericFunctionsClassScript.SetEnvironmentConstantForce(); // Friction Force Example //myGenericFunctionsClassScript.SetEnvironmentFriction(); // Spring Force Example //myGenericFunctionsClassScript.SetEnvironmentSpring(); /***************************************************************/ //Setup the Haptic Geometry in the OpenGL context //And read haptic characteristics /***************************************************************/ myGenericFunctionsClassScript.SetHapticGeometry(); //Get the Number of Haptic Object //Debug.Log ("Total Number of Haptic Objects: " + PluginImport.GetHapticObjectCount()); /***************************************************************/ //Launch the Haptic Event for all different haptic objects /***************************************************************/ PluginImport.LaunchHapticEvent(); }