I am trying to make a JME graphics environment that resides in its own JCanvas that isnt tied to a Game of any type. I made a tool set to do this that works but it reverses the normals of anything i add to the world. Here is some of the code from the tool set that i am using.
public Camera makeNewCamera() throws InterruptedException, ExecutionException
{
System.out.println("Renderer = " + DisplaySystem.getDisplaySystem().getRenderer());
Camera camera = null;
// Camera temp = renderer.createCamera(renderer.getWidth(), renderer.getHeight());
class SetupTask implements Callable
{
private Camera camera;
public SetupTask(Camera camera)
{
this.camera = camera;
}
@Override
public Object call()
{
camera = renderer.createCamera(renderer.getWidth(), renderer.getHeight());
setUpCamera(camera);
camera.normalize();
System.out.println(camera);
renderer.setCamera(camera);
cameras.add(camera);
impl.setRenderer(renderer);
impl.setCamera(camera);
return null;
}
}
;
SetupTask task = new SetupTask(camera);
// Enqueue it in the task queue
GameTaskQueueManager.getManager().getQueue(GameTaskQueue.UPDATE).enqueue(task);
while (renderer.getCamera() == null)
{
try
{
Thread.sleep(50);
System.out.println("waiting");
// renderer.setCamera(camera);
}
catch (Exception e)
{
}
}
// System.out.println(camera);
return camera;
}
public void setupCullState()
{
CullState cull = renderer.createCullState();
cull.setCullFace(CullState.Face.Back);
getRootNode().setRenderState(cull);
}
public void addNode(final Node Root, Node newNode)
{
class SetupTask implements Callable
{
public JMETool parent;
public Node root;
public Node newnode;
public SetupTask(Node root, Node newNode)
{
this.root = root;
this.newnode = newNode;
}
@Override
public Object call()
{
root.attachChild(newnode);
newnode.updateRenderState();
newnode.updateGeometricState(0, true);
return null;
}
}
;
SetupTask task = new SetupTask(Root, newNode);
task.parent = this;
// Enqueue it in the task queue
GameTaskQueueManager.getManager().getQueue(GameTaskQueue.UPDATE).enqueue(task);
}
public void RenderAll()
{
future = GameTaskQueueManager.getManager().update(new Callable<Object>()
{
@Override
public Object call() throws Exception
{
renderer.clearZBuffer();
display.getRenderer().clearBuffers();
rootNode.updateGeometricState(0.0f, true);
// updateGeometryRecursive(rootNode);
rootNode.updateRenderState();
manager.renderPasses(renderer);
for (int i = 0; i < os.size(); i++)
{
os.get(i).render(rootNode);
}
renderer.displayBackBuffer();
return null;
}
});
// SetupTask rendering = new SetupTask();
// Enqueue it in the task queue
// GameTaskQueueManager.getManager().getQueue(GameTaskQueue.UPDATE).enqueue(rendering);
try
{
future.get();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
catch (ExecutionException e)
{
e.printStackTrace();
}
}
Any advice would be greatly appreciated.