Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
    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;
    }
Exemplo n.º 3
0
    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);
    }
Exemplo n.º 4
0
    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);
    }
Exemplo n.º 5
0
 public void AddTracer(WaveTracer tracer)
 {
     m_Tracers.Add(tracer);
     tracer.curIntervalTime = tracer.IntervalTime + 0.001f;
 }
Exemplo n.º 6
0
    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;
    }
Exemplo n.º 7
0
 public abstract void Init(WaveTracer tracer);