private void RefreshColliders() { // Initialize new collider array Collider[] grabColliders = new Collider[1]; grabColliders = NonConvexMeshCollider.Calculate(gameObject); // If there is no OVRGrabbable, we can't make these colliders meaningful PublicOVRGrabbable ovr = GetComponent <PublicOVRGrabbable>(); if (ovr == null) { ovr = gameObject.AddComponent <PublicOVRGrabbable>(); } ovr.M_GrabPoints = grabColliders; }
private void generateSingleSplinter(int[] tris, Transform parent) { Vector3[] v = new Vector3[3]; Vector3[] n = new Vector3[3]; int[] t = new int[6]; v[0] = Vector3.zero; v[1] = vertices[tris[1]] - vertices[tris[0]]; v[2] = vertices[tris[2]] - vertices[tris[0]]; n[0] = normals[t[0]]; n[1] = normals[t[1]]; n[2] = normals[t[2]]; t[0] = 0; t[1] = 1; t[2] = 2; t[3] = 2; t[4] = 1; t[5] = 0; Mesh m = new Mesh(); m.vertices = v; m.normals = n; m.triangles = t; GameObject obj = new GameObject(); obj.transform.position = new Vector3(vertices[tris[0]].x * transform.localScale.x + transform.position.x, vertices[tris[0]].y * transform.localScale.y + transform.position.y, transform.position.z); obj.transform.RotateAround(transform.position, transform.up, transform.rotation.eulerAngles.y); obj.transform.localScale = transform.localScale; obj.transform.rotation = transform.rotation; obj.layer = layer.value; obj.name = "Glass Splinter"; if (destroySplintersTime > 0) { Destroy(obj, destroySplintersTime); } if (preCalculate == true) { obj.transform.parent = parent; } if (hideSplintersInHierarchy) { obj.hideFlags = HideFlags.HideInHierarchy; } splinters.Add(obj); MeshFilter mf = obj.AddComponent <MeshFilter>(); mf.mesh = m; NonConvexMeshCollider col = obj.AddComponent <NonConvexMeshCollider>(); // changed: FW: was: col = obj.AddComponent<MeshCollider>(); //col.inflateMesh = true; // changed: FW //col.convex = false; // changed FW if (destroyPhysicsTime > 0 && destroyColliderWithPhysics) { Destroy(col, destroyPhysicsTime); } Rigidbody rigid = obj.AddComponent <Rigidbody>(); rigid.centerOfMass = (v[0] + v[1] + v[2]) / 3f; if (addTorques && preCalculate == false) { rigid.AddTorque(new Vector3(Random.value > 0.5f ? Random.value * 50 : -Random.value * 50, Random.value > 0.5f ? Random.value * 50 : -Random.value * 50, Random.value > 0.5f ? Random.value * 50 : -Random.value * 50)); } if (destroyPhysicsTime > 0) { Destroy(rigid, destroyPhysicsTime); } MeshRenderer mr = obj.AddComponent <MeshRenderer>(); mr.materials = GetComponent <Renderer>().materials; }