// set render texture or colors if render texture is used (stills handled in AMTake) private void setRenderTexture(AMITarget itarget, AMCameraFade cf, float frame, int firstTargetType, int secondTargetType, bool isReversed, AMCameraSwitcherKey action) { Camera firstCamera = (isReversed ? action.getCameraEnd(itarget) : action.getCamera(itarget)); Camera secondCamera = (isReversed ? action.getCamera(itarget) : action.getCameraEnd(itarget)); if(isReversed && frame == action.frame) { if(firstTargetType == 0) AMUtil.SetTopCamera(firstCamera, GetCachedCameras(itarget)); } else { if(secondTargetType == 0) AMUtil.SetTopCamera(secondCamera, GetCachedCameras(itarget)); } if(action.still || (firstTargetType != 0 && secondTargetType != 0)) return; bool isPro = AMTakeData.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.hasColorTex = false; cf.clearScreenTex(); cf.placeholder = true; } } } }
//private float[] mFadeParams; public void Apply(AMCameraSwitcherKey camSwitcher, int frameRate, AMITarget itarget, Camera[] allCameras, bool backwards) { if(mCamSwitcher != camSwitcher) { mCamSwitcher = camSwitcher; float[] fadeParams = mCamSwitcher.cameraFadeParameters.ToArray(); mIsReversed = AMUtil.isTransitionReversed(mCamSwitcher.type, fadeParams); mCam = mCamSwitcher.getCamera(itarget); mCamEnd = mCamSwitcher.getCameraEnd(itarget); mAllCams = allCameras; if(mCamSwitcher.cameraFadeType == (int)Fade.None) { mCamSwitcher.CameraFadeNoneTargets(mCamSwitcher.typeEnd, mCamSwitcher.colorEnd, mCamEnd, mAllCams); mCamSwitcher.CameraEnd(mIsReversed, mCam, mCamEnd, mAllCams); } else { mCamSwitcher.CameraGenerateFadeTargets(mIsReversed, mCam, mCamEnd, mAllCams, fadeParams); } } mBackwards = backwards; }
private void previewCameraFade(AMITarget itarget, float frame, AMCameraSwitcherKey action) { // if transition is None, show end camera / color if(action.cameraFadeType == (int)AMCameraSwitcherKey.Fade.None) { // reset camera fade if visible // camera if(action.typeEnd == 0) { Camera endCam = action.getCameraEnd(itarget); if(endCam) AMUtil.SetTopCamera(endCam, GetCachedCameras(itarget)); AMCameraFade.reset(); } else { showColor(action.colorEnd); } return; } // Get camerafade AMCameraFade cf = AMCameraFade.getCameraFade(); cf.isReset = false; bool isReversed = action.isReversed(); int firstTargetType = (isReversed ? action.typeEnd : action.type); int secondTargetType = (isReversed ? action.type : action.typeEnd); // Set render texture or colors if render texture is used setRenderTexture(itarget, cf, frame, firstTargetType, secondTargetType, isReversed, action); 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(); float percentage = (float)(frame-action.frame)/(float)(action.endFrame-action.frame); float value; // calculate and set value if(action.hasCustomEase()) { value = AMUtil.EaseCustom(1.0f, -1.0f, percentage, action.easeCurve); } else { TweenDelegate.EaseFunc ease = AMUtil.GetEasingFunction((EaseType)action.easeType); value = ease(percentage, 1.0f, -1.0f, 1.0f, action.amplitude, action.period); } cf.value = value; cf.percent = percentage; }