Package com.badlogic.gdx.tools.flame

Source Code of com.badlogic.gdx.tools.flame.LoaderButton$ModelLoaderButton

package com.badlogic.gdx.tools.flame;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;

import javax.swing.JButton;
import javax.swing.JOptionPane;

import com.badlogic.gdx.assets.loaders.ModelLoader;
import com.badlogic.gdx.assets.loaders.resolvers.AbsoluteFileHandleResolver;
import com.badlogic.gdx.graphics.g3d.Model;
import com.badlogic.gdx.graphics.g3d.loader.G3dModelLoader;
import com.badlogic.gdx.graphics.g3d.loader.ObjLoader;
import com.badlogic.gdx.graphics.g3d.particles.ParticleEffect;
import com.badlogic.gdx.utils.JsonReader;
import com.badlogic.gdx.utils.UBJsonReader;

/** @author Inferno */
public abstract class LoaderButton<T> extends JButton{

  public static class ParticleEffectLoaderButton extends LoaderButton<ParticleEffect>{
    public ParticleEffectLoaderButton (FlameMain editor) {
      this(editor, null);
    }
    public ParticleEffectLoaderButton (FlameMain editor, Listener<ParticleEffect> listener) {
      super(editor, "Load Controller", listener);
    }
   
    protected void loadResource () {
      File file = editor.showFileLoadDialog();
      if(file != null){
        try{
          String resource = file.getAbsolutePath();
          listener.onResourceLoaded(editor.openEffect(file, false));
        } catch (Exception ex) {
          System.out.println("Error loading effect: " + file.getAbsolutePath());
          ex.printStackTrace();
          JOptionPane.showMessageDialog(getParent(), "Error opening effect.");
          return;
        }
      }
    }
  }
 
  public static class ModelLoaderButton extends LoaderButton<Model>{
    public ModelLoaderButton (FlameMain editor) {
      this(editor, null);
    }
    public ModelLoaderButton (FlameMain editor, Listener<Model> listener) {
      super(editor, "Load Model", listener);
    }
   
    protected void loadResource () {
      File file = editor.showFileLoadDialog();
      if(file != null){
        try{
          String resource = file.getAbsolutePath();
          ModelLoader modelLoader = null;
          if(resource.endsWith(".obj")){
            modelLoader = new ObjLoader(new AbsoluteFileHandleResolver());
          }
          else if(resource.endsWith(".g3dj")){
            modelLoader = new G3dModelLoader(new JsonReader(), new AbsoluteFileHandleResolver());
          }
          else if(resource.endsWith(".g3db")){
            modelLoader = new G3dModelLoader(new UBJsonReader(), new AbsoluteFileHandleResolver());
          }
          else throw new Exception();
          listener.onResourceLoaded(editor.load(resource, Model.class, modelLoader, null));

        } catch (Exception ex) {
          System.out.println("Error loading model: " + file.getAbsolutePath());
          ex.printStackTrace();
          JOptionPane.showMessageDialog(getParent(), "Error opening effect.");
          return;
        }
      }
    }
  }
 
  public interface Listener<T>{
    void onResourceLoaded (T resource);
  }
 
  private String lastDir;
  protected Listener<T> listener;
  FlameMain editor;
 
  public LoaderButton (FlameMain editor, String text, Listener<T> listener) {
    super(text);
    this.editor = editor;
    this.listener = listener;
    addActionListener(new ActionListener() {
      @Override
      public void actionPerformed (ActionEvent e) {
        loadResource();
      }
    });
  }
 
  public LoaderButton (FlameMain editor, String text){
    this(editor, text, null);
  }
 
  public void setListener(Listener listener){
    this.listener = listener;
  }
 

  protected abstract void loadResource ();

}
TOP

Related Classes of com.badlogic.gdx.tools.flame.LoaderButton$ModelLoaderButton

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.