22{
24 std::string cline = code;
25
26 cline = ReplaceString(cline, "{ID}", STR(id));
27 cline = ReplaceString(cline, "{OFFSET}", STR(dataBlobOffset));
28 int did = 0;
29 for(auto it : sharedDataTemplate)
30 {
31 cline = ReplaceString(cline, it.alias, SDATA(did));
32 did++;
33 }
35 handler->AddFunction(ft);
36 int i = 0;
37
38 if(!useArrayParams)
39 {
40 i = 0;
41 for(auto ¶m : params)
42 {
43 function->AddLine(
GLSLLine(param.first +
" " + VAR(param.second + STR(i)) +
" = " + param.first +
"(0.0f);"));
44
45 if(inputPins[i]->IsLinked())
46 {
48 inputPins[i]->other->Evaluate(GetParams(function, &tmp));
49 function->AddLine(
GLSLLine(VAR(param.second + STR(i)) +
" = " + tmp.line +
";"));
50 }
51
52 i++;
53 }
54 }
55 else
56 {
57 i = 0;
58 for(auto ¶m: params)
59 {
60 function->AddLine(
GLSLLine(param.first +
" " + VAR(param.second + STR(i)) +
"[" + STR(paramCount) +
"];"));
61 for(int k = 0 ; k < paramCount ; k++)
62 {
63 if (inputPins[k * params.size() + i]->IsLinked())
64 {
66 inputPins[k * params.size() + i]->other->Evaluate(GetParams(function, &tmp));
67 function->AddLine(
GLSLLine(VAR(param.second + STR(i)) +
"[" + STR(k) +
"]" +
" = " + tmp.line +
";"));
68 }
69 else
70 {
71 function->AddLine(
GLSLLine(VAR(param.second + STR(i)) +
"[" + STR(k) +
"]" +
" = " + param.first +
"(0.0f);"));
72 }
73 }
74 }
75 i++;
76 }
77
78 line->line = func->name + "(";
79 i = 0;
80 int n = params.size();
81
82 for(auto ¶m : params)
83 {
84 line->line += VAR(param.second + STR(i));
85
86 if(i < n - 1)
87 {
88 line->line += ", ";
89 }
90
91 i++;
92 }
93 int callerPin = 0;
94 for(int i = 0;i<outputPins.size();i++)
95 {
96 if(outputPins[i]->id == callerPinId)
97 {
98 callerPin = i;
99 break;
100 }
101 }
102 line->line += (params.size() == 0 ? "" : ", ") + STR(callerPin) + ")";
103}