//Haptic Properties generic function private void ReadHapticProperties(int ObjId, GameObject obj) { myHapticPropertiesScript = obj.transform.GetComponent <HapticProperties>(); if (myHapticPropertiesScript == null) //Set default Values { PluginImport.SetStiffness(ObjId, 1.0f); PluginImport.SetDamping(ObjId, 0.0f); PluginImport.SetStaticFriction(ObjId, 0.0f); PluginImport.SetDynamicFriction(ObjId, 0.0f); PluginImport.SetTangentialStiffness(ObjId, 0.0f); PluginImport.SetTangentialDamping(ObjId, 0.0f); PluginImport.SetPopThrough(ObjId, 0.0f); PluginImport.SetPuncturedStaticFriction(ObjId, 0.0f); PluginImport.SetPuncturedDynamicFriction(ObjId, 0.0f); PluginImport.SetMass(ObjId, 0.0f); PluginImport.SetFixed(ObjId, true); Debug.Log("Haptic Characteristics not set for " + obj.name); } else { PluginImport.SetHapticProperty(ObjId, ConverterClass.ConvertStringToByteToIntPtr("stiffness"), myHapticPropertiesScript.stiffness); PluginImport.SetHapticProperty(ObjId, ConverterClass.ConvertStringToByteToIntPtr("damping"), myHapticPropertiesScript.damping); PluginImport.SetHapticProperty(ObjId, ConverterClass.ConvertStringToByteToIntPtr("staticFriction"), myHapticPropertiesScript.staticFriction); PluginImport.SetHapticProperty(ObjId, ConverterClass.ConvertStringToByteToIntPtr("dynamicFriction"), myHapticPropertiesScript.dynamicFriction); PluginImport.SetHapticProperty(ObjId, ConverterClass.ConvertStringToByteToIntPtr("tangentialStiffness"), myHapticPropertiesScript.tangentialStiffness); PluginImport.SetHapticProperty(ObjId, ConverterClass.ConvertStringToByteToIntPtr("tangentialDamping"), myHapticPropertiesScript.tangentialDamping); PluginImport.SetHapticProperty(ObjId, ConverterClass.ConvertStringToByteToIntPtr("popThrough"), myHapticPropertiesScript.popThrough); PluginImport.SetHapticProperty(ObjId, ConverterClass.ConvertStringToByteToIntPtr("puncturedStaticFriction"), myHapticPropertiesScript.puncturedStaticFriction); PluginImport.SetHapticProperty(ObjId, ConverterClass.ConvertStringToByteToIntPtr("puncturedDynamicFriction"), myHapticPropertiesScript.puncturedDynamicFriction); PluginImport.SetHapticProperty(ObjId, ConverterClass.ConvertStringToByteToIntPtr("mass"), myHapticPropertiesScript.mass); PluginImport.SetHapticProperty(ObjId, ConverterClass.ConvertStringToByteToIntPtr("fixed"), System.Convert.ToInt32(myHapticPropertiesScript.fixedObj)); } }
//Collision detection void OnCollisionEnter(Collision collision) { //Haptic properties of the object we are colliding with HapticProperties props = collision.gameObject.GetComponentInChildren <HapticProperties>(); //Get Stiffness float stiffness = props.stiffness; //Set friction or viscosity effect string type; if (stiffness >= maxStiffness) { type = ForceManager.FRICTION; } else { type = ForceManager.VISCOSITY; } //Get current cursor position Vector3 cursorPosition = GameObject.Find("Cursor").transform.position; //Set friction anchor point and direction effect float[] position = new float[] { cursorPosition.x, cursorPosition.y, cursorPosition.z }; float[] direction = new float[] { -cursorPosition.x, -cursorPosition.y, -cursorPosition.z }; //Constant gain and magnitude float gain = 0.2f; ForceManager.SetEnvironmentForce(type, forceIndex, position, direction, gain, stiffness, 0, 0); Debug.Log("Force started with index " + forceIndex); }
public bool Equals(HapticProperties h2) { return((Stiffness == h2.Stiffness) && (Surface == h2.Surface) && // Friction (StaticFriction == h2.StaticFriction) && (DynamicFriction == h2.DynamicFriction) && (Level == h2.Level) && // Magnetic (MagneticDistance == h2.MagneticDistance) && (MagneticForce == h2.MagneticForce) && // Viscosity (Viscosity == h2.Viscosity) && (SticksplipStiffness == h2.SticksplipStiffness) && (SticksplipForce == h2.SticksplipForce) && (VibrationFreq == h2.VibrationFreq) && (VibrationAmplitude == h2.VibrationAmplitude)); }
//Haptic Properties generic function private void ReadHapticProperties(int ObjId, GameObject obj) { myHapticPropertiesScript = obj.transform.GetComponent<HapticProperties>(); if (myHapticPropertiesScript == null)//Set default Values { PluginImport.SetStiffness(ObjId, 1.0f); PluginImport.SetDamping(ObjId, 0.0f); PluginImport.SetStaticFriction(ObjId, 0.0f); PluginImport.SetDynamicFriction(ObjId, 0.0f); PluginImport.SetTangentialStiffness(ObjId, 0.0f); PluginImport.SetTangentialDamping(ObjId, 0.0f); PluginImport.SetPopThrough(ObjId, 0.0f); PluginImport.SetPuncturedStaticFriction(ObjId, 0.0f); PluginImport.SetPuncturedDynamicFriction(ObjId, 0.0f); PluginImport.SetMass(ObjId,0.0f); PluginImport.SetFixed(ObjId,true); Debug.Log ("Haptic Characteristics not set for " + obj.name); } else { PluginImport.SetHapticProperty(ObjId,ConverterClass.ConvertStringToByteToIntPtr("stiffness"),myHapticPropertiesScript.stiffness); PluginImport.SetHapticProperty(ObjId,ConverterClass.ConvertStringToByteToIntPtr("damping"),myHapticPropertiesScript.damping); PluginImport.SetHapticProperty(ObjId,ConverterClass.ConvertStringToByteToIntPtr("staticFriction"),myHapticPropertiesScript.staticFriction); PluginImport.SetHapticProperty(ObjId,ConverterClass.ConvertStringToByteToIntPtr("dynamicFriction"),myHapticPropertiesScript.dynamicFriction); PluginImport.SetHapticProperty(ObjId,ConverterClass.ConvertStringToByteToIntPtr("tangentialStiffness"),myHapticPropertiesScript.tangentialStiffness); PluginImport.SetHapticProperty(ObjId,ConverterClass.ConvertStringToByteToIntPtr("tangentialDamping"),myHapticPropertiesScript.tangentialDamping); PluginImport.SetHapticProperty(ObjId,ConverterClass.ConvertStringToByteToIntPtr("popThrough"),myHapticPropertiesScript.popThrough); PluginImport.SetHapticProperty(ObjId,ConverterClass.ConvertStringToByteToIntPtr("puncturedStaticFriction"),myHapticPropertiesScript.puncturedStaticFriction); PluginImport.SetHapticProperty(ObjId,ConverterClass.ConvertStringToByteToIntPtr("puncturedDynamicFriction"),myHapticPropertiesScript.puncturedDynamicFriction); PluginImport.SetHapticProperty(ObjId,ConverterClass.ConvertStringToByteToIntPtr("mass"),myHapticPropertiesScript.mass); PluginImport.SetHapticProperty(ObjId,ConverterClass.ConvertStringToByteToIntPtr("fixed"),System.Convert.ToInt32(myHapticPropertiesScript.fixedObj)); /*PluginImport.SetStiffness(ObjId, myHapticPropertiesScript.stiffness); PluginImport.SetDamping(ObjId, myHapticPropertiesScript.damping); PluginImport.SetStaticFriction(ObjId, myHapticPropertiesScript.staticFriction); PluginImport.SetDynamicFriction(ObjId, myHapticPropertiesScript.dynamicFriction); PluginImport.SetTangentialStiffness(ObjId, myHapticPropertiesScript.tangentialStiffness); PluginImport.SetTangentialDamping(ObjId, myHapticPropertiesScript.tangentialDamping); PluginImport.SetPopThrough(ObjId, myHapticPropertiesScript.popThrough); PluginImport.SetPuncturedStaticFriction(ObjId, myHapticPropertiesScript.puncturedStaticFriction); PluginImport.SetPuncturedDynamicFriction(ObjId, myHapticPropertiesScript.puncturedDynamicFriction); PluginImport.SetMass(ObjId,myHapticPropertiesScript.mass); PluginImport.SetFixed(ObjId,myHapticPropertiesScript.fixedObj); */ } }