void Awake()
    {
        m_renderer = GetComponent<BatchRenderer>();

        int num = m_renderer.GetMaxInstanceCount();
        m_instance_t = new Vector3[num];
        m_instance_color = new Color[num];
        m_instance_uv = new Vector4[num];
        m_instance_time = new float[num];
        for (int i = 0; i < num; ++i)
        {
            m_instance_t[i] = new Vector3(R(10.0f), R(10.0f), R(10.0f));
            m_instance_time[i] = Random.Range(0.0f, 10.0f);
        }
    }
Esempio n. 2
0
    void Awake()
    {
        m_renderer = GetComponent<BatchRenderer>();

        int num = m_renderer.GetMaxInstanceCount();
        m_instance_t = new Vector3[num];
        m_instance_r = new Quaternion[num];
        m_instance_s = new Vector3[num];
        Quaternion rot = Quaternion.AngleAxis(45.0f, Vector3.forward);
        for (int i = 0; i < num; ++i)
        {
            Vector3 pos = new Vector3(
                0.1f * (i / 256) - 12.8f,
                Random.Range(-1.5f, -0.1f),
                0.1f * (i % 256) - 12.8f);
            float s = 1.0f + Mathf.Sin((float)i*0.1f) * 0.5f;
            Vector3 scale = new Vector3(s,s,s);
            m_instance_t[i] = pos;
            m_instance_r[i] = rot;
            m_instance_s[i] = scale;
        }
    }
Esempio n. 3
0
    public void RemoveRenderer(BatchRenderer _batchRenderer)
    {
        List <string> toBeRemoved = new List <string>();

        foreach (var pair in m_materialTable)
        {
            List <_Batch> batchList = pair.Value;
            for (int i = 0; i < batchList.Count; i++)
            {
                _Batch batch = batchList[i];
                if (batch != null)
                {
                    if (batch.RemoveUnit(_batchRenderer))
                    {
                        if (batch.UnitCount() == 0)
                        {
                            batch.Destroy();
                            batchList.RemoveAt(i);
                        }
                    }
                }
                else
                {
                    batchList.RemoveAt(i);
                }
            }
            if (pair.Value.Count == 0)
            {
                toBeRemoved.Add(pair.Key);
            }
        }
        foreach (string name in toBeRemoved)
        {
            m_materialTable.Remove(name);
        }
    }
Esempio n. 4
0
    public void AddRenderer(BatchRenderer _batchRenderer, int _stablePeriod = -1)
    {
        BatchRenderer u = _batchRenderer;

        _Batch        batch;
        List <_Batch> batchList;

        if (m_materialTable.TryGetValue(u.m_meshRenderer.sharedMaterial.name, out batchList))
        {
            int i = batchList.Count - 1;
            while (i >= 0)
            {
                batch = batchList[i];
                if (batch.VertexCount + _batchRenderer.m_meshFilter.sharedMesh.vertexCount < ushort.MaxValue)
                {
                    batch.AddUnit(u);
                    break;
                }
                --i;
            }
            if (i < 0) // all full, need a new batch
            {
                batch = new _Batch(this, _stablePeriod);
                batch.AddUnit(_batchRenderer);
                batchList.Add(batch);
            }
        }
        else
        {
            batch = new _Batch(this, _stablePeriod);
            batch.AddUnit(u);
            batchList = new List <_Batch>();
            batchList.Add(batch);
            m_materialTable.Add(u.m_meshRenderer.sharedMaterial.name, batchList);
        }
    }
Esempio n. 5
0
    void Awake()
    {
        m_renderer = GetComponent <BatchRenderer>();

        int num = m_renderer.GetMaxInstanceCount();

        m_instance_t = new Vector3[num];
        m_instance_r = new Quaternion[num];
        m_instance_s = new Vector3[num];
        Quaternion rot = Quaternion.AngleAxis(45.0f, Vector3.forward);

        for (int i = 0; i < num; ++i)
        {
            Vector3 pos = new Vector3(
                0.1f * (i / 256) - 12.8f,
                Random.Range(-1.5f, -0.1f),
                0.1f * (i % 256) - 12.8f);
            float   s     = 1.0f + Mathf.Sin((float)i * 0.1f) * 0.5f;
            Vector3 scale = new Vector3(s, s, s);
            m_instance_t[i] = pos;
            m_instance_r[i] = rot;
            m_instance_s[i] = scale;
        }
    }
    void Awake()
    {
        m_renderer = GetComponent<BatchRenderer>();
        m_renderer.m_flush_on_LateUpdate = false;
        m_entities = new BulletEntity[m_max_entities];
        m_entities_to_add = new BulletEntity[m_max_entities];

        m_num_tasks = m_max_entities / m_entities_par_task + (m_max_entities % m_entities_par_task != 0 ? 1 : 0);
        m_work_data = new WorkData();
        m_work_data.targets = new HitTarget[128];
        m_task_work_data = new TaskWorkData[m_num_tasks];
    }
Esempio n. 7
0
 public Particle2DRenderer(BatchRenderer renderer)
 {
     this.renderer = renderer;
 }
 private void OnDestroy()
 {
     Bullets       = null;
     Mobs          = null;
     batchRenderer = null;
 }
 void Start()
 {
     Bullets       = new List <EnemyShot>();
     Mobs          = new List <Mob>();
     batchRenderer = GetComponent <BatchRenderer>();
 }
Esempio n. 10
0
 public void AddUnit(BatchRenderer _unit)
 {
     m_units.Add(_unit);
     m_VertexCount += _unit.m_meshFilter.sharedMesh.vertexCount;
     m_sm.ChangeState(Status.Unstable);
 }
Esempio n. 11
0
 public FontRenderer(BatchRenderer renderer)
 {
     this.renderer = renderer;
 }