public ResourceSource locateResource(final String resourceName) { return doRecursiveLocate(cleanup(resourceName)); }
public static void addDefaultResourceLocators() { try { ResourceLocatorTool.addResourceLocator(ResourceLocatorTool.TYPE_MATERIAL, new SimpleResourceLocator( ResourceLocatorTool.getClassPathResource(Terrain.class, "com/ardor3d/extension/terrain/material"))); ResourceLocatorTool.addResourceLocator(ResourceLocatorTool.TYPE_SHADER, new SimpleResourceLocator( ResourceLocatorTool.getClassPathResource(Terrain.class, "com/ardor3d/extension/terrain/shader"))); } catch (final URISyntaxException ex) { ex.printStackTrace(); } } }
protected ResourceSource doRecursiveLocate(String resourceName) { // Trim off any prepended local dir. while (resourceName.startsWith("./") && resourceName.length() > 2) { resourceName = resourceName.substring(2); } while (resourceName.startsWith(".\\") && resourceName.length() > 2) { resourceName = resourceName.substring(2); } // Try to locate using resourceName as is. try { String spec = URLEncoder.encode(resourceName, "UTF-8"); // this fixes a bug in JRE1.5 (file handler does not decode "+" to spaces) spec = spec.replaceAll("\\+", "%20"); final URL rVal = new URL(_baseDir.toURL(), spec); // open a stream to see if this is a valid resource // XXX: Perhaps this is wasteful? Also, what info will determine validity? rVal.openStream().close(); return new URLResourceSource(rVal); } catch (final IOException e) { // URL wasn't valid in some way, so try up a path. } catch (final IllegalArgumentException e) { // URL wasn't valid in some way, so try up a path. } resourceName = trimResourceName(resourceName); if (resourceName == null) { return null; } else { return doRecursiveLocate(resourceName); } }
@Override public boolean equals(final Object obj) { if (obj instanceof MultiFormatResourceLocator) { return getBaseDir().equals(((MultiFormatResourceLocator) obj).getBaseDir()) && Arrays.equals(_extensions, ((MultiFormatResourceLocator) obj)._extensions); } return super.equals(obj); } }
protected String trimResourceName(String resourceName) { // it's possible this URL has back slashes, so replace them. resourceName = cleanup(resourceName); final int firstSlashIndex = resourceName.indexOf('/'); if (firstSlashIndex >= 0 && firstSlashIndex < resourceName.length() - 1) { return resourceName.substring(firstSlashIndex + 1); } else { return null; } }
public static void addDefaultResourceLocators() { try { ResourceLocatorTool.addResourceLocator(ResourceLocatorTool.TYPE_MATERIAL, new SimpleResourceLocator(ResourceLocatorTool.getClassPathResource(EffectUtils.class, "com/ardor3d/extension/effect/material"))); ResourceLocatorTool.addResourceLocator(ResourceLocatorTool.TYPE_SHADER, new SimpleResourceLocator(ResourceLocatorTool.getClassPathResource(EffectUtils.class, "com/ardor3d/extension/effect/shader"))); } catch (final URISyntaxException ex) { ex.printStackTrace(); } } }
resourceName = trimResourceName(resourceName); if (resourceName == null) { return null; } else { return doRecursiveLocate(resourceName);
@Override public boolean equals(final Object obj) { if (obj instanceof MultiFormatResourceLocator) { return getBaseDir().equals(((MultiFormatResourceLocator) obj).getBaseDir()) && Arrays.equals(_extensions, ((MultiFormatResourceLocator) obj)._extensions); } return super.equals(obj); } }
protected String trimResourceName(String resourceName) { // it's possible this URL has back slashes, so replace them. resourceName = cleanup(resourceName); final int firstSlashIndex = resourceName.indexOf('/'); if (firstSlashIndex >= 0 && firstSlashIndex < resourceName.length() - 1) { return resourceName.substring(firstSlashIndex + 1); } else { return null; } }
public static void addDefaultResourceLocators() { try { ResourceLocatorTool.addResourceLocator(ResourceLocatorTool.TYPE_MATERIAL, new SimpleResourceLocator(ResourceLocatorTool.getClassPathResource(SkinnedMesh.class, "com/ardor3d/extension/animation/skeletal/material"))); ResourceLocatorTool.addResourceLocator(ResourceLocatorTool.TYPE_SHADER, new SimpleResourceLocator(ResourceLocatorTool.getClassPathResource(SkinnedMesh.class, "com/ardor3d/extension/animation/skeletal/shader"))); } catch (final URISyntaxException ex) { ex.printStackTrace(); } } }
public ResourceSource locateResource(final String resourceName) { return doRecursiveLocate(cleanup(resourceName)); }