static void ConvertCircles() { foreach (CircleCollider2D circle in FindObjectsOfType <CircleCollider2D>()) { GameObject ob = circle.gameObject; LPFixtureCircle lpcircle = Undo.AddComponent <LPFixtureCircle>(ob); CopyGeneric(circle, lpcircle); float mult = 1f; if (ob.transform.lossyScale.x != ob.transform.lossyScale.y) { if (ob.transform.lossyScale.x > ob.transform.lossyScale.y) { mult = ob.transform.lossyScale.x / ob.transform.lossyScale.y; } else { mult = ob.transform.lossyScale.y / ob.transform.lossyScale.x; } } lpcircle.Radius = circle.radius * mult; Undo.DestroyObjectImmediate(circle); Setupdynamics(ob); } }
private IEnumerator Spawn() { while (true) { if (bodylist.Count > amount) { bodylist[0].Delete(); bodylist.RemoveAt(0); } GameObject go = new GameObject("body"); go.transform.parent = transform; go.transform.position = transform.position; LPBody body = go.AddComponent <LPBody>(); bodylist.Add(body); LPFixtureCircle circle = go.AddComponent <LPFixtureCircle>(); circle.Density = 0.2f; circle.Radius = 0.1f; body.BodyType = LPBodyTypes.Dynamic; body.Initialise(lpman); LPAPIBody.ApplyForceToCentreOfBody(body.GetPtr(), SpawnVelocity.x, SpawnVelocity.y); yield return(new WaitForSeconds(spawninterval)); } }
void OnSceneGUI() { RoundedCornerShapes shape = (RoundedCornerShapes)target; shape.SetupBody(); if (shape.editModeOn) { if (Event.current.type == EventType.layout) { HandleUtility.AddDefaultControl(GUIUtility.GetControlID(GetHashCode(), FocusType.Passive)); } Gizmos.color = Color.white; float zoom = GetSceneCameraZoom(); //Ray rayo = HandleUtility.GUIPointToWorldRay(Event.current.mousePosition); //Vector3 pos = new Vector3(rayo.origin.x, rayo.origin.y, 0f); //Update mouse position Vector3 pos; Vector3 screenMousePos = new Vector3(Event.current.mousePosition.x, Camera.current.pixelHeight - Event.current.mousePosition.y); var plane = new Plane(Vector3.forward, shape.transform.position); var ray = Camera.current.ScreenPointToRay(screenMousePos); float hit; if (plane.Raycast(ray, out hit)) { pos = ray.GetPoint(hit); } else { return; } if (gridSnapOn) { float xMultiplier = (int)((pos.x / snapGridSize) + 0.5f); pos.x = xMultiplier * snapGridSize; float yMultiplier = (int)((pos.y / snapGridSize) + 0.5f); pos.y = yMultiplier * snapGridSize; } //Gizmos.DrawWireSphere(pos, currentRadius * zoom); Handles.DrawWireDisc(pos, Vector3.forward, currentRadius * zoom); if (Event.current.type == EventType.MouseUp && Event.current.isMouse && Event.current.button == 0) { Vector3 colliderOffset = pos - shape.transform.position; // Add a collider at this position LPFixtureCircle collider = Undo.AddComponent <LPFixtureCircle>(shape.gameObject); collider.Radius = currentRadius; collider.Offset = colliderOffset; } HandleUtility.Repaint(); } }