Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEngine.UI;
- using UnityEngine.Rendering;
- using UnityStandardAssets.ImageEffects;
- public class RenderTextureScript : MonoBehaviour {
- //for the screenshot
- ScoreScript scoreScript;
- private RenderTexture rt;
- [HideInInspector]
- public Camera CamTexture;
- public GameObject photoSheet;
- private Renderer rend;
- [HideInInspector]
- public GameObject player;
- //for detecting targets in the frustrum
- [HideInInspector]
- public Plane[] planes;
- //for models
- [HideInInspector]
- public GameObject[] targetModels;
- public Material targetModelMat;
- private Material currentTargetModelMat;
- [HideInInspector]
- public Collider targetCollider;
- //for ClassPhoto(texture,score)
- [HideInInspector]
- public List<ClassPhoto> photo;
- private ClassPhoto classphoto;
- private int score;
- private Grayscale grayScript;
- [HideInInspector]
- public AIManagerScript managerScript;
- //for label "target"
- [HideInInspector]
- public GameObject targetCanvas;
- private int limitphotos;
- // Use this for initialization
- void Start () {
- scoreScript = gameObject.GetComponent<ScoreScript>();
- player = GameObject.FindGameObjectWithTag(Tags.PLAYER_TAG);
- managerScript = GameObject.FindGameObjectWithTag(Tags.AIMANAGER_TAG).GetComponent<AIManagerScript>();
- targetModels = managerScript.targetObjects;
- Init();
- }
- void Init()
- {
- //for the screenshot
- photo = new List<ClassPhoto>();
- CamTexture = gameObject.GetComponent<Camera>();
- rt = new RenderTexture(CamTexture.pixelWidth, CamTexture.pixelHeight, 16, RenderTextureFormat.Default);
- rt.Create();
- rend = photoSheet.GetComponent<Renderer>();
- grayScript = GameObject.FindObjectOfType<Grayscale>();
- //for models
- currentTargetModelMat = targetModels[managerScript.currentTargetIndex].GetComponentInChildren<Renderer>().material;
- //for text label
- //targetCanvas = GameObject.FindGameObjectWithTag("targetCanvas");
- //targetCanvas.SetActive(false);
- }
- // Update is called once per frame
- void Update () {
- if (Input.GetMouseButton(1) && Input.GetMouseButtonDown(0) && player.GetComponent<PlayerZoom>().cameraOverlayActive) {
- CamTexture.enabled = true;
- //targetModel.GetComponentInChildren<Renderer>().material = targetModelMat;
- score = scoreScript.CalculateScore();
- StartCoroutine(TakeScreenShot());
- }
- }
- public IEnumerator TakeScreenShot()
- {
- yield return new WaitForEndOfFrame();
- RenderTexture.active = rt;
- //GL.Clear(false, true, Color.black);
- CamTexture.SetTargetBuffers(rt.colorBuffer, rt.depthBuffer);
- CamTexture.targetTexture = rt;
- CamTexture.Render();
- Texture2D texture = new Texture2D(CamTexture.targetTexture.width, CamTexture.targetTexture.height);
- texture.ReadPixels(new Rect(0, 0, CamTexture.targetTexture.width, CamTexture.targetTexture.height), 0, 0);
- texture.Apply();
- //rend.material.mainTexture = texture;
- classphoto = new ClassPhoto(texture, score);
- photo.Add(classphoto);
- //we go back to the normal rendering players see out of the photo
- targetModels[managerScript.currentTargetIndex].GetComponentInChildren<Renderer>().material = currentTargetModelMat;
- CamTexture.enabled = false;
- RenderTexture.active = null;
- targetModels[managerScript.currentTargetIndex].transform.GetChild(2).gameObject.SetActive(false);
- }
- /*void CreatePhotoSheet(GameObject ps)
- {
- ps.AddComponent<MeshFilter>();
- ps.AddComponent<MeshRenderer>();
- ps.transform.position = CamTexture.transform.position;
- ps.transform.position = new Vector3 (ps.transform.position.x, ps.transform.position.y, 4.0f);
- Mesh mesh = ps.GetComponent<MeshFilter>().mesh;
- var aa = CamTexture.ScreenToWorldPoint(new Vector3(0, 0, 0));
- var ab = CamTexture.ScreenToWorldPoint(new Vector3(CamTexture.pixelWidth, 0, 0));
- var ac = CamTexture.ScreenToWorldPoint(new Vector3(0, CamTexture.pixelHeight, 0));
- var ad = CamTexture.ScreenToWorldPoint(new Vector3(CamTexture.pixelWidth, CamTexture.pixelHeight, 0));
- List<Vector3> list = new List<Vector3>();
- list.Add(aa);
- list.Add(ab);
- list.Add(ac);
- list.Add(ad);
- mesh.Clear();
- mesh.SetVertices(list);
- List<Vector2> listUV = new List<Vector2>();
- for (int i =0; i<4; i++)
- listUV.Add(new Vector2(0, 0));
- mesh.SetUVs(listUV);
- }*/
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement