public void applySettings(WizardDescriptor wiz) {
    // reset
    wiz.putProperty("path", null);
    wiz.putProperty("manager", null);
    wiz.putProperty("dataobject", null);
    wiz.putProperty("assetdata", null);
    wiz.putProperty("mainkey", null);
    wiz.putProperty("destpath", null);

    wiz.putProperty("assetlist", null);
    wiz.putProperty("failedlist", null);
    wiz.putProperty("model", null);

    UberAssetLocator.resetLocatedList();
    UberAssetLocator.setFindMode(true);
    manager.clearCache();
    wiz.putProperty("path", currentPath);
    wiz.putProperty("manager", manager);
    wiz.putProperty("dataobject", dataObject);
    wiz.putProperty("assetdata", data);
    wiz.putProperty("mainkey", mainKey);
    if (mainKey != null) {
      wiz.putProperty(
          "destpath",
          "Models/"
              + mainKey.getName().replaceAll(mainKey.getExtension(), "").replaceAll("\\.", "")
              + "/");
    }
  }
  public AssetInfo locate(AssetManager manager, AssetKey key) {
    String name = key.getName();
    File file = (root != null) ? new File(root, name) : new File(name);
    if (file.exists() && file.isFile()) {
      try {
        // Now, check asset name requirements
        String canonical = file.getCanonicalPath();
        String absolute = file.getAbsolutePath();
        if (!canonical.endsWith(absolute)) {
          throw new AssetNotFoundException(
              "Asset name doesn't match requirements.\n"
                  + "\""
                  + canonical
                  + "\" doesn't match \""
                  + absolute
                  + "\"");
        }
      } catch (IOException ex) {
        throw new AssetLoadException("Failed to get file canonical path " + file, ex);
      }

      AssetInfo fileAssetInfo = new AssetInfoFile(manager, key, file);
      return UncompressedAssetInfo.create(fileAssetInfo);
    } else {
      return null;
    }
  }
示例#3
0
 public AssetInfo locate(AssetManager manager, AssetKey key) {
   String name = key.getName();
   try {
     // TODO: remove workaround for SDK
     //            URL url = new URL(root, name);
     if (name.startsWith("/")) {
       name = name.substring(1);
     }
     URL url = new URL(root.toExternalForm() + name);
     return UrlAssetInfo.create(manager, key, url);
   } catch (FileNotFoundException e) {
     return null;
   } catch (IOException ex) {
     logger.log(Level.WARNING, "Error while locating " + name, ex);
     return null;
   }
 }
  private void loadFromRoot(List<Statement> roots) throws IOException {
    if (roots.size() == 2) {
      Statement exception = roots.get(0);
      String line = exception.getLine();
      if (line.startsWith("Exception")) {
        throw new AssetLoadException(line.substring("Exception ".length()));
      } else {
        throw new IOException("In multiroot material, expected first statement to be 'Exception'");
      }
    } else if (roots.size() != 1) {
      throw new IOException("Too many roots in J3M/J3MD file");
    }

    boolean extending = false;
    Statement materialStat = roots.get(0);
    String materialName = materialStat.getLine();
    if (materialName.startsWith("MaterialDef")) {
      materialName = materialName.substring("MaterialDef ".length()).trim();
      extending = false;
    } else if (materialName.startsWith("Material")) {
      materialName = materialName.substring("Material ".length()).trim();
      extending = true;
    } else {
      throw new IOException("Specified file is not a Material file");
    }

    String[] split = materialName.split(":", 2);

    if (materialName.equals("")) {
      throw new MatParseException("Material name cannot be empty", materialStat);
    }

    if (split.length == 2) {
      if (!extending) {
        throw new MatParseException("Must use 'Material' when extending.", materialStat);
      }

      String extendedMat = split[1].trim();

      MaterialDef def = (MaterialDef) assetManager.loadAsset(new AssetKey(extendedMat));
      if (def == null) {
        throw new MatParseException(
            "Extended material " + extendedMat + " cannot be found.", materialStat);
      }

      material = new Material(def);
      material.setKey(key);
      material.setName(split[0].trim());
      //            material.setAssetName(fileName);
    } else if (split.length == 1) {
      if (extending) {
        throw new MatParseException("Expected ':', got '{'", materialStat);
      }
      materialDef = new MaterialDef(assetManager, materialName);
      // NOTE: pass file name for defs so they can be loaded later
      materialDef.setAssetName(key.getName());
    } else {
      throw new MatParseException("Cannot use colon in material name/path", materialStat);
    }

    for (Statement statement : materialStat.getContents()) {
      split = statement.getLine().split("[ \\{]");
      String statType = split[0];
      if (extending) {
        if (statType.equals("MaterialParameters")) {
          readExtendingMaterialParams(statement.getContents());
        } else if (statType.equals("AdditionalRenderState")) {
          readAdditionalRenderState(statement.getContents());
        } else if (statType.equals("Transparent")) {
          readTransparentStatement(statement.getLine());
        }
      } else {
        if (statType.equals("Technique")) {
          readTechnique(statement);
        } else if (statType.equals("MaterialParameters")) {
          readMaterialParams(statement.getContents());
        } else {
          throw new MatParseException(
              "Expected material statement, got '" + statType + "'", statement);
        }
      }
    }
  }
示例#5
0
 /**
  * Returns the asset key name of the asset from which this material was loaded.
  *
  * <p>This value will be <code>null</code> unless this material was loaded from a .j3m file.
  *
  * @return Asset key name of the j3m file
  */
 public String getAssetName() {
   return key != null ? key.getName() : null;
 }