Esempio n. 1
0
        private void TryToAddColliders()
        {
            if (this == null)
            {
                return;
            }

            if (m_colliders == null || m_colliders.Length == 0)
            {
                List <Collider> colliders = new List <Collider>();
                Rigidbody       rigidBody = gameObject.GetComponent <Rigidbody>();

                bool isRigidBody = rigidBody != null;
                if (m_effectiveBoundsType == BoundsType.Any)
                {
                    if (m_filter != null)
                    {
                        if (AddColliders && !isRigidBody)
                        {
                            MeshCollider collider = gameObject.AddComponent <MeshCollider>();
                            collider.convex     = isRigidBody;
                            collider.sharedMesh = m_filter.sharedMesh;
                            colliders.Add(collider);
                        }
                    }
                    else if (m_skinned != null)
                    {
                        if (AddColliders && !isRigidBody)
                        {
                            MeshCollider collider = gameObject.AddComponent <MeshCollider>();
                            collider.convex     = isRigidBody;
                            collider.sharedMesh = m_skinned.sharedMesh;
                            colliders.Add(collider);
                        }
                    }
                    else if (m_spriteRenderer != null)
                    {
                        if (AddColliders && !isRigidBody)
                        {
                            BoxCollider collider = gameObject.AddComponent <BoxCollider>();
                            collider.size = m_spriteRenderer.sprite.bounds.size;
                            colliders.Add(collider);
                        }
                    }
                }
                else if (m_effectiveBoundsType == BoundsType.Mesh)
                {
                    if (m_filter != null)
                    {
                        if (AddColliders && !isRigidBody)
                        {
                            MeshCollider collider = gameObject.AddComponent <MeshCollider>();
                            collider.convex     = isRigidBody;
                            collider.sharedMesh = m_filter.sharedMesh;
                            colliders.Add(collider);
                        }
                    }
                }
                else if (m_effectiveBoundsType == BoundsType.SkinnedMesh)
                {
                    if (m_skinned != null)
                    {
                        if (AddColliders && !isRigidBody)
                        {
                            MeshCollider collider = gameObject.AddComponent <MeshCollider>();
                            collider.convex     = isRigidBody;
                            collider.sharedMesh = m_skinned.sharedMesh;
                            colliders.Add(collider);
                        }
                    }
                }
                else if (m_effectiveBoundsType == BoundsType.Sprite)
                {
                    if (m_spriteRenderer != null)
                    {
                        if (AddColliders && !isRigidBody)
                        {
                            BoxCollider collider = gameObject.AddComponent <BoxCollider>();
                            collider.size = m_spriteRenderer.sprite.bounds.size;
                            colliders.Add(collider);
                        }
                    }
                }
                else if (m_effectiveBoundsType == BoundsType.Custom)
                {
                    if (AddColliders && !isRigidBody)
                    {
                        Mesh box = RuntimeGraphics.CreateCubeMesh(Color.black, CustomBounds.center, CustomBounds.extents.x * 2, CustomBounds.extents.y * 2, CustomBounds.extents.z * 2);

                        MeshCollider collider = gameObject.AddComponent <MeshCollider>();
                        collider.convex = isRigidBody;

                        collider.sharedMesh = box;
                        colliders.Add(collider);
                    }
                }

                m_colliders = colliders.ToArray();
            }
        }
        private void TryToAddColliders(ExposeToEditor obj)
        {
            if (obj == null)
            {
                return;
            }

            if (obj.Colliders == null || obj.Colliders.Length == 0)
            {
                List <Collider> colliders = new List <Collider>();
                Rigidbody       rigidBody = obj.BoundsObject.GetComponentInParent <Rigidbody>();

                bool isRigidBody = rigidBody != null;
                if (obj.EffectiveBoundsType == BoundsType.Any)
                {
                    if (obj.MeshFilter != null)
                    {
                        if (obj.AddColliders && !isRigidBody)
                        {
                            MeshCollider collider = obj.BoundsObject.AddComponent <MeshCollider>();
                            collider.convex     = isRigidBody;
                            collider.sharedMesh = obj.MeshFilter.sharedMesh;
                            colliders.Add(collider);
                        }
                    }
                    else if (obj.SkinnedMeshRenderer != null)
                    {
                        if (obj.AddColliders && !isRigidBody)
                        {
                            MeshCollider collider = obj.BoundsObject.AddComponent <MeshCollider>();
                            collider.convex     = isRigidBody;
                            collider.sharedMesh = obj.SkinnedMeshRenderer.sharedMesh;
                            colliders.Add(collider);
                        }
                    }
                    else if (obj.SpriteRenderer != null)
                    {
                        if (obj.AddColliders && !isRigidBody)
                        {
                            BoxCollider collider = obj.BoundsObject.AddComponent <BoxCollider>();
                            collider.size = obj.SpriteRenderer.sprite.bounds.size;
                            colliders.Add(collider);
                        }
                    }
                }
                else if (obj.EffectiveBoundsType == BoundsType.Mesh)
                {
                    if (obj.MeshFilter != null)
                    {
                        if (obj.AddColliders && !isRigidBody)
                        {
                            MeshCollider collider = obj.BoundsObject.AddComponent <MeshCollider>();
                            collider.convex     = isRigidBody;
                            collider.sharedMesh = obj.MeshFilter.sharedMesh;
                            colliders.Add(collider);
                        }
                    }
                }
                else if (obj.EffectiveBoundsType == BoundsType.SkinnedMesh)
                {
                    if (obj.SkinnedMeshRenderer != null)
                    {
                        if (obj.AddColliders && !isRigidBody)
                        {
                            MeshCollider collider = obj.BoundsObject.AddComponent <MeshCollider>();
                            collider.convex     = isRigidBody;
                            collider.sharedMesh = obj.SkinnedMeshRenderer.sharedMesh;
                            colliders.Add(collider);
                        }
                    }
                }
                else if (obj.EffectiveBoundsType == BoundsType.Sprite)
                {
                    if (obj.SpriteRenderer != null)
                    {
                        if (obj.AddColliders && !isRigidBody)
                        {
                            BoxCollider collider = obj.BoundsObject.AddComponent <BoxCollider>();
                            collider.size = obj.SpriteRenderer.sprite.bounds.size;
                            colliders.Add(collider);
                        }
                    }
                }
                else if (obj.EffectiveBoundsType == BoundsType.Custom)
                {
                    if (obj.AddColliders && !isRigidBody)
                    {
                        Mesh box = RuntimeGraphics.CreateCubeMesh(Color.black, obj.CustomBounds.center, 1, obj.CustomBounds.extents.x * 2, obj.CustomBounds.extents.y * 2, obj.CustomBounds.extents.z * 2);

                        MeshCollider collider = obj.BoundsObject.AddComponent <MeshCollider>();
                        collider.convex = isRigidBody;

                        collider.sharedMesh = box;
                        colliders.Add(collider);
                    }
                }

                obj.Colliders = colliders.ToArray();
            }
        }