Ejemplo n.º 1
0
        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)
                );
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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)
                );
        }