@@ -128,7 +128,10 @@ private void Awake()
128128 /// </summary>
129129 private void OnDestroy ( )
130130 {
131- meshFilter . sharedMesh = originalMesh ;
131+ if ( originalMesh != null )
132+ {
133+ meshFilter . sharedMesh = originalMesh ;
134+ }
132135
133136 MeshReference meshReference ;
134137 var sharedMesh = meshFilter . sharedMesh ;
@@ -160,44 +163,51 @@ private bool AcquirePreprocessedMesh(out UnityEngine.Mesh mesh)
160163 meshFilter = GetComponent < MeshFilter > ( ) ;
161164 }
162165
163- var sharedMesh = meshFilter . sharedMesh ;
166+ // No mesh filter, mesh cannot be processed, so return a null mesh.
167+ if ( meshFilter == null )
168+ {
169+ mesh = null ;
164170
165- MeshReference meshReference ;
171+ return true ;
172+ }
173+
174+ originalMesh = meshFilter . sharedMesh ;
166175
167- if ( sharedMesh != null )
176+ // No mesh , mesh cannot be processed, so return a null mesh.
177+ if ( originalMesh == null )
168178 {
169- // A non-readable mesh cannot be processed, so return a null mesh.
170- if ( sharedMesh . isReadable == false )
171- {
172- Debug . LogWarning ( $ "Mesh smoothing failed because { sharedMesh . name } is not readable. Check \" Read/Write Enabled\" in the mesh's import settings.") ;
179+ mesh = null ;
173180
174- mesh = null ;
181+ return true ;
182+ }
175183
176- return true ;
177- }
184+ // A non-readable mesh cannot be processed, so return a null mesh.
185+ if ( originalMesh . isReadable == false )
186+ {
187+ Debug . LogWarning ( $ "Mesh smoothing failed because { originalMesh . name } is not readable. Check \" Read/Write Enabled\" in the mesh's import settings.") ;
178188
179- // If this mesh has already been processed, apply the preprocessed mesh and increment the reference count.
180- if ( processedMeshes . TryGetValue ( sharedMesh , out meshReference ) )
181- {
182- meshReference . Increment ( ) ;
183- mesh = meshReference . Mesh ;
184- meshFilter . mesh = mesh ;
189+ mesh = null ;
185190
186- return true ;
187- }
191+ return true ;
188192 }
189193
190- originalMesh = meshFilter . sharedMesh ;
194+ MeshReference meshReference ;
195+
196+ // If this mesh has already been processed, apply the preprocessed mesh and increment the reference count.
197+ if ( processedMeshes . TryGetValue ( originalMesh , out meshReference ) )
198+ {
199+ meshReference . Increment ( ) ;
200+ mesh = meshReference . Mesh ;
201+ meshFilter . mesh = mesh ;
202+
203+ return true ;
204+ }
191205
192206 // Clone the mesh, and create a mesh reference which can be keyed off either the original mesh or cloned mesh.
193207 mesh = meshFilter . mesh ;
194208 meshReference = new MeshReference ( mesh ) ;
195209 processedMeshes [ mesh ] = meshReference ;
196-
197- if ( sharedMesh != null )
198- {
199- processedMeshes [ sharedMesh ] = meshReference ;
200- }
210+ processedMeshes [ originalMesh ] = meshReference ;
201211
202212 return false ;
203213 }
0 commit comments