fantomobjectlayer.java
来自「Java mulitplayer strategy game. Adaptati」· Java 代码 · 共 100 行
JAVA
100 行
/*
* Created on 2005-10-10
* $Id: FantomObjectLayer.java,v 1.1 2006/01/07 15:53:39 macx2k Exp $
*/
package net.sf.jawp.j3d.object;
import java.util.HashMap;
import java.util.Map;
import javax.media.j3d.BranchGroup;
/**
* @author Maciej Malecki
* @param <RENDERABLE>
* type to be managed with this pool
*/
public abstract class FantomObjectLayer<RENDERABLE> implements TemporaryObjectLayer<RENDERABLE>
{
private final Map<RENDERABLE, SceneObject<RENDERABLE>> usedObjects;
private BranchGroup branch = null;
private boolean inited = false;
/**
*/
public FantomObjectLayer()
{
usedObjects = new HashMap<RENDERABLE, SceneObject<RENDERABLE>>();
}
/**
* {@inheritDoc}
*/
public void show(final RENDERABLE renderedObject)
{
final SceneObject<RENDERABLE> renderer = createSceneObject(renderedObject);
usedObjects.put(renderedObject, renderer);
branch.addChild(renderer.getSceneObject());
}
/**
* {@inheritDoc}
*/
public void update(final RENDERABLE renderedObject)
{
final SceneObject<RENDERABLE> renderer = usedObjects
.get(renderedObject);
if (renderer != null)
{
renderer.update();
}
}
/**
* {@inheritDoc}
*/
public void hide(final RENDERABLE renderedObject)
{
final SceneObject<RENDERABLE> renderer = usedObjects.get(renderedObject);
if (renderer != null)
{
renderer.getSceneObject().detach();
usedObjects.remove(renderedObject);
}
}
/**
* {@inheritDoc}
*/
public BranchGroup getSceneObjects()
{
if (!inited)
{
init();
}
return branch;
}
/**
* Factory method which creates TemporaryObjectSceneNodes. This method must
* be overriden and proper scene node object must be provided.
*
* @return
*/
protected abstract SceneObject<RENDERABLE> createSceneObject(RENDERABLE object);
private void init()
{
if (inited)
{
throw new IllegalStateException("Pool is already inited");
}
inited = true;
branch = new BranchGroup();
branch.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?