//------------------------------------------------------------------------- protected void RestoreColliderData() { for (int index = 0; index < mDataToRestore.Length; ++index) { Transform restoreNode = this.transform.Find(mNodePaths[index]); MeshCollider collider = restoreNode.GetComponent <MeshCollider>(); if (collider == null) { collider = restoreNode.gameObject.AddComponent <MeshCollider>(); } collider.sharedMesh = null; RestoreData data = mDataToRestore[index]; collider.sharedMesh = data.mColliderMesh; collider.isTrigger = data.mIsTrigger; collider.convex = data.mConvex; collider.sharedMaterial = data.mSharedMaterial; collider.smoothSphereCollisions = data.mSmoothSphereCollisions; Transform referenceColliderNode = restoreNode; bool parentHoldsReferenceCollider = mIsSmoothMovesScaleAnimAppliedAtNode[index]; if (parentHoldsReferenceCollider) { referenceColliderNode = restoreNode.transform.parent; } bool hasSmoothMovesCollider = referenceColliderNode.GetComponent <BoxCollider>(); if (!hasSmoothMovesCollider) { hasSmoothMovesCollider = referenceColliderNode.GetComponent <SphereCollider>(); } if (hasSmoothMovesCollider) { // copy the SmoothMoves collider's enabled state at runtime. AlphaMeshColliderCopyColliderEnabled copyStateComponent = restoreNode.GetComponent <AlphaMeshColliderCopyColliderEnabled>(); if (copyStateComponent == null) { copyStateComponent = restoreNode.gameObject.AddComponent <AlphaMeshColliderCopyColliderEnabled>(); } } } }
//------------------------------------------------------------------------- protected void RestoreColliderData() { for (int index = 0; index < mDataToRestore.Length; ++index) { Transform restoreNode = this.transform.Find(mNodePaths[index]); RestoreData data = mDataToRestore[index]; bool hasMeshCollider = (data.mColliderMesh != null); if (hasMeshCollider) { MeshCollider collider = restoreNode.GetComponent <MeshCollider>(); if (collider == null) { collider = restoreNode.gameObject.AddComponent <MeshCollider>(); } collider.sharedMesh = null; collider.sharedMesh = data.mColliderMesh; collider.isTrigger = data.mIsTrigger; collider.convex = data.mConvex; collider.sharedMaterial = data.mSharedMaterial; collider.smoothSphereCollisions = data.mSmoothSphereCollisions; } #if UNITY_4_3_AND_LATER else // has a polygon collider { PolygonCollider2D collider = restoreNode.GetComponent <PolygonCollider2D>(); if (collider == null) { collider = restoreNode.gameObject.AddComponent <PolygonCollider2D>(); } collider.pathCount = data.mPolygonColliderPathCount; collider.points = data.mPolygonColliderPoints; collider.isTrigger = data.mIsTrigger; //collider.convex = data.mConvex; // Note: polygon colliders have no convex flag. collider.sharedMaterial = data.mSharedMaterial2D; //collider.smoothSphereCollisions = data.mSmoothSphereCollisions; // Note: polygon colliders have no smoothSphereCollisions flag. } #endif Transform referenceColliderNode = restoreNode; bool parentHoldsReferenceCollider = mIsSmoothMovesScaleAnimAppliedAtNode[index]; if (parentHoldsReferenceCollider) { referenceColliderNode = restoreNode.transform.parent; } bool hasSmoothMovesCollider = referenceColliderNode.GetComponent <BoxCollider>(); if (!hasSmoothMovesCollider) { hasSmoothMovesCollider = referenceColliderNode.GetComponent <SphereCollider>(); } if (hasSmoothMovesCollider) { // copy the SmoothMoves collider's enabled state at runtime. AlphaMeshColliderCopyColliderEnabled copyStateComponent = restoreNode.GetComponent <AlphaMeshColliderCopyColliderEnabled>(); if (copyStateComponent == null) { copyStateComponent = restoreNode.gameObject.AddComponent <AlphaMeshColliderCopyColliderEnabled>(); } } } }