// Copy list of joints and edges to the clipboard
        // Mostly copied from BridgeSelectionSet
        private static void CopyToClipboard(List <BridgeJoint> m_Joints, List <BridgeEdge> m_Edges)
        {
            ClipboardManager.ClearClipboard();
            ClipboardManager.SetContainerPosition(GameUI.SnapPosToGrid(Utils.GetWorldPointFromScreenPos(Input.mousePosition)));
            ClipboardManager.AlignClipboardAnchors();
            Vector2 vector = CalculateSelectSetCenter(m_Joints, m_Edges);

            foreach (BridgeJoint joint in m_Joints)
            {
                if (!joint.m_IsAnchor || BridgeEdges.EdgeIsConnectedToJoint(joint))
                {
                    ClipboardManager.AddJoint(Utils.V3toV2(joint.transform.position) - vector, joint);
                }
            }
            foreach (BridgeEdge edge in m_Edges)
            {
                float z      = edge.transform.localEulerAngles.z;
                float length = edge.GetLength();
                ClipboardManager.AddEdge(Utils.V3toV2(edge.transform.position) - vector, z, length, edge);
                if (!m_Joints.Contains(edge.m_JointA))
                {
                    ClipboardManager.AddJoint(Utils.V3toV2(edge.m_JointA.transform.position) - vector, edge.m_JointA);
                }
                if (!m_Joints.Contains(edge.m_JointB))
                {
                    ClipboardManager.AddJoint(Utils.V3toV2(edge.m_JointB.transform.position) - vector, edge.m_JointB);
                }
            }
        }
示例#2
0
        static void MenuDoBridgeEdges()
        {
            BridgeEdges instance = EditorToolbarLoader.GetInstance <BridgeEdges>();

            if (instance != null)
            {
                UnityEditor.ProBuilder.EditorUtility.ShowNotification(instance.DoAction().notification);
            }
        }
            static void Postfix()
            {
                if (!modEnabled.Value)
                {
                    return;
                }
                if (!replayStress.Value)
                {
                    return;
                }

                if (Profile.m_StressViewEnabled)
                {
                    BridgeEdges.SetStressColor();
                }
            }
            static void Prefix(GameState state)
            {
                if (!modEnabled.Value)
                {
                    return;
                }

                if (GameStateManager.GetState() == GameState.SIM && state == GameState.BUILD)
                {
                    if (markWorst.Value && GameStateSim.m_NumBridgeBreaks == 0)
                    {
                        float            worstStress = 0.0f;
                        PolyPhysics.Edge worstEdge   = null;
                        foreach (var edge in maxStress)
                        {
                            if (Mathf.Abs(edge.Value) > worstStress)
                            {
                                worstStress = Mathf.Abs(edge.Value);
                                worstEdge   = edge.Key;
                            }
                        }
                        BridgeEdge byPhysicsEdge = BridgeEdges.FindByPhysicsEdge(worstEdge);
                        if (byPhysicsEdge && worstStress > 0.01f)
                        {
                            BridgeEdgeProxy proxy = new BridgeEdgeProxy(byPhysicsEdge);
                            proxy.m_NodeA_Guid = (UnityEngine.Object)byPhysicsEdge.m_StartSimJointA != (UnityEngine.Object)null ? byPhysicsEdge.m_StartSimJointA.m_Guid : proxy.m_NodeA_Guid;
                            proxy.m_NodeB_Guid = (UnityEngine.Object)byPhysicsEdge.m_StartSimJointB != (UnityEngine.Object)null ? byPhysicsEdge.m_StartSimJointB.m_Guid : proxy.m_NodeB_Guid;
                            GameStateBuild.SetFirstBreakEdge(proxy);
                        }
                    }
                }

                originalColor.Clear();
                maxStress.Clear();
                curStress.Clear();
            }
示例#5
0
        static bool MenuVerifyBridgeEdges()
        {
            BridgeEdges instance = EditorToolbarLoader.GetInstance <BridgeEdges>();

            return(instance != null && instance.enabled);
        }