public override void Init(WaveTracer tracer) { m_Tracer = tracer; m_BeginPos = tracer.Position; m_Running = true; waterHeight = tracer.WaterAttribute.Height; strength = tracer.Strength; frequency = tracer.Frequency; defaultScale = tracer.DefualtScale; defaultScaleFactor = tracer.DefualtScaleFactor; scaleRate = tracer.ScaleRate; maxDuration = tracer.WaveDuration; deltaTime = tracer.LineWave.DeltaTime; }
public override void Init(WaveTracer tracer) { m_Tracer = tracer; m_Running = true; speed = tracer.WaveSpeed + Random.Range(0, tracer.SpotWave.speedFactorRandom); waterHeight = m_Tracer.WaterAttribute.Height; maxDuration = m_Tracer.WaveDuration; minScale = m_Tracer.SpotWave.minScale; timeOffsetFactor = m_Tracer.TimeOffsetFactor; strength = m_Tracer.Strength; frequency = m_Tracer.Frequency; defaultScale = tracer.DefualtScale; defaultScaleFactor = tracer.DefualtScaleFactor; scaleRate = tracer.ScaleRate; }
LineWaveHandler _createLineWave(WaveTracer tracer) { if (!enabled) { return(null); } GameObject go = GetGo(); go.name = "Line Wave"; go.GetComponent <Renderer>().material = m_LineWaveMat; LineWaveHandler lineWave = go.AddComponent <LineWaveHandler>(); lineWave.onRecycle += RecycleGo; go.layer = WaveLayer; lineWave.Init(tracer); return(lineWave); }
SpotWaveHandler _createSpotWave(WaveTracer tracer, Vector3 pos, Quaternion rot, Vector3 scale) { if (!enabled) { return(null); } GameObject go = GetGo(); go.name = "spot Wave"; go.GetComponent <Renderer>().material = m_SpotWaveMat; go.transform.position = pos; go.transform.localRotation = Quaternion.Euler(90, 0, 0); SpotWaveHandler spotWave = go.AddComponent <SpotWaveHandler>(); spotWave.onRecycle += RecycleGo; go.layer = WaveLayer; spotWave.Init(tracer); return(spotWave); }
public void AddTracer(WaveTracer tracer) { m_Tracers.Add(tracer); tracer.curIntervalTime = tracer.IntervalTime + 0.001f; }
void Update() { if (m_Cam != RenderCam) { if (m_Cam != null) { m_Cam.targetTexture = null; } m_Cam = RenderCam; if (m_Cam != null) { RenderCam.cullingMask = (1 << WaveLayer); RenderCam.gameObject.SetActive(true); RenderCam.enabled = true; if (m_RenderTex != null) { if (m_RenderTex.width != (int)TexurePrecision) { m_RenderTex.Release(); m_RenderTex = new RenderTexture((int)TexurePrecision, (int)TexurePrecision, 16, RenderTextureFormat.ARGBHalf); } } else { m_RenderTex = new RenderTexture((int)TexurePrecision, (int)TexurePrecision, 16, RenderTextureFormat.ARGBHalf); } } } if (m_Cam != null) { m_Cam.nearClipPlane = Camera.main.nearClipPlane; m_Cam.farClipPlane = Camera.main.farClipPlane; m_Cam.aspect = Camera.main.aspect; m_Cam.fieldOfView = Camera.main.fieldOfView; m_Cam.targetTexture = m_RenderTex; } // Create Wave for (int i = 0; i < m_Tracers.Count; i++) { WaveTracer tracer = m_Tracers[i]; // Line wave if (tracer.WaveType == EWaveType.Line) { if (!m_Tracers[i].enabled) { if (tracer.lastWave != null) { tracer.lastWave.LockTracer(); tracer.lastWave = null; } continue; } if (tracer.AutoGenWave) { if (!tracer.canGen) { if (Vector3.Magnitude(tracer.prevPos - tracer.Position) > 0.05f) { tracer.canGen = true; } } else { tracer.prevPos = tracer.Position; } if (tracer.curIntervalTime >= tracer.IntervalTime) { if (tracer.lastWave != null) { tracer.lastWave.LockTracer(); tracer.lastWave = null; } if (tracer.canGen) { tracer.lastWave = _createLineWave(tracer); tracer.curIntervalTime = 0; tracer.canGen = false; } } else { tracer.curIntervalTime += Time.deltaTime; } } else { if (tracer.lastWave != null) { tracer.lastWave.LockTracer(); tracer.lastWave = null; } tracer.curIntervalTime = tracer.IntervalTime + 0.001f; tracer.canGen = false; } } // spot wave else if (tracer.WaveType == EWaveType.Spot) { if (!m_Tracers[i].enabled) { continue; } if (tracer.AutoGenWave) { if (tracer.curIntervalTime >= tracer.IntervalTime) { Vector3 pos = tracer.transform.position; pos = new Vector3(pos.x, 95.5f, pos.z); _createSpotWave(tracer, pos, Quaternion.Euler(new Vector3(90, 0, 0)), Vector3.one); tracer.curIntervalTime = 0; tracer.canGen = false; } else { tracer.curIntervalTime += Time.deltaTime; } } } } WaveCnt = transform.childCount; }
public abstract void Init(WaveTracer tracer);