/** All nodes inside the shape. * \note Be nice to the garbage collector and release the list when you have used it (optional) * \see Pathfinding.Util.ListPool * * \see GetNodesInArea(Bounds) */ public List<GraphNode> GetNodesInArea (GraphUpdateShape shape) { return GetNodesInArea (shape.GetBounds (), shape); }
/** Updates graphs with a created GUO. * Creates a Pathfinding.GraphUpdateObject with a Pathfinding.GraphUpdateShape * representing the polygon of this object and update all graphs using AstarPath.UpdateGraphs. * This will not update graphs directly. See AstarPath.UpdateGraph for more info. */ public void Apply () { if (AstarPath.active == null) { Debug.LogError ("There is no AstarPath object in the scene"); return; } GraphUpdateObject guo; if (points == null || points.Length == 0) { var coll = GetComponent<Collider>(); var rend = GetComponent<Renderer>(); Bounds b; if (coll != null) b = coll.bounds; else if (rend != null) b = rend.bounds; else { Debug.LogWarning ("Cannot apply GraphUpdateScene, no points defined and no renderer or collider attached"); return; } if (b.size.y < minBoundsHeight) b.size = new Vector3(b.size.x,minBoundsHeight,b.size.z); guo = new GraphUpdateObject (b); } else { var shape = new GraphUpdateShape (); shape.convex = convex; Vector3[] worldPoints = points; if (!useWorldSpace) { worldPoints = new Vector3[points.Length]; Matrix4x4 matrix = transform.localToWorldMatrix; for (int i=0;i<worldPoints.Length;i++) worldPoints[i] = matrix.MultiplyPoint3x4 (points[i]); } shape.points = worldPoints; Bounds b = shape.GetBounds (); if (b.size.y < minBoundsHeight) b.size = new Vector3(b.size.x,minBoundsHeight,b.size.z); guo = new GraphUpdateObject (b); guo.shape = shape; } firstApplied = true; guo.modifyWalkability = modifyWalkability; guo.setWalkability = setWalkability; guo.addPenalty = penaltyDelta; guo.updatePhysics = updatePhysics; guo.updateErosion = updateErosion; guo.resetPenaltyOnPhysics = resetPenaltyOnPhysics; guo.modifyTag = modifyTag; guo.setTag = setTag; AstarPath.active.UpdateGraphs (guo); }