public RotationAxis Initialize(RuntimeTransformHandle p_runtimeHandle, Vector3 p_axis, Vector3 p_perp, Color p_color) { _parentTransformHandle = p_runtimeHandle; _axis = p_axis; _perp1 = p_perp; _perp2 = Vector3.Cross(_axis, _perp1); _defaultColor = p_color; InitializeMaterial(); transform.SetParent(p_runtimeHandle.transform, false); GameObject o = new GameObject(); o.transform.SetParent(transform, false); MeshRenderer mr = o.AddComponent <MeshRenderer>(); mr.material = _material; MeshFilter mf = o.AddComponent <MeshFilter>(); mf.mesh = MeshUtils.CreateTorus(2f, .02f, 32, 6); MeshCollider mc = o.AddComponent <MeshCollider>(); mc.sharedMesh = MeshUtils.CreateTorus(2f, .1f, 32, 6); o.transform.localRotation = Quaternion.FromToRotation(Vector3.up, _axis); return(this); }
public RotationAxis Initialize(RuntimeTransformHandle p_runtimeHandle, Vector3 p_axis, Vector3 p_perp, Color p_color) { _parentTransformHandle = p_runtimeHandle; _axis = p_axis; _perp = p_perp; _defaultColor = p_color; InitializeMaterial(); transform.SetParent(p_runtimeHandle.transform, false); GameObject o = new GameObject(); o.transform.SetParent(transform, false); MeshRenderer mr = o.AddComponent <MeshRenderer>(); mr.material = _material; MeshFilter mf = o.AddComponent <MeshFilter>(); mf.mesh = MeshUtils.CreateTorus(2f, .02f, 32, 6); MeshCollider mc = o.AddComponent <MeshCollider>(); mc.sharedMesh = MeshUtils.CreateTorus(2f, .1f, 32, 6); o.transform.localRotation = Quaternion.FromToRotation(Vector3.up, _axis); o.layer = p_runtimeHandle.raycastLayer; o = new GameObject(); o.transform.SetParent(transform, false); mr = o.AddComponent <MeshRenderer>(); mr.material = new Material(Shader.Find("sHTiF/HandleShader")); mr.material.color = new Color(1, 1, 0, .5f); _arcMesh = o.AddComponent <MeshFilter>(); o.transform.localRotation = Quaternion.FromToRotation(Vector3.up, _axis); o.layer = p_runtimeHandle.raycastLayer; o.SetActive(false); return(this); }