/WorldWindJava-pcm

fork of NASA's WorldWindJava to support publishing artifacts on Sonatype (Central Repository)

Primary LanguageJavaOtherNOASSERTION

WorldWindJava-PCM

This is a fork of the original NASA WorldWind Java repository.

This repository is not intended as an alternative but rather as a staging area for:

  • publishing artifacts to the Central Repository
  • potential bug fixes
  • (limited) additional features

Please refer to the original README.md for general WorldWindJava information, which is also included in this distribution as a renamed README_ORIGINAL.md.

The master branch of this repository is only intended to publish artifacts (jars) to local caches (~/.m2 or ~/.ivy2) and servers such as the Central Repository.

As of 03/2020 we are now including the external dependencies within the project jar since there is no 2.4+ release for jogl and gluegen available on Maven Central, but the accompanying native libraries are required to run WorldWind on newer Java versions. We hence use the latest deployment snapshots as unmanaged dependencies under lib/.

Since distributing re-packaged 3rd party libraries is considered bad practice this will be reverted once new versions of the libraries are published on the Central Repository.

Please note that we do not support the Apache Ant based build process of the original project since the main purpose of this distribution is to provide dependency managed artifacts, not applications.

To import the binary artifacts produced by the master branch, add the following line to your SBT build configuration:

libraryDependencies += "com.github.pcmehlitz" % "worldwind-pcm" % "2.1.0.+"

The underlying version of the original repository is kept in a base branch. Use git diff base to quickly assess changes made in the master branch.

Current changes in WorldWindJava-PCM fall into four areas:

(1) update to current versions of JOGL and GDAL

(2) support publication of build artifacts to Maven Central, enabling client projects to add WorldWindJava as a normal 3rd party dependency (e.g. in build systems such as SBT, Gradle or Maven). Note this is transitive, i.e. client projects do not have to copy or otherwise resolve any of the libraries used by WorldWindJava. Note that WorldWindJava-PCM uses a different build system SBT to create/publish artifacts than the original WorldWindJava, which uses Apache Ant

(3) thread safety related fixes - WorldWindJava-PCM is mostly used in projects such as RACE that extensively use concurrency and distributed operation to import and process large and highly dynamic data sets. While not all rendering relevant information can be updated outside the UI thread(s), some can with small respective changes within WorldWind

(4) observable animation targets - WorldWindJava-PCM is used for viewers that can be synchronized across the network (e.g. for applications such as situation rooms). To avoid serious lag and potential loss of synchronization between collaborating viewers it is essential that animations such as re-centering or zoom-in/-out are not transmitted as a stream of transient eye positions but as the targeted end-position of the respective animation. To that end, WorldWindJava-PCM contains small, minimally-invasive extensions that allow observation of animation end points in user provided input handlers by overriding a new stub method of OrbitViewInputHandler

protected void setTargetEyePosition(Position targetPosition, AnimationController controller, String actionKey)

Please note this repository uses the same NOSA v1.3 license as the original.