static void _ProcessTransform( Transform transform, List <ReducerTask> reducerTasks, SABoneColliderBuilder boneColliderBuilder, HashSet <Transform> boneHashSet, SABoneColliderEditorCommon.BoneMeshCache boneMeshCache) { if (transform == null || reducerTasks == null || boneColliderBuilder == null || boneHashSet == null || boneMeshCache == null) { return; } if (boneHashSet.Contains(transform)) { SABoneCollider boneCollider = transform.gameObject.GetComponent <SABoneCollider>(); if (boneCollider != null) { if (boneColliderBuilder.cleanupModified || !boneCollider.modified) { SABoneColliderEditorCommon.DestroySABoneCollider(boneCollider); boneCollider = null; } if (boneCollider != null && boneCollider.recursivery) { return; // Skip modified children. } } if (boneCollider == null) // Don't overwrite modified. { boneCollider = SABoneColliderEditorCommon.CreateSABoneCollider(transform.gameObject, boneColliderBuilder); SABoneColliderEditorCommon.RegistReducerTask(reducerTasks, boneCollider, boneMeshCache); } } foreach (Transform childTransform in transform) { if (SAColliderBuilderEditorCommon.IsRootTransform(childTransform)) { // Nothing. } else { _ProcessTransform(childTransform, reducerTasks, boneColliderBuilder, boneHashSet, boneMeshCache); } } }
static void _CleanupTransform( Transform transform, SABoneColliderBuilder boneColliderBuilder, HashSet <Transform> boneHashSet) { if (transform == null || boneColliderBuilder == null || boneHashSet == null) { return; } if (boneHashSet.Contains(transform)) { SABoneCollider boneCollider = transform.gameObject.GetComponent <SABoneCollider>(); if (boneCollider != null) { if (boneColliderBuilder.cleanupModified || !boneCollider.modified) { SABoneColliderEditorCommon.DestroySABoneCollider(boneCollider); boneCollider = null; } if (boneCollider != null && boneCollider.recursivery) { return; } } } foreach (Transform childTransform in transform) { if (SAColliderBuilderEditorCommon.IsRootTransform(childTransform)) { // Nothing. } else { _CleanupTransform(childTransform, boneColliderBuilder, boneHashSet); } } }