Package com.l2client.asset

Source Code of com.l2client.asset.Asset

package com.l2client.asset;

import java.io.IOException;
import java.util.concurrent.Future;

import com.jme3.export.InputCapsule;
import com.jme3.export.JmeExporter;
import com.jme3.export.JmeImporter;
import com.jme3.export.OutputCapsule;
import com.jme3.scene.Node;

/**
* Assets are nodes which define the location of the asset. The real asset
* (called baseasset) can be loaded threaded and will be set after load.
* On attaching the scene node onAttach() can be called for scene
* attachment initialization (warning this could be called several times)
* @author tmi
*
*/
public class Asset extends Node{

  private String location = "";
 
  protected transient Object baseAsset = null;

  private transient Future<Object> loader;


  public Asset(){
    super();
  }
 
  public Asset(String location, String name){
    super(name);
    //FIXME why strip starting / who's not conform? from AssetFile inconsistecies?
    if(location.startsWith("/"))
      this.location = (String) location.subSequence(1, location.length());
    else
      this.location = location;
  }
 
  public String toString() {
    return "Asset location:"+location;
  }
 
  public Object getBaseAsset() {
    if(baseAsset != null)
      return baseAsset;
    else if(loader != null){
      try {
        baseAsset = loader.get();
      } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return null;
      }
      return baseAsset;
    } else
      return null;
  }
 
  public String getLocation() {
    return location;
  }
 
  public synchronized void setBaseAsset(Object n) {
    this.baseAsset = n;
//    if(n instanceof Node){
//
//                attachBaseasset();
//
//    }
  }
 
//  /**
//   * only called for node types
//   */
//  private void attachBaseasset() {
//    try{
//    if (baseAsset != null && !hasChild((Node)baseAsset)) {
//      //FIXME this will blow currently in JME3
//      attachChild((Node)baseAsset);
////      updateGeometricState();
//     
//    }
//    } catch (Exception e){
//      e.printStackTrace();
//    }
//  }

  @Override
  public void read(JmeImporter im) throws IOException {
    super.read(im);
    InputCapsule capsule = im.getCapsule(this);
    location = capsule.readString("location", "");
  }
  @Override
  public void write(JmeExporter ex) throws IOException {
    super.write(ex);
    OutputCapsule capsule = ex.getCapsule(this);
    capsule.write(location, "location", "");
  }

  public void setFuture(Future<Object> ret) {
    this.loader = ret;
  }
 
  public void afterLoad(){}
 
  public void beforeUnload(){}

}
TOP

Related Classes of com.l2client.asset.Asset

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.