Beispiel #1
0
    void aicontroller_VicinityChanged(CameraBasedAction.CameraVisibilityChangeEventArgs e)
    {
        switch (e.Frustum)
        {
        case CameraBasedAction.CameraVisibilityChangeEventArgs.FrustumState.Enter:
        {
            if (e.ObjectInVicinity)
            {
                GetComponent <Renderer>().enabled = true;
            }
            else
            {
                GetComponent <Renderer>().enabled = false;
            }
            break;
        }

        case CameraBasedAction.CameraVisibilityChangeEventArgs.FrustumState.StayInside:
        {
            if (e.ObjectInVicinity)
            {
                GetComponent <Renderer>().enabled = true;
            }
            else
            {
                GetComponent <Renderer>().enabled = false;
            }
            break;
        }

        case CameraBasedAction.CameraVisibilityChangeEventArgs.FrustumState.Leave:
        {
            GetComponent <Renderer>().enabled = false;
            break;
        }
        }
    }
    void cameraAction_VicinityChanged(CameraBasedAction.CameraVisibilityChangeEventArgs e)
    {
        if (Visible)
        {
            switch (e.Frustum)
            {
            case CameraBasedAction.CameraVisibilityChangeEventArgs.FrustumState.Enter:
            {
                if (e.ObjectInVicinity)
                {
                    LowPoly.SetActive(false);
                    HighPoly.SetActive(true);
                    HighPoly.transform.position = transform.position;
                    HighPoly.transform.rotation = transform.rotation;
                    highpolyAnimator.speed      = animationFunction(this);
                    if (onUpdateFunction != null)
                    {
                        onUpdateFunction(this);
                    }
                }
                else
                {
                    HighPoly.SetActive(false);
                    LowPoly.SetActive(true);
                    LowPoly.transform.position = transform.position;
                    LowPoly.transform.rotation = transform.rotation;
                    lowpolyAnimator.speed      = animationFunction(this);
                    if (onUpdateFunction != null)
                    {
                        onUpdateFunction(this);
                    }
                }
                break;
            }

            case CameraBasedAction.CameraVisibilityChangeEventArgs.FrustumState.Leave:
            {
                LowPoly.SetActive(false);
                HighPoly.SetActive(false);
                break;
            }

            case CameraBasedAction.CameraVisibilityChangeEventArgs.FrustumState.StayInside:
            {
                if (e.ObjectInVicinity)
                {
                    LowPoly.SetActive(false);
                    HighPoly.SetActive(true);
                    HighPoly.transform.position = transform.position;
                    HighPoly.transform.rotation = transform.rotation;
                    highpolyAnimator.speed      = animationFunction(this);
                    if (onUpdateFunction != null)
                    {
                        onUpdateFunction(this);
                    }
                }
                else
                {
                    HighPoly.SetActive(false);
                    LowPoly.SetActive(true);
                    LowPoly.transform.position = transform.position;
                    LowPoly.transform.rotation = transform.rotation;
                    lowpolyAnimator.speed      = animationFunction(this);
                    if (onUpdateFunction != null)
                    {
                        onUpdateFunction(this);
                    }
                }
                break;
            }

            default:
            { break; }
            }
        }
        else // Object is not active
        {
            LowPoly.SetActive(false);
            HighPoly.SetActive(false);
        }
    }