From f9f25813d0a988153184d5c5b3ee35087b118f78 Mon Sep 17 00:00:00 2001 From: "nor..67" Date: Fri, 9 Sep 2011 14:40:50 +0000 Subject: [PATCH] - remove ManualBlenderTester git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8229 75d07b2b-3a1a-0410-a2c5-0572b91ccdca --- .../jme3test/blender/ManualBlenderTester.java | 233 ----- .../blender/config/AbstractConfigDialog.java | 378 ------- .../blender/config/AnimationsTable.java | 185 ---- .../config/BlenderKeyConfiguration.java | 127 --- .../jme3test/blender/config/ConfigDialog.java | 426 -------- .../config/NoiseConstantsGenerator.java | 947 ------------------ .../test/jme3test/blender/scene/Pivot.java | 54 - .../jme3test/blender/scene/VisibleBone.java | 48 - 8 files changed, 2398 deletions(-) delete mode 100644 engine/src/test/jme3test/blender/ManualBlenderTester.java delete mode 100644 engine/src/test/jme3test/blender/config/AbstractConfigDialog.java delete mode 100644 engine/src/test/jme3test/blender/config/AnimationsTable.java delete mode 100644 engine/src/test/jme3test/blender/config/BlenderKeyConfiguration.java delete mode 100644 engine/src/test/jme3test/blender/config/ConfigDialog.java delete mode 100644 engine/src/test/jme3test/blender/config/NoiseConstantsGenerator.java delete mode 100644 engine/src/test/jme3test/blender/scene/Pivot.java delete mode 100644 engine/src/test/jme3test/blender/scene/VisibleBone.java diff --git a/engine/src/test/jme3test/blender/ManualBlenderTester.java b/engine/src/test/jme3test/blender/ManualBlenderTester.java deleted file mode 100644 index 444f77716..000000000 --- a/engine/src/test/jme3test/blender/ManualBlenderTester.java +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Copyright (c) 2009-2010 jMonkeyEngine - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * * Neither the name of 'jMonkeyEngine' nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package jme3test.blender; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; - -import jme3test.blender.config.BlenderKeyConfiguration; -import jme3test.blender.config.ConfigDialog; -import jme3test.blender.scene.Pivot; - -import com.jme3.animation.AnimControl; -import com.jme3.app.SimpleApplication; -import com.jme3.asset.AssetInfo; -import com.jme3.asset.BlenderKey; -import com.jme3.asset.BlenderKey.LoadingResults; -import com.jme3.asset.ModelKey; -import com.jme3.asset.plugins.FileLocator; -import com.jme3.light.DirectionalLight; -import com.jme3.light.Light; -import com.jme3.math.ColorRGBA; -import com.jme3.math.Vector3f; -import com.jme3.renderer.Camera; -import com.jme3.scene.Node; -import com.jme3.scene.Spatial; -import com.jme3.scene.plugins.blender.BlenderLoader; -import com.jme3.scene.plugins.blender.BlenderModelLoader; -import com.jme3.texture.plugins.AWTLoader; - -/** - * This class allow to manually test the blender loader. - * @author Marcin Roguski (Kaelthas) - */ -public class ManualBlenderTester extends SimpleApplication { - - private static final Logger LOGGER = Logger.getLogger(ManualBlenderTester.class.getName()); - private BlenderKeyConfiguration blenderKeyConfiguration; - private final boolean debug; - - /** - * Starting method - * @param args input parameters; the following options can be passed to the application: - *
  • -debug : this one indicates if the application runs in debug or not (it is used under linux - * in order to enable the mouse in debug mode since linuxes tend not to give the cursor back - * to eclipse) - */ - public static void main(String[] args) { - //veryfying if the application is in debug mode - boolean debug = false; - for (String arg : args) { - if ("-debug".equalsIgnoreCase(arg)) { - debug = true; - break; - } - } - final boolean debugMode = debug; - //running the application - ConfigDialog configDialog = new ConfigDialog("./src/test-data/Blender"); - BlenderKeyConfiguration bkk = configDialog.getBlenderKeyConfiguration(); - if(bkk != null) { - new ManualBlenderTester(bkk, debugMode).start(); - } - } - - /** - * Constructor stores the given key and disables the settings screen. - * @param modelKey the key to be stored - * @param logLevel the jme logger log level - * @param debug variable that indicates if the application runs in debug mode - * (this is required on linux to show release the mouse to be used in debug mode) - */ - public ManualBlenderTester(BlenderKeyConfiguration bkc, boolean debug) { - this.debug = debug; - Logger.getLogger("com.jme3").setLevel(bkc.getLogLevel()); - this.blenderKeyConfiguration = bkc; - this.showSettings = false; - } - - @Override - public void simpleInitApp() { - if (debug) { - mouseInput.setCursorVisible(true); - } - //XXX: wrong, wrong, wrong!! The assets should be found without registering - //every single folder. - //Definitely need to remove all this and accomapnying classes, - //people use this as examples. - assetManager.registerLocator(".", FileLocator.class); - assetManager.registerLocator("./src/test-data/Blender/2.4x", FileLocator.class); - assetManager.registerLocator("./src/test-data/Blender/2.4x/textures", FileLocator.class); - assetManager.registerLocator("./src/test-data/Blender/2.5x", FileLocator.class); - - assetManager.registerLoader(BlenderLoader.class, "blend"); - assetManager.registerLoader(AWTLoader.class, "png", "jpg", "bmp"); - - viewPort.setBackgroundColor(ColorRGBA.Gray); - - flyCam.setMoveSpeed(20); - cam.setFrustumFar(1000.0f); - cam.setFrustumNear(1.0f); - - ModelKey modelKey = blenderKeyConfiguration.getKeyToUse(); - AssetInfo ai = new AssetInfo(assetManager, modelKey) { - - @Override - public InputStream openStream() { - try { - return new FileInputStream(this.key.getName()); - } catch (FileNotFoundException e) { - LOGGER.log(Level.SEVERE, e.getMessage(), e); - return null; - } - } - }; - rootNode.attachChild(new Pivot(assetManager)); - if (modelKey instanceof BlenderKey) { - this.testBlenderLoader(ai); - //setting the selected animations as active -// List selectedAnimations = blenderKeyConfiguration.getSelectedAnimations().get(modelKey.getName()); -// if(selectedAnimations != null) { -// for(String[] animData : selectedAnimations) { -// Spatial animatedSpatial = this.findNode(this.rootNode, animData[0]); -// if(animatedSpatial != null) { -// animatedSpatial.getControl(AnimControl.class).createChannel().setAnim(animData[1]); -// } else { -// LOGGER.warning("Cannot find the node to play its animation: " + animData[0]); -// } -// } -// } - } else { - this.testBlenderModelLoader(ai); - } - - DirectionalLight sun = new DirectionalLight(); - sun.setDirection(new Vector3f(0, -10, 0).normalizeLocal()); - sun.setColor(ColorRGBA.White); - rootNode.addLight(sun); - } - - /** - * This method finds a node of a given name. - * @param rootNode the root node to search - * @param name the name of the searched node - * @return the found node or null - */ - private Spatial findNode(Node rootNode, String name) { - if (name.equals(rootNode.getName())) { - return rootNode; - } - return rootNode.getChild(name); - } - - /** - * This method loads the model using blenderLoader. - * @param assetInfo - * the asset info - * @return the loaded model - */ - private Node testBlenderLoader(AssetInfo assetInfo) { - Node blenderModel = null; - BlenderLoader blenderLoader = new BlenderLoader(); - try { - LoadingResults loadingResults = (LoadingResults) blenderLoader.load(assetInfo); - for (Node object : loadingResults.getObjects()) { - this.rootNode.attachChild(object); - blenderModel = object; - } - for (Light light : loadingResults.getLights()) { - this.rootNode.addLight(light); - } - for (Camera camera : loadingResults.getCameras()) { - LOGGER.info(camera.toString()); - } - } catch (IOException e) { - LOGGER.log(Level.SEVERE, e.getMessage(), e); - } - return blenderModel; - } - - /** - * This method loads the model using blenderModelLoader. - * @param assetInfo - * the asset info - * @return the loaded model - */ - private Node testBlenderModelLoader(AssetInfo assetInfo) { - BlenderModelLoader blenderLoader = new BlenderModelLoader(); - try { - Spatial loadingResults = blenderLoader.load(assetInfo); - this.rootNode.attachChild(loadingResults); - if (loadingResults instanceof Node) { - return (Node) loadingResults; - } - } catch (IOException e) { - LOGGER.log(Level.SEVERE, e.getMessage(), e); - } - return null; - } -} diff --git a/engine/src/test/jme3test/blender/config/AbstractConfigDialog.java b/engine/src/test/jme3test/blender/config/AbstractConfigDialog.java deleted file mode 100644 index 39a507e87..000000000 --- a/engine/src/test/jme3test/blender/config/AbstractConfigDialog.java +++ /dev/null @@ -1,378 +0,0 @@ -package jme3test.blender.config; - -import java.awt.BorderLayout; -import java.awt.Component; -import java.awt.FlowLayout; -import java.awt.Frame; -import java.awt.Insets; -import java.awt.Label; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.File; -import java.util.HashMap; -import java.util.Map; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.swing.AbstractCellEditor; -import javax.swing.Box; -import javax.swing.ButtonGroup; -import javax.swing.DefaultComboBoxModel; -import javax.swing.DefaultListModel; -import javax.swing.DefaultListSelectionModel; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JComboBox; -import javax.swing.JDialog; -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.JRadioButton; -import javax.swing.JScrollPane; -import javax.swing.JTable; -import javax.swing.JTextField; -import javax.swing.ListSelectionModel; -import javax.swing.UIManager; -import javax.swing.UnsupportedLookAndFeelException; -import javax.swing.border.EmptyBorder; -import javax.swing.border.TitledBorder; -import javax.swing.table.DefaultTableModel; -import javax.swing.table.TableCellEditor; - -/** - * A base class for defining the start configuration. - * This separates the gui window definition from its logic. - * It is made so to easier maintain the dialog window. - * @author Marcin Roguski (Kaelthas) - */ -public abstract class AbstractConfigDialog extends JDialog { - - private static final long serialVersionUID = -3677493125861310310L; - private static final Logger LOGGER = Logger.getLogger(AbstractConfigDialog.class.getName()); - protected JComboBox jComboBoxVersionSelection; - protected JList jListBlenderFiles; - protected JTable jTableProperties; - protected JTable jTableAnimations; - protected JButton jButtonAddAnimation; - protected JButton jButtonRemoveAnimation; - protected JCheckBox jCheckBoxUseModelKey; - protected JButton jButtonOK; - protected JButton jButtonCancel; - - /** - * Cionstructor initializes the gui. - */ - public AbstractConfigDialog() { - super((Frame)null, true); - this.init(); - } - - /** - * This method initializes the window. - */ - private void init() { - try {//setting the system Look And Feel - UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); - } catch (ClassNotFoundException e) { - LOGGER.log(Level.SEVERE, e.getMessage(), e); - } catch (InstantiationException e) { - LOGGER.log(Level.SEVERE, e.getMessage(), e); - } catch (IllegalAccessException e) { - LOGGER.log(Level.SEVERE, e.getMessage(), e); - } catch (UnsupportedLookAndFeelException e) { - LOGGER.log(Level.SEVERE, e.getMessage(), e); - } - this.setLayout(new BorderLayout()); - this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); - this.setLocationByPlatform(true); - - this.add(this.prepareBlenderFilesAndLogLevelPanel(), BorderLayout.WEST); - this.add(this.prepareFilePropertiesPanel(), BorderLayout.CENTER); - this.add(this.prepareButtonsPanel(), BorderLayout.SOUTH); - - this.pack(); - } - - /** - * This method prepares a swing panel containing the list of blender files - * and log level chooser. - * @return prepared swing panel - */ - private JPanel prepareBlenderFilesAndLogLevelPanel() { - JPanel jPanelBlenderFilesListAndLogLevel = new JPanel(); - jPanelBlenderFilesListAndLogLevel.setBorder(new TitledBorder("Blender test files")); - jPanelBlenderFilesListAndLogLevel.setLayout(new BorderLayout()); - - //blender version selection combo box - jComboBoxVersionSelection = new JComboBox(new DefaultComboBoxModel()); - jComboBoxVersionSelection.setEditable(false); - jPanelBlenderFilesListAndLogLevel.add(jComboBoxVersionSelection, BorderLayout.NORTH); - - //blender list files - jListBlenderFiles = new JList(new DefaultListModel()); - jListBlenderFiles.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - JScrollPane listScroller = new JScrollPane(jListBlenderFiles); - jPanelBlenderFilesListAndLogLevel.add(listScroller, BorderLayout.CENTER); - - //Log Level list - Box box = Box.createVerticalBox(); - box.add(new Label("Log level:")); - ButtonGroup buttonGroup = new ButtonGroup(); - - Level[] levels = new Level[]{Level.OFF, Level.SEVERE, Level.WARNING, Level.INFO, - Level.CONFIG, Level.FINE, Level.FINER, Level.FINEST, Level.ALL}; - for (Level level : levels) { - JRadioButtonLevel jRadioButtonLevel = new JRadioButtonLevel(level); - buttonGroup.add(jRadioButtonLevel); - box.add(jRadioButtonLevel); - } - jPanelBlenderFilesListAndLogLevel.add(box, BorderLayout.SOUTH); - - return jPanelBlenderFilesListAndLogLevel; - } - - /** - * This method prepares a swing panel containing the file's animations. - * @return prepared swing panel - */ - protected JPanel prepareFilePropertiesPanel() { - //properties table - JPanel jPanelProperties = new JPanel(); - jPanelProperties.setBorder(new EmptyBorder(new Insets(0, 5, 0, 5))); - jPanelProperties.setLayout(new BorderLayout()); - jPanelProperties.add(new JLabel("Properties"), BorderLayout.NORTH); - - jTableProperties = new JTable(); - jTableProperties.setSelectionMode(DefaultListSelectionModel.SINGLE_SELECTION); - jTableProperties.setModel(new BlenderTableModel(new Object[]{"Name", "Value"})); - jTableProperties.getColumnModel().getColumn(1).setCellEditor(new BlenderTableCellEditor()); - JScrollPane jScrollPaneProperties = new JScrollPane(jTableProperties); - jTableProperties.setFillsViewportHeight(true); - - jPanelProperties.add(jScrollPaneProperties, BorderLayout.CENTER); - - //animations table - JPanel jPanelAnimations = new JPanel(); - jPanelAnimations.setBorder(new EmptyBorder(new Insets(0, 5, 0, 5))); - jPanelAnimations.setLayout(new BorderLayout()); - jPanelAnimations.add(new JLabel("Animations"), BorderLayout.NORTH); - - jTableAnimations = new AnimationsTable(); - JScrollPane jScrollPaneAnimations = new JScrollPane(jTableAnimations); - jTableAnimations.setFillsViewportHeight(true); - - JPanel jPanelTableButtons = new JPanel(); - jPanelTableButtons.setLayout(new FlowLayout(FlowLayout.LEFT)); - jButtonAddAnimation = new JButton("Add animation"); - jButtonAddAnimation.setEnabled(false); - jButtonRemoveAnimation = new JButton("Remove animation"); - jButtonRemoveAnimation.setEnabled(false); - jPanelTableButtons.add(jButtonAddAnimation); - jPanelTableButtons.add(jButtonRemoveAnimation); - - jPanelAnimations.add(jScrollPaneAnimations, BorderLayout.CENTER); - jPanelAnimations.add(jPanelTableButtons, BorderLayout.SOUTH); - - //model key check-box - jCheckBoxUseModelKey = new JCheckBox(); - jCheckBoxUseModelKey.setText("Use ModelKey to start the test"); - jCheckBoxUseModelKey.setToolTipText("All BlenderKey settings will remain here, but the application will be " - + "started using a model key. So only the path to the file will be given!"); - - //building the result panel - JPanel jPanelResult = new JPanel(); - jPanelResult.setBorder(new TitledBorder("Loading properties")); - jPanelResult.setLayout(new BorderLayout()); - - jPanelResult.add(jPanelProperties, BorderLayout.WEST); - jPanelResult.add(jPanelAnimations, BorderLayout.CENTER); - jPanelResult.add(jCheckBoxUseModelKey, BorderLayout.SOUTH); - return jPanelResult; - } - - /** - * This method prepares a swing panel containing the buttons. - * @return prepared swing panel - */ - protected JPanel prepareButtonsPanel() { - JPanel jPanelButtons = new JPanel(); - jButtonOK = new JButton("OK"); - jButtonOK.setEnabled(false); - jPanelButtons.add(jButtonOK); - jButtonCancel = new JButton("Cancel"); - jPanelButtons.add(jButtonCancel); - return jPanelButtons; - } - - /** - * This class was made only to make the selection of a level radio button easier. - * @author Marcin Roguski - */ - protected static class JRadioButtonLevel extends JRadioButton { - - private static final long serialVersionUID = 8874525909060993518L; - private static Level selectedLevel; - private static Map radioButtons = new HashMap(); - private Level level; - - /** - * Constructor. Creates the radio button. - * Stores it inside the buttons map. - * @param level the level of log info - */ - public JRadioButtonLevel(Level level) { - super(level.getName()); - this.level = level; - radioButtons.put(level, this); - this.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent e) { - JRadioButtonLevel.selectedLevel = JRadioButtonLevel.this.level; - } - }); - } - - /** - * This method returns the currently selected info level. - * @return currently selected info level - */ - public static Level getSelectedLevel() { - return selectedLevel; - } - - /** - * This method sets the current info level. - * @param level the current info level - */ - public static synchronized void setSelectedLevel(Level level) { - radioButtons.get(level).setSelected(true); - selectedLevel = level; - } - } - - /** - * This class is an item that should be stored in the files' list. - * @author Marcin Roguski (Kaelthas) - */ - protected static class FileListItem { - - private File file; //the file to be stored - - /** - * Constructore. Stores the given file. - * @param file the file to be stored - */ - public FileListItem(File file) { - this.file = file; - } - - /** - * This method returns the stored file. - * @return the stored file - */ - public File getFile() { - return file; - } - - @Override - public String toString() { - return file.getName(); - } - } - - /** - * The model for properties table. - * It makes left column ineditable. - * @author Marcin Roguski (Kaelthas) - */ - protected static class BlenderTableModel extends DefaultTableModel { - - private static final long serialVersionUID = -4211206550875326553L; - - /** - * Constructor only calls super-constuctor. - * @param columnNames the names of table columns - */ - public BlenderTableModel(Object[] columnNames) { - super(columnNames, 0); - } - - @Override - public void addRow(Object[] rowData) { - for (int i = 0; i < rowData.length; ++i) { - if (rowData[i] == null) { - rowData[i] = ""; - } - } - super.addRow(rowData); - } - - @Override - public boolean isCellEditable(int row, int column) { - return column > 0; - } - } - - /** - * A cell editor tah improves data input to the table. - * @author Marcin Roguski (Kaelthas) - */ - protected static class BlenderTableCellEditor extends AbstractCellEditor implements TableCellEditor { - - private static final long serialVersionUID = -8601975203921608519L; - private JCheckBox jCheckBox = new JCheckBox(); - private JTextField jTextField = new JTextField(); - private JComboBox jComboBox = new JComboBox(); - private Object lastValue; - - @Override - public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { - this.lastValue = value; - if (value instanceof Boolean) { - jCheckBox.setSelected(((Boolean) value).booleanValue()); - return jCheckBox; - } else if (value instanceof String || value instanceof Number || value instanceof Character) { - jTextField.setText(value.toString()); - return jTextField; - } else if (value instanceof Enum) { - DefaultComboBoxModel defaultComboBoxModel = (DefaultComboBoxModel) jComboBox.getModel(); - defaultComboBoxModel.removeAllElements(); - for (Object object : value.getClass().getEnumConstants()) { - defaultComboBoxModel.addElement(object); - } - return jComboBox; - } else { - jTextField.setText(value == null ? "" : value.toString()); - return jTextField; - } - } - - @Override - public Object getCellEditorValue() { - if (lastValue instanceof Boolean) { - return Boolean.valueOf(jCheckBox.isSelected()); - } else if (lastValue instanceof String) { - return jTextField.getText(); - } else if (lastValue instanceof Character) { - return Character.valueOf(jTextField.getText().charAt(0)); - } else if (lastValue instanceof Byte) { - return Byte.valueOf(jTextField.getText()); - } else if (lastValue instanceof Short) { - return Short.valueOf(jTextField.getText()); - } else if (lastValue instanceof Integer) { - return Integer.valueOf(jTextField.getText()); - } else if (lastValue instanceof Long) { - return Long.valueOf(jTextField.getText()); - } else if (lastValue instanceof Float) { - return Float.valueOf(jTextField.getText()); - } else if (lastValue instanceof Double) { - return Double.valueOf(jTextField.getText()); - } else if (lastValue instanceof Enum) { - return jComboBox.getSelectedItem(); - } - //TODO: savable objects - return null; - } - } -} diff --git a/engine/src/test/jme3test/blender/config/AnimationsTable.java b/engine/src/test/jme3test/blender/config/AnimationsTable.java deleted file mode 100644 index 4022b0495..000000000 --- a/engine/src/test/jme3test/blender/config/AnimationsTable.java +++ /dev/null @@ -1,185 +0,0 @@ -package jme3test.blender.config; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.util.HashMap; -import java.util.Map; -import java.util.Random; -import java.util.Vector; - -import javax.swing.DefaultCellEditor; -import javax.swing.DefaultListSelectionModel; -import javax.swing.JFrame; -import javax.swing.JRadioButton; -import javax.swing.JScrollPane; -import javax.swing.JTable; -import javax.swing.JTextField; -import javax.swing.event.TableModelEvent; -import javax.swing.event.TableModelListener; -import javax.swing.table.DefaultTableCellRenderer; -import javax.swing.table.DefaultTableModel; - -/** - * Table for displaying and managing animations to import. - * @author Marcin Roguski (Kaelthas) - */ -public class AnimationsTable extends JTable { - private static final long serialVersionUID = 1978778634957586330L; - - /** - * Constructor. Creates default model. Applies basic settings. - */ - public AnimationsTable() { - super(new AnimationsTableModel(new Object[] {null, "Object name", "Animation name", "Start", "Stop"})); - this.getTableHeader().setReorderingAllowed(false); - this.setSelectionMode(DefaultListSelectionModel.SINGLE_SELECTION); - CellRenderer cellRenderer = new CellRenderer(); - this.setDefaultRenderer(Object.class, cellRenderer); - this.getModel().addTableModelListener(cellRenderer); - this.getColumnModel().getColumn(0).setCellEditor(new RadioButtonCellEditor()); - } - - /** - * This class represents the model where all cells are editable and animations are always grouped - * by object. - * @author Marcin Roguski (Kaelthas) - */ - private static final class AnimationsTableModel extends DefaultTableModel { - private static final long serialVersionUID = 8285912542455513806L; - - /** - * Constructor. Creates table with given columns and no rows. - * @param columnNames the names of the columns - */ - public AnimationsTableModel(Object[] columnNames) { - super(columnNames, 0); - } - - @Override - public boolean isCellEditable(int row, int column) { - return true; - } - - @Override - @SuppressWarnings("rawtypes") - public void addRow(Vector rowData) { - String objectName = (String) rowData.get(1); - int index = 0; - boolean objectFound = false; - for(int i=0;i objectIndex = new HashMap(); - /** The other color for the group (the first one is WHITE. */ - private Color color = new Color(240, 240, 240); - /** Radio button to display row selection. */ - private JRadioButton jRadioButton = new JRadioButton(); - - @Override - public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, - int column) { - Object objectName = table.getModel().getValueAt(row, 1); - Component component; - if(column == 0) { - jRadioButton.setSelected((Boolean)value); - component = jRadioButton; - } else { - component = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); - } - - Integer index = objectIndex.get(objectName); - if(index != null) { - if(index.intValue() % 2 == 1) { - component.setBackground(color); - } else { - component.setBackground(Color.WHITE); - } - } - return component; - } - - @Override - public void tableChanged(TableModelEvent evt) { - if(evt.getType() == TableModelEvent.INSERT) { - DefaultTableModel model = (DefaultTableModel)evt.getSource(); - for(int i=evt.getFirstRow();i<=evt.getLastRow();++i) { - String objectName = (String) model.getValueAt(i, 1); - if(!objectIndex.containsKey(objectName)) { - objectIndex.put(objectName, Integer.valueOf(objectIndex.size())); - } - } - } - } - } - - /** - * This editor is used for the first column to allow the edition of row selection. - * @author Marcin Roguski (Kaelthas) - */ - private static final class RadioButtonCellEditor extends DefaultCellEditor { - private static final long serialVersionUID = 7697027333456874718L; - /** Component that allows editing. */ - private JRadioButton jRadioButton = new JRadioButton(); - - /** - * Constructor. - */ - public RadioButtonCellEditor() { - super(new JTextField()); - } - - @Override - public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { - jRadioButton.setSelected((Boolean)value); - return jRadioButton; - } - - @Override - public Object getCellEditorValue() { - return Boolean.valueOf(jRadioButton.isSelected()); - } - } - - public static void main(String[] args) { - JFrame frame = new JFrame(); - frame.setLayout(new BorderLayout()); - frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); - - Random random = new Random(System.currentTimeMillis()); - AnimationsTable table = new AnimationsTable(); - int objectsCount = random.nextInt(5) + 1; - for(int i=1;i<=objectsCount;++i) { - int animsCount = random.nextInt(7) + 1; - for(int j=1;j<=animsCount;++j) { - ((DefaultTableModel)table.getModel()).addRow(new Object[] {Boolean.FALSE, "Obiekt" + i, "Animacja" + j, "Start" + j, "Stop" + j}); - } - } - ((DefaultTableModel)table.getModel()).addRow(new Object[] {Boolean.FALSE, "Obiekt1", "xxx", "xxx", "xxx"}); - JScrollPane jScrollPane = new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); - frame.add(jScrollPane, BorderLayout.CENTER); - frame.pack(); - frame.setVisible(true); - } -} diff --git a/engine/src/test/jme3test/blender/config/BlenderKeyConfiguration.java b/engine/src/test/jme3test/blender/config/BlenderKeyConfiguration.java deleted file mode 100644 index ba75170de..000000000 --- a/engine/src/test/jme3test/blender/config/BlenderKeyConfiguration.java +++ /dev/null @@ -1,127 +0,0 @@ -package jme3test.blender.config; - -import java.io.IOException; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.logging.Level; - -import com.jme3.asset.BlenderKey; -import com.jme3.asset.ModelKey; -import com.jme3.export.InputCapsule; -import com.jme3.export.JmeExporter; -import com.jme3.export.JmeImporter; -import com.jme3.export.OutputCapsule; -import com.jme3.export.Savable; - -/** - * This class holds the configuration for all the files. - * It can be saved and loaded using jme mechanisms. - * @author Marcin Roguski (Kaelthas) - */ -public class BlenderKeyConfiguration implements Savable { - /** - * The key is a directory of blender_version_folder. - * The value is the map between the blender file name and its blender key. - */ - /*package*/ Map> blenderKeys; - /** List of selected animations for each object. An object can have one active animations.*/ - /*package*/ Map> selectedAnimations; - /** The last version of blender opened. */ - /*package*/ String lastVersionUsed; - /** The last used blender key for each blender version. */ - /*package*/ Map lastUsedKey; - /** Last used log level. */ - /*package*/ Level logLevel; - /** This variable tells if the model or blender loader is used. */ - /*package*/ boolean useModelKey; - - /** - * Constructor that creates new empty configuration for every blender file. - * Also used for jme serialization. - */ - public BlenderKeyConfiguration() { - blenderKeys = new HashMap>(); - selectedAnimations = new HashMap>(); - lastUsedKey = new HashMap(); - logLevel = Level.INFO; - } - - /** - * This method returns the name of the last used asset folder. - * @return the name of the last used asset folder - */ - public String getLastVersionUsed() { - return lastVersionUsed; - } - - /** - * This method returns the log level of jme app. - * @return the log level of jme app - */ - public Level getLogLevel() { - return logLevel; - } - - /** - * This method returns the key that will be used during the test. - * @return the key that will be used during the test - */ - public ModelKey getKeyToUse() { - return useModelKey ? new ModelKey(lastUsedKey.get(lastVersionUsed).getName()) : lastUsedKey.get(lastVersionUsed); - } - - @Override - public void write(JmeExporter ex) throws IOException { - OutputCapsule oc = ex.getCapsule(this); - oc.write(blenderKeys.size(), "versions-count", 0); - int i=0; - for(Entry> entry : blenderKeys.entrySet()) { - oc.write(entry.getKey(), "key" + i, null); - oc.writeStringSavableMap(entry.getValue(), "value" + i++, null); - } - oc.writeStringSavableMap(lastUsedKey, "last-key", null); - if(selectedAnimations==null) { - oc.write(0, "selected-animations-count", 0); - } else { - i = 0; - oc.write(selectedAnimations.size(), "selected-animations-count", 0); - for(Entry> entry : selectedAnimations.entrySet()) { - oc.write(entry.getKey(), "animKey" + i, null); - oc.write(entry.getValue().toArray(new String[selectedAnimations.size()][]), "animVal" + i++, null); - } - } - oc.write(useModelKey, "use-model-key", false); - oc.write(logLevel == null ? null : logLevel.getName(), "log-level", Level.INFO.getName()); - oc.write(lastVersionUsed, "versionUsed", null); - } - - @Override - @SuppressWarnings("unchecked") - public void read(JmeImporter im) throws IOException { - InputCapsule ic = im.getCapsule(this); - int versionsCount = ic.readInt("versions-count", 0); - for(int i=0;i versionBlenderFiles = (Map) ic.readStringSavableMap("value" + i, null); - blenderKeys.put(versionName, versionBlenderFiles); - } - - int selectedAnimCount = ic.readInt("selected-animations-count", 0); - if(selectedAnimCount > 0) { - for(int i=0;i anims = Arrays.asList(selectedAnimations); - this.selectedAnimations.put(blenderKeyName, anims); - } - } - lastUsedKey = (Map) ic.readStringSavableMap("last-key", null); - useModelKey = ic.readBoolean("use-model-key", false); - String logLevelName = ic.readString("log-level", Level.INFO.getName()); - logLevel = logLevelName == null ? Level.INFO : Level.parse(logLevelName); - lastVersionUsed = ic.readString("versionUsed", null); - } -} \ No newline at end of file diff --git a/engine/src/test/jme3test/blender/config/ConfigDialog.java b/engine/src/test/jme3test/blender/config/ConfigDialog.java deleted file mode 100644 index 7358e9d8c..000000000 --- a/engine/src/test/jme3test/blender/config/ConfigDialog.java +++ /dev/null @@ -1,426 +0,0 @@ -/** - * - */ -package jme3test.blender.config; - -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.File; -import java.io.FileFilter; -import java.io.IOException; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.swing.DefaultComboBoxModel; -import javax.swing.DefaultListModel; -import javax.swing.JOptionPane; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; -import javax.swing.event.TableModelEvent; -import javax.swing.event.TableModelListener; -import javax.swing.table.DefaultTableModel; - -import com.jme3.asset.BlenderKey; -import com.jme3.export.JmeExporter; -import com.jme3.export.Savable; -import com.jme3.export.binary.BinaryExporter; -import com.jme3.export.binary.BinaryImporter; - -/** - * A class that shows a dialog box for blender testing configuration. - * @author Marcin Roguski (Kaelthas) - */ -public class ConfigDialog extends AbstractConfigDialog { - - private static final long serialVersionUID = 2863364888664674247L; - private static final Logger LOGGER = Logger.getLogger(ConfigDialog.class.getName()); - private String baseFolderName; - private BlenderKeyConfiguration blenderKeyConfiguration;//the configuration for the files - - /** - * Constructor. Builds the whole window and stores its data. - * @param baseFolderName base folder for test assets - */ - public ConfigDialog(String baseFolderName) { - if (baseFolderName == null) { - throw new IllegalArgumentException("No test asset folder given!"); - } - this.baseFolderName = baseFolderName; - - //setting up version selection (as a folder list in a compo box) - File baseFolder = new File(baseFolderName); - if (!baseFolder.exists() || !baseFolder.isDirectory()) { - throw new IllegalArgumentException("The given base folder path either does not exists or does not point to a directory!"); - } - File[] folders = baseFolder.listFiles(new FileFilter() { - @Override - public boolean accept(File file) { - return file.isDirectory() && file.getName().charAt(0) != '.'; - } - }); - for (File folder : folders) { - ((DefaultComboBoxModel) jComboBoxVersionSelection.getModel()).addElement(folder.getName()); - } - this.loadConfiguration(); - this.applyConfiguration(); - - this.initListeners(); - this.setVisible(true); - } - - /** - * This method returns the blender key configuration. - * @return the blender key configuration - */ - public BlenderKeyConfiguration getBlenderKeyConfiguration() { - return blenderKeyConfiguration; - } - - /** - * This method loades the configuration. - * It stores the data into swing gui elements and enlists the proper blender files. - */ - private void loadConfiguration() { - File baseFolder = new File(baseFolderName); - - //loading the blender files configuration - File[] configFiles = baseFolder.listFiles(new FileFilter() { - - @Override - public boolean accept(File file) { - return file.isFile() && file.canRead() && file.getName().endsWith(".conf"); - } - }); - if (configFiles == null || configFiles.length == 0) { - blenderKeyConfiguration = new BlenderKeyConfiguration(); - } else { - BinaryImporter jmeImporter = new BinaryImporter(); - String instructionToUser = configFiles.length == 1 - ? "No other config file to load! No configuration set!" - : "Please choose different config file!"; - do { - File configFile; - if (configFiles.length > 1) { - configFile = (File) JOptionPane.showInputDialog(null, "Choose the config file!", "Config file selection", - JOptionPane.INFORMATION_MESSAGE, null, configFiles, configFiles[0]); - } else { - configFile = configFiles[0]; - } - if (configFile == null) { - JOptionPane.showMessageDialog(this, "No config file selected!\nEmpty configuration will be created!", - "No configuration selected", JOptionPane.INFORMATION_MESSAGE); - blenderKeyConfiguration = new BlenderKeyConfiguration(); - } else { - try { - Savable loadedData = jmeImporter.load(configFile); - if (loadedData instanceof BlenderKeyConfiguration) { - blenderKeyConfiguration = (BlenderKeyConfiguration) loadedData; - } else { - LOGGER.warning("Cannot load data drom the given file!"); - JOptionPane.showMessageDialog(this, "The data stored in the config file is of invalid type!\n" - + instructionToUser, "Config data error", JOptionPane.ERROR_MESSAGE); - } - } catch (IOException e) { - JOptionPane.showMessageDialog(this, "Unable to load configuration! Reason: " + e.getLocalizedMessage(), - "Loading data error", JOptionPane.ERROR_MESSAGE); - LOGGER.severe("Unable to load configuration"); - } catch (Exception e) { - JOptionPane.showMessageDialog(this, "Unable to load configuration!", - "Loading data error", JOptionPane.ERROR_MESSAGE); - LOGGER.log(Level.SEVERE, "Unable to load configuration due to unpredicted error!", e); - } - } - } while (blenderKeyConfiguration == null && configFiles.length > 1); - } - } - - /** - * This method applies the loaded configuration. - */ - private void applyConfiguration() { - //applying configuration to gui components - jCheckBoxUseModelKey.setSelected(blenderKeyConfiguration.useModelKey); - if(blenderKeyConfiguration.lastVersionUsed != null) { - jComboBoxVersionSelection.setSelectedItem(blenderKeyConfiguration.lastVersionUsed); - } else { - jComboBoxVersionSelection.setSelectedIndex(0); - blenderKeyConfiguration.lastVersionUsed = (String)jComboBoxVersionSelection.getSelectedItem(); - } - JRadioButtonLevel.setSelectedLevel(blenderKeyConfiguration.logLevel); - - //enlisting the files in the list - this.reloadFilesList(); - - //apply animations selection - DefaultTableModel model = (DefaultTableModel) jTableAnimations.getModel(); - BlenderKey blenderKey = blenderKeyConfiguration.lastUsedKey.get(blenderKeyConfiguration.lastVersionUsed); - if(blenderKey != null) { - String blenderKeyName = blenderKey.getName(); - List selectedAnimations = blenderKeyConfiguration.selectedAnimations.get(blenderKeyName); - if(selectedAnimations != null) { - for(String[] selectedAnimation : selectedAnimations) { - for(int i=0;i> animations = blenderKey.getAnimations(); - if (animations != null) { - for (Entry> animationEntry : animations.entrySet()) { - for (Entry animDataEntry : animationEntry.getValue().entrySet()) { - int[] frames = animDataEntry.getValue(); - animationsModel.addRow(new Object[]{Boolean.FALSE, animationEntry.getKey(), animDataEntry.getKey(), - Integer.valueOf(frames[0]), Integer.valueOf(frames[1])}); - } - } - } - - this.jButtonOK.setEnabled(true); - this.jButtonOK.requestFocusInWindow(); - this.jButtonAddAnimation.setEnabled(true); - } - - /** - * This method stores the current blender config. - * @param configuration the blender config to store - */ - private void storeConfig(BlenderKeyConfiguration configuration) { - configuration.selectedAnimations.clear(); - BlenderKey blenderKey = configuration.lastUsedKey.get(configuration.lastVersionUsed); - if (blenderKey != null) {//reading animations - DefaultTableModel animationsTableModel = (DefaultTableModel) jTableAnimations.getModel(); - if (blenderKey.getAnimations() != null) { - blenderKey.getAnimations().clear(); - } - int animCounter = 0; - List selectedAnimations = new ArrayList(); - for (int i = 0; i < animationsTableModel.getRowCount(); ++i) { - Boolean isSelected = (Boolean) animationsTableModel.getValueAt(i, 0); - String objectName = (String) animationsTableModel.getValueAt(i, 1); - String animName = (String) animationsTableModel.getValueAt(i, 2); - Number startFrame = (Number) animationsTableModel.getValueAt(i, 3); - Number stopFrame = (Number) animationsTableModel.getValueAt(i, 4); - if (objectName != null && animName != null && startFrame.intValue() <= stopFrame.intValue()) { - blenderKey.addAnimation(objectName, animName, startFrame.intValue(), stopFrame.intValue()); - ++animCounter; - } - if(isSelected) { - selectedAnimations.add(new String[] {objectName, animName}); - } - } - if(selectedAnimations.size() > 0) { - configuration.selectedAnimations.put(blenderKey.getName(), selectedAnimations); - } - if (animCounter < animationsTableModel.getRowCount()) { - JOptionPane.showMessageDialog(ConfigDialog.this, "Some animations had errors!\nThey had not been added!", - "Invalid animations definitions", JOptionPane.WARNING_MESSAGE); - } - } - //getting the key type - configuration.useModelKey = jCheckBoxUseModelKey.isSelected(); - configuration.logLevel = JRadioButtonLevel.getSelectedLevel(); - - //storing the config - JmeExporter jmeExporter = new BinaryExporter(); - try { - if (!jmeExporter.save(configuration, new File(baseFolderName, "test.conf"))) { - JOptionPane.showMessageDialog(ConfigDialog.this, "Unable to save the config data!", "Config save problem", JOptionPane.ERROR_MESSAGE); - } - } catch (IOException e) { - JOptionPane.showMessageDialog(ConfigDialog.this, "Error occured during config saving!\nReason: " + e.getLocalizedMessage(), - "Config save problem", JOptionPane.ERROR_MESSAGE); - } - } - - /** - * This method initiates components listeners. - */ - private void initListeners() { - //selection of blender version - jComboBoxVersionSelection.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent evt) { - blenderKeyConfiguration.lastVersionUsed = jComboBoxVersionSelection.getSelectedItem().toString(); - ConfigDialog.this.reloadFilesList(); - } - }); - //selection of the file changes the config on the right - jListBlenderFiles.addListSelectionListener(new ListSelectionListener() { - - @Override - public void valueChanged(ListSelectionEvent evt) { - BlenderKeyConfiguration config = ConfigDialog.this.blenderKeyConfiguration; - FileListItem selectedItem = (FileListItem) ConfigDialog.this.jListBlenderFiles.getSelectedValue(); - String blenderVersion = config.lastVersionUsed; - if (selectedItem != null) { - String blenderFileName = selectedItem.getFile().getName(); - BlenderKey blenderKey = null; - Map blenderKeys = config.blenderKeys.get(blenderVersion); - if(blenderKeys != null) { - blenderKey = blenderKeys.get(blenderFileName); - if(blenderKey == null) { - blenderKey = new BlenderKey(ConfigDialog.this.baseFolderName+'/' + blenderVersion + '/' + blenderFileName); - } - } else { - blenderKeys = new HashMap(); - blenderKey = new BlenderKey(ConfigDialog.this.baseFolderName+'/' + blenderVersion + '/' + blenderFileName); - blenderKeys.put(blenderFileName, blenderKey); - config.blenderKeys.put(blenderVersion, blenderKeys); - } - config.lastUsedKey.put(blenderVersion, blenderKey); - ConfigDialog.this.setBlenderKey(config.lastUsedKey.get(blenderVersion)); - } else { - config.lastUsedKey.put(blenderVersion, null); - } - } - }); - jTableProperties.getModel().addTableModelListener(new TableModelListener() { - - @Override - public void tableChanged(TableModelEvent evt) { - if (evt.getType() == TableModelEvent.UPDATE) { - BlenderKeyConfiguration config = ConfigDialog.this.blenderKeyConfiguration; - int row = evt.getFirstRow(); - String name = (String) jTableProperties.getModel().getValueAt(row, 0); - Object value = jTableProperties.getModel().getValueAt(row, 1); - BlenderKey blenderKey = config.lastUsedKey.get(config.lastVersionUsed); - try { - Field field = blenderKey.getClass().getDeclaredField(name); - field.setAccessible(true); - field.set(blenderKey, value); - } catch (IllegalArgumentException e) { - LOGGER.log(Level.SEVERE, e.getMessage(), e); - } catch (SecurityException e) { - LOGGER.log(Level.SEVERE, e.getMessage(), e); - } catch (IllegalAccessException e) { - LOGGER.log(Level.SEVERE, e.getMessage(), e); - } catch (NoSuchFieldException e) { - LOGGER.log(Level.SEVERE, e.getMessage(), e); - } - } - } - }); - jTableAnimations.getModel().addTableModelListener(new TableModelListener() { - - @Override - public void tableChanged(TableModelEvent evt) { - if (evt.getType() == TableModelEvent.INSERT) { - jButtonRemoveAnimation.setEnabled(true); - } else if (evt.getType() == TableModelEvent.DELETE && jTableAnimations.getModel().getRowCount() == 0) { - jButtonRemoveAnimation.setEnabled(false); - } - } - }); - jButtonAddAnimation.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent evt) { - ((DefaultTableModel) jTableAnimations.getModel()).addRow(new Object[]{Boolean.FALSE, "", "", Integer.valueOf(1), Integer.valueOf(25)}); - } - }); - jButtonRemoveAnimation.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent evt) { - int row = jTableAnimations.getSelectedRow(); - if (row >= 0) { - ((DefaultTableModel) jTableAnimations.getModel()).removeRow(row); - } - } - }); - jButtonOK.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent evt) { - ConfigDialog.this.storeConfig(blenderKeyConfiguration); - ConfigDialog.this.dispose(); - } - }); - jButtonCancel.addActionListener(new ActionListener() { - - @Override - public void actionPerformed(ActionEvent evt) { - ConfigDialog.this.storeConfig(blenderKeyConfiguration); - blenderKeyConfiguration = null; - ConfigDialog.this.dispose(); - } - }); - } -} diff --git a/engine/src/test/jme3test/blender/config/NoiseConstantsGenerator.java b/engine/src/test/jme3test/blender/config/NoiseConstantsGenerator.java deleted file mode 100644 index 769bdc00a..000000000 --- a/engine/src/test/jme3test/blender/config/NoiseConstantsGenerator.java +++ /dev/null @@ -1,947 +0,0 @@ -package jme3test.blender.config; - -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.ObjectOutputStream; -import java.util.logging.Level; -import java.util.logging.Logger; - -public class NoiseConstantsGenerator { - - private static final Logger LOGGER = Logger.getLogger(NoiseConstantsGenerator.class.getName()); - private static final String FILE_NAME = "noiseconstants.dat"; - - public static void main(String[] args) { - NoiseConstantsGenerator noiseConstantsGenerator = new NoiseConstantsGenerator(); - noiseConstantsGenerator.setFilePath("./src/com/jme3/scene/plugins/blender/helpers/" + FILE_NAME); - noiseConstantsGenerator.execute(); - LOGGER.info("Noise data generation successfull!"); - } - private String filePath; - - public void execute() { - if (filePath == null) { - throw new IllegalStateException("The output file path cannot be null!"); - } - - FileOutputStream fos = null; - try { - - fos = new FileOutputStream(filePath); - ObjectOutputStream oos = new ObjectOutputStream(fos); - oos.writeObject(hashpntf); - oos.writeObject(hash); - oos.writeObject(hashvectf); - oos.writeObject(p); - oos.writeObject(g); - oos.flush(); - } catch (FileNotFoundException e) { - LOGGER.log(Level.SEVERE, e.getLocalizedMessage(), e); - } catch (IOException e) { - LOGGER.log(Level.SEVERE, e.getLocalizedMessage(), e); - } finally { - if (fos != null) { - try { - fos.close(); - } catch (IOException e) { - LOGGER.log(Level.SEVERE, e.getLocalizedMessage(), e); - } - } - } - } - - public String getFilePath() { - return filePath; - } - - public void setFilePath(String filePath) { - this.filePath = filePath; - } - /* - * Constants to be stored. - */ - private static float[] hashpntf = new float[]{0.536902f, 0.020915f, - 0.501445f, 0.216316f, 0.517036f, 0.822466f, 0.965315f, 0.377313f, - 0.678764f, 0.744545f, 0.097731f, 0.396357f, 0.247202f, 0.520897f, - 0.613396f, 0.542124f, 0.146813f, 0.255489f, 0.810868f, 0.638641f, - 0.980742f, 0.292316f, 0.357948f, 0.114382f, 0.861377f, 0.629634f, - 0.722530f, 0.714103f, 0.048549f, 0.075668f, 0.564920f, 0.162026f, - 0.054466f, 0.411738f, 0.156897f, 0.887657f, 0.599368f, 0.074249f, - 0.170277f, 0.225799f, 0.393154f, 0.301348f, 0.057434f, 0.293849f, - 0.442745f, 0.150002f, 0.398732f, 0.184582f, 0.915200f, 0.630984f, - 0.974040f, 0.117228f, 0.795520f, 0.763238f, 0.158982f, 0.616211f, - 0.250825f, 0.906539f, 0.316874f, 0.676205f, 0.234720f, 0.667673f, - 0.792225f, 0.273671f, 0.119363f, 0.199131f, 0.856716f, 0.828554f, - 0.900718f, 0.705960f, 0.635923f, 0.989433f, 0.027261f, 0.283507f, - 0.113426f, 0.388115f, 0.900176f, 0.637741f, 0.438802f, 0.715490f, - 0.043692f, 0.202640f, 0.378325f, 0.450325f, 0.471832f, 0.147803f, - 0.906899f, 0.524178f, 0.784981f, 0.051483f, 0.893369f, 0.596895f, - 0.275635f, 0.391483f, 0.844673f, 0.103061f, 0.257322f, 0.708390f, - 0.504091f, 0.199517f, 0.660339f, 0.376071f, 0.038880f, 0.531293f, - 0.216116f, 0.138672f, 0.907737f, 0.807994f, 0.659582f, 0.915264f, - 0.449075f, 0.627128f, 0.480173f, 0.380942f, 0.018843f, 0.211808f, - 0.569701f, 0.082294f, 0.689488f, 0.573060f, 0.593859f, 0.216080f, - 0.373159f, 0.108117f, 0.595539f, 0.021768f, 0.380297f, 0.948125f, - 0.377833f, 0.319699f, 0.315249f, 0.972805f, 0.792270f, 0.445396f, - 0.845323f, 0.372186f, 0.096147f, 0.689405f, 0.423958f, 0.055675f, - 0.117940f, 0.328456f, 0.605808f, 0.631768f, 0.372170f, 0.213723f, - 0.032700f, 0.447257f, 0.440661f, 0.728488f, 0.299853f, 0.148599f, - 0.649212f, 0.498381f, 0.049921f, 0.496112f, 0.607142f, 0.562595f, - 0.990246f, 0.739659f, 0.108633f, 0.978156f, 0.209814f, 0.258436f, - 0.876021f, 0.309260f, 0.600673f, 0.713597f, 0.576967f, 0.641402f, - 0.853930f, 0.029173f, 0.418111f, 0.581593f, 0.008394f, 0.589904f, - 0.661574f, 0.979326f, 0.275724f, 0.111109f, 0.440472f, 0.120839f, - 0.521602f, 0.648308f, 0.284575f, 0.204501f, 0.153286f, 0.822444f, - 0.300786f, 0.303906f, 0.364717f, 0.209038f, 0.916831f, 0.900245f, - 0.600685f, 0.890002f, 0.581660f, 0.431154f, 0.705569f, 0.551250f, - 0.417075f, 0.403749f, 0.696652f, 0.292652f, 0.911372f, 0.690922f, - 0.323718f, 0.036773f, 0.258976f, 0.274265f, 0.225076f, 0.628965f, - 0.351644f, 0.065158f, 0.080340f, 0.467271f, 0.130643f, 0.385914f, - 0.919315f, 0.253821f, 0.966163f, 0.017439f, 0.392610f, 0.478792f, - 0.978185f, 0.072691f, 0.982009f, 0.097987f, 0.731533f, 0.401233f, - 0.107570f, 0.349587f, 0.479122f, 0.700598f, 0.481751f, 0.788429f, - 0.706864f, 0.120086f, 0.562691f, 0.981797f, 0.001223f, 0.192120f, - 0.451543f, 0.173092f, 0.108960f, 0.549594f, 0.587892f, 0.657534f, - 0.396365f, 0.125153f, 0.666420f, 0.385823f, 0.890916f, 0.436729f, - 0.128114f, 0.369598f, 0.759096f, 0.044677f, 0.904752f, 0.088052f, - 0.621148f, 0.005047f, 0.452331f, 0.162032f, 0.494238f, 0.523349f, - 0.741829f, 0.698450f, 0.452316f, 0.563487f, 0.819776f, 0.492160f, - 0.004210f, 0.647158f, 0.551475f, 0.362995f, 0.177937f, 0.814722f, - 0.727729f, 0.867126f, 0.997157f, 0.108149f, 0.085726f, 0.796024f, - 0.665075f, 0.362462f, 0.323124f, 0.043718f, 0.042357f, 0.315030f, - 0.328954f, 0.870845f, 0.683186f, 0.467922f, 0.514894f, 0.809971f, - 0.631979f, 0.176571f, 0.366320f, 0.850621f, 0.505555f, 0.749551f, - 0.750830f, 0.401714f, 0.481216f, 0.438393f, 0.508832f, 0.867971f, - 0.654581f, 0.058204f, 0.566454f, 0.084124f, 0.548539f, 0.902690f, - 0.779571f, 0.562058f, 0.048082f, 0.863109f, 0.079290f, 0.713559f, - 0.783496f, 0.265266f, 0.672089f, 0.786939f, 0.143048f, 0.086196f, - 0.876129f, 0.408708f, 0.229312f, 0.629995f, 0.206665f, 0.207308f, - 0.710079f, 0.341704f, 0.264921f, 0.028748f, 0.629222f, 0.470173f, - 0.726228f, 0.125243f, 0.328249f, 0.794187f, 0.741340f, 0.489895f, - 0.189396f, 0.724654f, 0.092841f, 0.039809f, 0.860126f, 0.247701f, - 0.655331f, 0.964121f, 0.672536f, 0.044522f, 0.690567f, 0.837238f, - 0.631520f, 0.953734f, 0.352484f, 0.289026f, 0.034152f, 0.852575f, - 0.098454f, 0.795529f, 0.452181f, 0.826159f, 0.186993f, 0.820725f, - 0.440328f, 0.922137f, 0.704592f, 0.915437f, 0.738183f, 0.733461f, - 0.193798f, 0.929213f, 0.161390f, 0.318547f, 0.888751f, 0.430968f, - 0.740837f, 0.193544f, 0.872253f, 0.563074f, 0.274598f, 0.347805f, - 0.666176f, 0.449831f, 0.800991f, 0.588727f, 0.052296f, 0.714761f, - 0.420620f, 0.570325f, 0.057550f, 0.210888f, 0.407312f, 0.662848f, - 0.924382f, 0.895958f, 0.775198f, 0.688605f, 0.025721f, 0.301913f, - 0.791408f, 0.500602f, 0.831984f, 0.828509f, 0.642093f, 0.494174f, - 0.525880f, 0.446365f, 0.440063f, 0.763114f, 0.630358f, 0.223943f, - 0.333806f, 0.906033f, 0.498306f, 0.241278f, 0.427640f, 0.772683f, - 0.198082f, 0.225379f, 0.503894f, 0.436599f, 0.016503f, 0.803725f, - 0.189878f, 0.291095f, 0.499114f, 0.151573f, 0.079031f, 0.904618f, - 0.708535f, 0.273900f, 0.067419f, 0.317124f, 0.936499f, 0.716511f, - 0.543845f, 0.939909f, 0.826574f, 0.715090f, 0.154864f, 0.750150f, - 0.845808f, 0.648108f, 0.556564f, 0.644757f, 0.140873f, 0.799167f, - 0.632989f, 0.444245f, 0.471978f, 0.435910f, 0.359793f, 0.216241f, - 0.007633f, 0.337236f, 0.857863f, 0.380247f, 0.092517f, 0.799973f, - 0.919000f, 0.296798f, 0.096989f, 0.854831f, 0.165369f, 0.568475f, - 0.216855f, 0.020457f, 0.835511f, 0.538039f, 0.999742f, 0.620226f, - 0.244053f, 0.060399f, 0.323007f, 0.294874f, 0.988899f, 0.384919f, - 0.735655f, 0.773428f, 0.549776f, 0.292882f, 0.660611f, 0.593507f, - 0.621118f, 0.175269f, 0.682119f, 0.794493f, 0.868197f, 0.632150f, - 0.807823f, 0.509656f, 0.482035f, 0.001780f, 0.259126f, 0.358002f, - 0.280263f, 0.192985f, 0.290367f, 0.208111f, 0.917633f, 0.114422f, - 0.925491f, 0.981110f, 0.255570f, 0.974862f, 0.016629f, 0.552599f, - 0.575741f, 0.612978f, 0.615965f, 0.803615f, 0.772334f, 0.089745f, - 0.838812f, 0.634542f, 0.113709f, 0.755832f, 0.577589f, 0.667489f, - 0.529834f, 0.325660f, 0.817597f, 0.316557f, 0.335093f, 0.737363f, - 0.260951f, 0.737073f, 0.049540f, 0.735541f, 0.988891f, 0.299116f, - 0.147695f, 0.417271f, 0.940811f, 0.524160f, 0.857968f, 0.176403f, - 0.244835f, 0.485759f, 0.033353f, 0.280319f, 0.750688f, 0.755809f, - 0.924208f, 0.095956f, 0.962504f, 0.275584f, 0.173715f, 0.942716f, - 0.706721f, 0.078464f, 0.576716f, 0.804667f, 0.559249f, 0.900611f, - 0.646904f, 0.432111f, 0.927885f, 0.383277f, 0.269973f, 0.114244f, - 0.574867f, 0.150703f, 0.241855f, 0.272871f, 0.199950f, 0.079719f, - 0.868566f, 0.962833f, 0.789122f, 0.320025f, 0.905554f, 0.234876f, - 0.991356f, 0.061913f, 0.732911f, 0.785960f, 0.874074f, 0.069035f, - 0.658632f, 0.309901f, 0.023676f, 0.791603f, 0.764661f, 0.661278f, - 0.319583f, 0.829650f, 0.117091f, 0.903124f, 0.982098f, 0.161631f, - 0.193576f, 0.670428f, 0.857390f, 0.003760f, 0.572578f, 0.222162f, - 0.114551f, 0.420118f, 0.530404f, 0.470682f, 0.525527f, 0.764281f, - 0.040596f, 0.443275f, 0.501124f, 0.816161f, 0.417467f, 0.332172f, - 0.447565f, 0.614591f, 0.559246f, 0.805295f, 0.226342f, 0.155065f, - 0.714630f, 0.160925f, 0.760001f, 0.453456f, 0.093869f, 0.406092f, - 0.264801f, 0.720370f, 0.743388f, 0.373269f, 0.403098f, 0.911923f, - 0.897249f, 0.147038f, 0.753037f, 0.516093f, 0.739257f, 0.175018f, - 0.045768f, 0.735857f, 0.801330f, 0.927708f, 0.240977f, 0.591870f, - 0.921831f, 0.540733f, 0.149100f, 0.423152f, 0.806876f, 0.397081f, - 0.061100f, 0.811630f, 0.044899f, 0.460915f, 0.961202f, 0.822098f, - 0.971524f, 0.867608f, 0.773604f, 0.226616f, 0.686286f, 0.926972f, - 0.411613f, 0.267873f, 0.081937f, 0.226124f, 0.295664f, 0.374594f, - 0.533240f, 0.237876f, 0.669629f, 0.599083f, 0.513081f, 0.878719f, - 0.201577f, 0.721296f, 0.495038f, 0.079760f, 0.965959f, 0.233090f, - 0.052496f, 0.714748f, 0.887844f, 0.308724f, 0.972885f, 0.723337f, - 0.453089f, 0.914474f, 0.704063f, 0.823198f, 0.834769f, 0.906561f, - 0.919600f, 0.100601f, 0.307564f, 0.901977f, 0.468879f, 0.265376f, - 0.885188f, 0.683875f, 0.868623f, 0.081032f, 0.466835f, 0.199087f, - 0.663437f, 0.812241f, 0.311337f, 0.821361f, 0.356628f, 0.898054f, - 0.160781f, 0.222539f, 0.714889f, 0.490287f, 0.984915f, 0.951755f, - 0.964097f, 0.641795f, 0.815472f, 0.852732f, 0.862074f, 0.051108f, - 0.440139f, 0.323207f, 0.517171f, 0.562984f, 0.115295f, 0.743103f, - 0.977914f, 0.337596f, 0.440694f, 0.535879f, 0.959427f, 0.351427f, - 0.704361f, 0.010826f, 0.131162f, 0.577080f, 0.349572f, 0.774892f, - 0.425796f, 0.072697f, 0.500001f, 0.267322f, 0.909654f, 0.206176f, - 0.223987f, 0.937698f, 0.323423f, 0.117501f, 0.490308f, 0.474372f, - 0.689943f, 0.168671f, 0.719417f, 0.188928f, 0.330464f, 0.265273f, - 0.446271f, 0.171933f, 0.176133f, 0.474616f, 0.140182f, 0.114246f, - 0.905043f, 0.713870f, 0.555261f, 0.951333f}; - private static short[] hash = new short[]{// 512 - 0xA2, 0xA0, 0x19, 0x3B, 0xF8, 0xEB, 0xAA, 0xEE, 0xF3, 0x1C, 0x67, 0x28, - 0x1D, 0xED, 0x0, 0xDE, 0x95, 0x2E, 0xDC, 0x3F, 0x3A, 0x82, 0x35, - 0x4D, 0x6C, 0xBA, 0x36, 0xD0, 0xF6, 0xC, 0x79, 0x32, 0xD1, 0x59, - 0xF4, 0x8, 0x8B, 0x63, 0x89, 0x2F, 0xB8, 0xB4, 0x97, 0x83, 0xF2, - 0x8F, 0x18, 0xC7, 0x51, 0x14, 0x65, 0x87, 0x48, 0x20, 0x42, 0xA8, - 0x80, 0xB5, 0x40, 0x13, 0xB2, 0x22, 0x7E, 0x57, 0xBC, 0x7F, 0x6B, - 0x9D, 0x86, 0x4C, 0xC8, 0xDB, 0x7C, 0xD5, 0x25, 0x4E, 0x5A, 0x55, - 0x74, 0x50, 0xCD, 0xB3, 0x7A, 0xBB, 0xC3, 0xCB, 0xB6, 0xE2, 0xE4, - 0xEC, 0xFD, 0x98, 0xB, 0x96, 0xD3, 0x9E, 0x5C, 0xA1, 0x64, 0xF1, - 0x81, 0x61, 0xE1, 0xC4, 0x24, 0x72, 0x49, 0x8C, 0x90, 0x4B, 0x84, - 0x34, 0x38, 0xAB, 0x78, 0xCA, 0x1F, 0x1, 0xD7, 0x93, 0x11, 0xC1, - 0x58, 0xA9, 0x31, 0xF9, 0x44, 0x6D, 0xBF, 0x33, 0x9C, 0x5F, 0x9, - 0x94, 0xA3, 0x85, 0x6, 0xC6, 0x9A, 0x1E, 0x7B, 0x46, 0x15, 0x30, - 0x27, 0x2B, 0x1B, 0x71, 0x3C, 0x5B, 0xD6, 0x6F, 0x62, 0xAC, 0x4F, - 0xC2, 0xC0, 0xE, 0xB1, 0x23, 0xA7, 0xDF, 0x47, 0xB0, 0x77, 0x69, - 0x5, 0xE9, 0xE6, 0xE7, 0x76, 0x73, 0xF, 0xFE, 0x6E, 0x9B, 0x56, - 0xEF, 0x12, 0xA5, 0x37, 0xFC, 0xAE, 0xD9, 0x3, 0x8E, 0xDD, 0x10, - 0xB9, 0xCE, 0xC9, 0x8D, 0xDA, 0x2A, 0xBD, 0x68, 0x17, 0x9F, 0xBE, - 0xD4, 0xA, 0xCC, 0xD2, 0xE8, 0x43, 0x3D, 0x70, 0xB7, 0x2, 0x7D, - 0x99, 0xD8, 0xD, 0x60, 0x8A, 0x4, 0x2C, 0x3E, 0x92, 0xE5, 0xAF, - 0x53, 0x7, 0xE0, 0x29, 0xA6, 0xC5, 0xE3, 0xF5, 0xF7, 0x4A, 0x41, - 0x26, 0x6A, 0x16, 0x5E, 0x52, 0x2D, 0x21, 0xAD, 0xF0, 0x91, 0xFF, - 0xEA, 0x54, 0xFA, 0x66, 0x1A, 0x45, 0x39, 0xCF, 0x75, 0xA4, 0x88, - 0xFB, 0x5D, 0xA2, 0xA0, 0x19, 0x3B, 0xF8, 0xEB, 0xAA, 0xEE, 0xF3, - 0x1C, 0x67, 0x28, 0x1D, 0xED, 0x0, 0xDE, 0x95, 0x2E, 0xDC, 0x3F, - 0x3A, 0x82, 0x35, 0x4D, 0x6C, 0xBA, 0x36, 0xD0, 0xF6, 0xC, 0x79, - 0x32, 0xD1, 0x59, 0xF4, 0x8, 0x8B, 0x63, 0x89, 0x2F, 0xB8, 0xB4, - 0x97, 0x83, 0xF2, 0x8F, 0x18, 0xC7, 0x51, 0x14, 0x65, 0x87, 0x48, - 0x20, 0x42, 0xA8, 0x80, 0xB5, 0x40, 0x13, 0xB2, 0x22, 0x7E, 0x57, - 0xBC, 0x7F, 0x6B, 0x9D, 0x86, 0x4C, 0xC8, 0xDB, 0x7C, 0xD5, 0x25, - 0x4E, 0x5A, 0x55, 0x74, 0x50, 0xCD, 0xB3, 0x7A, 0xBB, 0xC3, 0xCB, - 0xB6, 0xE2, 0xE4, 0xEC, 0xFD, 0x98, 0xB, 0x96, 0xD3, 0x9E, 0x5C, - 0xA1, 0x64, 0xF1, 0x81, 0x61, 0xE1, 0xC4, 0x24, 0x72, 0x49, 0x8C, - 0x90, 0x4B, 0x84, 0x34, 0x38, 0xAB, 0x78, 0xCA, 0x1F, 0x1, 0xD7, - 0x93, 0x11, 0xC1, 0x58, 0xA9, 0x31, 0xF9, 0x44, 0x6D, 0xBF, 0x33, - 0x9C, 0x5F, 0x9, 0x94, 0xA3, 0x85, 0x6, 0xC6, 0x9A, 0x1E, 0x7B, - 0x46, 0x15, 0x30, 0x27, 0x2B, 0x1B, 0x71, 0x3C, 0x5B, 0xD6, 0x6F, - 0x62, 0xAC, 0x4F, 0xC2, 0xC0, 0xE, 0xB1, 0x23, 0xA7, 0xDF, 0x47, - 0xB0, 0x77, 0x69, 0x5, 0xE9, 0xE6, 0xE7, 0x76, 0x73, 0xF, 0xFE, - 0x6E, 0x9B, 0x56, 0xEF, 0x12, 0xA5, 0x37, 0xFC, 0xAE, 0xD9, 0x3, - 0x8E, 0xDD, 0x10, 0xB9, 0xCE, 0xC9, 0x8D, 0xDA, 0x2A, 0xBD, 0x68, - 0x17, 0x9F, 0xBE, 0xD4, 0xA, 0xCC, 0xD2, 0xE8, 0x43, 0x3D, 0x70, - 0xB7, 0x2, 0x7D, 0x99, 0xD8, 0xD, 0x60, 0x8A, 0x4, 0x2C, 0x3E, - 0x92, 0xE5, 0xAF, 0x53, 0x7, 0xE0, 0x29, 0xA6, 0xC5, 0xE3, 0xF5, - 0xF7, 0x4A, 0x41, 0x26, 0x6A, 0x16, 0x5E, 0x52, 0x2D, 0x21, 0xAD, - 0xF0, 0x91, 0xFF, 0xEA, 0x54, 0xFA, 0x66, 0x1A, 0x45, 0x39, 0xCF, - 0x75, 0xA4, 0x88, 0xFB, 0x5D}; - private static float[] hashvectf = new float[]{// 768 - 0.33783f, 0.715698f, -0.611206f, -0.944031f, -0.326599f, -0.045624f, - -0.101074f, -0.416443f, -0.903503f, 0.799286f, 0.49411f, - -0.341949f, -0.854645f, 0.518036f, 0.033936f, 0.42514f, -0.437866f, - -0.792114f, -0.358948f, 0.597046f, 0.717377f, -0.985413f, - 0.144714f, 0.089294f, -0.601776f, -0.33728f, -0.723907f, - -0.449921f, 0.594513f, 0.666382f, 0.208313f, -0.10791f, 0.972076f, - 0.575317f, 0.060425f, 0.815643f, 0.293365f, -0.875702f, -0.383453f, - 0.293762f, 0.465759f, 0.834686f, -0.846008f, -0.233398f, -0.47934f, - -0.115814f, 0.143036f, -0.98291f, 0.204681f, -0.949036f, - -0.239532f, 0.946716f, -0.263947f, 0.184326f, -0.235596f, - 0.573822f, 0.784332f, 0.203705f, -0.372253f, -0.905487f, 0.756989f, - -0.651031f, 0.055298f, 0.497803f, 0.814697f, -0.297363f, -0.16214f, - 0.063995f, -0.98468f, -0.329254f, 0.834381f, 0.441925f, 0.703827f, - -0.527039f, -0.476227f, 0.956421f, 0.266113f, 0.119781f, 0.480133f, - 0.482849f, 0.7323f, -0.18631f, 0.961212f, -0.203125f, -0.748474f, - -0.656921f, -0.090393f, -0.085052f, -0.165253f, 0.982544f, - -0.76947f, 0.628174f, -0.115234f, 0.383148f, 0.537659f, 0.751068f, - 0.616486f, -0.668488f, -0.415924f, -0.259979f, -0.630005f, - 0.73175f, 0.570953f, -0.087952f, 0.816223f, -0.458008f, 0.023254f, - 0.888611f, -0.196167f, 0.976563f, -0.088287f, -0.263885f, - -0.69812f, -0.665527f, 0.437134f, -0.892273f, -0.112793f, - -0.621674f, -0.230438f, 0.748566f, 0.232422f, 0.900574f, - -0.367249f, 0.22229f, -0.796143f, 0.562744f, -0.665497f, -0.73764f, - 0.11377f, 0.670135f, 0.704803f, 0.232605f, 0.895599f, 0.429749f, - -0.114655f, -0.11557f, -0.474243f, 0.872742f, 0.621826f, 0.604004f, - -0.498444f, -0.832214f, 0.012756f, 0.55426f, -0.702484f, 0.705994f, - -0.089661f, -0.692017f, 0.649292f, 0.315399f, -0.175995f, - -0.977997f, 0.111877f, 0.096954f, -0.04953f, 0.994019f, 0.635284f, - -0.606689f, -0.477783f, -0.261261f, -0.607422f, -0.750153f, - 0.983276f, 0.165436f, 0.075958f, -0.29837f, 0.404083f, -0.864655f, - -0.638672f, 0.507721f, 0.578156f, 0.388214f, 0.412079f, 0.824249f, - 0.556183f, -0.208832f, 0.804352f, 0.778442f, 0.562012f, 0.27951f, - -0.616577f, 0.781921f, -0.091522f, 0.196289f, 0.051056f, 0.979187f, - -0.121216f, 0.207153f, -0.970734f, -0.173401f, -0.384735f, - 0.906555f, 0.161499f, -0.723236f, -0.671387f, 0.178497f, - -0.006226f, -0.983887f, -0.126038f, 0.15799f, 0.97934f, 0.830475f, - -0.024811f, 0.556458f, -0.510132f, -0.76944f, 0.384247f, 0.81424f, - 0.200104f, -0.544891f, -0.112549f, -0.393311f, -0.912445f, - 0.56189f, 0.152222f, -0.813049f, 0.198914f, -0.254517f, -0.946381f, - -0.41217f, 0.690979f, -0.593811f, -0.407257f, 0.324524f, 0.853668f, - -0.690186f, 0.366119f, -0.624115f, -0.428345f, 0.844147f, - -0.322296f, -0.21228f, -0.297546f, -0.930756f, -0.273071f, - 0.516113f, 0.811798f, 0.928314f, 0.371643f, 0.007233f, 0.785828f, - -0.479218f, -0.390778f, -0.704895f, 0.058929f, 0.706818f, - 0.173248f, 0.203583f, 0.963562f, 0.422211f, -0.904297f, -0.062469f, - -0.363312f, -0.182465f, 0.913605f, 0.254028f, -0.552307f, - -0.793945f, -0.28891f, -0.765747f, -0.574554f, 0.058319f, - 0.291382f, 0.954803f, 0.946136f, -0.303925f, 0.111267f, -0.078156f, - 0.443695f, -0.892731f, 0.182098f, 0.89389f, 0.409515f, -0.680298f, - -0.213318f, 0.701141f, 0.062469f, 0.848389f, -0.525635f, -0.72879f, - -0.641846f, 0.238342f, -0.88089f, 0.427673f, 0.202637f, -0.532501f, - -0.21405f, 0.818878f, 0.948975f, -0.305084f, 0.07962f, 0.925446f, - 0.374664f, 0.055817f, 0.820923f, 0.565491f, 0.079102f, 0.25882f, - 0.099792f, -0.960724f, -0.294617f, 0.910522f, 0.289978f, 0.137115f, - 0.320038f, -0.937408f, -0.908386f, 0.345276f, -0.235718f, - -0.936218f, 0.138763f, 0.322754f, 0.366577f, 0.925934f, -0.090637f, - 0.309296f, -0.686829f, -0.657684f, 0.66983f, 0.024445f, 0.742065f, - -0.917999f, -0.059113f, -0.392059f, 0.365509f, 0.462158f, - -0.807922f, 0.083374f, 0.996399f, -0.014801f, 0.593842f, 0.253143f, - -0.763672f, 0.974976f, -0.165466f, 0.148285f, 0.918976f, 0.137299f, - 0.369537f, 0.294952f, 0.694977f, 0.655731f, 0.943085f, 0.152618f, - -0.295319f, 0.58783f, -0.598236f, 0.544495f, 0.203796f, 0.678223f, - 0.705994f, -0.478821f, -0.661011f, 0.577667f, 0.719055f, -0.1698f, - -0.673828f, -0.132172f, -0.965332f, 0.225006f, -0.981873f, - -0.14502f, 0.121979f, 0.763458f, 0.579742f, 0.284546f, -0.893188f, - 0.079681f, 0.442474f, -0.795776f, -0.523804f, 0.303802f, 0.734955f, - 0.67804f, -0.007446f, 0.15506f, 0.986267f, -0.056183f, 0.258026f, - 0.571503f, -0.778931f, -0.681549f, -0.702087f, -0.206116f, - -0.96286f, -0.177185f, 0.203613f, -0.470978f, -0.515106f, - 0.716095f, -0.740326f, 0.57135f, 0.354095f, -0.56012f, -0.824982f, - -0.074982f, -0.507874f, 0.753204f, 0.417969f, -0.503113f, - 0.038147f, 0.863342f, 0.594025f, 0.673553f, -0.439758f, -0.119873f, - -0.005524f, -0.992737f, 0.098267f, -0.213776f, 0.971893f, - -0.615631f, 0.643951f, 0.454163f, 0.896851f, -0.441071f, 0.032166f, - -0.555023f, 0.750763f, -0.358093f, 0.398773f, 0.304688f, 0.864929f, - -0.722961f, 0.303589f, 0.620544f, -0.63559f, -0.621948f, - -0.457306f, -0.293243f, 0.072327f, 0.953278f, -0.491638f, - 0.661041f, -0.566772f, -0.304199f, -0.572083f, -0.761688f, - 0.908081f, -0.398956f, 0.127014f, -0.523621f, -0.549683f, - -0.650848f, -0.932922f, -0.19986f, 0.299408f, 0.099426f, 0.140869f, - 0.984985f, -0.020325f, -0.999756f, -0.002319f, 0.952667f, - 0.280853f, -0.11615f, -0.971893f, 0.082581f, 0.220337f, 0.65921f, - 0.705292f, -0.260651f, 0.733063f, -0.175537f, 0.657043f, - -0.555206f, 0.429504f, -0.712189f, 0.400421f, -0.89859f, 0.179352f, - 0.750885f, -0.19696f, 0.630341f, 0.785675f, -0.569336f, 0.241821f, - -0.058899f, -0.464111f, 0.883789f, 0.129608f, -0.94519f, 0.299622f, - -0.357819f, 0.907654f, 0.219238f, -0.842133f, -0.439117f, - -0.312927f, -0.313477f, 0.84433f, 0.434479f, -0.241211f, 0.053253f, - 0.968994f, 0.063873f, 0.823273f, 0.563965f, 0.476288f, 0.862152f, - -0.172516f, 0.620941f, -0.298126f, 0.724915f, 0.25238f, -0.749359f, - -0.612122f, -0.577545f, 0.386566f, 0.718994f, -0.406342f, - -0.737976f, 0.538696f, 0.04718f, 0.556305f, 0.82959f, -0.802856f, - 0.587463f, 0.101166f, -0.707733f, -0.705963f, 0.026428f, 0.374908f, - 0.68457f, 0.625092f, 0.472137f, 0.208405f, -0.856506f, -0.703064f, - -0.581085f, -0.409821f, -0.417206f, -0.736328f, 0.532623f, - -0.447876f, -0.20285f, -0.870728f, 0.086945f, -0.990417f, - 0.107086f, 0.183685f, 0.018341f, -0.982788f, 0.560638f, -0.428864f, - 0.708282f, 0.296722f, -0.952576f, -0.0672f, 0.135773f, 0.990265f, - 0.030243f, -0.068787f, 0.654724f, 0.752686f, 0.762604f, -0.551758f, - 0.337585f, -0.819611f, -0.407684f, 0.402466f, -0.727844f, - -0.55072f, -0.408539f, -0.855774f, -0.480011f, 0.19281f, 0.693176f, - -0.079285f, 0.716339f, 0.226013f, 0.650116f, -0.725433f, 0.246704f, - 0.953369f, -0.173553f, -0.970398f, -0.239227f, -0.03244f, - 0.136383f, -0.394318f, 0.908752f, 0.813232f, 0.558167f, 0.164368f, - 0.40451f, 0.549042f, -0.731323f, -0.380249f, -0.566711f, 0.730865f, - 0.022156f, 0.932739f, 0.359741f, 0.00824f, 0.996552f, -0.082306f, - 0.956635f, -0.065338f, -0.283722f, -0.743561f, 0.008209f, - 0.668579f, -0.859589f, -0.509674f, 0.035767f, -0.852234f, - 0.363678f, -0.375977f, -0.201965f, -0.970795f, -0.12915f, - 0.313477f, 0.947327f, 0.06546f, -0.254028f, -0.528259f, 0.81015f, - 0.628052f, 0.601105f, 0.49411f, -0.494385f, 0.868378f, 0.037933f, - 0.275635f, -0.086426f, 0.957336f, -0.197937f, 0.468903f, - -0.860748f, 0.895599f, 0.399384f, 0.195801f, 0.560791f, 0.825012f, - -0.069214f, 0.304199f, -0.849487f, 0.43103f, 0.096375f, 0.93576f, - 0.339111f, -0.051422f, 0.408966f, -0.911072f, 0.330444f, 0.942841f, - -0.042389f, -0.452362f, -0.786407f, 0.420563f, 0.134308f, - -0.933472f, -0.332489f, 0.80191f, -0.566711f, -0.188934f, - -0.987946f, -0.105988f, 0.112518f, -0.24408f, 0.892242f, - -0.379791f, -0.920502f, 0.229095f, -0.316376f, 0.7789f, 0.325958f, - 0.535706f, -0.912872f, 0.185211f, -0.36377f, -0.184784f, 0.565369f, - -0.803833f, -0.018463f, 0.119537f, 0.992615f, -0.259247f, - -0.935608f, 0.239532f, -0.82373f, -0.449127f, -0.345947f, - -0.433105f, 0.659515f, 0.614349f, -0.822754f, 0.378845f, - -0.423676f, 0.687195f, -0.674835f, -0.26889f, -0.246582f, - -0.800842f, 0.545715f, -0.729187f, -0.207794f, 0.651978f, - 0.653534f, -0.610443f, -0.447388f, 0.492584f, -0.023346f, - 0.869934f, 0.609039f, 0.009094f, -0.79306f, 0.962494f, -0.271088f, - -0.00885f, 0.2659f, -0.004913f, 0.963959f, 0.651245f, 0.553619f, - -0.518951f, 0.280548f, -0.84314f, 0.458618f, -0.175293f, - -0.983215f, 0.049805f, 0.035339f, -0.979919f, 0.196045f, - -0.982941f, 0.164307f, -0.082245f, 0.233734f, -0.97226f, - -0.005005f, -0.747253f, -0.611328f, 0.260437f, 0.645599f, - 0.592773f, 0.481384f, 0.117706f, -0.949524f, -0.29068f, -0.535004f, - -0.791901f, -0.294312f, -0.627167f, -0.214447f, 0.748718f, - -0.047974f, -0.813477f, -0.57959f, -0.175537f, 0.477264f, - -0.860992f, 0.738556f, -0.414246f, -0.53183f, 0.562561f, - -0.704071f, 0.433289f, -0.754944f, 0.64801f, -0.100586f, 0.114716f, - 0.044525f, -0.992371f, 0.966003f, 0.244873f, -0.082764f}; - - /* ********************* FROM PERLIN HIMSELF: ******************** */ - // 512 + 2 - private static short[] p = new short[]{0xA2, 0xA0, 0x19, 0x3B, 0xF8, - 0xEB, 0xAA, 0xEE, 0xF3, 0x1C, 0x67, 0x28, 0x1D, 0xED, 0x0, 0xDE, - 0x95, 0x2E, 0xDC, 0x3F, 0x3A, 0x82, 0x35, 0x4D, 0x6C, 0xBA, 0x36, - 0xD0, 0xF6, 0xC, 0x79, 0x32, 0xD1, 0x59, 0xF4, 0x8, 0x8B, 0x63, - 0x89, 0x2F, 0xB8, 0xB4, 0x97, 0x83, 0xF2, 0x8F, 0x18, 0xC7, 0x51, - 0x14, 0x65, 0x87, 0x48, 0x20, 0x42, 0xA8, 0x80, 0xB5, 0x40, 0x13, - 0xB2, 0x22, 0x7E, 0x57, 0xBC, 0x7F, 0x6B, 0x9D, 0x86, 0x4C, 0xC8, - 0xDB, 0x7C, 0xD5, 0x25, 0x4E, 0x5A, 0x55, 0x74, 0x50, 0xCD, 0xB3, - 0x7A, 0xBB, 0xC3, 0xCB, 0xB6, 0xE2, 0xE4, 0xEC, 0xFD, 0x98, 0xB, - 0x96, 0xD3, 0x9E, 0x5C, 0xA1, 0x64, 0xF1, 0x81, 0x61, 0xE1, 0xC4, - 0x24, 0x72, 0x49, 0x8C, 0x90, 0x4B, 0x84, 0x34, 0x38, 0xAB, 0x78, - 0xCA, 0x1F, 0x1, 0xD7, 0x93, 0x11, 0xC1, 0x58, 0xA9, 0x31, 0xF9, - 0x44, 0x6D, 0xBF, 0x33, 0x9C, 0x5F, 0x9, 0x94, 0xA3, 0x85, 0x6, - 0xC6, 0x9A, 0x1E, 0x7B, 0x46, 0x15, 0x30, 0x27, 0x2B, 0x1B, 0x71, - 0x3C, 0x5B, 0xD6, 0x6F, 0x62, 0xAC, 0x4F, 0xC2, 0xC0, 0xE, 0xB1, - 0x23, 0xA7, 0xDF, 0x47, 0xB0, 0x77, 0x69, 0x5, 0xE9, 0xE6, 0xE7, - 0x76, 0x73, 0xF, 0xFE, 0x6E, 0x9B, 0x56, 0xEF, 0x12, 0xA5, 0x37, - 0xFC, 0xAE, 0xD9, 0x3, 0x8E, 0xDD, 0x10, 0xB9, 0xCE, 0xC9, 0x8D, - 0xDA, 0x2A, 0xBD, 0x68, 0x17, 0x9F, 0xBE, 0xD4, 0xA, 0xCC, 0xD2, - 0xE8, 0x43, 0x3D, 0x70, 0xB7, 0x2, 0x7D, 0x99, 0xD8, 0xD, 0x60, - 0x8A, 0x4, 0x2C, 0x3E, 0x92, 0xE5, 0xAF, 0x53, 0x7, 0xE0, 0x29, - 0xA6, 0xC5, 0xE3, 0xF5, 0xF7, 0x4A, 0x41, 0x26, 0x6A, 0x16, 0x5E, - 0x52, 0x2D, 0x21, 0xAD, 0xF0, 0x91, 0xFF, 0xEA, 0x54, 0xFA, 0x66, - 0x1A, 0x45, 0x39, 0xCF, 0x75, 0xA4, 0x88, 0xFB, 0x5D, 0xA2, 0xA0, - 0x19, 0x3B, 0xF8, 0xEB, 0xAA, 0xEE, 0xF3, 0x1C, 0x67, 0x28, 0x1D, - 0xED, 0x0, 0xDE, 0x95, 0x2E, 0xDC, 0x3F, 0x3A, 0x82, 0x35, 0x4D, - 0x6C, 0xBA, 0x36, 0xD0, 0xF6, 0xC, 0x79, 0x32, 0xD1, 0x59, 0xF4, - 0x8, 0x8B, 0x63, 0x89, 0x2F, 0xB8, 0xB4, 0x97, 0x83, 0xF2, 0x8F, - 0x18, 0xC7, 0x51, 0x14, 0x65, 0x87, 0x48, 0x20, 0x42, 0xA8, 0x80, - 0xB5, 0x40, 0x13, 0xB2, 0x22, 0x7E, 0x57, 0xBC, 0x7F, 0x6B, 0x9D, - 0x86, 0x4C, 0xC8, 0xDB, 0x7C, 0xD5, 0x25, 0x4E, 0x5A, 0x55, 0x74, - 0x50, 0xCD, 0xB3, 0x7A, 0xBB, 0xC3, 0xCB, 0xB6, 0xE2, 0xE4, 0xEC, - 0xFD, 0x98, 0xB, 0x96, 0xD3, 0x9E, 0x5C, 0xA1, 0x64, 0xF1, 0x81, - 0x61, 0xE1, 0xC4, 0x24, 0x72, 0x49, 0x8C, 0x90, 0x4B, 0x84, 0x34, - 0x38, 0xAB, 0x78, 0xCA, 0x1F, 0x1, 0xD7, 0x93, 0x11, 0xC1, 0x58, - 0xA9, 0x31, 0xF9, 0x44, 0x6D, 0xBF, 0x33, 0x9C, 0x5F, 0x9, 0x94, - 0xA3, 0x85, 0x6, 0xC6, 0x9A, 0x1E, 0x7B, 0x46, 0x15, 0x30, 0x27, - 0x2B, 0x1B, 0x71, 0x3C, 0x5B, 0xD6, 0x6F, 0x62, 0xAC, 0x4F, 0xC2, - 0xC0, 0xE, 0xB1, 0x23, 0xA7, 0xDF, 0x47, 0xB0, 0x77, 0x69, 0x5, - 0xE9, 0xE6, 0xE7, 0x76, 0x73, 0xF, 0xFE, 0x6E, 0x9B, 0x56, 0xEF, - 0x12, 0xA5, 0x37, 0xFC, 0xAE, 0xD9, 0x3, 0x8E, 0xDD, 0x10, 0xB9, - 0xCE, 0xC9, 0x8D, 0xDA, 0x2A, 0xBD, 0x68, 0x17, 0x9F, 0xBE, 0xD4, - 0xA, 0xCC, 0xD2, 0xE8, 0x43, 0x3D, 0x70, 0xB7, 0x2, 0x7D, 0x99, - 0xD8, 0xD, 0x60, 0x8A, 0x4, 0x2C, 0x3E, 0x92, 0xE5, 0xAF, 0x53, - 0x7, 0xE0, 0x29, 0xA6, 0xC5, 0xE3, 0xF5, 0xF7, 0x4A, 0x41, 0x26, - 0x6A, 0x16, 0x5E, 0x52, 0x2D, 0x21, 0xAD, 0xF0, 0x91, 0xFF, 0xEA, - 0x54, 0xFA, 0x66, 0x1A, 0x45, 0x39, 0xCF, 0x75, 0xA4, 0x88, 0xFB, - 0x5D, 0xA2, 0xA0}; - // [512+2][3] - private static float[][] g = new float[][]{ - {0.33783f, 0.715698f, -0.611206f}, - {-0.944031f, -0.326599f, -0.045624f}, - {-0.101074f, -0.416443f, -0.903503f}, - {0.799286f, 0.49411f, -0.341949f}, - {-0.854645f, 0.518036f, 0.033936f}, - {0.42514f, -0.437866f, -0.792114f}, - {-0.358948f, 0.597046f, 0.717377f}, - {-0.985413f, 0.144714f, 0.089294f}, - {-0.601776f, -0.33728f, -0.723907f}, - {-0.449921f, 0.594513f, 0.666382f}, - {0.208313f, -0.10791f, 0.972076f}, - {0.575317f, 0.060425f, 0.815643f}, - {0.293365f, -0.875702f, -0.383453f}, - {0.293762f, 0.465759f, 0.834686f}, - {-0.846008f, -0.233398f, -0.47934f}, - {-0.115814f, 0.143036f, -0.98291f}, - {0.204681f, -0.949036f, -0.239532f}, - {0.946716f, -0.263947f, 0.184326f}, - {-0.235596f, 0.573822f, 0.784332f}, - {0.203705f, -0.372253f, -0.905487f}, - {0.756989f, -0.651031f, 0.055298f}, - {0.497803f, 0.814697f, -0.297363f}, - {-0.16214f, 0.063995f, -0.98468f}, - {-0.329254f, 0.834381f, 0.441925f}, - {0.703827f, -0.527039f, -0.476227f}, - {0.956421f, 0.266113f, 0.119781f}, - {0.480133f, 0.482849f, 0.7323f}, - {-0.18631f, 0.961212f, -0.203125f}, - {-0.748474f, -0.656921f, -0.090393f}, - {-0.085052f, -0.165253f, 0.982544f}, - {-0.76947f, 0.628174f, -0.115234f}, - {0.383148f, 0.537659f, 0.751068f}, - {0.616486f, -0.668488f, -0.415924f}, - {-0.259979f, -0.630005f, 0.73175f}, - {0.570953f, -0.087952f, 0.816223f}, - {-0.458008f, 0.023254f, 0.888611f}, - {-0.196167f, 0.976563f, -0.088287f}, - {-0.263885f, -0.69812f, -0.665527f}, - {0.437134f, -0.892273f, -0.112793f}, - {-0.621674f, -0.230438f, 0.748566f}, - {0.232422f, 0.900574f, -0.367249f}, - {0.22229f, -0.796143f, 0.562744f}, - {-0.665497f, -0.73764f, 0.11377f}, - {0.670135f, 0.704803f, 0.232605f}, - {0.895599f, 0.429749f, -0.114655f}, - {-0.11557f, -0.474243f, 0.872742f}, - {0.621826f, 0.604004f, -0.498444f}, - {-0.832214f, 0.012756f, 0.55426f}, - {-0.702484f, 0.705994f, -0.089661f}, - {-0.692017f, 0.649292f, 0.315399f}, - {-0.175995f, -0.977997f, 0.111877f}, - {0.096954f, -0.04953f, 0.994019f}, - {0.635284f, -0.606689f, -0.477783f}, - {-0.261261f, -0.607422f, -0.750153f}, - {0.983276f, 0.165436f, 0.075958f}, - {-0.29837f, 0.404083f, -0.864655f}, - {-0.638672f, 0.507721f, 0.578156f}, - {0.388214f, 0.412079f, 0.824249f}, - {0.556183f, -0.208832f, 0.804352f}, - {0.778442f, 0.562012f, 0.27951f}, - {-0.616577f, 0.781921f, -0.091522f}, - {0.196289f, 0.051056f, 0.979187f}, - {-0.121216f, 0.207153f, -0.970734f}, - {-0.173401f, -0.384735f, 0.906555f}, - {0.161499f, -0.723236f, -0.671387f}, - {0.178497f, -0.006226f, -0.983887f}, - {-0.126038f, 0.15799f, 0.97934f}, - {0.830475f, -0.024811f, 0.556458f}, - {-0.510132f, -0.76944f, 0.384247f}, - {0.81424f, 0.200104f, -0.544891f}, - {-0.112549f, -0.393311f, -0.912445f}, - {0.56189f, 0.152222f, -0.813049f}, - {0.198914f, -0.254517f, -0.946381f}, - {-0.41217f, 0.690979f, -0.593811f}, - {-0.407257f, 0.324524f, 0.853668f}, - {-0.690186f, 0.366119f, -0.624115f}, - {-0.428345f, 0.844147f, -0.322296f}, - {-0.21228f, -0.297546f, -0.930756f}, - {-0.273071f, 0.516113f, 0.811798f}, - {0.928314f, 0.371643f, 0.007233f}, - {0.785828f, -0.479218f, -0.390778f}, - {-0.704895f, 0.058929f, 0.706818f}, - {0.173248f, 0.203583f, 0.963562f}, - {0.422211f, -0.904297f, -0.062469f}, - {-0.363312f, -0.182465f, 0.913605f}, - {0.254028f, -0.552307f, -0.793945f}, - {-0.28891f, -0.765747f, -0.574554f}, - {0.058319f, 0.291382f, 0.954803f}, - {0.946136f, -0.303925f, 0.111267f}, - {-0.078156f, 0.443695f, -0.892731f}, - {0.182098f, 0.89389f, 0.409515f}, - {-0.680298f, -0.213318f, 0.701141f}, - {0.062469f, 0.848389f, -0.525635f}, - {-0.72879f, -0.641846f, 0.238342f}, - {-0.88089f, 0.427673f, 0.202637f}, - {-0.532501f, -0.21405f, 0.818878f}, - {0.948975f, -0.305084f, 0.07962f}, - {0.925446f, 0.374664f, 0.055817f}, - {0.820923f, 0.565491f, 0.079102f}, - {0.25882f, 0.099792f, -0.960724f}, - {-0.294617f, 0.910522f, 0.289978f}, - {0.137115f, 0.320038f, -0.937408f}, - {-0.908386f, 0.345276f, -0.235718f}, - {-0.936218f, 0.138763f, 0.322754f}, - {0.366577f, 0.925934f, -0.090637f}, - {0.309296f, -0.686829f, -0.657684f}, - {0.66983f, 0.024445f, 0.742065f}, - {-0.917999f, -0.059113f, -0.392059f}, - {0.365509f, 0.462158f, -0.807922f}, - {0.083374f, 0.996399f, -0.014801f}, - {0.593842f, 0.253143f, -0.763672f}, - {0.974976f, -0.165466f, 0.148285f}, - {0.918976f, 0.137299f, 0.369537f}, - {0.294952f, 0.694977f, 0.655731f}, - {0.943085f, 0.152618f, -0.295319f}, - {0.58783f, -0.598236f, 0.544495f}, - {0.203796f, 0.678223f, 0.705994f}, - {-0.478821f, -0.661011f, 0.577667f}, - {0.719055f, -0.1698f, -0.673828f}, - {-0.132172f, -0.965332f, 0.225006f}, - {-0.981873f, -0.14502f, 0.121979f}, - {0.763458f, 0.579742f, 0.284546f}, - {-0.893188f, 0.079681f, 0.442474f}, - {-0.795776f, -0.523804f, 0.303802f}, - {0.734955f, 0.67804f, -0.007446f}, - {0.15506f, 0.986267f, -0.056183f}, - {0.258026f, 0.571503f, -0.778931f}, - {-0.681549f, -0.702087f, -0.206116f}, - {-0.96286f, -0.177185f, 0.203613f}, - {-0.470978f, -0.515106f, 0.716095f}, - {-0.740326f, 0.57135f, 0.354095f}, - {-0.56012f, -0.824982f, -0.074982f}, - {-0.507874f, 0.753204f, 0.417969f}, - {-0.503113f, 0.038147f, 0.863342f}, - {0.594025f, 0.673553f, -0.439758f}, - {-0.119873f, -0.005524f, -0.992737f}, - {0.098267f, -0.213776f, 0.971893f}, - {-0.615631f, 0.643951f, 0.454163f}, - {0.896851f, -0.441071f, 0.032166f}, - {-0.555023f, 0.750763f, -0.358093f}, - {0.398773f, 0.304688f, 0.864929f}, - {-0.722961f, 0.303589f, 0.620544f}, - {-0.63559f, -0.621948f, -0.457306f}, - {-0.293243f, 0.072327f, 0.953278f}, - {-0.491638f, 0.661041f, -0.566772f}, - {-0.304199f, -0.572083f, -0.761688f}, - {0.908081f, -0.398956f, 0.127014f}, - {-0.523621f, -0.549683f, -0.650848f}, - {-0.932922f, -0.19986f, 0.299408f}, - {0.099426f, 0.140869f, 0.984985f}, - {-0.020325f, -0.999756f, -0.002319f}, - {0.952667f, 0.280853f, -0.11615f}, - {-0.971893f, 0.082581f, 0.220337f}, - {0.65921f, 0.705292f, -0.260651f}, - {0.733063f, -0.175537f, 0.657043f}, - {-0.555206f, 0.429504f, -0.712189f}, - {0.400421f, -0.89859f, 0.179352f}, - {0.750885f, -0.19696f, 0.630341f}, - {0.785675f, -0.569336f, 0.241821f}, - {-0.058899f, -0.464111f, 0.883789f}, - {0.129608f, -0.94519f, 0.299622f}, - {-0.357819f, 0.907654f, 0.219238f}, - {-0.842133f, -0.439117f, -0.312927f}, - {-0.313477f, 0.84433f, 0.434479f}, - {-0.241211f, 0.053253f, 0.968994f}, - {0.063873f, 0.823273f, 0.563965f}, - {0.476288f, 0.862152f, -0.172516f}, - {0.620941f, -0.298126f, 0.724915f}, - {0.25238f, -0.749359f, -0.612122f}, - {-0.577545f, 0.386566f, 0.718994f}, - {-0.406342f, -0.737976f, 0.538696f}, - {0.04718f, 0.556305f, 0.82959f}, - {-0.802856f, 0.587463f, 0.101166f}, - {-0.707733f, -0.705963f, 0.026428f}, - {0.374908f, 0.68457f, 0.625092f}, - {0.472137f, 0.208405f, -0.856506f}, - {-0.703064f, -0.581085f, -0.409821f}, - {-0.417206f, -0.736328f, 0.532623f}, - {-0.447876f, -0.20285f, -0.870728f}, - {0.086945f, -0.990417f, 0.107086f}, - {0.183685f, 0.018341f, -0.982788f}, - {0.560638f, -0.428864f, 0.708282f}, - {0.296722f, -0.952576f, -0.0672f}, - {0.135773f, 0.990265f, 0.030243f}, - {-0.068787f, 0.654724f, 0.752686f}, - {0.762604f, -0.551758f, 0.337585f}, - {-0.819611f, -0.407684f, 0.402466f}, - {-0.727844f, -0.55072f, -0.408539f}, - {-0.855774f, -0.480011f, 0.19281f}, - {0.693176f, -0.079285f, 0.716339f}, - {0.226013f, 0.650116f, -0.725433f}, - {0.246704f, 0.953369f, -0.173553f}, - {-0.970398f, -0.239227f, -0.03244f}, - {0.136383f, -0.394318f, 0.908752f}, - {0.813232f, 0.558167f, 0.164368f}, - {0.40451f, 0.549042f, -0.731323f}, - {-0.380249f, -0.566711f, 0.730865f}, - {0.022156f, 0.932739f, 0.359741f}, - {0.00824f, 0.996552f, -0.082306f}, - {0.956635f, -0.065338f, -0.283722f}, - {-0.743561f, 0.008209f, 0.668579f}, - {-0.859589f, -0.509674f, 0.035767f}, - {-0.852234f, 0.363678f, -0.375977f}, - {-0.201965f, -0.970795f, -0.12915f}, - {0.313477f, 0.947327f, 0.06546f}, - {-0.254028f, -0.528259f, 0.81015f}, - {0.628052f, 0.601105f, 0.49411f}, - {-0.494385f, 0.868378f, 0.037933f}, - {0.275635f, -0.086426f, 0.957336f}, - {-0.197937f, 0.468903f, -0.860748f}, - {0.895599f, 0.399384f, 0.195801f}, - {0.560791f, 0.825012f, -0.069214f}, - {0.304199f, -0.849487f, 0.43103f}, - {0.096375f, 0.93576f, 0.339111f}, - {-0.051422f, 0.408966f, -0.911072f}, - {0.330444f, 0.942841f, -0.042389f}, - {-0.452362f, -0.786407f, 0.420563f}, - {0.134308f, -0.933472f, -0.332489f}, - {0.80191f, -0.566711f, -0.188934f}, - {-0.987946f, -0.105988f, 0.112518f}, - {-0.24408f, 0.892242f, -0.379791f}, - {-0.920502f, 0.229095f, -0.316376f}, - {0.7789f, 0.325958f, 0.535706f}, - {-0.912872f, 0.185211f, -0.36377f}, - {-0.184784f, 0.565369f, -0.803833f}, - {-0.018463f, 0.119537f, 0.992615f}, - {-0.259247f, -0.935608f, 0.239532f}, - {-0.82373f, -0.449127f, -0.345947f}, - {-0.433105f, 0.659515f, 0.614349f}, - {-0.822754f, 0.378845f, -0.423676f}, - {0.687195f, -0.674835f, -0.26889f}, - {-0.246582f, -0.800842f, 0.545715f}, - {-0.729187f, -0.207794f, 0.651978f}, - {0.653534f, -0.610443f, -0.447388f}, - {0.492584f, -0.023346f, 0.869934f}, - {0.609039f, 0.009094f, -0.79306f}, - {0.962494f, -0.271088f, -0.00885f}, - {0.2659f, -0.004913f, 0.963959f}, - {0.651245f, 0.553619f, -0.518951f}, - {0.280548f, -0.84314f, 0.458618f}, - {-0.175293f, -0.983215f, 0.049805f}, - {0.035339f, -0.979919f, 0.196045f}, - {-0.982941f, 0.164307f, -0.082245f}, - {0.233734f, -0.97226f, -0.005005f}, - {-0.747253f, -0.611328f, 0.260437f}, - {0.645599f, 0.592773f, 0.481384f}, - {0.117706f, -0.949524f, -0.29068f}, - {-0.535004f, -0.791901f, -0.294312f}, - {-0.627167f, -0.214447f, 0.748718f}, - {-0.047974f, -0.813477f, -0.57959f}, - {-0.175537f, 0.477264f, -0.860992f}, - {0.738556f, -0.414246f, -0.53183f}, - {0.562561f, -0.704071f, 0.433289f}, - {-0.754944f, 0.64801f, -0.100586f}, - {0.114716f, 0.044525f, -0.992371f}, - {0.966003f, 0.244873f, -0.082764f}, - {0.33783f, 0.715698f, -0.611206f}, - {-0.944031f, -0.326599f, -0.045624f}, - {-0.101074f, -0.416443f, -0.903503f}, - {0.799286f, 0.49411f, -0.341949f}, - {-0.854645f, 0.518036f, 0.033936f}, - {0.42514f, -0.437866f, -0.792114f}, - {-0.358948f, 0.597046f, 0.717377f}, - {-0.985413f, 0.144714f, 0.089294f}, - {-0.601776f, -0.33728f, -0.723907f}, - {-0.449921f, 0.594513f, 0.666382f}, - {0.208313f, -0.10791f, 0.972076f}, - {0.575317f, 0.060425f, 0.815643f}, - {0.293365f, -0.875702f, -0.383453f}, - {0.293762f, 0.465759f, 0.834686f}, - {-0.846008f, -0.233398f, -0.47934f}, - {-0.115814f, 0.143036f, -0.98291f}, - {0.204681f, -0.949036f, -0.239532f}, - {0.946716f, -0.263947f, 0.184326f}, - {-0.235596f, 0.573822f, 0.784332f}, - {0.203705f, -0.372253f, -0.905487f}, - {0.756989f, -0.651031f, 0.055298f}, - {0.497803f, 0.814697f, -0.297363f}, - {-0.16214f, 0.063995f, -0.98468f}, - {-0.329254f, 0.834381f, 0.441925f}, - {0.703827f, -0.527039f, -0.476227f}, - {0.956421f, 0.266113f, 0.119781f}, - {0.480133f, 0.482849f, 0.7323f}, - {-0.18631f, 0.961212f, -0.203125f}, - {-0.748474f, -0.656921f, -0.090393f}, - {-0.085052f, -0.165253f, 0.982544f}, - {-0.76947f, 0.628174f, -0.115234f}, - {0.383148f, 0.537659f, 0.751068f}, - {0.616486f, -0.668488f, -0.415924f}, - {-0.259979f, -0.630005f, 0.73175f}, - {0.570953f, -0.087952f, 0.816223f}, - {-0.458008f, 0.023254f, 0.888611f}, - {-0.196167f, 0.976563f, -0.088287f}, - {-0.263885f, -0.69812f, -0.665527f}, - {0.437134f, -0.892273f, -0.112793f}, - {-0.621674f, -0.230438f, 0.748566f}, - {0.232422f, 0.900574f, -0.367249f}, - {0.22229f, -0.796143f, 0.562744f}, - {-0.665497f, -0.73764f, 0.11377f}, - {0.670135f, 0.704803f, 0.232605f}, - {0.895599f, 0.429749f, -0.114655f}, - {-0.11557f, -0.474243f, 0.872742f}, - {0.621826f, 0.604004f, -0.498444f}, - {-0.832214f, 0.012756f, 0.55426f}, - {-0.702484f, 0.705994f, -0.089661f}, - {-0.692017f, 0.649292f, 0.315399f}, - {-0.175995f, -0.977997f, 0.111877f}, - {0.096954f, -0.04953f, 0.994019f}, - {0.635284f, -0.606689f, -0.477783f}, - {-0.261261f, -0.607422f, -0.750153f}, - {0.983276f, 0.165436f, 0.075958f}, - {-0.29837f, 0.404083f, -0.864655f}, - {-0.638672f, 0.507721f, 0.578156f}, - {0.388214f, 0.412079f, 0.824249f}, - {0.556183f, -0.208832f, 0.804352f}, - {0.778442f, 0.562012f, 0.27951f}, - {-0.616577f, 0.781921f, -0.091522f}, - {0.196289f, 0.051056f, 0.979187f}, - {-0.121216f, 0.207153f, -0.970734f}, - {-0.173401f, -0.384735f, 0.906555f}, - {0.161499f, -0.723236f, -0.671387f}, - {0.178497f, -0.006226f, -0.983887f}, - {-0.126038f, 0.15799f, 0.97934f}, - {0.830475f, -0.024811f, 0.556458f}, - {-0.510132f, -0.76944f, 0.384247f}, - {0.81424f, 0.200104f, -0.544891f}, - {-0.112549f, -0.393311f, -0.912445f}, - {0.56189f, 0.152222f, -0.813049f}, - {0.198914f, -0.254517f, -0.946381f}, - {-0.41217f, 0.690979f, -0.593811f}, - {-0.407257f, 0.324524f, 0.853668f}, - {-0.690186f, 0.366119f, -0.624115f}, - {-0.428345f, 0.844147f, -0.322296f}, - {-0.21228f, -0.297546f, -0.930756f}, - {-0.273071f, 0.516113f, 0.811798f}, - {0.928314f, 0.371643f, 0.007233f}, - {0.785828f, -0.479218f, -0.390778f}, - {-0.704895f, 0.058929f, 0.706818f}, - {0.173248f, 0.203583f, 0.963562f}, - {0.422211f, -0.904297f, -0.062469f}, - {-0.363312f, -0.182465f, 0.913605f}, - {0.254028f, -0.552307f, -0.793945f}, - {-0.28891f, -0.765747f, -0.574554f}, - {0.058319f, 0.291382f, 0.954803f}, - {0.946136f, -0.303925f, 0.111267f}, - {-0.078156f, 0.443695f, -0.892731f}, - {0.182098f, 0.89389f, 0.409515f}, - {-0.680298f, -0.213318f, 0.701141f}, - {0.062469f, 0.848389f, -0.525635f}, - {-0.72879f, -0.641846f, 0.238342f}, - {-0.88089f, 0.427673f, 0.202637f}, - {-0.532501f, -0.21405f, 0.818878f}, - {0.948975f, -0.305084f, 0.07962f}, - {0.925446f, 0.374664f, 0.055817f}, - {0.820923f, 0.565491f, 0.079102f}, - {0.25882f, 0.099792f, -0.960724f}, - {-0.294617f, 0.910522f, 0.289978f}, - {0.137115f, 0.320038f, -0.937408f}, - {-0.908386f, 0.345276f, -0.235718f}, - {-0.936218f, 0.138763f, 0.322754f}, - {0.366577f, 0.925934f, -0.090637f}, - {0.309296f, -0.686829f, -0.657684f}, - {0.66983f, 0.024445f, 0.742065f}, - {-0.917999f, -0.059113f, -0.392059f}, - {0.365509f, 0.462158f, -0.807922f}, - {0.083374f, 0.996399f, -0.014801f}, - {0.593842f, 0.253143f, -0.763672f}, - {0.974976f, -0.165466f, 0.148285f}, - {0.918976f, 0.137299f, 0.369537f}, - {0.294952f, 0.694977f, 0.655731f}, - {0.943085f, 0.152618f, -0.295319f}, - {0.58783f, -0.598236f, 0.544495f}, - {0.203796f, 0.678223f, 0.705994f}, - {-0.478821f, -0.661011f, 0.577667f}, - {0.719055f, -0.1698f, -0.673828f}, - {-0.132172f, -0.965332f, 0.225006f}, - {-0.981873f, -0.14502f, 0.121979f}, - {0.763458f, 0.579742f, 0.284546f}, - {-0.893188f, 0.079681f, 0.442474f}, - {-0.795776f, -0.523804f, 0.303802f}, - {0.734955f, 0.67804f, -0.007446f}, - {0.15506f, 0.986267f, -0.056183f}, - {0.258026f, 0.571503f, -0.778931f}, - {-0.681549f, -0.702087f, -0.206116f}, - {-0.96286f, -0.177185f, 0.203613f}, - {-0.470978f, -0.515106f, 0.716095f}, - {-0.740326f, 0.57135f, 0.354095f}, - {-0.56012f, -0.824982f, -0.074982f}, - {-0.507874f, 0.753204f, 0.417969f}, - {-0.503113f, 0.038147f, 0.863342f}, - {0.594025f, 0.673553f, -0.439758f}, - {-0.119873f, -0.005524f, -0.992737f}, - {0.098267f, -0.213776f, 0.971893f}, - {-0.615631f, 0.643951f, 0.454163f}, - {0.896851f, -0.441071f, 0.032166f}, - {-0.555023f, 0.750763f, -0.358093f}, - {0.398773f, 0.304688f, 0.864929f}, - {-0.722961f, 0.303589f, 0.620544f}, - {-0.63559f, -0.621948f, -0.457306f}, - {-0.293243f, 0.072327f, 0.953278f}, - {-0.491638f, 0.661041f, -0.566772f}, - {-0.304199f, -0.572083f, -0.761688f}, - {0.908081f, -0.398956f, 0.127014f}, - {-0.523621f, -0.549683f, -0.650848f}, - {-0.932922f, -0.19986f, 0.299408f}, - {0.099426f, 0.140869f, 0.984985f}, - {-0.020325f, -0.999756f, -0.002319f}, - {0.952667f, 0.280853f, -0.11615f}, - {-0.971893f, 0.082581f, 0.220337f}, - {0.65921f, 0.705292f, -0.260651f}, - {0.733063f, -0.175537f, 0.657043f}, - {-0.555206f, 0.429504f, -0.712189f}, - {0.400421f, -0.89859f, 0.179352f}, - {0.750885f, -0.19696f, 0.630341f}, - {0.785675f, -0.569336f, 0.241821f}, - {-0.058899f, -0.464111f, 0.883789f}, - {0.129608f, -0.94519f, 0.299622f}, - {-0.357819f, 0.907654f, 0.219238f}, - {-0.842133f, -0.439117f, -0.312927f}, - {-0.313477f, 0.84433f, 0.434479f}, - {-0.241211f, 0.053253f, 0.968994f}, - {0.063873f, 0.823273f, 0.563965f}, - {0.476288f, 0.862152f, -0.172516f}, - {0.620941f, -0.298126f, 0.724915f}, - {0.25238f, -0.749359f, -0.612122f}, - {-0.577545f, 0.386566f, 0.718994f}, - {-0.406342f, -0.737976f, 0.538696f}, - {0.04718f, 0.556305f, 0.82959f}, - {-0.802856f, 0.587463f, 0.101166f}, - {-0.707733f, -0.705963f, 0.026428f}, - {0.374908f, 0.68457f, 0.625092f}, - {0.472137f, 0.208405f, -0.856506f}, - {-0.703064f, -0.581085f, -0.409821f}, - {-0.417206f, -0.736328f, 0.532623f}, - {-0.447876f, -0.20285f, -0.870728f}, - {0.086945f, -0.990417f, 0.107086f}, - {0.183685f, 0.018341f, -0.982788f}, - {0.560638f, -0.428864f, 0.708282f}, - {0.296722f, -0.952576f, -0.0672f}, - {0.135773f, 0.990265f, 0.030243f}, - {-0.068787f, 0.654724f, 0.752686f}, - {0.762604f, -0.551758f, 0.337585f}, - {-0.819611f, -0.407684f, 0.402466f}, - {-0.727844f, -0.55072f, -0.408539f}, - {-0.855774f, -0.480011f, 0.19281f}, - {0.693176f, -0.079285f, 0.716339f}, - {0.226013f, 0.650116f, -0.725433f}, - {0.246704f, 0.953369f, -0.173553f}, - {-0.970398f, -0.239227f, -0.03244f}, - {0.136383f, -0.394318f, 0.908752f}, - {0.813232f, 0.558167f, 0.164368f}, - {0.40451f, 0.549042f, -0.731323f}, - {-0.380249f, -0.566711f, 0.730865f}, - {0.022156f, 0.932739f, 0.359741f}, - {0.00824f, 0.996552f, -0.082306f}, - {0.956635f, -0.065338f, -0.283722f}, - {-0.743561f, 0.008209f, 0.668579f}, - {-0.859589f, -0.509674f, 0.035767f}, - {-0.852234f, 0.363678f, -0.375977f}, - {-0.201965f, -0.970795f, -0.12915f}, - {0.313477f, 0.947327f, 0.06546f}, - {-0.254028f, -0.528259f, 0.81015f}, - {0.628052f, 0.601105f, 0.49411f}, - {-0.494385f, 0.868378f, 0.037933f}, - {0.275635f, -0.086426f, 0.957336f}, - {-0.197937f, 0.468903f, -0.860748f}, - {0.895599f, 0.399384f, 0.195801f}, - {0.560791f, 0.825012f, -0.069214f}, - {0.304199f, -0.849487f, 0.43103f}, - {0.096375f, 0.93576f, 0.339111f}, - {-0.051422f, 0.408966f, -0.911072f}, - {0.330444f, 0.942841f, -0.042389f}, - {-0.452362f, -0.786407f, 0.420563f}, - {0.134308f, -0.933472f, -0.332489f}, - {0.80191f, -0.566711f, -0.188934f}, - {-0.987946f, -0.105988f, 0.112518f}, - {-0.24408f, 0.892242f, -0.379791f}, - {-0.920502f, 0.229095f, -0.316376f}, - {0.7789f, 0.325958f, 0.535706f}, - {-0.912872f, 0.185211f, -0.36377f}, - {-0.184784f, 0.565369f, -0.803833f}, - {-0.018463f, 0.119537f, 0.992615f}, - {-0.259247f, -0.935608f, 0.239532f}, - {-0.82373f, -0.449127f, -0.345947f}, - {-0.433105f, 0.659515f, 0.614349f}, - {-0.822754f, 0.378845f, -0.423676f}, - {0.687195f, -0.674835f, -0.26889f}, - {-0.246582f, -0.800842f, 0.545715f}, - {-0.729187f, -0.207794f, 0.651978f}, - {0.653534f, -0.610443f, -0.447388f}, - {0.492584f, -0.023346f, 0.869934f}, - {0.609039f, 0.009094f, -0.79306f}, - {0.962494f, -0.271088f, -0.00885f}, - {0.2659f, -0.004913f, 0.963959f}, - {0.651245f, 0.553619f, -0.518951f}, - {0.280548f, -0.84314f, 0.458618f}, - {-0.175293f, -0.983215f, 0.049805f}, - {0.035339f, -0.979919f, 0.196045f}, - {-0.982941f, 0.164307f, -0.082245f}, - {0.233734f, -0.97226f, -0.005005f}, - {-0.747253f, -0.611328f, 0.260437f}, - {0.645599f, 0.592773f, 0.481384f}, - {0.117706f, -0.949524f, -0.29068f}, - {-0.535004f, -0.791901f, -0.294312f}, - {-0.627167f, -0.214447f, 0.748718f}, - {-0.047974f, -0.813477f, -0.57959f}, - {-0.175537f, 0.477264f, -0.860992f}, - {0.738556f, -0.414246f, -0.53183f}, - {0.562561f, -0.704071f, 0.433289f}, - {-0.754944f, 0.64801f, -0.100586f}, - {0.114716f, 0.044525f, -0.992371f}, - {0.966003f, 0.244873f, -0.082764f}, - {0.33783f, 0.715698f, -0.611206f}, - {-0.944031f, -0.326599f, -0.045624f}}; -} diff --git a/engine/src/test/jme3test/blender/scene/Pivot.java b/engine/src/test/jme3test/blender/scene/Pivot.java deleted file mode 100644 index 27a87a298..000000000 --- a/engine/src/test/jme3test/blender/scene/Pivot.java +++ /dev/null @@ -1,54 +0,0 @@ -package jme3test.blender.scene; - -import com.jme3.asset.AssetManager; -import com.jme3.material.Material; -import com.jme3.math.ColorRGBA; -import com.jme3.math.Vector3f; -import com.jme3.scene.Geometry; -import com.jme3.scene.Node; -import com.jme3.scene.shape.Line; -import com.jme3.scene.shape.Sphere; - -/** - * The pivot displayed in the scene. - * @author Marcin Roguski - */ -public class Pivot extends Node { - - public Pivot(AssetManager assetManager) { - this.attachChild(this.getAxis("x", new Vector3f(10, 0, 0), ColorRGBA.Red, assetManager)); - this.attachChild(this.getAxis("y", new Vector3f(0, 10, 0), ColorRGBA.Green, assetManager)); - this.attachChild(this.getAxis("z", new Vector3f(0, 0, 10), ColorRGBA.Blue, assetManager)); - this.assignPoints(assetManager); - } - - private void assignPoints(AssetManager assetManager) { - Material defaultMaterial = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); - defaultMaterial.setColor("Color", ColorRGBA.DarkGray); - for (int i = -10; i <= 10; ++i) { - Geometry g = new Geometry("", new Sphere(3, 3, 0.05f)); - g.setLocalTranslation(i, 0, 0); - g.setMaterial(defaultMaterial); - this.attachChild(g); - - g = new Geometry("", new Sphere(3, 3, 0.05f)); - g.setLocalTranslation(0, i, 0); - g.setMaterial(defaultMaterial); - this.attachChild(g); - - g = new Geometry("", new Sphere(3, 3, 0.05f)); - g.setLocalTranslation(0, 0, i); - g.setMaterial(defaultMaterial); - this.attachChild(g); - } - } - - private Geometry getAxis(String name, Vector3f endPoint, ColorRGBA color, AssetManager assetManager) { - Line axis = new Line(new Vector3f(0, 0, 0), endPoint); - Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); - mat.setColor("Color", color); - Geometry geom = new Geometry(name, axis); - geom.setMaterial(mat); - return geom; - } -} \ No newline at end of file diff --git a/engine/src/test/jme3test/blender/scene/VisibleBone.java b/engine/src/test/jme3test/blender/scene/VisibleBone.java deleted file mode 100644 index a037dcdb8..000000000 --- a/engine/src/test/jme3test/blender/scene/VisibleBone.java +++ /dev/null @@ -1,48 +0,0 @@ -package jme3test.blender.scene; - -import com.jme3.animation.Bone; -import com.jme3.asset.AssetManager; -import com.jme3.material.Material; -import com.jme3.math.ColorRGBA; -import com.jme3.math.Quaternion; -import com.jme3.math.Vector3f; -import com.jme3.scene.Geometry; -import com.jme3.scene.Node; -import com.jme3.scene.shape.Line; -import com.jme3.scene.shape.Sphere; - -/** - * A simple class to create visualization of a skeleton. - * @author Marcin Roguski - */ -public class VisibleBone extends Node { - - private Vector3f globalPosition; - - public VisibleBone(Bone bone, Vector3f parentLocation, Quaternion parentRotation, AssetManager assetManager) { - Material redMat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); - redMat.setColor("Color", ColorRGBA.Red); - - Material whiteMat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md"); - whiteMat.setColor("Color", ColorRGBA.White); - - Geometry g = new Geometry(bone.getName(), new Sphere(9, 9, 0.01f)); - globalPosition = bone.getLocalPosition().add(parentLocation); - g.setLocalTranslation(globalPosition); - g.setLocalRotation(bone.getLocalRotation().mult(parentRotation)); - g.setMaterial(redMat); - this.attachChild(g); - - if (bone.getChildren() != null) { - for (Bone child : bone.getChildren()) { - VisibleBone vb = new VisibleBone(child, bone.getLocalPosition(), bone.getLocalRotation(), assetManager); - this.attachChild(vb); - Line line = new Line(globalPosition, vb.globalPosition); - line.setLineWidth(2); - Geometry geom = new Geometry("", line); - geom.setMaterial(whiteMat); - this.attachChild(geom); - } - } - } -} \ No newline at end of file