/* ----------------------------------------------------------------------------
 * 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 AtmosphericConditions {
  private long swigCPtr;
  protected boolean swigCMemOwn;

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

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

  protected void finalize() {
    delete();
  }

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

  public AtmosphericConditions() {
    this(SilverLiningCloudLayerFactoryJNI.new_AtmosphericConditions(), true);
  }

  public void SetLocation(Location location) {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_SetLocation(swigCPtr, this, Location.getCPtr(location), location);
  }

  public Location GetLocation() {
    return new Location(SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_GetLocation(swigCPtr, this), false);
  }

  public void SetTime(LocalTime time) {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_SetTime(swigCPtr, this, LocalTime.getCPtr(time), time);
  }

  public LocalTime GetTime() {
    return new LocalTime(SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_GetTime(swigCPtr, this), false);
  }

  public int SetWind(WindVolume windVolume) {
    return SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_SetWind(swigCPtr, this, WindVolume.getCPtr(windVolume), windVolume);
  }

  public boolean RemoveWindVolume(int windVolumeHandle) {
    return SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_RemoveWindVolume(swigCPtr, this, windVolumeHandle);
  }

  public void ClearWindVolumes() {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_ClearWindVolumes(swigCPtr, this);
  }

  public void GetWind(SWIGTYPE_p_double velocity, SWIGTYPE_p_double heading, double altitude) {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_GetWind(swigCPtr, this, SWIGTYPE_p_double.getCPtr(velocity), SWIGTYPE_p_double.getCPtr(heading), altitude);
  }

  public void ApplyWind(double dt) {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_ApplyWind(swigCPtr, this, dt);
  }

  public SWIGTYPE_p_std__mapT_int_SilverLining__WindVolume_t GetWindVolumes() {
    return new SWIGTYPE_p_std__mapT_int_SilverLining__WindVolume_t(SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_GetWindVolumes(swigCPtr, this), false);
  }

  public int AddCloudLayer(CloudLayer layer) {
    return SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_AddCloudLayer(swigCPtr, this, CloudLayer.getCPtr(layer), layer);
  }

  public boolean RemoveCloudLayer(int layerHandle) {
    return SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_RemoveCloudLayer(swigCPtr, this, layerHandle);
  }

  public void RemoveAllCloudLayers() {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_RemoveAllCloudLayers(swigCPtr, this);
  }

  public boolean GetCloudLayer(int layerHandle, SWIGTYPE_p_p_SilverLining__CloudLayer layer) {
    return SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_GetCloudLayer(swigCPtr, this, layerHandle, SWIGTYPE_p_p_SilverLining__CloudLayer.getCPtr(layer));
  }

  public SWIGTYPE_p_std__mapT_int_SilverLining__CloudLayer_p_t GetCloudLayers() {
    return new SWIGTYPE_p_std__mapT_int_SilverLining__CloudLayer_p_t(SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_GetCloudLayers(swigCPtr, this), false);
  }

  public void SetTurbidity(double pTurbidity) {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_SetTurbidity(swigCPtr, this, pTurbidity);
  }

  public double GetTurbidity() {
    return SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_GetTurbidity(swigCPtr, this);
  }

  public void SetVisibility(double range) {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_SetVisibility(swigCPtr, this, range);
  }

  public double GetVisibility() {
    return SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_GetVisibility(swigCPtr, this);
  }

  public void SetFog(double density, double r, double g, double b) {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_SetFog(swigCPtr, this, density, r, g, b);
  }

  public void ClearFog() {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_ClearFog(swigCPtr, this);
  }

  public void GetFog(SWIGTYPE_p_bool fogIsSet, SWIGTYPE_p_double density, SWIGTYPE_p_double r, SWIGTYPE_p_double g, SWIGTYPE_p_double b) {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_GetFog(swigCPtr, this, SWIGTYPE_p_bool.getCPtr(fogIsSet), SWIGTYPE_p_double.getCPtr(density), SWIGTYPE_p_double.getCPtr(r), SWIGTYPE_p_double.getCPtr(g), SWIGTYPE_p_double.getCPtr(b));
  }

  public void SetLightPollution(double Wm2) {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_SetLightPollution(swigCPtr, this, Wm2);
  }

  public double GetLightPollution() {
    return SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_GetLightPollution(swigCPtr, this);
  }

  public void SetPrecipitation(int precipitationType, double precipitationRate, double nearClip, double farClip) {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_SetPrecipitation__SWIG_0(swigCPtr, this, precipitationType, precipitationRate, nearClip, farClip);
  }

  public void SetPrecipitation(int precipitationType, double precipitationRate, double nearClip) {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_SetPrecipitation__SWIG_1(swigCPtr, this, precipitationType, precipitationRate, nearClip);
  }

  public void SetPrecipitation(int precipitationType, double precipitationRate) {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_SetPrecipitation__SWIG_2(swigCPtr, this, precipitationType, precipitationRate);
  }

  public void SetPrecipitationWind(double windX, double windZ) {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_SetPrecipitationWind(swigCPtr, this, windX, windZ);
  }

  public void GetPrecipitationWind(SWIGTYPE_p_double windX, SWIGTYPE_p_double windZ) {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_GetPrecipitationWind(swigCPtr, this, SWIGTYPE_p_double.getCPtr(windX), SWIGTYPE_p_double.getCPtr(windZ));
  }

  public void EnableTimePassage(boolean enabled, int relightFrequencyMS) {
    SilverLiningCloudLayerFactoryJNI.AtmosphericConditions_EnableTimePassage(swigCPtr, this, enabled, relightFrequencyMS);
  }

}
