コード例 #1
0
        public void UpdateTraceInfo()
        {
            _type = TraceInfoType.TraceMessage;
            var re      = new Regex(@"%(?<type>[sdhf])?(?<size>\d\d?)");
            var matches = re.Matches(TraceString);

            _reformattedTrace = TraceString.Trim('"');
            var offset = 2; // the trace id must not be read anymore!

            for (int i = 0; i < matches.Count; i++)
            {
                var nrOfBytes   = int.Parse(matches[i].Groups["size"].Value) / 8;
                var localOffset = offset;
                _unpackParams.Add((data) => TraceMessageHandler.Unpack(data, localOffset, nrOfBytes));
                offset += nrOfBytes;
                var replacement = string.Format("{{{0}:X02}}", i);
                _reformattedTrace = re.Replace(_reformattedTrace, replacement, 1);
            }
            EvalData = (x) => string.Format(_reformattedTrace, x);
            if (TraceString.Contains("@plot"))
            {
                _type    = TraceInfoType.PlotData;
                EvalData = (x) => (double)Convert.ToDouble(x.First());
            }
        }
コード例 #2
0
        /// <summary>
        /// Generate debug trace for variables or functions.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="type"></param>
        /// <param name="name"></param>
        /// <param name="column"></param>
        /// <param name="output"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        internal static T Trace <T>(TraceInfoType type, Location location, string name, T output)
        {
            if (!CollectDebugData)
            {
                return(output);
            }

            location.Line += ShaderLineOffset;

            TraceLog.Add(new TraceInfo {
                Location = location,
                Type     = type,
                Name     = name,
                Output   = output,
            });

            return(output);
        }