@@ -50,7 +50,7 @@ JsonNodeMaterialParser.prototype.initialize = function (material, data) {
50
50
//for (var i=0;i<data.graphData.iocVars.length;i++)
51
51
for ( var i = 0 ; i < Object . keys ( data . graphData . iocVars ) . length ; i ++ )
52
52
{
53
- if ( data . graphData . iocVars [ i ] . valueTex )
53
+ if ( data . graphData . iocVars [ i ] . type === 'sampler2D' && data . graphData . iocVars [ i ] . valueTex )
54
54
{
55
55
if ( typeof ( data . graphData . iocVars [ i ] . valueTex ) === 'number' && data . graphData . iocVars [ i ] . valueTex > 0 )
56
56
{
@@ -73,6 +73,13 @@ JsonNodeMaterialParser.prototype.initialize = function (material, data) {
73
73
//assign directly - we (probably) don't need to convert to Vec2/3/4 objects?
74
74
material . graphData . iocVars [ i ] = { } ;
75
75
Object . assign ( material . graphData . iocVars [ i ] , data . graphData . iocVars [ i ] ) ;
76
+
77
+ //deal with 0 being undefined (TODO: find better way?)
78
+ var var_type = material . graphData . iocVars [ i ] . type ;
79
+ if ( material . graphData . iocVars [ i ] . valueW === undefined && var_type === 'vec4' ) material . graphData . iocVars [ i ] . valueW = 0 ;
80
+ if ( material . graphData . iocVars [ i ] . valueZ === undefined && ( var_type === 'vec4' || var_type === 'vec3' ) ) material . graphData . iocVars [ i ] . valueZ = 0 ;
81
+ if ( material . graphData . iocVars [ i ] . valueY === undefined && ( var_type === 'vec4' || var_type === 'vec3' || var_type === 'vec2' ) ) material . graphData . iocVars [ i ] . valueY = 0 ;
82
+ if ( material . graphData . iocVars [ i ] . valueX === undefined && ( var_type === 'vec4' || var_type === 'vec3' || var_type === 'vec2' || var_type === 'float' ) ) material . graphData . iocVars [ i ] . valueX = 0 ;
76
83
}
77
84
}
78
85
}
@@ -145,25 +152,41 @@ JsonNodeMaterialParser.prototype.initialize = function (material, data) {
145
152
//connections are indices and names - no asset refs - so just assign
146
153
material . graphData . connections [ i ] = { } ;
147
154
Object . assign ( material . graphData . connections [ i ] , data . graphData . connections [ i ] ) ;
155
+
156
+ //deal with 0 index problem
157
+ if ( material . graphData . connections [ i ] . inVarName && material . graphData . connections [ i ] . inNodeIndex === undefined ) material . graphData . connections [ i ] . inNodeIndex = 0 ;
158
+ if ( material . graphData . connections [ i ] . outVarName && material . graphData . connections [ i ] . outNodeIndex === undefined ) material . graphData . connections [ i ] . outNodeIndex = 0 ;
148
159
}
149
160
}
150
161
151
162
if ( data . graphData . subGraphs )
152
163
{
153
- material . graphData . subGraphs = [ ] ;
164
+ if ( material . graphData . subGraphs . length != Object . keys ( data . graphData . subGraphs ) . length )
165
+ {
166
+ material . graphData . subGraphs . length = Object . keys ( data . graphData . subGraphs ) . length ;
167
+ }
154
168
155
169
//for (var i=0;i<data.graphData.subGraphs.length;i++)
156
170
for ( var i = 0 ; i < Object . keys ( data . graphData . subGraphs ) . length ; i ++ )
157
171
{
158
172
if ( typeof ( data . graphData . subGraphs [ i ] ) === 'number' && data . graphData . subGraphs [ i ] > 0 )
159
173
{
174
+ material . graphData . subGraphs [ i ] = data . graphData . subGraphs [ i ] ;
160
175
//this means sub graph asset is not loaded yet - cannot assign
161
176
material_ready = false ;
162
177
}
163
178
else
164
179
{
165
- //sub graph asset loaded - assign!
166
- material . graphData . subGraphs [ i ] = data . graphData . subGraphs [ i ] ;
180
+ //check if ready
181
+ //if (data.graphData.subGraphs[i]._material_ready===true)
182
+ {
183
+ //sub graph asset loaded and ready - assign!
184
+ material . graphData . subGraphs [ i ] = data . graphData . subGraphs [ i ] ;
185
+ }
186
+ //else
187
+ //{
188
+ // material_ready = false;
189
+ //}
167
190
}
168
191
}
169
192
}
@@ -186,11 +209,13 @@ JsonNodeMaterialParser.prototype.initialize = function (material, data) {
186
209
//only mark for update if ready dependent assets (with no placeholders) are loaded
187
210
if ( material_ready )
188
211
{
212
+ //data._material_ready=true;
189
213
material . dirtyShader = true ;
190
214
material . update ( ) ;
191
215
}
192
216
else
193
217
{
218
+ //data._material_ready = false;
194
219
material . setPlaceHolderShader ( this . _placeholderNodeMat ) ;
195
220
}
196
221
} ;
0 commit comments