void DrawRecord(RecordCoordinates recordCoordinates, RecordCoordinates prevRecordCoordinates, TimelineWidget.DrawInfo drawInfo) { DrawRecord(recordCoordinates, drawInfo); int prevTotalY = prevRecordCoordinates.poseY; int totalY = recordCoordinates.poseY; if (recordCoordinates.trajectoryY >= 0) { if (m_bDisplayTrajectoryCost) { DrawVerticalLine(new int2(prevRecordCoordinates.endX, prevRecordCoordinates.trajectoryY), new int2(recordCoordinates.startX, recordCoordinates.trajectoryY), kTrajectoryCostColor); } prevTotalY += prevRecordCoordinates.trajectoryY; totalY += recordCoordinates.trajectoryY; } if (m_bDisplayPoseCost) { DrawVerticalLine(new int2(prevRecordCoordinates.endX, prevRecordCoordinates.poseY), new int2(recordCoordinates.startX, recordCoordinates.poseY), kPoseCostColor); } if (m_bDisplayTotalCost) { DrawVerticalLine(new int2(prevRecordCoordinates.endX, prevTotalY), new int2(recordCoordinates.startX, totalY), kTotalCostColor); } }
void DrawRecord(RecordCoordinates recordCoordinates, TimelineWidget.DrawInfo drawInfo) { int totalY = recordCoordinates.poseY; if (recordCoordinates.trajectoryY >= 0) { totalY += recordCoordinates.trajectoryY; if (m_bDisplayTrajectoryCost) { for (int posX = recordCoordinates.startX; posX <= recordCoordinates.endX; ++posX) { GetPixel(posX, recordCoordinates.trajectoryY) = kTrajectoryCostColor; } } } for (int posX = recordCoordinates.startX; posX <= recordCoordinates.endX; ++posX) { if (m_bDisplayPoseCost) { GetPixel(posX, recordCoordinates.poseY) = kPoseCostColor; } if (m_bDisplayTotalCost) { GetPixel(posX, totalY) = kTotalCostColor; } } }
void DrawCostTimeline(int queryIdentifier, DebugCostAggregate aggregate, TimelineWidget.DrawInfo drawInfo) { m_MouseTime = GetMouseTime(drawInfo); m_MouseCost = -1.0f; (DebugCostAggregate.Record, RecordCoordinates) ? prevRecord = null; m_MaxCost = kDefaultMaxCost; for (int index = 0; index < aggregate.NumRecords; ++index) { DebugCostAggregate.Record record = aggregate.GetRecord(index); if (record.queryIdentifier != queryIdentifier || record.endTime <= drawInfo.timeline.startTime) { continue; } if (record.startTime >= drawInfo.timeline.endTime) { break; } m_MaxCost = math.max(m_MaxCost, record.poseCost); if (record.trajectoryCost >= 0.0f) { m_MaxCost = math.max(m_MaxCost, record.TotalCost); } if (m_MouseTime >= 0.0f && m_MouseTime >= record.startTime && m_MouseTime <= record.endTime) { if (m_bDisplayTotalCost) { m_MouseCost = record.TotalCost; } else if (m_bDisplayPoseCost) { m_MouseCost = record.poseCost; } else if (m_bDisplayTrajectoryCost) { m_MouseCost = record.trajectoryCost; } else { m_MouseCost = -1.0f; } } } for (int index = 0; index < aggregate.NumRecords; ++index) { DebugCostAggregate.Record record = aggregate.GetRecord(index); if (record.queryIdentifier != queryIdentifier || record.endTime <= drawInfo.timeline.startTime) { continue; } if (record.startTime >= drawInfo.timeline.endTime) { break; } RecordCoordinates recordCoordinates = GetRecordCoordinates(record, drawInfo); if (prevRecord.HasValue && prevRecord.Value.Item1.endTime == record.startTime) { DrawRecord(recordCoordinates, prevRecord.Value.Item2, drawInfo); } else { DrawRecord(recordCoordinates, drawInfo); } prevRecord = (record, recordCoordinates); } }