Ejemplo n.º 1
0
    public void Migrate10()
    {
        Debug.Log("WwiseUnity: AkGameObj.Migrate10");

        if (m_posOffsetData != null)
        {
            m_positionOffsetData = new AkGameObjPositionOffsetData(true);
            m_positionOffsetData.positionOffset = m_posOffsetData.positionOffset;
            m_posOffsetData = null;
        }
    }
Ejemplo n.º 2
0
    public void Migrate10()
    {
        UnityEngine.Debug.Log("WwiseUnity: AkGameObj.Migrate10 for " + gameObject.name);

        if (m_posOffsetData != null)
        {
            m_positionOffsetData = new AkGameObjPositionOffsetData(true);
            m_positionOffsetData.positionOffset = m_posOffsetData.positionOffset;
            m_posOffsetData = null;
        }
    }
    public override void OnInspectorGUI()
    {
        // Unity tries to construct a AkGameObjPositionOffsetData all the time. Need this ugly workaround
        // to prevent it from doing this.
        if (m_AkGameObject.m_positionOffsetData != null)
        {
            if (!m_AkGameObject.m_positionOffsetData.KeepMe)
            {
                m_AkGameObject.m_positionOffsetData = null;
            }
        }

        AkGameObjPositionOffsetData positionOffsetData = m_AkGameObject.m_positionOffsetData;
        Vector3 positionOffset = Vector3.zero;

        EditorGUI.BeginChangeCheck();

        GUILayout.BeginVertical("Box");

        bool applyPosOffset = EditorGUILayout.Toggle("Apply Position Offset:", positionOffsetData != null);

        if (applyPosOffset != (positionOffsetData != null))
        {
            positionOffsetData = applyPosOffset ? new AkGameObjPositionOffsetData(true) : null;
        }

        if (positionOffsetData != null)
        {
            positionOffset = EditorGUILayout.Vector3Field("Position Offset", positionOffsetData.positionOffset);

            GUILayout.Space(EditorGUIUtility.standardVerticalSpacing);

            if (hideDefaultHandle)
            {
                if (GUILayout.Button("Show Main Transform"))
                {
                    hideDefaultHandle     = false;
                    DefaultHandles.Hidden = hideDefaultHandle;
                }
            }
            else if (GUILayout.Button("Hide Main Transform"))
            {
                hideDefaultHandle     = true;
                DefaultHandles.Hidden = hideDefaultHandle;
            }
        }
        else if (hideDefaultHandle)
        {
            hideDefaultHandle     = false;
            DefaultHandles.Hidden = hideDefaultHandle;
        }

        GUILayout.EndVertical();

        GUILayout.Space(EditorGUIUtility.standardVerticalSpacing);

        GUILayout.BeginVertical("Box");

        bool isEnvironmentAware = EditorGUILayout.Toggle("Environment Aware:", m_AkGameObject.isEnvironmentAware);

        GUILayout.EndVertical();

        if (EditorGUI.EndChangeCheck())
        {
            Undo.RecordObject(target, "AkGameObj Parameter Change");

            m_AkGameObject.m_positionOffsetData = positionOffsetData;

            if (positionOffsetData != null)
            {
                m_AkGameObject.m_positionOffsetData.positionOffset = positionOffset;
            }

            m_AkGameObject.isEnvironmentAware = isEnvironmentAware;
        }

        if (isEnvironmentAware)
        {
            RigidbodyCheck(m_AkGameObject.gameObject);
        }

        GUILayout.Space(EditorGUIUtility.standardVerticalSpacing);

        GUILayout.BeginVertical("Box");
        {
            EditorGUI.BeginChangeCheck();
            EditorGUILayout.PropertyField(listeners);
            if (EditorGUI.EndChangeCheck())
            {
                serializedObject.ApplyModifiedProperties();
            }
        }
        GUILayout.EndVertical();
    }
Ejemplo n.º 4
0
    public override void OnInspectorGUI()
    {
        // Unity tries to construct a AkGameObjPositionOffsetData all the time. Need this ugly workaround
        // to prevent it from doing this.
        if (m_AkGameObject.m_positionOffsetData != null)
        {
            if (!m_AkGameObject.m_positionOffsetData.KeepMe)
            {
                m_AkGameObject.m_positionOffsetData = null;
            }
        }

        AkGameObjPositionOffsetData positionOffsetData = m_AkGameObject.m_positionOffsetData;
        Vector3 positionOffset = Vector3.zero;

#if UNITY_5_3_OR_NEWER
        EditorGUI.BeginChangeCheck();
#endif

        GUILayout.BeginVertical("Box");

        bool applyPosOffset = EditorGUILayout.Toggle("Apply Position Offset:", positionOffsetData != null);

        if (applyPosOffset != (positionOffsetData != null))
        {
            positionOffsetData = applyPosOffset ? new AkGameObjPositionOffsetData(true) : null;
        }

        if (positionOffsetData != null)
        {
            positionOffset = EditorGUILayout.Vector3Field("Position Offset", positionOffsetData.positionOffset);

            GUILayout.Space(2);

            if (hideDefaultHandle)
            {
                if (GUILayout.Button("Show Main Transform"))
                {
                    hideDefaultHandle     = false;
                    DefaultHandles.Hidden = hideDefaultHandle;
                }
            }
            else if (GUILayout.Button("Hide Main Transform"))
            {
                hideDefaultHandle     = true;
                DefaultHandles.Hidden = hideDefaultHandle;
            }
        }
        else if (hideDefaultHandle)
        {
            hideDefaultHandle     = false;
            DefaultHandles.Hidden = hideDefaultHandle;
        }

        GUILayout.EndVertical();

        GUILayout.Space(3);

        GUILayout.BeginVertical("Box");

        bool isEnvironmentAware = EditorGUILayout.Toggle("Environment Aware:", m_AkGameObject.isEnvironmentAware);

        if (isEnvironmentAware && m_AkGameObject.GetComponent <Rigidbody>() == null)
        {
            GUIStyle style = new GUIStyle();
            style.normal.textColor = Color.red;
            style.wordWrap         = true;
            GUILayout.Label("Objects affected by Environment need to have a RigidBody attached.", style);
            if (GUILayout.Button("Add Rigidbody!"))
            {
                Rigidbody rb = m_AkGameObject.gameObject.AddComponent <Rigidbody>();
                rb.useGravity  = false;
                rb.isKinematic = true;
            }
        }

        GUILayout.EndVertical();

        GUILayout.Space(3);

        string[] maskLabels = new string[AkSoundEngine.AK_NUM_LISTENERS];
        for (int i = 0; i < AkSoundEngine.AK_NUM_LISTENERS; i++)
        {
            maskLabels[i] = "L" + i;
        }

        int listenerMask = EditorGUILayout.MaskField("Listeners", m_AkGameObject.listenerMask, maskLabels);

#if UNITY_5_3_OR_NEWER
        if (EditorGUI.EndChangeCheck())
#else
        if (GUI.changed)
#endif
        {
#if UNITY_5_3_OR_NEWER
            Undo.RecordObject(target, "AkGameObj Parameter Change");
#endif
            m_AkGameObject.m_positionOffsetData = positionOffsetData;

            if (positionOffsetData != null)
            {
                m_AkGameObject.m_positionOffsetData.positionOffset = positionOffset;
            }

            m_AkGameObject.isEnvironmentAware = isEnvironmentAware;
            m_AkGameObject.listenerMask       = listenerMask;

#if !UNITY_5_3_OR_NEWER
            EditorUtility.SetDirty(m_AkGameObject);
#endif
        }
    }