@@ -136,10 +136,11 @@ public static ZOSimDocumentRoot Import(XmlDocument xmlDocument, string workingDi
136136
137137 XmlNode xmlBox = xmlGeom . GetChildByName ( "box" ) ;
138138 if ( xmlBox != null ) {
139- collisionGeo = GameObject . CreatePrimitive ( PrimitiveType . Cube ) ;
139+ collisionGeo = new GameObject ( "box_collider" ) ;
140+ BoxCollider boxCollider = collisionGeo . AddComponent < BoxCollider > ( ) ;
140141 Vector3 size = xmlBox . Attributes [ "size" ] . Value . FromURDFStringToVector3 ( ) ;
141142
142- collisionGeo . transform . localScale = size . Ros2UnityScale ( ) ;
143+ boxCollider . size = size . Ros2UnityScale ( ) ;
143144 }
144145
145146 XmlNode xmlCylinder = xmlGeom . GetChildByName ( "cylinder" ) ;
@@ -148,13 +149,23 @@ public static ZOSimDocumentRoot Import(XmlDocument xmlDocument, string workingDi
148149 float radius = float . Parse ( xmlCylinder . Attributes [ "radius" ] . Value ) ;
149150 float length = float . Parse ( xmlCylinder . Attributes [ "length" ] . Value ) ;
150151 collisionGeo . transform . localScale = new Vector3 ( radius * 2.0f , length * 0.5f , radius * 2.0f ) ;
152+ MeshCollider meshCollider = collisionGeo . AddComponent < MeshCollider > ( ) ;
153+ meshCollider . sharedMesh = collisionGeo . GetComponent < MeshFilter > ( ) . sharedMesh ;
154+ meshCollider . convex = true ;
155+
156+ GameObject . DestroyImmediate ( collisionGeo . GetComponent < MeshRenderer > ( ) ) ;
157+ GameObject . DestroyImmediate ( collisionGeo . GetComponent < MeshFilter > ( ) ) ;
158+
151159 }
152160
153161 XmlNode xmlSphere = xmlGeom . GetChildByName ( "sphere" ) ;
154162 if ( xmlSphere != null ) {
155- collisionGeo = GameObject . CreatePrimitive ( PrimitiveType . Sphere ) ;
163+ collisionGeo = new GameObject ( "sphere_collider" ) ; // GameObject.CreatePrimitive(PrimitiveType.Sphere);
164+
156165 float radius = float . Parse ( xmlSphere . Attributes [ "radius" ] . Value ) ;
157- collisionGeo . transform . localScale = new Vector3 ( radius * 2.0f , radius * 2.0f , radius * 2.0f ) ;
166+ SphereCollider sphereCollider = collisionGeo . AddComponent < SphereCollider > ( ) ;
167+ sphereCollider . radius = radius ;
168+ // collisionGeo.transform.localScale = new Vector3(radius * 2.0f, radius * 2.0f, radius * 2.0f);
158169 }
159170
160171 XmlNode xmlMesh = xmlGeom . GetChildByName ( "mesh" ) ;
@@ -165,15 +176,15 @@ public static ZOSimDocumentRoot Import(XmlDocument xmlDocument, string workingDi
165176
166177 MeshFilter [ ] meshFilters = collisionGeo . GetComponentsInChildren < MeshFilter > ( ) ;
167178 foreach ( MeshFilter meshFilter in meshFilters ) {
168- MeshCollider meshCollider = collisionGeo . AddComponent < MeshCollider > ( ) ;
179+ MeshCollider meshCollider = meshFilter . gameObject . AddComponent < MeshCollider > ( ) ;
169180
170181 // add mesh collider
171182 meshCollider . sharedMesh = meshFilter . sharedMesh ;
172183 meshCollider . convex = true ;
173184
174185 // remove mesh renderer and mesh filter
175- GameObject . DestroyImmediate ( collisionGeo . GetComponent < MeshRenderer > ( ) ) ;
176- GameObject . DestroyImmediate ( collisionGeo . GetComponent < MeshFilter > ( ) ) ;
186+ GameObject . DestroyImmediate ( meshFilter . gameObject . GetComponent < MeshRenderer > ( ) ) ;
187+ // GameObject.DestroyImmediate(meshFilter.gameObject .GetComponent<MeshFilter>());
177188
178189 }
179190
0 commit comments