defaultmodelloader.java

来自「Java mulitplayer strategy game. Adaptati」· Java 代码 · 共 88 行

JAVA
88
字号
/*
 * Created on 2005-11-02
 * $Id: DefaultModelLoader.java,v 1.3 2005/11/02 17:12:09 macx2k Exp $
 */
package net.sf.jawp.j3d.model;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.media.j3d.Node;

import com.sun.j3d.loaders.Scene;

/**
 * This helper class proviced default simulated implementation of
 * {@link #load(InputStream)}.
 * 
 * @author Maciej Malecki
 * @version $Revision: 1.3 $
 */
public abstract class DefaultModelLoader implements ModelLoader
{
	private Scene scene = null;

	/**
	 * This method simply simulates getting model from input stream. It just
	 * copies stream data into tempfile and then loads it using
	 * {@link #load(java.io.File)} implementation.
	 */
	public void load(final InputStream stream) throws IOException
	{
		assert scene == null;
		
		final File temp = File.createTempFile("j3df_model3d", null);
		try
		{
			final byte[] buffer = new byte[2048];
			final OutputStream os = new FileOutputStream(temp);
			try
			{
				int length = 0;
				while ((length = stream.read(buffer)) > 0)
				{
					os.write(buffer, 0, length);
				}
			}
			finally
			{
				os.close();
			}

			load(temp);
		}
		finally
		{
			temp.delete();
		}
	}

	/**
	 * {@inheritDoc}
	 */
	public final Node newModelInstance()
	{
		return getScene().getSceneGroup().cloneTree();
	}

	/**
	 * {@inheritDoc}
	 */
	public final Scene getScene()
	{
		return scene;
	}
	
	protected final void setScene(final Scene scene)
	{
		assert this.scene == null : "Scene already set";
		assert scene != null : "Scene argument is null";
		
		this.scene = scene;
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?