//-------------------------------------------------------------------------
    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>();
                }
            }
        }
    }
Exemple #2
0
    //-------------------------------------------------------------------------
    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>();
                }
            }
        }
    }