|
@@ -8,7 +8,7 @@ using hxsl.Ast;
|
|
|
@color("#0e8826")
|
|
|
class ShaderGlobalInput extends ShaderNode {
|
|
|
|
|
|
- @prop("Variable") public var variable : TVar = globalInputs[0];
|
|
|
+ @prop("Variable") public var variableIdx : Int = 0;
|
|
|
|
|
|
|
|
|
static public var globalInputs = [ { parent: null, id: 0, kind: Global, name: "global.time", type: TFloat },
|
|
@@ -19,45 +19,30 @@ class ShaderGlobalInput extends ShaderNode {
|
|
|
override function getShaderDef():hrt.shgraph.ShaderGraph.ShaderNodeDef {
|
|
|
var pos : Position = {file: "", min: 0, max: 0};
|
|
|
|
|
|
- var inVar : TVar = variable;
|
|
|
- var output : TVar = {name: "output", id:1, type: this.variable.type, kind: Local, qualifiers: []};
|
|
|
+ var inVar : TVar = globalInputs[variableIdx];
|
|
|
+ var output : TVar = {name: "output", id:1, type: inVar.type, kind: Local, qualifiers: []};
|
|
|
var finalExpr : TExpr = {e: TBinop(OpAssign, {e:TVar(output), p:pos, t:output.type}, {e: TVar(inVar), p: pos, t: output.type}), p: pos, t: output.type};
|
|
|
|
|
|
return {expr: finalExpr, inVars: [], outVars:[{v: output, internal: false}], externVars: [inVar], inits: []};
|
|
|
}
|
|
|
|
|
|
- override public function loadProperties(props : Dynamic) {
|
|
|
- var paramVariable : String = Reflect.field(props, "variable");
|
|
|
- for (c in ShaderGlobalInput.globalInputs) {
|
|
|
- if (c.name == paramVariable) {
|
|
|
- this.variable = c;
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
#if editor
|
|
|
override public function getPropertiesHTML(width : Float) : Array<hide.Element> {
|
|
|
var elements = [];
|
|
|
var element = new hide.Element('<div style="width: 120px; height: 30px"></div>');
|
|
|
element.append(new hide.Element('<select id="variable"></select>'));
|
|
|
|
|
|
- if (this.variable == null)
|
|
|
- this.variable = ShaderGlobalInput.globalInputs[0];
|
|
|
-
|
|
|
var input = element.children("select");
|
|
|
- var indexOption = 0;
|
|
|
- for (c in ShaderGlobalInput.globalInputs) {
|
|
|
+ for (indexOption => c in ShaderGlobalInput.globalInputs) {
|
|
|
var name = c.name.split(".")[1];
|
|
|
input.append(new hide.Element('<option value="${indexOption}">${name}</option>'));
|
|
|
- if (this.variable.name == c.name) {
|
|
|
+ if (this.variableIdx == indexOption) {
|
|
|
input.val(indexOption);
|
|
|
}
|
|
|
- indexOption++;
|
|
|
}
|
|
|
input.on("change", function(e) {
|
|
|
var value = input.val();
|
|
|
- this.variable = ShaderGlobalInput.globalInputs[value];
|
|
|
+ this.variableIdx = value;
|
|
|
});
|
|
|
|
|
|
elements.push(element);
|