RenderingPanel - thothbot/parallax GitHub Wiki

This is the basic widget which manages WebGLRenderer and Canvas3d.

The constructor is very simple

RenderingPanel renderingPanel = new RenderingPanel();

Then you should set the widget to the parent widget, root-element or page div-element.

Next example shows how to set the widget to the parent widget. In this example Parent widget should implement RequiresResize interface

RenderingPanel renderingPanel = new RenderingPanel();
examplePanel.setWidget(renderingPanel);

In the next example widget is used in the page root-element. RootLayoutPanel implements RequiresResize

RenderingPanel renderingPanel = new RenderingPanel();
RootLayoutPanel.get().add(renderingPanel);

If you want to use widget in the page div-element you should do the following:

final RenderingPanel renderingPanel = new RenderingPanel();
// Puts widget there <div id="animation"></div> in the .html page
RootPanel.get("animation").add(renderingPanel);

// Handle page resize
Window.addResizeHandler(new ResizeHandler() {
     @Override
     public void onResize(ResizeEvent event) 
     {
          renderingPanel.onResize();
     }
});

// But it is better to use scheduler
Window.addResizeHandler(new ResizeHandler() {
    @Override
    public void onResize(ResizeEvent event) 
    {
         Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
	     @Override
	     public void execute() 
	     {
	         renderingPanel.onResize();
	     }
	});
    }
});

Events

RenderingPanel signals few events

SceneLoadingEvent

Signals two times:

  • When scene is attached to the RenderingPanel by calling renderingPanel.setAnimatedScene()
  • Before rendering the first frame
public class MyClass implements SceneLoadingHandler
{
    public MyClass()
    {
         RenderingPanel renderingPanel = new RenderingPanel();
         renderingPanel.addSceneLoadingHandler(this);
    }

    @Override
    public void onSceneLoading(SceneLoadingEvent event)
    {
         if(event.isLoaded())
	 {
	     /* code when scene is loaded */
         }
	 else
	 {
	     /* code when scene is attached to the RenderingPanel */
	 }
    }
}
AnimationReadyEvent

Signals when the animation is set to the RenderingPanel and before rendering the first frame.

public class MyClass implements AnimationReadyHandler
{
    public MyClass()
    {
         RenderingPanel renderingPanel = new RenderingPanel();
         renderingPanel.addAnimationReadyHandler(this);
    }

    @Override
    public void onAnimationReady(AnimationReadyEvent event)
    {
         /* code */
    }
}
Canvas3dErrorEvent

Signals when browser has problems with WebGL.

public class MyClass implements Context3dErrorHandler
{
    public MyClass()
    {
         RenderingPanel renderingPanel = new RenderingPanel();
         renderingPanel.addCanvas3dErrorHandler(this);
    }

    @Override
    public void onContextError(Context3dErrorEvent event)
    {
         /* code */
    }
}
⚠️ **GitHub.com Fallback** ⚠️