// 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); }
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; }
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; } } }