MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / Invoke

Method Invoke

Source/Engine/Debug/DebugCommands.cpp:85–180  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

83 }
84
85 void Invoke(StringView args) const
86 {
87 PROFILE_CPU();
88
89 // Get command signature
90 Array<ScriptingTypeMethodSignature::Param, InlinedAllocation<16>> sigParams;
91 VariantType sigValue;
92 if (Method)
93 {
94 ScriptingTypeMethodSignature sig;
95 Module->GetMethodSignature(Method, sig);
96 sigParams = MoveTemp(sig.Params);
97 sigValue = MoveTemp(sig.ReturnType);
98 }
99 else if (Field)
100 {
101 ScriptingTypeFieldSignature sig;
102 Module->GetFieldSignature(Field, sig);
103 auto& p = sigParams.AddOne();
104 p.IsOut = false;
105 p.Type = sig.ValueType;
106 sigValue = MoveTemp(sig.ValueType);
107 }
108 else if (MethodSet && args.HasChars())
109 {
110 ScriptingTypeMethodSignature sig;
111 Module->GetMethodSignature(MethodSet, sig);
112 sigParams = MoveTemp(sig.Params);
113 sigParams.Resize(1);
114 }
115 else if (MethodGet && args.IsEmpty())
116 {
117 ScriptingTypeMethodSignature sig;
118 Module->GetMethodSignature(MethodGet, sig);
119 sigValue = MoveTemp(sig.ReturnType);
120 }
121
122 // Parse arguments
123 if (args == StringView(TEXT("?"), 1))
124 {
125 LOG(Warning, "TODO: debug commands help/docs printing"); // TODO: debug commands help/docs printing (use CodeDocsModule that parses XML docs)
126 return;
127 }
128 Array<Variant> params;
129 params.Resize(sigParams.Count());
130 Array<String> argsSeparated;
131 String argsStr(args);
132 argsStr.Split(' ', argsSeparated);
133 for (int32 i = 0; i < argsSeparated.Count() && i < params.Count(); i++)
134 {
135 params[i] = Variant::Parse(argsSeparated[i], sigParams[i].Type);
136 }
137
138 // Call command
139 LOG(Info, "> {}{}{}", Name, args.Length() != 0 ? TEXT(" ") : TEXT(""), args);
140 Variant result;
141 if (Method)
142 {

Callers 2

GetStackTraceMethod · 0.45
ExecuteMethod · 0.45

Calls 15

AddOneMethod · 0.80
ToStringViewMethod · 0.80
StringViewClass · 0.50
ParseFunction · 0.50
ToSpanFunction · 0.50
VariantFunction · 0.50
GetMethodSignatureMethod · 0.45
GetFieldSignatureMethod · 0.45
HasCharsMethod · 0.45
ResizeMethod · 0.45
IsEmptyMethod · 0.45
CountMethod · 0.45

Tested by

no test coverage detected