void Awake() { GameObject go = new GameObject("Wave Camera"); Camera cam = go.AddComponent <Camera>(); go.transform.parent = Camera.main.transform; go.transform.localPosition = Vector3.zero; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; cam.clearFlags = CameraClearFlags.Color; cam.backgroundColor = new Color(0.5f, 0.5f, 1f, 1f); cam.cullingMask = 0; #if GL_VERSION m_WaveRenderer = cam.gameObject.AddComponent <WaveRenderer>(); #else scene = gameObject.GetComponent <WaveScene>(); scene.RenderCam = cam; #endif s_Self = this; }
/// <summary> /// Used to draw all points from the raycastPointsByRenderers List /// </summary> private void DrawLineRenderers() { // find out how many renderers do you need to draw the points int numberOfNeededRenderers = raycastPointsByRenderers.Count; int drawnRenderersCount = 0; // start drawing points with each renderer you have foreach (WaveRenderer renderer in renderers) { if (raycastPointsByRenderers.Count <= drawnRenderersCount) { renderer.SetPoints(null); } else { renderer.SetPoints(raycastPointsByRenderers[drawnRenderersCount]); } MaterialPropertyBlock block = new MaterialPropertyBlock(); renderer.lineRenderer.GetPropertyBlock(block); Vector3 screenCoordinate = Camera.main.WorldToViewportPoint(this.transform.position); screenCoordinate.z = 0; block.SetVector("_Center", screenCoordinate); renderer.lineRenderer.SetPropertyBlock(block); drawnRenderersCount++; } // if you still need more renderers, add the rest as new child objects while (drawnRenderersCount < numberOfNeededRenderers) { GameObject newRenderer = Instantiate(lineRendererPrefab, Vector3.zero, Quaternion.identity, transform); newRenderer.transform.SetParent(this.transform); newRenderer.transform.position = this.transform.position; WaveRenderer waveRenderer = new WaveRenderer(newRenderer, raycastPointsByRenderers[drawnRenderersCount]); MaterialPropertyBlock block = new MaterialPropertyBlock(); waveRenderer.lineRenderer.GetPropertyBlock(block); Vector3 screenCoordinate = Camera.main.WorldToScreenPoint(this.transform.position); screenCoordinate.z = 0; block.SetVector("_Center", screenCoordinate); waveRenderer.lineRenderer.SetPropertyBlock(block); renderers.Add(waveRenderer); drawnRenderersCount++; } }
public void InitUpdate() { if (m_WaveRenderer != WaveRenderer) { if (m_WaveRenderer != null) { m_WaveRenderer.Remove(this); } m_WaveRenderer = WaveRenderer; if (m_WaveRenderer != null) { m_WaveRenderer.Add(this); } } }
void Awake() { // Water Wave Camera GameObject go = new GameObject("Water Wave Camera"); Camera cam = go.AddComponent <Camera>(); // go.transform.parent = Camera.main.transform; go.transform.localPosition = Vector3.zero; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; cam.clearFlags = CameraClearFlags.Color; cam.backgroundColor = new Color(0.5f, 0.5f, 1f, 1f); cam.cullingMask = 0; cam.depth = -2; m_WaveRenderer = cam.gameObject.AddComponent <WaveRenderer>(); m_WaveRenderer.CameraMode = WaveRenderer.ECameraMode.Perspective; // Grass Wave Camera go = new GameObject("Grass Wave Camera"); cam = go.AddComponent <Camera>(); // go.transform.parent = Camera.main.transform; go.transform.localPosition = Vector3.zero; go.transform.localRotation = Quaternion.identity; go.transform.localScale = Vector3.one; cam.clearFlags = CameraClearFlags.Color; cam.backgroundColor = new Color(0.5f, 0.5f, 1f, 1f); cam.cullingMask = 0; cam.depth = -2; m_GrassWaveRenderer = cam.gameObject.AddComponent <WaveRenderer>(); m_GrassWaveRenderer.CameraMode = WaveRenderer.ECameraMode.Orthographical; s_Self = this; }