public void ThisMethodIsntAllowedToBeNamedUpdateByUnity( Constraint constraint, Camera camera ) { if ( constraint == null || State != States.INITIALIZED ) return; if ( constraint.Type == ConstraintType.AngularLockJoint ) return; var sphereRadius = 0.05f; var cylinderRadius = 0.5f * sphereRadius; var distReferenceConnected = Vector3.Distance( constraint.AttachmentPair.ReferenceFrame.Position, constraint.AttachmentPair.ConnectedFrame.Position ); var cameraScale = Spawner.Utils.FindConstantScreenSizeScale( constraint.AttachmentPair.ReferenceFrame.Position, camera ); ReferenceSphere.SetActive( true ); ConnectedSphere.SetActive( true ); ConnectingCylinder.SetActive( distReferenceConnected > 1.0E-4f ); Spawner.Utils.SetSphereTransform( ReferenceSphere, constraint.AttachmentPair.ReferenceFrame.Position, Quaternion.identity, cameraScale * sphereRadius ); Spawner.Utils.SetSphereTransform( ConnectedSphere, constraint.AttachmentPair.ConnectedFrame.Position, Quaternion.identity, cameraScale * sphereRadius ); Spawner.Utils.SetCylinderTransform( ConnectingCylinder, constraint.AttachmentPair.ReferenceFrame.Position, constraint.AttachmentPair.ConnectedFrame.Position, cameraScale * cylinderRadius ); }
protected override bool Initialize() { const string shader = "Standard"; if ( GetComponent<Constraint>().Type == ConstraintType.AngularLockJoint ) return true; ReferenceSphere = Spawner.Create( Spawner.Primitive.Sphere, "PHR_ReferenceSphere", HideFlags.HideAndDontSave, shader ); ConnectedSphere = Spawner.Create( Spawner.Primitive.Sphere, "PHR_ConnectedSphere", HideFlags.HideAndDontSave, shader ); ConnectingCylinder = Spawner.Create( Spawner.Primitive.Cylinder, "PHR_ConnectingCylinder", HideFlags.HideAndDontSave, shader ); ReferenceSphere.transform.SetParent( gameObject.transform ); ConnectedSphere.transform.SetParent( gameObject.transform ); ConnectingCylinder.transform.SetParent( gameObject.transform ); Spawner.Utils.SetColor( ReferenceSphere, PickHandler.ReferenceSphereColor ); Spawner.Utils.SetColor( ConnectedSphere, PickHandler.ConnectedSphereColor ); Spawner.Utils.SetColor( ConnectingCylinder, PickHandler.ConnectingCylinderColor ); // We'll update this active state in the Update method. ReferenceSphere.SetActive( false ); ConnectedSphere.SetActive( false ); ConnectingCylinder.SetActive( false ); return true; }
public void ThisMethodIsntAllowedToBeNamedUpdateByUnity(Constraint constraint) { if (constraint == null || State != States.INITIALIZED) { return; } if (constraint.Type == ConstraintType.AngularLockJoint) { return; } const float sphereRadius = 0.05f; const float cylinderRadius = 0.5f * sphereRadius; float distReferenceConnected = Vector3.Distance(constraint.AttachmentPair.ReferenceFrame.Position, constraint.AttachmentPair.ConnectedFrame.Position); ReferenceSphere.SetActive(true); ConnectedSphere.SetActive(true); ConnectingCylinder.SetActive(distReferenceConnected > 1.0E-4f); Rendering.Spawner.Utils.SetSphereTransform(ReferenceSphere, constraint.AttachmentPair.ReferenceFrame.Position, Quaternion.identity, sphereRadius, true); Rendering.Spawner.Utils.SetSphereTransform(ConnectedSphere, constraint.AttachmentPair.ConnectedFrame.Position, Quaternion.identity, sphereRadius, true); Rendering.Spawner.Utils.SetCylinderTransform(ConnectingCylinder, constraint.AttachmentPair.ReferenceFrame.Position, constraint.AttachmentPair.ConnectedFrame.Position, cylinderRadius, true); }