Ejemplo n.º 1
0
    static public void SetGroundDistanceExt(this Cover cover, float desiredDistance, float testedCollisionDistance)
    {
        MinMaxPair tmp = new MinMaxPair();

        tmp.Reset();

        Vector3 from  = cover.transform.position + Vector3.up * testedCollisionDistance * 0.5f;
        Vector3 right = cover.transform.right;

        CoverUtils.LineDistanceCast(from + right, from - right, Vector3.down, testedCollisionDistance, ref tmp);

        if (tmp.IsValid())
        {
            float dist = (desiredDistance - (tmp.m_MinValue - testedCollisionDistance * 0.5f));

            cover.transform.position += dist * Vector3.up;
        }
    }
Ejemplo n.º 2
0
    void OnGUI()
    {
        GUILayout.BeginVertical();
        {
            GUILayout.Space(8);

            int buttonSize = 110;

            GUILayout.BeginHorizontal("");
            {
                if (GUILayout.Button("Scan scene", GUILayout.Width(buttonSize)) == true)
                {
                    Scan();
                }

                GUI.enabled = CoverUtils.IsGameObjectSelected();
                if (GUILayout.Button("Scan selection", GUILayout.Width(buttonSize)) == true)
                {
                    ScanSelection();
                }
                GUI.enabled = true;
            }
            GUILayout.EndHorizontal();


            m_VisualizeTests = GUILayout.Toggle(m_VisualizeTests, "Visualize tests");

            GUILayout.Space(8);

            if (m_Covers >= 0)
            {
                GUILayout.BeginVertical("");
                {
                    GUILayout.Label("Statistics");
                    OnGUIBreak(true);
                    OnGUILine("Covers count", m_Covers);

                    if (m_Covers > 0)
                    {
                        OnGUILine("Left crouch", m_FlagCrouchLeft);
                        OnGUILine("Right crouch", m_FlagCrouchRight);
                        OnGUILine("Up crouch", m_FlagCrouchUp);
                        OnGUILine("Left stand", m_FlagStandLeft);
                        OnGUILine("Right stand", m_FlagStandRight);
                        OnGUILine("Jump up", m_FlagJumpUp);

                        if (m_DistanceToWallCrouch.IsValid())
                        {
                            OnGUIBreak(false);
                            OnGUILine("Min dist to wall (crouch)", m_DistanceToWallCrouch.m_MinValue);
                            OnGUILine("Max dist to wall (crouch)", m_DistanceToWallCrouch.m_MaxValue);
                        }
                        if (m_DistanceToWallStand.IsValid())
                        {
                            OnGUIBreak(false);
                            OnGUILine("Min dist to wall (stand)", m_DistanceToWallStand.m_MinValue);
                            OnGUILine("Max dist to wall (stand)", m_DistanceToWallStand.m_MaxValue);
                        }
                        if (m_DistanceCrouchCorner.IsValid())
                        {
                            OnGUIBreak(false);
                            OnGUILine("Min dist to corner (crouch)", m_DistanceCrouchCorner.m_MinValue);
                            OnGUILine("Max dist to corner (crouch)", m_DistanceCrouchCorner.m_MaxValue);
                        }
                        if (m_DistanceStandCorner.IsValid())
                        {
                            OnGUIBreak(false);
                            OnGUILine("Min dist to corner (stand)", m_DistanceStandCorner.m_MinValue);
                            OnGUILine("Max dist to corner (stand)", m_DistanceStandCorner.m_MaxValue);
                        }
                    }

                    OnGUIBreak(true);
                }
                GUILayout.EndVertical();
            }
        }
        GUILayout.EndVertical();
    }