public static GameObject Create(this Link.Visual visual, GameObject parent) { GameObject gameObject = new GameObject((visual.name == null) ? "unnamed" : visual.name); gameObject.transform.SetParentAndAlign(parent.transform); if (visual.origin != null) { visual.origin.SetTransform(gameObject); } visual.geometry.CreateVisual(gameObject); if (visual.material != null) { UrdfAssetDatabase.SetMaterial(gameObject, visual.material.name); } if (gameObject.GetComponentInChildren <Renderer>().sharedMaterial == null) { UrdfAssetDatabase.SetDefaultMaterial(gameObject); } return(gameObject); }
public static GameObject CreateCollider(this Link.Geometry.Mesh mesh, GameObject parent) { GameObject gameObject = new GameObject(mesh.filename + "(MeshCollider)"); Transform reference = AssetDatabase.LoadAssetAtPath <Transform>(UrdfAssetDatabase.GetAssetPathFromPackagePath(mesh.filename)); gameObject.transform.position = reference.position; gameObject.transform.rotation = reference.rotation; gameObject.transform.localScale = reference.localScale; MeshCollider meshCollider = gameObject.AddComponent <MeshCollider>(); meshCollider.sharedMesh = AssetDatabase.LoadAssetAtPath <Mesh>(UrdfAssetDatabase.GetAssetPathFromPackagePath(mesh.filename)); //meshCollider.convex = true; gameObject.transform.SetParentAndAlign(parent.transform); mesh.setScale(gameObject); return(gameObject); }
public static GameObject Create(this Robot robot) { if (UrdfAssetDatabase.GetAssetPath(robot.filename) == null) { Debug.LogError("URDF file and ressources must be placed in Assets Folder:\n" + Application.dataPath); return(null); } UrdfAssetDatabase.Initialize(robot); GameObject gameObject = new GameObject(robot.name); robot.root.Create(gameObject); GameObjectUtility.SetParentAndAlign(gameObject, Selection.activeObject as GameObject); Undo.RegisterCreatedObjectUndo(gameObject, "Create " + gameObject.name); Selection.activeObject = gameObject; setKinematic(gameObject, true); return(gameObject); }
public static GameObject CreateVisual(this Link.Geometry.Mesh mesh, GameObject parent) { GameObject gameObject = Object.Instantiate(AssetDatabase.LoadAssetAtPath <GameObject>(UrdfAssetDatabase.GetAssetPathFromPackagePath(mesh.filename))); gameObject.transform.SetParentAndAlign(parent.transform); mesh.setScale(gameObject); return(gameObject); }