void IDkmCustomVisualizer.EvaluateVisualizedExpression(DkmVisualizedExpression expression, out DkmEvaluationResult resultObject) { Debug.Print("UE4PV: EvaluateVisualizedExpression('{0}'/'{1}', [{2}])", Utility.GetExpressionFullName(expression), Utility.GetExpressionName(expression), expression.TagValue ); // Sanity check to confirm this is only being invoked for UObject types. @TODO: Remove eventually. // Believe this method is only invoked on DkmRootVisualizedExpression instances, not children. Debug.Assert(expression.VisualizerId == Guids.Visualizer.UObject); UE4Visualizer visualizer = null; bool result = UE4VisualizerRegistrar.TryCreateVisualizer(expression, out visualizer); if (!result) { OnVisualizerMatchFailed(expression, out resultObject); return; } // Evaluate the visualization result DkmEvaluationResult eval = visualizer.EvaluationResult; resultObject = eval; // Associate the visualizer with the expression expression.SetDataItem <ExpressionDataItem>( DkmDataCreationDisposition.CreateAlways, new ExpressionDataItem(visualizer) ); }
public static bool TryCreateVisualizer(DkmVisualizedExpression expression, out UE4Visualizer visualizer) { visualizer = null; IUE4VisualizerFactory factory = null; bool result = visualizers_.TryGetValue(expression.VisualizerId, out factory); if (!result) { return(false); } visualizer = factory.CreateVisualizer(expression); return(true); }
void IDkmCustomVisualizer.EvaluateVisualizedExpression(DkmVisualizedExpression expression, out DkmEvaluationResult resultObject) { if (KUE4VS.ExtContext.Instance.ExtensionOptions.EnablePropVis == false) { /* var LangExpr = DkmLanguageExpression.Create(DefaultEE.CppLanguage, DkmEvaluationFlags.None, Utility.GetExpressionFullName(expression), null); * expression.EvaluateExpressionCallback(expression.InspectionContext, LangExpr, expression.StackFrame, out resultObject); * return; */ resultObject = null; return; } Debug.Print("UE4PV: EvaluateVisualizedExpression('{0}'/'{1}', [{2}])", Utility.GetExpressionFullName(expression), Utility.GetExpressionName(expression), expression.TagValue ); // Sanity check to confirm this is only being invoked for UObject types. @TODO: Remove eventually. // Believe this method is only invoked on DkmRootVisualizedExpression instances, not children. Debug.Assert(expression.VisualizerId == Guids.Visualizer.UObject); UE4Visualizer visualizer = null; bool result = UE4VisualizerRegistrar.TryCreateVisualizer(expression, out visualizer); if (!result) { OnVisualizerMatchFailed(expression, out resultObject); return; } // Evaluate the visualization result DkmEvaluationResult eval = visualizer.EvaluationResult; resultObject = eval; // Associate the visualizer with the expression expression.SetDataItem <ExpressionDataItem>( DkmDataCreationDisposition.CreateAlways, new ExpressionDataItem(visualizer) ); }