protected void initNodesLoader() { if (!isUseNodes) { isUseNodes = shaderNames.get(Shader.ShaderType.Vertex) == null && shaderNames.get(Shader.ShaderType.Fragment) == null; if (isUseNodes) { if (nodesLoaderDelegate == null) { nodesLoaderDelegate = new ShaderNodeLoaderDelegate(); }else{ nodesLoaderDelegate.clear(); } nodesLoaderDelegate.setTechniqueDef(technique); nodesLoaderDelegate.setMaterialDef(materialDef); nodesLoaderDelegate.setAssetManager(assetManager); } } }
@Override public Object load(AssetInfo assetInfo) throws IOException { AssetKey k = assetInfo.getKey(); if (!(k instanceof ShaderNodeDefinitionKey)) { throw new IOException("ShaderNodeDefinition file must be loaded via ShaderNodeDefinitionKey"); } ShaderNodeDefinitionKey key = (ShaderNodeDefinitionKey) k; loaderDelegate = new ShaderNodeLoaderDelegate(); InputStream in = assetInfo.openStream(); List<Statement> roots = BlockLanguageParser.parse(in); if (roots.size() == 2) { Statement exception = roots.get(0); String line = exception.getLine(); if (line.startsWith("Exception")) { throw new AssetLoadException(line.substring("Exception ".length())); } else { throw new MatParseException("In multiroot shader node definition, expected first statement to be 'Exception'", exception); } } else if (roots.size() != 1) { throw new MatParseException("Too many roots in J3SN file", roots.get(0)); } return loaderDelegate.readNodesDefinitions(roots.get(0).getContents(), key); } }
protected void initNodesLoader() { if (!isUseNodes) { isUseNodes = shaderNames.get(Shader.ShaderType.Vertex) == null && shaderNames.get(Shader.ShaderType.Fragment) == null; if (isUseNodes) { if (nodesLoaderDelegate == null) { nodesLoaderDelegate = new ShaderNodeLoaderDelegate(); }else{ nodesLoaderDelegate.clear(); } nodesLoaderDelegate.setTechniqueDef(technique); nodesLoaderDelegate.setMaterialDef(materialDef); nodesLoaderDelegate.setAssetManager(assetManager); } } }
@Override public Object load(AssetInfo assetInfo) throws IOException { AssetKey k = assetInfo.getKey(); if (!(k instanceof ShaderNodeDefinitionKey)) { throw new IOException("ShaderNodeDefinition file must be loaded via ShaderNodeDefinitionKey"); } ShaderNodeDefinitionKey key = (ShaderNodeDefinitionKey) k; loaderDelegate = new ShaderNodeLoaderDelegate(); InputStream in = assetInfo.openStream(); List<Statement> roots = BlockLanguageParser.parse(in); if (roots.size() == 2) { Statement exception = roots.get(0); String line = exception.getLine(); if (line.startsWith("Exception")) { throw new AssetLoadException(line.substring("Exception ".length())); } else { throw new MatParseException("In multiroot shader node definition, expected first statement to be 'Exception'", exception); } } else if (roots.size() != 1) { throw new MatParseException("Too many roots in J3SN file", roots.get(0)); } return loaderDelegate.readNodesDefinitions(roots.get(0).getContents(), key); } }