コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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;
                }
            }
        }
コード例 #3
0
        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);
            }
        }