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(); } }