Пример #1
0
    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);
        }
    }
Пример #2
0
 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));
     }
 }
Пример #3
0
    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();
        }
    }