mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-12 23:24:41 +00:00
Updates
This commit is contained in:
parent
0e2ef6a889
commit
1dca9958a1
4 changed files with 73 additions and 6 deletions
|
|
@ -206,8 +206,69 @@ void CustomFeatureHLSL::setTexData(Material::StageData &stageDat,
|
||||||
Con::executef(mOwner, "setTextureData");
|
Con::executef(mOwner, "setTextureData");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CustomFeatureHLSL::addVariable(String name, String type, String defaultValue)
|
||||||
|
{
|
||||||
|
//do the var/arg fetching here
|
||||||
|
Var *newVar = (Var*)LangElement::find(name.c_str());
|
||||||
|
if (!newVar)
|
||||||
|
{
|
||||||
|
newVar = new Var(name, type);
|
||||||
|
LangElement *newVarDecl = new DecOp(newVar);
|
||||||
|
|
||||||
|
if (!defaultValue.isEmpty())
|
||||||
|
{
|
||||||
|
char declareStatement[128];
|
||||||
|
dSprintf(declareStatement, 128, " @ = %s;\n", defaultValue.c_str());
|
||||||
|
|
||||||
|
meta->addStatement(new GenOp(declareStatement, newVarDecl));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
meta->addStatement(new GenOp(" @;\n", newVarDecl));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CustomFeatureHLSL::writeLine(String format, S32 argc, ConsoleValueRef *argv)
|
void CustomFeatureHLSL::writeLine(String format, S32 argc, ConsoleValueRef *argv)
|
||||||
{
|
{
|
||||||
//do the var/arg fetching here
|
//do the var/arg fetching here
|
||||||
meta->addStatement(new GenOp(format + "\n"/*, colorAccuDecl, accuMapTex, accuMap, inTex, accuScale*/));
|
Vector<Var*> varList;
|
||||||
|
|
||||||
|
for (U32 i = 0; i < argc; i++)
|
||||||
|
{
|
||||||
|
String varName = argv[i].getStringValue();
|
||||||
|
Var *newVar = (Var*)LangElement::find(varName.c_str());
|
||||||
|
if (!newVar)
|
||||||
|
{
|
||||||
|
//couldn't find that variable, bail out
|
||||||
|
Con::errorf("CustomShaderFeature::writeLine: unable to find variable %s, meaning it was not declared before being used!", argv[i].getStringValue());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
varList.push_back(newVar);
|
||||||
|
}
|
||||||
|
|
||||||
|
//not happy about it, but do a trampoline here to pass along the args
|
||||||
|
|
||||||
|
switch (varList.size())
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
meta->addStatement(new GenOp(format + "\n"));
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
meta->addStatement(new GenOp(format + "\n", varList[0]));
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
meta->addStatement(new GenOp(format + "\n", varList[0], varList[1]));
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
meta->addStatement(new GenOp(format + "\n", varList[0], varList[1], varList[2]));
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
meta->addStatement(new GenOp(format + "\n", varList[0], varList[1], varList[2], varList[3]));
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
meta->addStatement(new GenOp(format + "\n", varList[0], varList[1], varList[2], varList[3], varList[4]));
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -64,5 +64,6 @@ public:
|
||||||
return mOwner->getName();
|
return mOwner->getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void addVariable(String name, String type, String defaultValue);
|
||||||
void writeLine(String format, S32 argc, ConsoleValueRef *argv);
|
void writeLine(String format, S32 argc, ConsoleValueRef *argv);
|
||||||
};
|
};
|
||||||
|
|
@ -84,6 +84,11 @@ void CustomShaderFeatureData::onRemove()
|
||||||
}
|
}
|
||||||
|
|
||||||
//Shadergen setup functions
|
//Shadergen setup functions
|
||||||
|
void CustomShaderFeatureData::addVariable(String name, String type, String defaultValue)
|
||||||
|
{
|
||||||
|
mFeatureHLSL->addVariable(name, type, defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
void CustomShaderFeatureData::writeLine(String format, S32 argc, ConsoleValueRef *argv)
|
void CustomShaderFeatureData::writeLine(String format, S32 argc, ConsoleValueRef *argv)
|
||||||
{
|
{
|
||||||
/*mOnObject = onObject;
|
/*mOnObject = onObject;
|
||||||
|
|
@ -126,16 +131,15 @@ void CustomShaderFeatureData::setTexData(Material::StageData &stageDat,
|
||||||
mFeatureHLSL.setTexData(stageDat, fd, passData, texIndex);
|
mFeatureHLSL.setTexData(stageDat, fd, passData, texIndex);
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
/*DefineEngineMethod(CustomShaderFeatureData, newVar, void, (String name, String type), ("", ""), "")
|
DefineEngineMethod(CustomShaderFeatureData, addVariable, void, (String name, String type, String defaultValue), ("", "", ""), "")
|
||||||
{
|
{
|
||||||
object->newVar(name, type);
|
object->addVariable(name, type, defaultValue);
|
||||||
}*/
|
}
|
||||||
|
|
||||||
ConsoleMethod(CustomShaderFeatureData, writeLine, void, 3, 0, "( string format, string args... ) Dynamically call a method on an object.\n"
|
ConsoleMethod(CustomShaderFeatureData, writeLine, void, 3, 0, "( string format, string args... ) Dynamically call a method on an object.\n"
|
||||||
"@param method Name of method to call.\n"
|
"@param method Name of method to call.\n"
|
||||||
"@param args Zero or more arguments for the method.\n"
|
"@param args Zero or more arguments for the method.\n"
|
||||||
"@return The result of the method call.")
|
"@return The result of the method call.")
|
||||||
{
|
{
|
||||||
argv[1] = argv[2];
|
object->writeLine(argv[2], argc - 3, argv + 3);
|
||||||
object->writeLine(argv[1], argc - 1, argv + 1);
|
|
||||||
}
|
}
|
||||||
|
|
@ -58,6 +58,7 @@ public:
|
||||||
void onRemove();
|
void onRemove();
|
||||||
|
|
||||||
//shadergen setup
|
//shadergen setup
|
||||||
|
void addVariable(String name, String type, String defaultValue);
|
||||||
void writeLine(String format, S32 argc, ConsoleValueRef *argv);
|
void writeLine(String format, S32 argc, ConsoleValueRef *argv);
|
||||||
|
|
||||||
//shader generation
|
//shader generation
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue