Ejemplo n.º 1
0
    public void UpdateObjectHit(EventTrigger objectHit)
    {
        // current object is changed only if the state is hovering
        // Previous object is no longer hit
        if (currentObject != null &&
            objectHit != currentObject &&
            currentObjectState == ObjectState.Hovering) {
            currentObject.OnHoverOut();
        }

        if (objectHit != null &&
            objectHit != currentObject &&
            currentObjectState == ObjectState.Hovering) {
            currentObjectState = ObjectState.Hovering;
            objectHit.OnHoverIn();
        }

        if (currentObjectState == ObjectState.Hovering) {
            currentObject = objectHit;
        }

        if (currentObject == null) {
            return;
        }

        // We are calling the press only if the current object is being hovered
        if (Input.GetMouseButtonDown(0) &&
            currentObjectState == ObjectState.Hovering) {
            currentObjectState = ObjectState.Pressing;
            currentObject.OnPress();
        }

        // Only if we are currently pressing
        if (Input.GetMouseButtonUp(0) &&
            currentObjectState == ObjectState.Pressing) {
            currentObject.OnRelease();
            currentObjectState = ObjectState.Hovering;

            // Only if we are currently pressing and the object hit is the same we call the on click
            if (objectHit == currentObject) {
                currentObject.OnClick();
            }
        }
    }