@@ -12,6 +12,8 @@ public class SoftbodyGenerator : MonoBehaviour
1212 private List < Vector3 > writableVerticesConvaxed ; //{ get; set; }
1313 private List < Vector3 > writableNormals { get ; set ; }
1414 private List < Vector3 > writableNormalsConvaxed ; //{ get; set; }
15+
16+ private List < SphereCollider > sphereColliders = new List < SphereCollider > ( ) ;
1517 private int [ ] writableTris { get ; set ; }
1618 private List < int > writableTrisConvaxed ; // { get; set; }
1719 private Mesh writableMesh ;
@@ -31,8 +33,8 @@ public float collissionSurfaceOffset
3133 {
3234 _collissionSurfaceOffset = value ;
3335 if ( phyisicedVertexes != null )
34- foreach ( var gObject in phyisicedVertexes )
35- gObject . GetComponent < SphereCollider > ( ) . radius = _collissionSurfaceOffset ;
36+ foreach ( var sCollider in sphereColliders )
37+ sCollider . radius = _collissionSurfaceOffset ;
3638 }
3739 }
3840
@@ -148,6 +150,7 @@ public bool gravity
148150 public GameObject centerOfMasObj = null ;
149151 private void Awake ( )
150152 {
153+
151154
152155 writableVertices = new List < Vector3 > ( ) ;
153156 writableVerticesConvaxed = new List < Vector3 > ( ) ;
@@ -216,21 +219,27 @@ private void Awake()
216219 {
217220 var _tempObj = new GameObject ( "Point " + _optimizedVertex . IndexOf ( vertecs ) ) ;
218221
219-
220222 if ( ! debugMode )
221223 _tempObj . hideFlags = HideFlags . HideAndDontSave ;
222224
223225 _tempObj . transform . parent = this . transform ;
224226 _tempObj . transform . position = vertecs ;
225227
228+
229+ // add collider to each of vertex ( sphere collider )
226230 var sphereColider = _tempObj . AddComponent < SphereCollider > ( ) as SphereCollider ;
227231 sphereColider . radius = collissionSurfaceOffset ;
228-
232+ // add current collider to Collider list ;
233+ sphereColliders . Add ( sphereColider ) ;
234+
229235
236+ // add rigidBody to each of vertex
230237 var _tempRigidBody = _tempObj . AddComponent < Rigidbody > ( ) ;
231238 _tempRigidBody . mass = mass / _optimizedVertex . Count ;
232239 _tempRigidBody . drag = physicsRoughness ;
233- //_tempRigidBody.useGravity = false;
240+
241+
242+
234243
235244
236245 _tempObj . AddComponent < DebugColorGameObject > ( ) . Color = Random . ColorHSV ( ) ;
@@ -255,20 +264,32 @@ private void Awake()
255264 // add center of mass vertex to OptimizedVertex list
256265 {
257266 var _tempObj = new GameObject ( "centerOfMass" ) ;
267+
258268 if ( ! debugMode )
259269 _tempObj . hideFlags = HideFlags . HideAndDontSave ;
260270 _tempObj . transform . parent = this . transform ;
261271 _tempObj . transform . position = centerOfMass ;
262272
273+ // add collider to center of mass as a sphere collider
263274 var sphereColider = _tempObj . AddComponent < SphereCollider > ( ) as SphereCollider ;
264275 sphereColider . radius = collissionSurfaceOffset ;
276+ // add current collider to Collider list ;
277+ sphereColliders . Add ( sphereColider ) ;
265278
279+ // add rigidBody to center of mass as a sphere collider
266280 var _tempRigidBody = _tempObj . AddComponent < Rigidbody > ( ) ;
267- //_tempRigidBody.useGravity = false;
281+
268282 centerOfMasObj = _tempObj ;
269283 }
270284
271-
285+ // IGNORE COLLISTION BETWEEN ALL OF THE VERTEXES AND CENTER OFF MASS
286+ foreach ( var collider1 in sphereColliders )
287+ {
288+ foreach ( var collider2 in sphereColliders )
289+ {
290+ Physics . IgnoreCollision ( collider1 , collider2 , true ) ;
291+ }
292+ }
272293
273294 // extract Lines from quad of mesh
274295 List < Vector2Int > tempListOfSprings = new List < Vector2Int > ( ) ;
@@ -436,12 +457,16 @@ public override void OnInspectorGUI()
436457
437458 softbody . debugMode = EditorGUILayout . Toggle ( "#Debug mod" , softbody . debugMode ) ;
438459 EditorGUILayout . Space ( ) ;
460+
461+ string [ ] options = new string [ ] { " version 1" , " version 2" } ;
439462
463+
440464 softbody . gravity = EditorGUILayout . Toggle ( "Gravity" , softbody . gravity ) ;
441465 softbody . mass = EditorGUILayout . FloatField ( "Mass(KG)" , softbody . mass ) ;
442466 softbody . physicsRoughness = EditorGUILayout . FloatField ( "Drag (roughness)" , softbody . physicsRoughness ) ;
443467 softbody . softness = EditorGUILayout . FloatField ( "Softbody hardness" , softbody . softness ) ;
444468 softbody . damp = EditorGUILayout . FloatField ( "Softbody damper" , softbody . damp ) ;
469+ softbody . collissionSurfaceOffset = EditorGUILayout . FloatField ( "Softbody Offset" , softbody . collissionSurfaceOffset ) ;
445470
446471 }
447472}
0 commit comments