Advertisement
Carolinetis

RenderTexture

Apr 23rd, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.92 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using UnityEngine.Rendering;
  6. using UnityStandardAssets.ImageEffects;
  7.  
  8. public class RenderTextureScript : MonoBehaviour {
  9.  
  10. //for the screenshot
  11. ScoreScript scoreScript;
  12. private RenderTexture rt;
  13. [HideInInspector]
  14. public Camera CamTexture;
  15. public GameObject photoSheet;
  16. private Renderer rend;
  17.  
  18. [HideInInspector]
  19. public GameObject player;
  20. //for detecting targets in the frustrum
  21. [HideInInspector]
  22. public Plane[] planes;
  23.  
  24.  
  25. //for models
  26.  
  27. [HideInInspector]
  28. public GameObject[] targetModels;
  29. public Material targetModelMat;
  30. private Material currentTargetModelMat;
  31. [HideInInspector]
  32. public Collider targetCollider;
  33.  
  34. //for ClassPhoto(texture,score)
  35. [HideInInspector]
  36. public List<ClassPhoto> photo;
  37. private ClassPhoto classphoto;
  38. private int score;
  39.  
  40. private Grayscale grayScript;
  41. [HideInInspector]
  42. public AIManagerScript managerScript;
  43.  
  44. //for label "target"
  45. [HideInInspector]
  46. public GameObject targetCanvas;
  47.  
  48. private int limitphotos;
  49. // Use this for initialization
  50. void Start () {
  51. scoreScript = gameObject.GetComponent<ScoreScript>();
  52. player = GameObject.FindGameObjectWithTag(Tags.PLAYER_TAG);
  53. managerScript = GameObject.FindGameObjectWithTag(Tags.AIMANAGER_TAG).GetComponent<AIManagerScript>();
  54. targetModels = managerScript.targetObjects;
  55. Init();
  56.  
  57. }
  58.  
  59. void Init()
  60. {
  61.  
  62. //for the screenshot
  63. photo = new List<ClassPhoto>();
  64. CamTexture = gameObject.GetComponent<Camera>();
  65. rt = new RenderTexture(CamTexture.pixelWidth, CamTexture.pixelHeight, 16, RenderTextureFormat.Default);
  66. rt.Create();
  67.  
  68. rend = photoSheet.GetComponent<Renderer>();
  69. grayScript = GameObject.FindObjectOfType<Grayscale>();
  70.  
  71.  
  72. //for models
  73. currentTargetModelMat = targetModels[managerScript.currentTargetIndex].GetComponentInChildren<Renderer>().material;
  74.  
  75. //for text label
  76. //targetCanvas = GameObject.FindGameObjectWithTag("targetCanvas");
  77. //targetCanvas.SetActive(false);
  78. }
  79.  
  80. // Update is called once per frame
  81. void Update () {
  82.  
  83.  
  84. if (Input.GetMouseButton(1) && Input.GetMouseButtonDown(0) && player.GetComponent<PlayerZoom>().cameraOverlayActive) {
  85. CamTexture.enabled = true;
  86.  
  87. //targetModel.GetComponentInChildren<Renderer>().material = targetModelMat;
  88. score = scoreScript.CalculateScore();
  89.  
  90.  
  91. StartCoroutine(TakeScreenShot());
  92.  
  93.  
  94. }
  95.  
  96. }
  97.  
  98. public IEnumerator TakeScreenShot()
  99. {
  100. yield return new WaitForEndOfFrame();
  101. RenderTexture.active = rt;
  102. //GL.Clear(false, true, Color.black);
  103.  
  104. CamTexture.SetTargetBuffers(rt.colorBuffer, rt.depthBuffer);
  105. CamTexture.targetTexture = rt;
  106.  
  107. CamTexture.Render();
  108. Texture2D texture = new Texture2D(CamTexture.targetTexture.width, CamTexture.targetTexture.height);
  109. texture.ReadPixels(new Rect(0, 0, CamTexture.targetTexture.width, CamTexture.targetTexture.height), 0, 0);
  110. texture.Apply();
  111.  
  112. //rend.material.mainTexture = texture;
  113. classphoto = new ClassPhoto(texture, score);
  114. photo.Add(classphoto);
  115.  
  116. //we go back to the normal rendering players see out of the photo
  117. targetModels[managerScript.currentTargetIndex].GetComponentInChildren<Renderer>().material = currentTargetModelMat;
  118.  
  119.  
  120. CamTexture.enabled = false;
  121. RenderTexture.active = null;
  122. targetModels[managerScript.currentTargetIndex].transform.GetChild(2).gameObject.SetActive(false);
  123.  
  124. }
  125.  
  126. /*void CreatePhotoSheet(GameObject ps)
  127. {
  128. ps.AddComponent<MeshFilter>();
  129. ps.AddComponent<MeshRenderer>();
  130. ps.transform.position = CamTexture.transform.position;
  131. ps.transform.position = new Vector3 (ps.transform.position.x, ps.transform.position.y, 4.0f);
  132.  
  133. Mesh mesh = ps.GetComponent<MeshFilter>().mesh;
  134. var aa = CamTexture.ScreenToWorldPoint(new Vector3(0, 0, 0));
  135. var ab = CamTexture.ScreenToWorldPoint(new Vector3(CamTexture.pixelWidth, 0, 0));
  136. var ac = CamTexture.ScreenToWorldPoint(new Vector3(0, CamTexture.pixelHeight, 0));
  137. var ad = CamTexture.ScreenToWorldPoint(new Vector3(CamTexture.pixelWidth, CamTexture.pixelHeight, 0));
  138. List<Vector3> list = new List<Vector3>();
  139. list.Add(aa);
  140. list.Add(ab);
  141. list.Add(ac);
  142. list.Add(ad);
  143.  
  144. mesh.Clear();
  145. mesh.SetVertices(list);
  146.  
  147. List<Vector2> listUV = new List<Vector2>();
  148. for (int i =0; i<4; i++)
  149. listUV.Add(new Vector2(0, 0));
  150.  
  151.  
  152. mesh.SetUVs(listUV);
  153.  
  154. }*/
  155.  
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement