Exemplo n.º 1
0
        void OnCaptured(CaptureCamera captureCamera)
        {
            RawImage.enabled = true;
            RawImage.texture = captureCamera.CaptureImage;
            LetterBoxCamera letterBoxCamera = captureCamera.GetComponent <LetterBoxCamera>();

            if (letterBoxCamera != null)
            {
                RawImage.rectTransform.SetSize(letterBoxCamera.CurrentSize);
                //ズームが1ではなく、このイメージを描画するカメラのキャプチャ画像かどうか
                if (letterBoxCamera.Zoom2D != 1)
                {
                    int layerMask = 1 << this.gameObject.layer;
                    if ((letterBoxCamera.CachedCamera.cullingMask & layerMask) != 0)
                    {
                        Vector2 pivot = letterBoxCamera.Zoom2DCenter;
                        pivot.x /= letterBoxCamera.CurrentSize.x;
                        pivot.y /= letterBoxCamera.CurrentSize.y;
                        pivot    = -pivot + Vector2.one * 0.5f;
                        RawImage.rectTransform.pivot      = pivot;
                        RawImage.rectTransform.localScale = Vector3.one / letterBoxCamera.Zoom2D;
                    }
                }
            }
            else
            {
                RawImage.rectTransform.SetSize(Screen.width, Screen.height);
            }

            //カメラのキャプチャコンポーネントを無効にする
            captureCamera.OnCaptured.RemoveListener(OnCaptured);
            captureCamera.enabled = false;
        }
Exemplo n.º 2
0
        //エフェクト開始時のコールバック
        protected override void OnStartEffect(GameObject target, AdvEngine engine, AdvScenarioThread thread)
        {
            if (target != null)
            {
                LetterBoxCamera camera = target.GetComponentInChildren <LetterBoxCamera>();

                //現在の倍率
                float zoom0 = camera.Zoom2D;
                //目標の倍率
                float zoomTo = isEmptyZoom ? zoom0 : zoom;

                //現在の中心点、今の倍率が1の場合は目標の中心点と同じで扱う(無駄な補間を入れないため)
                Vector2 center0 = (zoom0 == 1) ? zoomCenter : camera.Zoom2DCenter;
                //目標の中心点
                Vector2 centerTo = isEmptyZoomCenter ? center0 : zoomCenter;
                Timer             = target.AddComponent <Timer>();
                Timer.AutoDestroy = true;
                Timer.StartTimer(
                    engine.Page.ToSkippedTime(this.time),
                    engine.Time.Unscaled,
                    (x) =>
                {
                    float zoom1     = Timer.GetCurve(zoom0, zoomTo);
                    Vector2 center1 = Timer.GetCurve(center0, centerTo);
                    camera.SetZoom2D(zoom1, center1);
                },
                    (x) =>
                {
                    //倍率1倍なら一応中心点を戻しておく
                    if (zoomTo == 1)
                    {
                        camera.Zoom2DCenter = Vector2.zero;
                    }
                    OnComplete(thread);
                }
                    );
            }
            else
            {
                //記述ミス、タゲーットが見つからない
                Debug.LogError(LanguageAdvErrorMsg.LocalizeTextFormat(AdvErrorMsg.NotFoundTweenGameObject, "SpriteCamera"));
                OnComplete(thread);
            }
        }
Exemplo n.º 3
0
        void OnCaptured(CaptureCamera captureCamera)
        {
            RawImage.enabled = true;
            RawImage.texture = captureCamera.CaptureImage;
            LetterBoxCamera letterBoxCamera = captureCamera.GetComponent <LetterBoxCamera>();

            if (letterBoxCamera != null)
            {
                RawImage.rectTransform.SetSize(letterBoxCamera.CurrentSize);
            }
            else
            {
                RawImage.rectTransform.SetSize(Screen.width, Screen.height);
            }

            //カメラのキャプチャコンポーネントを無効にする
            captureCamera.OnCaptured.RemoveListener(OnCaptured);
            captureCamera.enabled = false;
        }
        void DrawProperties()
        {
            LetterBoxCamera obj = target as LetterBoxCamera;

            UtageEditorToolKit.PropertyField(serializedObject, "pixelsToUnits", "Pixels To Units");
            if (obj.PixelsToUnits < 1)
            {
                obj.PixelsToUnits = 1;
            }

            //基本画面サイズ
            UtageEditorToolKit.PropertyField(serializedObject, "width", "Game Screen Width");
            if (obj.Width < 1)
            {
                obj.Width = 1;
            }
            UtageEditorToolKit.PropertyField(serializedObject, "height", "Game Screen Height");
            if (obj.Height < 1)
            {
                obj.Height = 1;
            }

            //基本画面サイズ
            UtageEditorToolKit.BeginGroup("Flexible", serializedObject, "isFlexible");
            if (obj.IsFlexible)
            {
                GUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Wide  ", GUILayout.Width(50));
                UtageEditorToolKit.PropertyField(serializedObject, "maxWidth", "", GUILayout.Width(50));
                if (obj.MaxWidth < obj.Width)
                {
                    obj.MaxWidth = obj.Width;
                }
                EditorGUILayout.LabelField(" x " + obj.Height, GUILayout.Width(50));
                GUILayout.EndHorizontal();

                GUILayout.Space(4f);
                GUILayout.BeginHorizontal();
                EditorGUILayout.LabelField("Nallow  ", GUILayout.Width(50));
                EditorGUILayout.LabelField("" + obj.Width + " x ", GUILayout.Width(50));

                UtageEditorToolKit.PropertyField(serializedObject, "maxHeight", "", GUILayout.Width(50));
                if (obj.MaxHeight < obj.Height)
                {
                    obj.MaxHeight = obj.Height;
                }
                GUILayout.EndHorizontal();
            }
            UtageEditorToolKit.EndGroup();

            EditorGUILayout.LabelField("Current Size = " + obj.CurrentSize.x + " x " + obj.CurrentSize.y);

            UtageEditorToolKit.PropertyField(serializedObject, "anchor", "Anchor");

            UtageEditorToolKit.PropertyField(serializedObject, "zoom2D", "Zoom 2D");
            UtageEditorToolKit.PropertyField(serializedObject, "zoom2DCenter", "Zoom 2D Center");

            if (obj.Height < 1)
            {
                obj.Height = 1;
            }
        }