Package org.ogre4j.nativelisteners

Source Code of org.ogre4j.nativelisteners.NativeRenderTargetListener

package org.ogre4j.nativelisteners;

import org.ogre4j.IRenderTargetListener;
import org.ogre4j.RenderTargetEvent;
import org.ogre4j.RenderTargetViewportEvent;
import org.xbig.base.InstancePointer;
import org.xbig.base.NativeObject;
import org.xbig.base.WithoutNativeObject;

/**
* Allows receiving native OGRE RenderTarget- and RenderTargetViewportEvents in
* Java. Creates a C++ Object which forwards the Events. Implementers should use
* methods of {@link IRenderTargetListener}.
* <p>
* Must explicitly be deleted.
* </p>
*
*/
public abstract class NativeRenderTargetListener extends NativeObject implements
    IRenderTargetListener {

  static {
    System.loadLibrary("ogre4j");
  }

  /**
   * Constructor. Creates C++ object.
   */
  public NativeRenderTargetListener() {
    long pInstance = __createNativeRenderTargetListener();
    setInstancePointer(pInstance, false);
  }

  private native long __createNativeRenderTargetListener();

  /**
   * @param p
   *            Address of native RenderTargetEvent.
   */
  public void preRenderTargetUpdate(long p) {
    InstancePointer ptr = new InstancePointer(p);
    RenderTargetEvent evt = new RenderTargetEvent(
        WithoutNativeObject.I_WILL_DELETE_THIS_OBJECT);
    evt.setInstancePointer(ptr, true);
    preRenderTargetUpdate(evt);
  }

  /**
   * @param p
   *            Address of native RenderTargetEvent.
   */
  public void postRenderTargetUpdate(long p) {
    InstancePointer ptr = new InstancePointer(p);
    RenderTargetEvent evt = new RenderTargetEvent(
        WithoutNativeObject.I_WILL_DELETE_THIS_OBJECT);
    evt.setInstancePointer(ptr, true);
    postRenderTargetUpdate(evt);
  }

  /**
   * @param p
   *            Address of native RenderTargetEvent.
   */
  public void preViewportUpdate(long p) {
    InstancePointer ptr = new InstancePointer(p);
    RenderTargetViewportEvent evt = new RenderTargetViewportEvent(
        WithoutNativeObject.I_WILL_DELETE_THIS_OBJECT);
    evt.setInstancePointer(ptr, true);
    preViewportUpdate(evt);
  }

  /**
   * @param p
   *            Address of native RenderTargetEvent.
   */
  public void postViewportUpdate(long p) {
    InstancePointer ptr = new InstancePointer(p);
    RenderTargetViewportEvent evt = new RenderTargetViewportEvent(
        WithoutNativeObject.I_WILL_DELETE_THIS_OBJECT);
    evt.setInstancePointer(ptr, true);
    postViewportUpdate(evt);
  }

  /**
   * @param p
   *            Address of native RenderTargetEvent.
   */
  public void viewportAdded(long p) {
    InstancePointer ptr = new InstancePointer(p);
    RenderTargetViewportEvent evt = new RenderTargetViewportEvent(
        WithoutNativeObject.I_WILL_DELETE_THIS_OBJECT);
    evt.setInstancePointer(ptr, true);
    viewportAdded(evt);
  }

  /**
   * @param p
   *            Address of native RenderTargetEvent.
   */
  public void viewportRemoved(long p) {
    InstancePointer ptr = new InstancePointer(p);
    RenderTargetViewportEvent evt = new RenderTargetViewportEvent(
        WithoutNativeObject.I_WILL_DELETE_THIS_OBJECT);
    evt.setInstancePointer(ptr, true);
    viewportRemoved(evt);
  }

  /*
   * (non-Javadoc)
   *
   * @see org.xbig.base.NativeObject#delete()
   */
  public void delete() {
    if (this.remote) {
      throw new RuntimeException(
          "can't dispose object created by native library");
    }

    if (!this.deleted) {
      __deleteNativeRenderTargetListener(object.pointer);
      this.deleted = true;
      this.object.pointer = 0;
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see java.lang.Object#finalize()
   */
  public void finalize() {
    if (!this.remote && !this.deleted) {
      delete();
    }
  }

  private final native void __deleteNativeRenderTargetListener(long _pointer_);
}
TOP

Related Classes of org.ogre4j.nativelisteners.NativeRenderTargetListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.