/// <summary> /// <para>CreateCollisionGeometry</para> /// Similar to CreateVisualGeometry, except it uses a links /// collision information to generate a Godot Shape. /// </summary> /// <param name="collisions">List of Collision information.</param> /// <returns></returns> public MeshInstance CreateCollisionGeometry(List <Link.Collision> collisions) { if (collisions.Count < 1) { return(null); } Link.Collision workingCol = collisions[0]; MeshInstance mshInt = new MeshInstance(); if (workingCol.geometry.box != null) { mshInt.Mesh = CreateBox(workingCol.geometry.box); return(mshInt); } if (workingCol.geometry.cylinder != null) { mshInt.Mesh = CreateCylinder(workingCol.geometry.cylinder); return(mshInt); } if (workingCol.geometry.sphere != null) { mshInt.Mesh = CreateSphere(workingCol.geometry.sphere); return(mshInt); } if (workingCol.geometry.mesh != null) { MeshInstance val = CreateMesh(workingCol.geometry.mesh); return(val); } return(null); }
public static void Create(Transform parent, Link.Collision collision) { GameObject collisionObject = new GameObject("unnamed"); collisionObject.transform.SetParentAndAlign(parent); UrdfCollision urdfCollision = collisionObject.AddComponent <UrdfCollision>(); urdfCollision.geometryType = UrdfGeometry.GetGeometryType(collision.geometry); UrdfGeometryCollision.Create(collisionObject.transform, urdfCollision.geometryType, collision.geometry); UrdfOrigin.ImportOriginData(collisionObject.transform, collision.origin); }
public static void Create(Transform parent, Link.Collision collision) { if (String.IsNullOrEmpty(collision.name)) { collision.name = collision.GenerateNonReferenceID(); } if (parent.FindChildOrCreateWithComponent(collision.name, out GameObject collisionObject, out UrdfCollision urdfCollision)) { urdfCollision.geometryType = UrdfGeometry.GetGeometryType(collision.geometry); UrdfGeometryCollision.Create(collisionObject.transform, urdfCollision.geometryType, collision.geometry); UrdfOrigin.ImportOriginData(collisionObject.transform, collision.origin); } }
/// <summary> /// Compares colliison information of two links /// </summary> /// <param name="source">First links's collision information to be compared</param> /// <param name="exported">Second link's collision information to be compared</param> /// <param name="indent">Indent level in the log file</param> /// <returns></returns> private bool CompareCollisions(Link.Collision source, Link.Collision exported, int indent) { bool colliisonNameEqual = (source.name == exported.name); linkLog.AppendLine(String.Format("{0}Collision Name", Indent(indent))); linkLog.AppendLine(String.Format("{0}Equal: {1,6}", Indent(indent), colliisonNameEqual)); linkLog.AppendLine(String.Format("{0}Name: Source: {1,12}", Indent(indent), source.name)); linkLog.AppendLine(String.Format("{0}Exported: {1,12}", Indent(indent), exported.name)); if (!colliisonNameEqual) { return(false); } if (!CompareOrigin(source.origin, exported.origin, indent)) { return(false); } if (!CompareGeometry(source.geometry, exported.geometry, indent)) { return(false); } return(true); }