Esempio n. 1
0
    // Override: MonoBehaviour::Awake
    void Awake()
    {
        // Local variables
        OnAreaKeyEvent[] entries = null;

        // Get player
        m_player = GameObject.FindWithTag(Tags.TAG_PLAYER);
        if (m_player == null)
        {
            Debug.LogError("Player not found!");
            return;
        }

        // Get entries
        entries = gameObject.GetComponentsInChildren <OnAreaKeyEvent>();
        if (entries == null || entries.Length != 2)
        {
            Debug.LogError("Portals must contain 2 entries!");
            return;
        }

        // Copy objects
        m_entry0 = entries[0];
        m_entry1 = entries[1];

        // Add event: first entry
        m_entry0.OnKeyEventPressed += () =>
        {
            // Clear flag and trigger
            if (m_canBeTriggered == false)
            {
                return;
            }
            m_canBeTriggered = false;
            onEnter(m_entry0, m_entry1);
        };
        m_entry0.OnKeyEventReleased += () =>
        {
            // Set flag
            m_canBeTriggered = true;
        };

        // Add event: second entry
        m_entry1.OnKeyEventPressed += () =>
        {
            // Clear flag and trigger
            if (m_canBeTriggered == false)
            {
                return;
            }
            m_canBeTriggered = false;
            onEnter(m_entry1, m_entry0);
        };
        m_entry1.OnKeyEventReleased += () =>
        {
            // Set flag
            m_canBeTriggered = true;
        };
    }
Esempio n. 2
0
    // Will be called as soon as one key-event is being triggered
    private void onEnter(OnAreaKeyEvent _src, OnAreaKeyEvent _dst)
    {
        // Check parameter
        if (_dst == null)
        {
            return;
        }

        // Move player to destination
        m_player.gameObject.transform.position = _dst.gameObject.transform.position;
    }
Esempio n. 3
0
    // Override: MonoBehaviour::Awake
    void Awake()
    {
        // Check area object
        if (m_areaKeyEvent == null)
        {
            Debug.LogWarning("The area-key-event must not be null!");
            return;
        }

        // Add event
        m_areaKeyEvent.OnKeyEventPressed += () =>
        {
            // Spawn object
            spawnObject();

            // Kill area key-event
            if (m_areaKeyEvent != null)
            {
                GameObject.Destroy(m_areaKeyEvent);
                m_areaKeyEvent = null;
            }
        };
    }
Esempio n. 4
0
 // Override: MonoBehaviour::OnDestroy
 void OnDestroy()
 {
     // Remove key-event
     m_areaKeyEvent = null;
 }