示例#1
0
    // set render texture or colors if render texture is used (stills handled in AMTake)
    private void setRenderTexture(AMCameraFade cf, float frame, int firstTargetType, int secondTargetType, bool isReversed, AMCameraSwitcherAction action, bool isPreview)
    {
        Camera firstCamera  = (isReversed ? action.endCamera : action.startCamera);
        Camera secondCamera = (isReversed ? action.startCamera : action.endCamera);

        if (isReversed && frame == action.startFrame)
        {
            if (firstTargetType == 0)
            {
                AMTween.SetTopCamera(firstCamera, cachedAllCameras);
            }
        }
        else
        {
            if (secondTargetType == 0)
            {
                AMTween.SetTopCamera(secondCamera, cachedAllCameras);
            }
        }

        if (action.still || (firstTargetType != 0 && secondTargetType != 0))
        {
            return;
        }

        bool isPro = AMTake.isProLicense;

        // first target is camera, set render texture
        if (firstTargetType == 0)
        {
            // if should update render texture
            if (/*!cf.tex ||*/ cf.shouldUpdateRenderTexture || (isPro && (!firstCamera.targetTexture || !cf.isRenderTextureSetupFor(firstCamera) /*|| firstCamera.targetTexture != cf.tex*/)))
            {
                if (isPro)
                {
                    cf.setupRenderTexture(firstCamera);
                }
                else
                {
                    cf.useRenderTexture = false;
                    // show place-holder if non-pro
                    cf.colorTex    = Color.white;
                    cf.tex2d       = (Texture2D)Resources.Load("am_indie_placeholder");
                    cf.hasColorTex = false;
                    if (!cf.placeholder)
                    {
                        cf.placeholder = true;
                    }
                }
            }
        }
    }
    private static bool setInitialValue(JSONInit init)
    {
        switch (init.type)
        {
        case "position":
            if (init.position == null || init.go == null)
            {
                return(false);
            }
            getGO(init.go).transform.position = init.position.toVector3();
            break;

        case "rotation":
            if (init.rotation == null || init.go == null)
            {
                return(false);
            }
            getGO(init.go).transform.rotation = init.rotation.toQuaternion();
            break;

        case "orientation":
            // track4OBJ.transform.LookAt (new Vector3(0f, 1f, -5f)); // Set Initial Orientation
            if (init.position == null || init.go == null)
            {
                return(false);
            }
            getGO(init.go).transform.LookAt(init.position.toVector3());
            break;

        case "propertymorph":
            if (init.go == null || init.floats == null)
            {
                return(false);
            }
            AMTween.SetMorph(getCMP(init.go, "MegaMorph"), getMethodInfo(init.go, "MegaMorph", "SetPercent", new string[] { "System.Int32", "System.Single" }), init.floats);
            break;

        case "propertyint":
            if (!setInitialValueForProperty(init, init._int))
            {
                return(false);
            }
            break;

        case "propertylong":
            if (!setInitialValueForProperty(init, init._long))
            {
                return(false);
            }
            break;

        case "propertyfloat":
            if (init.floats == null || init.floats.Length <= 0)
            {
                return(false);
            }
            if (!setInitialValueForProperty(init, init.floats[0]))
            {
                return(false);
            }
            break;

        case "propertydouble":
            if (!setInitialValueForProperty(init, init._double))
            {
                return(false);
            }
            break;

        case "propertyvect2":
            if (init._vect2 == null)
            {
                return(false);
            }
            if (!setInitialValueForProperty(init, init._vect2.toVector2()))
            {
                return(false);
            }
            break;

        case "propertyvect3":
            if (init.position == null)
            {
                return(false);
            }
            if (!setInitialValueForProperty(init, init.position.toVector3()))
            {
                return(false);
            }
            break;

        case "propertycolor":
            if (init._color == null)
            {
                return(false);
            }
            if (!setInitialValueForProperty(init, init._color.toColor()))
            {
                return(false);
            }
            break;

        case "propertyrect":
            if (init._rect == null)
            {
                return(false);
            }
            if (!setInitialValueForProperty(init, init._rect.toRect()))
            {
                return(false);
            }
            break;

        case "cameraswitcher":
            // setup all cameras
            if (init.strings != null && init.strings.Length > 0)
            {
                allCameras = new Camera[init.strings.Length];
                for (int i = 0; i < init.strings.Length; i++)
                {
                    allCameras[i] = getGO(init.strings[i]).GetComponent <Camera>();
                }
            }
            // setup all textures

            /*if(init.stringsExtra != null && init.stringsExtra.Length > 0) {
             *      allTextures = new Texture[init.stringsExtra.Length];
             *      for(int i=0;i<init.stringsExtra.Length;i++) {
             *              allTextures[i] = AMTween.LoadTexture2D(init.stringsExtra[i]);
             *      }
             * }*/
            // set top camera
            if (init.typeExtra == "camera")
            {
                if (init.go == null)
                {
                    return(false);
                }
                AMTween.SetTopCamera(getGO(init.go).GetComponent <Camera>(), allCameras);
            }
            else
            {
                if (init._color == null)
                {
                    return(false);
                }
                AMTween.ShowColor(init._color.toColor());
            }
            break;

        default:
            Debug.LogWarning("Animator: Error parsing initial value type '" + init.type + "'");
            return(false);
        }
        return(true);
    }
