Esempio n. 1
0
 public virtual void OnEnable()
 {
     GetInstances().Add(this);
     m_trans = GetComponent <Transform>();
     m_rigid = GetComponent <Rigidbody>();
     m_bcol  = GetComponent <ExampleBulletCollider>();
 }
Esempio n. 2
0
 public virtual void OnEnable()
 {
     GetInstances().Add(this);
     m_trans = GetComponent<Transform>();
     m_rigid = GetComponent<Rigidbody>();
     m_bcol = GetComponent<ExampleBulletCollider>();
 }
    void Update()
    {
        for (int i = 0; i < m_add_index; ++i)
        {
            m_entities[m_index++] = m_entities_to_add[i];
            m_index %= m_max_entities;
        }
        m_add_index = 0;

        m_work_data.delta_time = Time.deltaTime;

        // gather hit target data
        var targets = ExampleBulletCollider.GetInstances();

        if (m_work_data.targets.Length < targets.Count)
        {
            m_work_data.targets = new HitTarget[Mathf.Max(m_work_data.targets.Length * 2, targets.Count)];
        }
        m_work_data.num_targets = targets.Count;
        for (int i = 0; i < targets.Count; ++i)
        {
            ExampleBulletCollider t = targets[i];
            m_work_data.targets[i].position = t.GetTransform().position;
            m_work_data.targets[i].radius   = t.m_hit_radius;
            m_work_data.targets[i].id       = t.m_id;
            m_work_data.targets[i].collider = t;
        }

        m_num_active_tasks = m_num_tasks;
        if (m_use_multithread)
        {
            for (int i = 0; i < m_num_tasks; ++i)
            {
                ThreadPool.QueueUserWorkItem(UpdateTask, i);
            }
        }
        else
        {
            for (int i = 0; i < m_num_tasks; ++i)
            {
                UpdateTask(i);
            }
        }
    }