Пример #1
0
 public void Create()
 {
     if (CamerasMgr.Camera2RTCommon == null)
     {
         base.set_enabled(false);
         return;
     }
     if (RTSyncBackground.RTCanvas == null)
     {
         RTSyncBackground.RTCanvas = new GameObject("RTCanvas");
         RTSyncBackground.RTCanvas.get_transform().set_parent(CamerasMgr.Camera2RTCommon.get_transform());
         RTSyncBackground.RTCanvas.get_transform().set_localPosition(Vector3.get_zero());
         RTSyncBackground.RTCanvas.get_transform().set_localRotation(Quaternion.get_identity());
         RTSyncBackground.RTCanvas.get_transform().set_localScale(Vector3.get_one());
         RTSyncBackground.RTCanvas.set_layer(LayerSystem.NameToLayer("FX"));
         Canvas canvas = RTSyncBackground.RTCanvas.AddComponent <Canvas>();
         canvas.set_renderMode(1);
         canvas.set_pixelPerfect(false);
         canvas.set_worldCamera(CamerasMgr.Camera2RTCommon);
         CanvasScaler canvasScaler = RTSyncBackground.RTCanvas.AddComponent <CanvasScaler>();
         canvasScaler.set_uiScaleMode(0);
     }
     if (this.m_goSync != null)
     {
         this.m_goSync.SetActive(true);
         this.SyncImage();
     }
     else
     {
         this.m_goSync = new GameObject(base.get_gameObject().get_name());
         this.m_goSync.get_transform().set_parent(RTSyncBackground.RTCanvas.get_transform());
         this.m_goSync.get_transform().set_localPosition(Vector3.get_zero());
         this.m_goSync.get_transform().set_localRotation(Quaternion.get_identity());
         this.m_goSync.get_transform().set_localScale(Vector3.get_one());
         this.m_goSync.set_layer(LayerSystem.NameToLayer("FX"));
         this.m_thisImage = base.get_gameObject().GetComponent <Image>();
         if (this.m_thisImage != null)
         {
             this.m_syncImage = this.m_goSync.AddComponent <Image>();
             this.m_syncImage.set_material(RTSyncBackground.BackgroundMat);
         }
         else
         {
             this.m_thisRawImage = base.get_gameObject().GetComponent <RawImage>();
             if (this.m_thisRawImage != null)
             {
                 this.m_syncRawImage = this.m_goSync.AddComponent <RawImage>();
                 this.m_syncRawImage.set_material(RTSyncBackground.BackgroundMat);
             }
         }
         this.SyncImage();
         if (base.get_gameObject().GetComponent <UIMaskLayer>() != null)
         {
             this.m_goSync.AddComponent <UIMaskLayer>();
         }
     }
 }
    public static void MakeSnapshot(FreezeFrame freezeFrame)
    {
        GameObject gameObject = GameObject.Find("MainCanvas");

        if (gameObject == null)
        {
            Debug.LogError("Could not find MainCanvas, did you rename it?");
            return;
        }
        GameObject gameObject2 = new GameObject(freezeFrame.get_name() + "_SnaphotCamera");

        gameObject2.get_transform().SetParent(null, false);
        gameObject2.get_transform().Translate(0f, 0f, -1f);
        Camera        camera        = gameObject2.AddComponent <Camera>();
        RenderTexture renderTexture = new RenderTexture(320, 320, 24);
        Material      material      = new Material(Shader.Find("UI/Unlit/Transparent"));

        material.SetTexture("_MainTex", renderTexture);
        camera.set_orthographic(true);
        camera.set_orthographicSize(100f);
        camera.set_targetTexture(renderTexture);
        camera.set_depth(-1f);
        camera.set_clearFlags(2);
        camera.set_backgroundColor(new Color(0f, 0f, 0f, 1f));
        GameObject gameObject3 = new GameObject(freezeFrame.get_name() + "_DarkRoomCanvas");
        Canvas     canvas      = gameObject3.AddComponent <Canvas>();

        canvas.set_planeDistance(500f);
        canvas.set_renderMode(1);
        canvas.set_worldCamera(camera);
        CanvasScaler canvasScaler = gameObject3.AddComponent <CanvasScaler>();

        canvasScaler.set_uiScaleMode(1);
        canvasScaler.set_referenceResolution(new Vector2(1200f, 900f));
        canvasScaler.set_matchWidthOrHeight(1f);
        GameObject gameObject4 = new GameObject(freezeFrame.get_name() + "_Snapshot");

        gameObject4.get_transform().SetParent(gameObject.get_transform(), false);
        Image image = gameObject4.AddComponent <Image>();

        gameObject4.GetComponent <RectTransform>().set_sizeDelta(new Vector2(320f, 320f));
        image.set_material(material);
        freezeFrame.get_transform().SetParent(gameObject3.get_transform(), false);
        camera.Render();
    }