diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/fileStructure/leaves/InputMappingBlock.java b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/fileStructure/leaves/InputMappingBlock.java new file mode 100644 index 000000000..ce46e86ee --- /dev/null +++ b/sdk/jme3-materialeditor/src/com/jme3/gde/materialdefinition/fileStructure/leaves/InputMappingBlock.java @@ -0,0 +1,69 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.jme3.gde.materialdefinition.fileStructure.leaves; + +import com.jme3.util.blockparser.Statement; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * + * @author Nehon + */ +public class InputMappingBlock extends MappingBlock { + + protected InputMappingBlock(int lineNumber, String line) { + super(lineNumber, line); + } + + public InputMappingBlock(Statement sta, String name) { + this(sta.getLineNumber(), sta.getLine()); + parse(sta); + leftNameSpace = name; + updateLine(); + } + + public InputMappingBlock(String leftVar, String rightVar, String leftVarSwizzle, String rightVarSwizzle, String leftNameSpace,String rightNameSpace, String condition) { + super(0, ""); + this.leftVar = leftVar; + this.rightVar = rightVar; + this.leftVarSwizzle = leftVarSwizzle; + this.leftNameSpace = leftNameSpace; + this.rightVarSwizzle = rightVarSwizzle; + this.rightNameSpace = rightNameSpace; + this.condition = condition; + updateLine(); + } + + @Override + protected final void updateLine() { + this.line = leftVar + (leftVarSwizzle == null ? "" : "." + leftVarSwizzle) + " = " + rightNameSpace + "." + rightVar + (rightVarSwizzle == null ? "" : "." + rightVarSwizzle) + (condition != null ? " : " + condition : ""); + } + + private void parse(Statement sta) { + try { + String[] split = sta.getLine().split(":"); + if (split.length > 1) { + condition = split[1].trim(); + } + String mapping = split[0].trim(); + String[] s = mapping.split("="); + String[] left = s[0].split("\\."); + leftVar = left[0].trim(); + if (left.length > 1) { + leftVarSwizzle = left[1].trim(); + } + String[] right = s[1].split("\\."); + rightNameSpace = right[0].trim(); + rightVar = right[1].trim(); + if (right.length > 2) { + rightVarSwizzle = right[2].trim(); + } + + } catch (ArrayIndexOutOfBoundsException e) { + Logger.getLogger(InputMappingBlock.class.getName()).log(Level.WARNING, "Parsing error line " + sta.getLineNumber() + " : " + sta.getLine()); + } + } +}