void UpdateObjPosAndLocalPos(Transform objectTransform, MapDataPoints mapDataPoints) { var ObjPosition = LaneLet2MapImporter.GetAverage(mapDataPoints.mapWorldPositions); objectTransform.position = ObjPosition; // Update child local positions after parent position changed mapDataPoints.mapLocalPositions.Clear(); mapDataPoints.mapLocalPositions = mapDataPoints.mapWorldPositions.Select(p => p - ObjPosition).ToList(); }
void MoveLaneLines(List <string> laneIds, GameObject mapLaneSection) { var lanePositions = new List <Vector3>(); foreach (var laneId in laneIds) { var lane = Id2Lane[laneId]; lane.transform.parent = mapLaneSection.transform; UpdateObjPosAndLocalPos(lane.transform, lane); lanePositions.Add(lane.transform.position); var leftLine = Id2LeftLineBoundary[laneId]; leftLine.transform.parent = mapLaneSection.transform; UpdateObjPosAndLocalPos(leftLine.transform, leftLine); var rightLine = Id2RightLineBoundary[laneId]; rightLine.transform.parent = mapLaneSection.transform; UpdateObjPosAndLocalPos(rightLine.transform, rightLine); } // Update mapLaneSection transform based on all lanes and update all lane's positions mapLaneSection.transform.position = LaneLet2MapImporter.GetAverage(lanePositions); UpdateChildrenPositions(mapLaneSection); }