/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 2.0.7
 *
 * Do not make changes to this file unless you know what you are doing--modify
 * the SWIG interface file instead.
 * ----------------------------------------------------------------------------- */

package com.sundogsoftware.silverlining;

public class Atmosphere {
  private long swigCPtr;
  protected boolean swigCMemOwn;

  protected Atmosphere(long cPtr, boolean cMemoryOwn) {
    swigCMemOwn = cMemoryOwn;
    swigCPtr = cPtr;
  }

  protected static long getCPtr(Atmosphere obj) {
    return (obj == null) ? 0 : obj.swigCPtr;
  }

  protected void finalize() {
    delete();
  }

  public synchronized void delete() {
    if (swigCPtr != 0) {
      if (swigCMemOwn) {
        swigCMemOwn = false;
        SilverLiningCloudLayerFactoryJNI.delete_Atmosphere(swigCPtr);
      }
      swigCPtr = 0;
    }
  }

  public Atmosphere(String userName, String licenseKey) {
    this(SilverLiningCloudLayerFactoryJNI.new_Atmosphere(userName, licenseKey), true);
  }

  public float GetVersionNumber() {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_GetVersionNumber(swigCPtr, this);
  }

  public void SetConditions(AtmosphericConditions conditions) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_SetConditions(swigCPtr, this, AtmosphericConditions.getCPtr(conditions), conditions);
  }

  public AtmosphericConditions GetConditions() {
    return new AtmosphericConditions(SilverLiningCloudLayerFactoryJNI.Atmosphere_GetConditions__SWIG_0(swigCPtr, this), false);
  }

  public void GetSunOrMoonPosition(SWIGTYPE_p_float x, SWIGTYPE_p_float y, SWIGTYPE_p_float z) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetSunOrMoonPosition(swigCPtr, this, SWIGTYPE_p_float.getCPtr(x), SWIGTYPE_p_float.getCPtr(y), SWIGTYPE_p_float.getCPtr(z));
  }

  public void GetSunOrMoonPositionGeographic(SWIGTYPE_p_float x, SWIGTYPE_p_float y, SWIGTYPE_p_float z) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetSunOrMoonPositionGeographic(swigCPtr, this, SWIGTYPE_p_float.getCPtr(x), SWIGTYPE_p_float.getCPtr(y), SWIGTYPE_p_float.getCPtr(z));
  }

  public void GetSunOrMoonPositionEquatorial(SWIGTYPE_p_float x, SWIGTYPE_p_float y, SWIGTYPE_p_float z) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetSunOrMoonPositionEquatorial(swigCPtr, this, SWIGTYPE_p_float.getCPtr(x), SWIGTYPE_p_float.getCPtr(y), SWIGTYPE_p_float.getCPtr(z));
  }

  public void GetSunPosition(SWIGTYPE_p_float x, SWIGTYPE_p_float y, SWIGTYPE_p_float z) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetSunPosition(swigCPtr, this, SWIGTYPE_p_float.getCPtr(x), SWIGTYPE_p_float.getCPtr(y), SWIGTYPE_p_float.getCPtr(z));
  }

  public void GetMoonPosition(SWIGTYPE_p_float x, SWIGTYPE_p_float y, SWIGTYPE_p_float z) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetMoonPosition(swigCPtr, this, SWIGTYPE_p_float.getCPtr(x), SWIGTYPE_p_float.getCPtr(y), SWIGTYPE_p_float.getCPtr(z));
  }

  public void GetSunPositionGeographic(SWIGTYPE_p_float x, SWIGTYPE_p_float y, SWIGTYPE_p_float z) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetSunPositionGeographic(swigCPtr, this, SWIGTYPE_p_float.getCPtr(x), SWIGTYPE_p_float.getCPtr(y), SWIGTYPE_p_float.getCPtr(z));
  }

  public void GetMoonPositionGeographic(SWIGTYPE_p_float x, SWIGTYPE_p_float y, SWIGTYPE_p_float z) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetMoonPositionGeographic(swigCPtr, this, SWIGTYPE_p_float.getCPtr(x), SWIGTYPE_p_float.getCPtr(y), SWIGTYPE_p_float.getCPtr(z));
  }

  public void GetSunPositionEquatorial(SWIGTYPE_p_float x, SWIGTYPE_p_float y, SWIGTYPE_p_float z) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetSunPositionEquatorial(swigCPtr, this, SWIGTYPE_p_float.getCPtr(x), SWIGTYPE_p_float.getCPtr(y), SWIGTYPE_p_float.getCPtr(z));
  }

  public void GetMoonPositionEquatorial(SWIGTYPE_p_float x, SWIGTYPE_p_float y, SWIGTYPE_p_float z) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetMoonPositionEquatorial(swigCPtr, this, SWIGTYPE_p_float.getCPtr(x), SWIGTYPE_p_float.getCPtr(y), SWIGTYPE_p_float.getCPtr(z));
  }

  public void GetSunOrMoonColor(SWIGTYPE_p_float r, SWIGTYPE_p_float g, SWIGTYPE_p_float b) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetSunOrMoonColor(swigCPtr, this, SWIGTYPE_p_float.getCPtr(r), SWIGTYPE_p_float.getCPtr(g), SWIGTYPE_p_float.getCPtr(b));
  }

  public void GetSunColor(SWIGTYPE_p_float r, SWIGTYPE_p_float g, SWIGTYPE_p_float b) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetSunColor(swigCPtr, this, SWIGTYPE_p_float.getCPtr(r), SWIGTYPE_p_float.getCPtr(g), SWIGTYPE_p_float.getCPtr(b));
  }

  public void GetMoonColor(SWIGTYPE_p_float r, SWIGTYPE_p_float g, SWIGTYPE_p_float b) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetMoonColor(swigCPtr, this, SWIGTYPE_p_float.getCPtr(r), SWIGTYPE_p_float.getCPtr(g), SWIGTYPE_p_float.getCPtr(b));
  }

  public void GetAmbientColor(SWIGTYPE_p_float r, SWIGTYPE_p_float g, SWIGTYPE_p_float b) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetAmbientColor(swigCPtr, this, SWIGTYPE_p_float.getCPtr(r), SWIGTYPE_p_float.getCPtr(g), SWIGTYPE_p_float.getCPtr(b));
  }

  public void GetHorizonColor(float yawDegrees, float pitchDegrees, SWIGTYPE_p_float r, SWIGTYPE_p_float g, SWIGTYPE_p_float b) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetHorizonColor__SWIG_0(swigCPtr, this, yawDegrees, pitchDegrees, SWIGTYPE_p_float.getCPtr(r), SWIGTYPE_p_float.getCPtr(g), SWIGTYPE_p_float.getCPtr(b));
  }

  public void GetHorizonColor(float pitchDegrees, SWIGTYPE_p_float r, SWIGTYPE_p_float g, SWIGTYPE_p_float b) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetHorizonColor__SWIG_1(swigCPtr, this, pitchDegrees, SWIGTYPE_p_float.getCPtr(r), SWIGTYPE_p_float.getCPtr(g), SWIGTYPE_p_float.getCPtr(b));
  }

  public boolean GetFogEnabled() {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_GetFogEnabled(swigCPtr, this);
  }

  public void GetFogSettings(SWIGTYPE_p_float density, SWIGTYPE_p_float r, SWIGTYPE_p_float g, SWIGTYPE_p_float b) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetFogSettings(swigCPtr, this, SWIGTYPE_p_float.getCPtr(density), SWIGTYPE_p_float.getCPtr(r), SWIGTYPE_p_float.getCPtr(g), SWIGTYPE_p_float.getCPtr(b));
  }

  public void SetHaze(float hazeR, float hazeG, float hazeB, double hazeDepth, double hazeDensity) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_SetHaze(swigCPtr, this, hazeR, hazeG, hazeB, hazeDepth, hazeDensity);
  }

  public void GetHaze(SWIGTYPE_p_float hazeR, SWIGTYPE_p_float hazeG, SWIGTYPE_p_float hazeB, SWIGTYPE_p_double hazeDepth, SWIGTYPE_p_double hazeDensity) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetHaze(swigCPtr, this, SWIGTYPE_p_float.getCPtr(hazeR), SWIGTYPE_p_float.getCPtr(hazeG), SWIGTYPE_p_float.getCPtr(hazeB), SWIGTYPE_p_double.getCPtr(hazeDepth), SWIGTYPE_p_double.getCPtr(hazeDensity));
  }

  public void SetGamma(double gamma) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_SetGamma(swigCPtr, this, gamma);
  }

  public double GetGamma() {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_GetGamma(swigCPtr, this);
  }

  public void ForceLightingRecompute() {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_ForceLightingRecompute(swigCPtr, this);
  }

  public int Initialize(int renderer, String resourceDirectoryPath, boolean rightHanded, SWIGTYPE_p_void environment) {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_Initialize(swigCPtr, this, renderer, resourceDirectoryPath, rightHanded, SWIGTYPE_p_void.getCPtr(environment));
  }

  public void SetUpVector(double x, double y, double z) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_SetUpVector(swigCPtr, this, x, y, z);
  }

  public void GetUpVector(SWIGTYPE_p_double x, SWIGTYPE_p_double y, SWIGTYPE_p_double z) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetUpVector(swigCPtr, this, SWIGTYPE_p_double.getCPtr(x), SWIGTYPE_p_double.getCPtr(y), SWIGTYPE_p_double.getCPtr(z));
  }

  public void SetRightVector(double x, double y, double z) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_SetRightVector(swigCPtr, this, x, y, z);
  }

  public void GetRightVector(SWIGTYPE_p_double x, SWIGTYPE_p_double y, SWIGTYPE_p_double z) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetRightVector(swigCPtr, this, SWIGTYPE_p_double.getCPtr(x), SWIGTYPE_p_double.getCPtr(y), SWIGTYPE_p_double.getCPtr(z));
  }

  public void SetCameraMatrix(SWIGTYPE_p_double cameraMatrix) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_SetCameraMatrix(swigCPtr, this, SWIGTYPE_p_double.getCPtr(cameraMatrix));
  }

  public void SetProjectionMatrix(SWIGTYPE_p_double projectionMatrix) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_SetProjectionMatrix(swigCPtr, this, SWIGTYPE_p_double.getCPtr(projectionMatrix));
  }

  public boolean DrawSky(boolean drawSky, boolean geocentricMode, double skyBoxDimension, boolean drawStars, boolean clearDepth) {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_DrawSky__SWIG_0(swigCPtr, this, drawSky, geocentricMode, skyBoxDimension, drawStars, clearDepth);
  }

  public boolean DrawSky(boolean drawSky, boolean geocentricMode, double skyBoxDimension, boolean drawStars) {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_DrawSky__SWIG_1(swigCPtr, this, drawSky, geocentricMode, skyBoxDimension, drawStars);
  }

  public boolean DrawSky(boolean drawSky, boolean geocentricMode, double skyBoxDimension) {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_DrawSky__SWIG_2(swigCPtr, this, drawSky, geocentricMode, skyBoxDimension);
  }

  public boolean DrawSky(boolean drawSky, boolean geocentricMode) {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_DrawSky__SWIG_3(swigCPtr, this, drawSky, geocentricMode);
  }

  public boolean DrawSky(boolean drawSky) {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_DrawSky__SWIG_4(swigCPtr, this, drawSky);
  }

  public boolean DrawObjects(boolean drawClouds, boolean drawPrecipitation, boolean enableDepthTest) {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_DrawObjects__SWIG_0(swigCPtr, this, drawClouds, drawPrecipitation, enableDepthTest);
  }

  public boolean DrawObjects(boolean drawClouds, boolean drawPrecipitation) {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_DrawObjects__SWIG_1(swigCPtr, this, drawClouds, drawPrecipitation);
  }

  public boolean DrawObjects(boolean drawClouds) {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_DrawObjects__SWIG_2(swigCPtr, this, drawClouds);
  }

  public boolean DrawObjects() {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_DrawObjects__SWIG_3(swigCPtr, this);
  }

  public void OverrideCloudLighting(float ambientR, float ambientG, float ambientB, float diffuseR, float diffuseG, float diffuseB) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_OverrideCloudLighting(swigCPtr, this, ambientR, ambientG, ambientB, diffuseR, diffuseG, diffuseB);
  }

  public void ClearCloudLightingOverride() {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_ClearCloudLightingOverride(swigCPtr, this);
  }

  public double GetFramerate() {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_GetFramerate(swigCPtr, this);
  }

  public SWIGTYPE_p_std__vectorT_void_p_t GetObjects() {
    return new SWIGTYPE_p_std__vectorT_void_p_t(SilverLiningCloudLayerFactoryJNI.Atmosphere_GetObjects(swigCPtr, this), false);
  }

  public float GetObjectDistance(SWIGTYPE_p_void obj, float obj2X, float obj2Y, float obj2Z, float sortPosX, float sortPosY, float sortPosZ) {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_GetObjectDistance__SWIG_0(swigCPtr, this, SWIGTYPE_p_void.getCPtr(obj), obj2X, obj2Y, obj2Z, sortPosX, sortPosY, sortPosZ);
  }

  public float GetObjectDistance(SWIGTYPE_p_void obj, SWIGTYPE_p_void obj2, float sortPosX, float sortPosY, float sortPosZ) {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_GetObjectDistance__SWIG_1(swigCPtr, this, SWIGTYPE_p_void.getCPtr(obj), SWIGTYPE_p_void.getCPtr(obj2), sortPosX, sortPosY, sortPosZ);
  }

  public void GetObjectPosition(SWIGTYPE_p_void obj, SWIGTYPE_p_float x, SWIGTYPE_p_float y, SWIGTYPE_p_float z) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_GetObjectPosition(swigCPtr, this, SWIGTYPE_p_void.getCPtr(obj), SWIGTYPE_p_float.getCPtr(x), SWIGTYPE_p_float.getCPtr(y), SWIGTYPE_p_float.getCPtr(z));
  }

  public void DrawObject(SWIGTYPE_p_void obj) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_DrawObject(swigCPtr, this, SWIGTYPE_p_void.getCPtr(obj));
  }

  public void ReloadConfigFile() {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_ReloadConfigFile(swigCPtr, this);
  }

  public void SetConfigOption(String key, String value) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_SetConfigOption(swigCPtr, this, key, value);
  }

  public String GetConfigOptionString(String key) {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_GetConfigOptionString(swigCPtr, this, key);
  }

  public double GetConfigOptionDouble(String key) {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_GetConfigOptionDouble(swigCPtr, this, key);
  }

  public boolean GetConfigOptionBoolean(String key) {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_GetConfigOptionBoolean(swigCPtr, this, key);
  }

  public void UpdateEphemeris() {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_UpdateEphemeris(swigCPtr, this);
  }

  public void SetInfraRedMode(boolean bInfraRed) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_SetInfraRedMode(swigCPtr, this, bInfraRed);
  }

  public boolean GetInfraRedMode() {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_GetInfraRedMode(swigCPtr, this);
  }

  public void DisableFarCulling(boolean bDisable) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_DisableFarCulling(swigCPtr, this, bDisable);
  }

  public boolean GetFarCullingDisabled() {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_GetFarCullingDisabled(swigCPtr, this);
  }

  public void EnableLensFlare(boolean bEnabled) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_EnableLensFlare(swigCPtr, this, bEnabled);
  }

  public boolean GetLensFlareEnabled() {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_GetLensFlareEnabled(swigCPtr, this);
  }

  public float GetSunOcclusion() {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_GetSunOcclusion(swigCPtr, this);
  }

  public static void EnableHDR(boolean hdr) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_EnableHDR(hdr);
  }

  public static boolean GetHDREnabled() {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_GetHDREnabled();
  }

  public static void SetWorldUnits(double meters) {
    SilverLiningCloudLayerFactoryJNI.Atmosphere_SetWorldUnits(meters);
  }

  public static double GetUnitScale() {
    return SilverLiningCloudLayerFactoryJNI.Atmosphere_GetUnitScale();
  }

  public final static int OPENGL = SilverLiningCloudLayerFactoryJNI.Atmosphere_OPENGL_get();
  public final static int DIRECTX9 = SilverLiningCloudLayerFactoryJNI.Atmosphere_DIRECTX9_get();
  public final static int DIRECTX10 = SilverLiningCloudLayerFactoryJNI.Atmosphere_DIRECTX10_get();
  public final static int DIRECTX11 = SilverLiningCloudLayerFactoryJNI.Atmosphere_DIRECTX11_get();
  public final static int CUSTOM_RENDERER = SilverLiningCloudLayerFactoryJNI.Atmosphere_CUSTOM_RENDERER_get();
  public final static int OPENGL32CORE = SilverLiningCloudLayerFactoryJNI.Atmosphere_OPENGL32CORE_get();
  public final static int OPENGLES2 = SilverLiningCloudLayerFactoryJNI.Atmosphere_OPENGLES2_get();

  public final static class InitializeErrors {
    public final static Atmosphere.InitializeErrors E_NOERROR = new Atmosphere.InitializeErrors("E_NOERROR", SilverLiningCloudLayerFactoryJNI.Atmosphere_E_NOERROR_get());
    public final static Atmosphere.InitializeErrors E_RESOURCES_PATH_INVALID = new Atmosphere.InitializeErrors("E_RESOURCES_PATH_INVALID");
    public final static Atmosphere.InitializeErrors E_CONFIGURATION_FILE_NOT_FOUND = new Atmosphere.InitializeErrors("E_CONFIGURATION_FILE_NOT_FOUND");
    public final static Atmosphere.InitializeErrors E_CANT_LOAD_RENDERER_DLL = new Atmosphere.InitializeErrors("E_CANT_LOAD_RENDERER_DLL");
    public final static Atmosphere.InitializeErrors E_CANT_INITIALIZE_RENDERER_SUBSYSTEM = new Atmosphere.InitializeErrors("E_CANT_INITIALIZE_RENDERER_SUBSYSTEM");
    public final static Atmosphere.InitializeErrors E_CANT_LOAD_METABALL_TEXTURE = new Atmosphere.InitializeErrors("E_CANT_LOAD_METABALL_TEXTURE");

    public final int swigValue() {
      return swigValue;
    }

    public String toString() {
      return swigName;
    }

    public static InitializeErrors swigToEnum(int swigValue) {
      if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue)
        return swigValues[swigValue];
      for (int i = 0; i < swigValues.length; i++)
        if (swigValues[i].swigValue == swigValue)
          return swigValues[i];
      throw new IllegalArgumentException("No enum " + InitializeErrors.class + " with value " + swigValue);
    }

    private InitializeErrors(String swigName) {
      this.swigName = swigName;
      this.swigValue = swigNext++;
    }

    private InitializeErrors(String swigName, int swigValue) {
      this.swigName = swigName;
      this.swigValue = swigValue;
      swigNext = swigValue+1;
    }

    private InitializeErrors(String swigName, InitializeErrors swigEnum) {
      this.swigName = swigName;
      this.swigValue = swigEnum.swigValue;
      swigNext = this.swigValue+1;
    }

    private static InitializeErrors[] swigValues = { E_NOERROR, E_RESOURCES_PATH_INVALID, E_CONFIGURATION_FILE_NOT_FOUND, E_CANT_LOAD_RENDERER_DLL, E_CANT_INITIALIZE_RENDERER_SUBSYSTEM, E_CANT_LOAD_METABALL_TEXTURE };
    private static int swigNext = 0;
    private final int swigValue;
    private final String swigName;
  }

}