示例#3
0
    private void previewCameraFade(float frame, AMCameraSwitcherAction action, bool isPreview)
    {
        // if transition is None, show end camera / color
        if (action.cameraFadeType == (int)AMTween.Fade.None)
        {
            // reset camera fade if visible
            // camera
            if (action.endTargetType == 0)
            {
                if (action.endCamera)
                {
                    AMTween.SetTopCamera(action.endCamera, cachedAllCameras);
                }
                AMCameraFade.reset();
            }
            else
            {
                showColor(action.endColor, isPreview);
            }
            return;
        }
        // Get camerafade
        AMCameraFade cf = AMCameraFade.getCameraFade(isPreview);

        if (Application.isPlaying)
        {
            cf.keepAlivePreview = true;
        }
        cf.isReset = false;
        bool isReversed       = action.isReversed();
        int  firstTargetType  = (isReversed ? action.endTargetType : action.startTargetType);
        int  secondTargetType = (isReversed ? action.startTargetType : action.endTargetType);

        // Set render texture or colors if render texture is used
        setRenderTexture(cf, frame, firstTargetType, secondTargetType, isReversed, action, isPreview);
        setColors(cf, firstTargetType, secondTargetType, isReversed, action);

        if (cf.irisShape != action.irisShape)
        {
            cf.irisShape = action.irisShape;
        }
        cf.mode = action.cameraFadeType;
        cf.setupMaterials();
        cf.r = action.cameraFadeParameters.ToArray();

        // calculate and set value
        AMTween.EasingFunction ease;
        AnimationCurve         curve = null;

        if (action.hasCustomEase())
        {
            ease  = AMTween.customEase;
            curve = action.easeCurve;
        }
        else
        {
            ease = AMTween.GetEasingFunction((AMTween.EaseType)action.easeType);
        }
        float percentage = (float)(frame - action.startFrame) / (float)(action.endFrame - action.startFrame);
        float value      = ease(1f, 0f, percentage, curve);

        cf.value   = value;
        cf.percent = percentage;
    }
示例#4
0
    public override void previewFrame(float frame, AMTrack extraTrack = null)
    {
        if (cache == null || cache.Count <= 0)
        {
            return;
        }

        bool isPreview = !Application.isPlaying;

        //GameObject go = GameObject.Find ("AMCameraFade");
        //AMCameraFade cf = null;
        //if(go) cf = (AMCameraFade) go.GetComponent(typeof(AMCameraFade));


        for (int i = 0; i < cache.Count; i++)
        {
            // before first frame
            if (frame <= (cache[i] as AMCameraSwitcherAction).startFrame)
            {
                //if(cf) DestroyImmediate(cf.gameObject);
                AMCameraFade.reset();
                if (!(cache[i] as AMCameraSwitcherAction).hasStartTarget())
                {
                    return;
                }

                if ((cache[i] as AMCameraSwitcherAction).startTargetType == 0)
                {
                    //(cache[i] as AMCameraSwitcherAction).startCamera.targetTexture = null;
                    AMTween.SetTopCamera((cache[i] as AMCameraSwitcherAction).startCamera, cachedAllCameras);
                }
                else
                {
                    showColor((cache[i] as AMCameraSwitcherAction).startColor, isPreview);
                    // or color # TO DO #
                }

                return;
                // between first and last frame
            }
            else if (frame <= (cache[i] as AMCameraSwitcherAction).endFrame)
            {
                if (!(cache[i] as AMCameraSwitcherAction).hasStartTarget() || !(cache[i] as AMCameraSwitcherAction).hasEndTarget())
                {
                    return;
                }
                // targets are equal
                if ((cache[i] as AMCameraSwitcherAction).targetsAreEqual())
                {
                    //if(cf) DestroyImmediate(cf.gameObject);
                    AMCameraFade.reset();
                    if ((cache[i] as AMCameraSwitcherAction).startTargetType == 0)
                    {
                        // use camera (cache[i] as AMCameraSwitcherAction) startTarget
                        //(cache[i] as AMCameraSwitcherAction).startCamera.targetTexture = null;
                        // if not first frame, set top camera
                        AMTween.SetTopCamera((cache[i] as AMCameraSwitcherAction).startCamera, cachedAllCameras);
                    }
                    else
                    {
                        showColor((cache[i] as AMCameraSwitcherAction).startColor, isPreview);
                        // or color # TO DO #
                    }
                }
                else
                {
                    //if((cache[i] as AMCameraSwitcherAction).endTargetType == 0) (cache[i] as AMCameraSwitcherAction).endCamera.targetTexture = null;
                    AMCameraFade.clearRenderTexture();
                    // preview transition: (cache[i] as AMCameraSwitcherAction).cameraFadeType
                    previewCameraFade(frame, (cache[i] as AMCameraSwitcherAction), isPreview);
                }
                return;
                // after last frame
            }
            else if (i == cache.Count - 2)
            {
                //if(cf) DestroyImmediate(cf.gameObject);
                AMCameraFade.reset();
                if (!(cache[i] as AMCameraSwitcherAction).hasEndTarget())
                {
                    return;
                }
                // use camera (cache[i] as AMCameraSwitcherAction) endTarget
                if ((cache[i] as AMCameraSwitcherAction).endTargetType == 0)
                {
                    // use camera (cache[i] as AMCameraSwitcherAction) startTarget
                    //(cache[i] as AMCameraSwitcherAction).endCamera.targetTexture = null;
                    AMTween.SetTopCamera((cache[i] as AMCameraSwitcherAction).endCamera, cachedAllCameras);
                }
                else
                {
                    showColor((cache[i] as AMCameraSwitcherAction).endColor, isPreview);
                    // or color # TO DO #
                }
                return;
            }
        }
    }