- Bugfix:
NullPointerException
thrown inMyControl.describe()
- Bugfix: string userdata is doubly escaped in scene-graph dumps
- Added the
CapsuleMesh
class to the library. - Added the
trianglesToLines(IndexBuffer, int)
method to theMyMesh
class. - Added the
TrianglesToLines
app to the examples. - Updated Gradle to v8.8
- Simplified the
VectorSet
interface. (API change) - Deleted the public
describeControls(Spatial, boolean)
method from theDescriber
class. (API change) - Finalized 15 classes (API changes):
Element
Heart
InfluenceUtil
MyAnimation
MyControl
MyLight
MyMath
MyMesh
MyQuaternion
MySkeleton
MySpatial
MyString
MyVector3f
MyVolume
StringLoader
- Privatized the
elementsByFitness
field in thePopulation
class. (API change) - Protected the
SimpleControl
constructor. (API change) - Bugfix:
writeImage()
ignores the return code fromImageIO.write()
- Bugfix: GLSL versions out-of-order in matdefs
- Added the
DsUtils
class from Acorus. - Added a
put(FloatBuffer, int, Vector4f)
method to theMyBuffer
class. - Updated Gradle to v8.6
- Bugfix:
MyMesh.vertexColor()
doesn't handle color buffers with just 3 components per element - Bugfix:
MyMesh.rotate()
ignores tangent and binormal vertex buffers - Bugfix:
MyLight.describeType()
is inconsistent withMyControl.describe()
- Bugfix:
StringLoader
doesn't handle non-Latin characters - Renamed 3 methods in the
MyAnimation
class and deprecated the old methods:getRotations(Track)
getScales(Track)
getTranslations(Track)
- Added the
DummyLoader
class. - Added 9 new methods:
Describer.describe(Armature)
Describer.describe(Joint)
Describer.describeFloats(float...)
Describer.describeTrackTarget(HasLocalTransform)
Dumper.dump(AnimClip, String)
Dumper.dump(Armature, String)
Dumper.dump(Joint, String)
Dumper.dump(Light, String)
Heart.loadResourceAsString(String)
- Improved descriptions and dump output:
- when describing meshes, indicate the number of the morph targets if any
- when dumping meshes, enumerate the morph targets if any
- expand the descriptions of
CameraControl
andLightControl
- when describing a
Skeleton
, indicate its total number of bones - when describing a
VertexBuffer
, indicate its number of components per element - when describing a vertex, indicate its
Tangent
andTexCoord2
attributes if any - align vertex data into columns
- Updated Gradle to v8.4
- Added new method
MyMath.log2()
- Targeted jMonkeyEngine version 3.6.1-stable.
- Updated Gradle to v8.3
- Added 4 new methods:
MyMath.transform()
MyMath.transformInverse()
for aVector3f
MyQuaternion.rotateInverse()
Validate.standardAngle()
- When normalizing a
Quaternion
orVector3f
, bypass division if the norm is approximately equal to 1.
Added 2 new methods:
MyMath.combine()
MyQuatenrion.rotate()
- Added the
DecalManager
class. - Added new methods:
MyString.describeAngle()
MyString.describeMatrix()
- Renamed
DomeMesh.getUVScale()
and deprecated the old method. - Updated Gradle to v8.1.1
- Targeted jMonkeyEngine version 3.6.0-stable.
- Updated Gradle to v8.0.2
- Deprecated the
insertAt()
method in theMyControl
class. - Updated 8 textures from the Georg project.
- Targeted jMonkeyEngine version 3.6.0-beta3.
- Updated Gradle to v8.0.1
- Bugfix:
MyQuaternion.isRotationIdentity()
acceptsNaN
s - Changed
Describer
to describe scene-graph controls in order and omit any disabled ones. - In
MyMesh
, renamedgenerateNormals()
togenerateFacetNormals()
and deprecated the old method name. - Added 5 new methods:
MyMath.fromAngles()
MyMesh.hasAnyTangents()
MyMesh.hasTangents()
RectangularSolid.centerLocal()
RectangularSolid.centerWorld()
- Added
TestMyVolume
to the automated tests. - Targeted jMonkeyEngine version 3.6.0-beta1.
- Updated Gradle to v7.6
- Bugfix:
AppChooser
executes itself instead of the selected app - Deprecated the
findIndex()
method in theMySpatial
class. - Added methods:
MyControl.insertAt()
MyLight.clearLocalLights()
MyMath.transformInverse()
for triangles
- Added the
root2
constant to theMyMath
class. - Overrode the
toString()
methods of theVectorSetUsingBuffers
andVectorSetUsingCollection
classes. - Updated Gradle to v7.5.1
- Bugfix:
MyMesh
ignores bind-pose normals - Added methods:
- constructor for
Prism
to produce prisms closed with right triangles Element.lerp()
Element.lerp3()
MyBuffer.listNeighbors()
MyMath.areWithinTolerance()
MyMath.lerp3()
MyMesh.rotate()
MyMesh.subdivideLines()
MyMesh.subdivideTriangles()
MyQuaternion.angleBetween()
MyVector3f.areWithinTolerance()
- constructor for
- De-privatized the
Describer.describeHalfExtents()
method. - Added the
TestRotate
andTestSubdivide
applications. - Converted the
TestNameGenerator
andTestMySpatial
applications into JUnit tests. - Updated Gradle to v7.5
-
Deleted 5 deprecated methods: (API changes)
MyBuffer.getFormat()
MyBuffer.putRelative()
MyMath.isFinite()
MyMesh.readIndex()
MyString.join8()
-
Made
MyBuffer.isAllFinite()
a static method. (API change) -
Redefined 2
Generator.pick()
methods using generics. (API changes) -
Tweaked the signature of the
MyVector3f.doCoincide()
method. (API change) -
Protected the
SubtreeControl
constructor. (API change) -
Privatized the
Generator.serialVersionUID
field. (API change) -
Added the
addAll()
method to theVectorSet
class. -
Added the
axisIndex()
method to theValidate
class. -
Added the
hasStoredSettings()
method to theHeart
class. -
Add 4 vertices to
Octasphere
, in order to better cover the U-V space. -
Began indicating
Action
subclasses in dumps. -
Added the
AppChooser
application. -
Added the "checkstyle" plugin to the build.
- Added the
deleteStoredSettings()
method to theHeart
class. - Added the
renderColor()
method to theMyColor
class. - Enhanced
Heart.deepCopy()
to handle a null argument. - Improved dumpers to describe shadow renderers and morph controls in greater detail.
- Converted examples to extend
AbstractDemo
and made them resizable. - Targeted jMonkeyEngine version 3.5.2-stable.
- Updated Gradle to v7.4.2
- Added 3 classes:
ClothGrid
,DividedLine
, andRectSizeLimits
. - Added a
Validate.nonEmpty()
method forint
arrays.
Bugfix: binaries built using JDK 11 aren't compatible with Java 8
- Added methods:
- no-arg constructors for
ContrastAdjustmentFilter
andUncachedKey
Heart.parseAppArgs()
(an aid to portability)MyBuffer.rotateBinormals()
Describer.describeAudioNode()
MyArray.countNeSorted()
NamedAppState.getInfluence()
- no-arg constructors for
Dumper
enhancements:- Dump IDs of appstates, even those not based on
AbstractAppState
. - Dump the influence lists of named appstates.
- Added special handling for audio nodes.
- Dump IDs of appstates, even those not based on
- Improved the examples:
- Bugfix: unable to run examples from the command line
- Added command-line arguments to adjust the logging level and bypass the Settings Dialog. (for portability)
- Disabled OpenGL "compatibility" profile. (for portability)
- Added LWJGL natives for MacOSX_ARM64. (for portability)
- Updated Gradle to v7.4
- Bugfix:
ClassCastException
inMyMesh.vertexColor()
for certain meshes - Bugfix:
AssertionError
inSimpleAppState.refreshCachedFields()
when noFlyByCamera
is present - Deprecated 3 Java7-compatibility methods:
MyMath.isFinite(double)
MyMath.isFinite(float)
MyString.join8()
- Added the
InitialState
enum and alternative constructors for theNamedAppState
andSimpleAppState
classes. - Added 4 methods:
Heart.getKeyInput()
MyArray.isSorted(int[])
MyBuffer.fill()
MyVector3f.rejection()
- Added vertex colors to mesh descriptions.
- Changed how an
AnimComposer
is described. - Tests:
- Converted test applications to automated tests.
- Added the
TestMergeMeshes
test app. - Upgraded 2 test apps to use the
AbstractDemo
class from Acorus.
- Bugfix: can't de-serialize a
SkeletonMesh
- Added the
VectorVisualizer
class for debug visualization. - Added the
translate()
method to theMyMesh
class. - Added the
velocity()
method to theMyVector3f
class. - Added the
getCollisionTree()
andtransformBuffer()
methods to theMyBuffer
class. - More detailed descriptions of controls used in the new animation system.
- Targeted jMonkeyEngine version 3.5.0-stable and Java 8+.
- Updated Gradle to v7.3.3
- Bugfix:
maxNumWeights
isn't initialized byMyMesh.merge()
- Bugfix: instanced meshes are double-counted by
MySpatial.countVertices()
- Bugfix:
MyVector3f.maxAbs()
doesn't set the Z component - Bugfix: a logic error in one of the
RectangleMesh
constructors - Disabled mergers of meshes that have levels of detail.
- Deprecated
MyBuffer.getFormat()
andMyBuffer.putRelative()
. - Extended
MyAnimation.describeTrackType()
to handle the new animation system. - Added the
DistinctVectorValues
,MeshNormals
, andPopulation
classes. - Added a
Comparable
interface to theIntPair
class. - Added an
isAllFinite()
method to theMyBuffer
class. - Added
isFiniteDouble()
andmaxInt()
methods to theMyMath
class. - Added
countNe()
andmirrorAxis()
methods to theMyQuaternion
class. - Updated Gradle to v7.2
- Changed the return type of
Heart.deepCopy()
. (API change!) - Deleted
defaultAnisotropicFilter()
andisAlphaToCoverage()
from theMyRender
class. (API change!) - Privatized 4 fields in the
VectorSetUsingBuffer
class. (API change!) - Copied the
readIndex()
method fromMyMesh
toMyBuffer
and deprecated it. - Added an
isFinite()
method to theMyMath
class. - Added
centerBuffer()
,expandedMode()
,merge()
,rotateBuffer()
, androtateTangentBuffer()
methods to theMyMesh
class. - Added a
listTextures()
method to theMySpatial
class. - Added a
join8()
method to theMyString
class. - Upgraded Gradle to v7.1.1
- Targeted jMonkeyEngine version 3.4.0-stable.
- Replaced HeartTextures with textures from the Georg project.
- Anti-aliased the "shapes" textures by downsampling them 10x.
- Upgraded Gradle to v7.0.2
- Bugfix: Locale not specified in the
MyString.describe()
andMyString.describeFraction()
methods - Made
MyMath.hypoteneuse()
more reliable by using double-precision arithmetic. - Targeted jMonkeyEngine version 3.4.0-beta1.
- Upgraded the JUnit library to v4.13.2
- Upgraded Gradle to v7.0
- Bugfix: single-precision arithmetic in
MyMath.sumOfSquares()
- Published to MavenCentral instead of JCenter.
- Upgraded Gradle to v6.8.2
Added the Loadable
interface.
- Bugfix:
IllegalArgumentException
while expanding aMesh
. - Extended
Heart.writeImage()
to write BMPs, GIFs, and JPEGs. - Added an option to
Validate
to configure the type of exception thrown for a null argument. - Modified
PointVisualizer
to configure its render bucket and disable shadows. - Reduced argument validation when assertions are disabled.
- Added to the library:
Dumper.dump()
methods for aCamera
MyAnimation.findKeyframeIndex()
for aTransformTrack
MyCamera.fovX()
MyCamera.xDegrees()
MyCamera.xTangent()
MyMath.clamp()
for intsMyMath.easeInQuartic()
MyMath.easeOutQuartic()
MyString.findIndex()
- a
Vector3i
class
- Publicized many loggers.
- Upgraded Gradle to v6.8.1
- Added a
SignalTracker
class to the library. - Upgraded Gradle to v6.7.1
- Added to the library:
MyAnimation.findPreviousKeyframeIndex()
MyAnimation.getKeyFrameTimes()
MySkeleton.getTargetGeometry()
MySkeleton.listArmatures()
PointVisualizer.setDepthTest()
- the
DiscMesh
class
- Improved the examples:
- disabled audio rendering
- upgraded the jme3-utilities-ui library to v0.9.0
- Upgraded Gradle to v6.7
- Upgraded JUnit to v4.13.1
- Added a "gamma" argument to
createDebugMaterial()
in theMyAsset
class. (API change) - Removed or privatized the
phi
constants in 3 mesh classes. (API change) - Added a
clear()
method to theVectorSet
interface. (API change) - Added a return value to the
validateUnit()
method in theMyQuaternion
class. - Added a U-V seam to
Octasphere
so it can display textures without glitches. - Added a
listGeometries()
convenience method to theMySpatial
class. - Added an
Octasphere
value to theSphereMeshes
enum.
- Added an
Octasphere
class. - Added public constants
farZ
andnearZ
to theMyCamera
class. - Added a "Textures/shapes/pin.png" asset.
- Added public constants
AxesVisualizer.widthForSolid
andMyMath.phi
. - Added a
getFileHandler()
method to theHeart
class. - Added a
listAnimationSpatials()
method to theMySpatial
class. - Added a
nextQuaternion()
method with caller-allocated storage to theGenerator
class.
- Deprecated the
defaultAnisotropicFilter()
andisAlphaToCoverage()
methods in theMyRenderer
class. - Added an
isPure()
method to theMyQuaternion
class. - Targeted jMonkeyEngine version 3.3.2-stable.
Targeted jMonkeyEngine version 3.3.0-stable.
- Bugfix: shader crashes on macOS with OpenGL3.2 core profile.
- Changed the default line widths in
BoundsVisualizer
andSkeletonVisualizer
to 1.0, since that's the only value for which OpenGL guarantees support. - Added
clear()
methods toVectorSetUsingBuffer
andVectorSetUsingCollection
. - Added 3 test apps:
TestContrast
,TestSkeletonVisualizer
, andTestMulticolor
. - Targeted jMonkeyEngine version 3.3.0-beta2.
- Bugfix: logic error in
Validate.positive()
forVector3f
argument. - Added
getFormat()
andputRelative()
methods to theMyBuffer
class. - Added an
addLine()
method to theDumper
class.
- Changed the Maven groupId from
jme3utilities
tocom.github.stephengold
. - Changed the Maven artifactId from
jme3-utilities-heart
toHeart
. - Deleted the deprecated
Misc
class. (API change!) - Deleted the deprecated
copyLineColor()
method from theBoundsVisualizer
class. (API change!) - Deleted the deprecated
isSorted(List<Comparable>)
method from theMyMath
class. (API change!) - Added 4 methods to the
VectorSet
interface: (API changes!)add(float, float, float)
contains(float, float, float)
toFloatArray()
toVectorArray()
- Added an option to the
VectorSetUsingBuffer
constructor to use wrapped arrays instead of direct buffers. (API change!) - Generalized the
hypotenuse()
,max()
,min()
, andsumOfSquares()
methods in theMyMath
class to accept variable numbers of arguments. (API changes!) - Added a
normalizeLocal()
method to theMyQuaternion
class. - When dumping an
IndexBuffer
, organize the indices into lines or triangles.
- Bugfix:
Icosphere
lacked a no-arg constructor. - Bugfix:
Tetrahedron
generated an irregular polyhedron. - Copied
Misc
class toHeart
, renamedHeart.writeMap()
, and deprecated theMisc
class. - Added a
require()
method to theValidate
class. - Added
setBoneIndexBuffer()
andtrianglesToLines()
methods to theMyMesh
class. - Added an
IntPair
class. - Added
isSorted()
methods for floats and Strings and deprecated the one forList<Comparable>
. - Added a test
TestCloneMeshes
. - Handle
mode=Points
in theDodecahedron
constructor. - Heart moved from the Jme3-utilities Project to a new GitHub repo.
- Bugfix:
Generator.nextQuaternion()
returned unnormalized values. - Added
Dodecahedron
andSphereMeshes
classes. - Incorporated the
PropertiesLoader
class from the UI library. - Added
getSubject()
,setSphereType()
, andsphereType()
methods to theBoundsVisualizer
class. - Added
nextFloat()
andnextInt()
methods for ranges to theGenerator
class. - Added a radius constructor to the
LoopMesh
class. - Added a
writeJ3O()
method to theMisc
class. - Added an
isSorted(Comparable[])
method to theMyArray
class. - Added an
isSorted(List)
method to theMyMath
class. - Added
addSphereNormals()
,hasTriangles()
, andsmoothNormals()
methods to theMyMesh
class. - Added a public constant
vpe
to theMyMesh
class. - Added
TestBoundsVisualizer
andTestGenerator
applications to the tests sub-project. - Improved descriptions for
float
values. - Added JME spheres and a textured material
to the
TestSolidMeshes
application. - Simplified the
LoopMesh
class, including deletion of its index buffer.
- Bugfix: wrong mode in
LoopMesh
. - Added
addIndices()
,areIdentical()
,expand()
,generateNormals()
,hasIndices()
,reverseNormals()
, andreverseWinding()
methods to theMyMesh
class. - Added the
Cone
,Element
,Icosahedron
,Octahedron
,Prism
, andTetrahedron
classes. - Added
get()
,normalize()
,put()
,rotate()
, andscale()
methods to theMyBuffer
class. - Added a
Dumper
option to dump mesh-vertex data. - Improved dumping of meshes, including number of vertices.
- Changed default list separator to " " in the
Describer
class. - Added a
nonNegative()
method forVector2f
arguments to theValidate
class. - Implemented JME serialization for visualizer classes.
- Publicized the
vpt
field of theMyMesh
class. - Added caller-provided storage to
BoundsVisualizer.copyLineColor()
. - Added
TestSolidMeshes
application to the tests sub-project. - Added
TestCloneControls
class to the automated test suite. - Targeted the NEW jMonkeyEngine version 3.3.0-beta1.
- Added a single-argument
listSpatials()
method to theMySpatial
class. - Targeted jMonkeyEngine version v3.3.0-beta1, which was later deleted!
- Added
addAllInfluencers()
andhideNonInfluencers()
methods for the new animation system to theInfluenceUtil
class. - Added
findJointTrack()
,findTransformTrack()
, andisJointTrack()
methods to theMyAnimation
class. - Added a
positive()
method forVector3f
arguments to theValidate
class. - Publicized 3 methods in the
InfluenceUtil
class.
- Protected no-arg constructors used only for serialization. (API changes!)
- Deleted the
traverse()
method fromSubtreeControl
. (API change!) - Privatized the
subtree
field of aSubtreeControl
. (API change!) - Based
NamedAppState
onAbstractAppState
. (API change!) - Targeted jMonkeyEngine version 3.3.0-alpha5.
- Added
Icosphere
andInfluenceUtil
classes. - Added
distinct()
,ensureCapacity()
,frequency()
,toFloatArray()
, andtoIntArray()
methods to theMyBuffer
class. - Added a constructor for a
RectangularSolid
that takes anAbstractBox
. - Changed
SubtreeControl
so the subtree can be aGeometry
. - Changed
Dumper
to dump the ID of eachAbstractAppState
. - Changed
NamedAppState
so it doesn't require aSimpleApplication
.
- Deleted deprecated methods. (API changes!)
- Added a 3-argument
sumOfSquares()
method to theMyMath
class. - Added a
dot()
method to theMyQuaternion
class. - Added an
isBetween()
method to theMyVector3f
class. - Added a
lerp()
method to theMyColor
class. - Added a
nextPoisson()
method to theGenerator
class. - Added a
createMulticolor2Material()
method to theMyAsset
class. - Added caller-provided storage options to 2
Generator
methods. - Describe the
BlendMode
of aRenderState
. - Strengthened argument validation.
- When dumping a parented
Spatial
, flag it if it's not indented. - Changed all
Validate
methods to returntrue
, so they can be used in assertions. - Added support for
IntBuffer
inMyMesh.readIndex()
. - Added a
MyBuffer
utility class. - Added a
RectangularSolid
constructor that takes aFloatBuffer
. - Added
maxAbs()
methods to theMyVector3f
andVectorSet
classes. - Added a
nonZero()
method (for quaternions) and anonNullArray()
method to theValidate
class. - Added a
hasNormals()
method to theMyMesh
class. - Added an
isZero()
method to theMyQuaternion
class. - Added 2 methods using caller-allocated storage to the
ReadXZ
class. - Avoided some unnecessary modifications of buffer positions in
MyMesh
.
- Removed the
PoseDemo
application. - Targeted jMonkeyEngine version 3.3.0-alpha2.
- Added support for the
com.jme3.anim
animation system toMySkeleton
andSkeletonVisualizer
. - Terminate each
AppState
dump with a newline. - Specify
Locale
for portabletoLowerCase()
. - Added a
Dumper
flag to describe the world bounds of spatials. - Dump the text of a
BitmapText
. - Added
Describer
methods for bounding volumes. - Added
firstToLower()
andinvert()
methods to theMyString
class. - Added an
aabb()
method to theMyArray
class. - Added names to generated materials.
- Bugfix: NPE while describing a buffer with no format.
- Made the default build Java 7 compatible.
- Deprecated 9 unused utility methods:
MyArray.countDistinct()
MyArray.hasDistinct()
MyArray.normalize()
MyMath.localizeRay()
MyMesh.maxWeight()
MySkeleton.worldLocation()
MySpatial.adopt()
MySpatial.yLevel()
MyString.areLexOrdered()
- Added a
quoteName()
method to theMyString
class. - Added a method to
Dumper
to dump aViewPort
without specifying indentation. - Minor improvements to dump formatting.
- Added a
mipmaps
argument toMyAsset.loadTexture()
. - Provided more detailed descriptions of vertex buffers in
Describer
. - Tweaked the
SkeletonVisualizer
class to generate less garbage.
- In dumps, sort material parameters by name.
- Added a
MyRender
class. - Improved descriptions of material parameters.
- Added
Renderer
information when dumping aRenderManager
. - Added a
getRate()
method to theTimeOfDay
class.
- Added
fixedPath()
andfixPath()
methods to theMisc
class. - Made several improvements to describe/dump formatting.
- Bugfix:
MyString.trimFloat()
doesn't recognize scientific notation. - Added a
repeat()
method to theMyString
class. - Added
mid()
methods to theMyMath
class. - Omit zero components in the
MyVector3f.describe()
method. - Initiated unit testing.
- Added an
axisIndex()
method to theMyString
class and deprecateDescriber.describeAxis()
. - Added a float[]-based constructor for
RectangularSolid
. - Added
covarianceVector3f()
andmeanVector3f()
methods to theMyArray
class. - Handled the
TerrainQuad
case inMySpatial.describeType()
. - Tweaked output formatting in
MyCamera.describe()
,Dumper
, andDescriber
. - Targeted jMonkeyEngine version 3.2.3-stable
Added getters for the fields of a Dumper
.
- The
jme3-utilities-debug
library merged into thejme3-utilities-heart
library. All classes in thejme3utilities.debug
package exceptDebugVersion
were transferred tojme3-utilities-heart
. All resources in theTextures.shapes
package and theModels.indicators.arrow
package were also transferred. - Changed
MyVector3f.midpoint()
andMyVector3f.projection()
to accept caller-allocated storage. - Added a
first()
method to theMisc
class. - Added a special case for uniform-scaling in
MyVector3f.describe()
. - Changed
MyString
to acceptCharSequence
arguments inescape()
,quote()
andunescape()
. - Made argument validation more friendly in
NameGenerator
.
Added localToWorld(Quaternion)
and
RectangularSolid(RectangularSolid, Vector3f)
methods to the
RectangularSolid
class.
- Moved the
countDistinct()
andcountNe()
methods fromMyVector3f
to theMyArray
class. - Renamed
MySkeleton.numLeafBones()
tocountLeafBones()
. - Renamed
MySkeleton.numRootBones()
tocountRootBones()
. - Added a
createDebugMaterial()
method to theMyAsset
class. - Added
SkeletonControl
skinning modes toMyControl.describe()
. - Added a
boneWeightMaterial()
method to theMyMesh
class. - Added a
visualizeBoneWeights()
method to theMySpatial
class. - Added a
listCorners()
method to theRectangularSolid
class.
- Improved exception handling in the
MyControl
class - Targeted jMonkeyEngine version 3.2.2-stable
- Improved output formatting in the
MyCamera.describe()
method - Targeted jMonkeyEngine version 3.2.2-beta1
- Added describers for axes, floats, and fractions to the
MyString
class - Added describers suitable for locations and directions
to the
MyVector3f
class - Added describers to the
MyColor
andMyQuaternion
classes - Added a
mean()
method to theMyArray
class - Trimmed trailing zeros in the
MyCamera.describe()
anddescribeMore()
methods
- Fixed bug in the
RectangularSolid
constructor based onBoundingBox
- Added support for
RectangularSolid
inMisc.deepCopy()
- Added a
RectangularSolid
constructor based on half extents
- Added a
RectangularSolid
class to model rotated boxes - Added a
covariance()
method to theMyVector3f
class - Added a
nextQuaternion()
method to theGenerator
class - Added a
lengthSquared()
method to theMyQuaternion
class
- Added an
area()
method forTriangle
to theMyMath
class - Added a
tetrahedronVolume()
method to theMyVolume
class
- Added a
findIndex()
method for scene-graph controls to theMySpatial
class - Added a
mean()
method to theMyVector3f
class - Added
nonEmpty()
methods for Object arrays and collections to theValidate
class - Allow for negative bone weights in animated meshes
- Renamed 5 methods in the
MySpatial
class and deprecated the old names - Renamed 2
Validate.isNumber()
methods and deprecated the old name - Renamed
MyColor.parseColor()
and deprecated the old name - Eviscerated
SubtreeControl.cloneForSpatial()
- Added
copyLocalTransform()
,copyMeshTransform()
,preOrderBones()
, andsetLocalTransform()
methods to theMySkeleton
class - Added a
worldTransform()
method to theMySpatial
class - Added a
slerp()
method forTransform
to theMyMath
class - Added a
finite()
method forVector3f
to theValidate
class - Added an
isAnimated()
method to theMyMesh
class
- Added
findOverride()
,listMaterialUsers()
, andlistMeshUsers()
methods to theMySpatial
class - Renamed
Misc.deepClone()
and deprecated the old name - Deprecated the
Misc.getVersion()
andMisc.getVersionShort()
methods
- Added
createShadedMaterial()
for solid colors to theMyAsset
class
- Added an
isScaleUniform()
method to theMyVector3f
class - Added 2
nonZero()
methods and anonNegative()
method to theValidate
class
- Added a
getWorldScale()
method to theMySpatial
class - Added support for
VectorXZ
inMisc.deepClone()
- Fixed logic errors in 3 material definitions
- Added support for
Byte
,Character
, andString
inMisc.deepClone()
- Added a deepClone() method to the Misc class
- Added a parseColor() method to the MyColor class
- Added a listMeshes() method to the MyMesh class
- Added countUses() and listMaterials() methods to the MySpatial class
- Added cardinalizeLocal() and parse() methods to the MyVector3f class
- Verify projection mode in MyCamera.setYTangent()
- Allow null subtrees in listAnimatedMeshes() and isIgnoringTransforms()
- Omit duplicates in MySpatial.listAnimatedMeshes()
- Corrected names in 2 material-definition files
- Set the Wireframe render-state flag in 3 material definitions
- Added a findTrackIndex() method to the MyAnimation class
- Added a listSpatials() method to the MySpatial class
- Extended MyCamera.yTangent() to handle parallel projection
- Added a findNamed() method to the MySpatial class
- Simplified MyAsset.createStarMapQuads() by using RectangleMesh
- Added PointMesh class
- Added LoopMeshTest application
- Extended MyString.findLongestPrefix() and MyString.reduce() to operate on collections
- Added vertexNormal() and vertexTangent() methods to the MyMesh class
- Added vertexBoneIndices(), vertexBoneWeights(), vertexColor(), vertexSize(), vertexVector2f(), and vertexVector4f methods to the MyMesh class
- Added MyMath.isBetween(double, double, double) method
- Moved all Bullet dependencies out of the heart library
- Moved all jme3-effects dependencies out of the heart library
- Deprecated the old Misc.getFpp() method
- Added MyCamera.isFullWidth() method
- Target JME v3.2.1
- Reduced the likelihood of MyCamera.listViewPorts() coming up empty
- Accounted for bottom and left in MyCamera.frustumAspectRatio() calculations
- Added a version of Misc.getFpp() that sets numSamples
- Added MyLight class
- Added MyMath.isBetween(int, int, int) method
- 1st release to target JME v3.2
- Forced MySpatial.findMinMaxCoords(Spatial) to use world coordinates
- Renamed MySpatial.findObject() to findEnabledRbc()
- Added isAllPositive() method to MyVector3f class
- Added axis-index constants to MyVector3f class
- Added ContrastAdjustmentFilter class
- Modified API of MyVector3f.lineMeetsSphere() to use Line and center
- Fixed assertion failure during MyMath.localizeRay()
- Added ViewPortAppState class
- Added mouseLine() method to MyCamera class
- Added describeType() method to MyControl class
- Added countBones() method to MyMesh class
- Added cardinalizeLocal() method to MyQuaternion class
- Added countMeshBones() and findControlledSpatial() methods to MySpatial class
- Added firstAxis, lastAxis, and numAxes public constants to MyVector3f class
- Added lineMeetsLine(), localizeDirection(), and normalizeLocal() methods to MyVector3f class
- Added listAnimatedMeshes() and subtreeContainsAny() to MySpatial class
- Added {cancel/get/map}Attachments() methods to MySkeleton class
- Added UncachedKey class
- Added caller-provided storage and used the transform of an animated geometry in MySkeleton.worldLocation()
- Removed modelLocation() and 2 worldOrientation() methods from MySkeleton
- Added more tests for ignoreTransform
- Added support for more bones than skinning matrices in MyMesh.vertexLocation()
- Made use of MyMesh.vertexVector3f() in MySpatial.findMinMaxCoords()
- Removed getMapLocation(), moveWorld(), moveChildWorld(), rotateChild(), rotateObject(), and rotateY() methods from the MySpatial class
- Added checks for ignoreTransform
- Improved handling of non-uniform scaling and disabled RigidBodyControls
- Added findObject(), isIgnoringTransforms(), and setWorldTransform() methods to the MySpatial class
- Added MyQuaternion.isRotationIdentity() and MyVector3f.isScaleIdentity()
- Replaced asserts with IllegalArgumentExceptions
- Removed the MyAnimation.listAnimations(), MySkeleton.findBoneIndex(), and MyString.getLine() methods
- Renamed MyAnimation.describe(Track) to describeTrackType
- Require an anim control to invoke MyAnimation.describe(Animation,...) or MyAnimation.describe(Track,...)
- Require a control to invoke MyControl.describe()
- Changed the MyString.join() methods to handle items of any type
- Changed MyString.sharedPrefixLength() to handle char sequences of any type
- Added methods DomeMesh.getUVScale(), MyBone.descendsFrom(), and MyControl.findSkeleton() methods
- Improved support for multiple skeletons in MySkeleton.findBone()
- Improved support for SpatialTrack in MyAnimation.describe(Track,...) and also in MyAnimation.getTargetName()
- Improved support for attach nodes in MySkeleton.setName()
- Renamed MyControl.isValid() to canDisable()
- Changed some asserts to exceptions in MyControl class
- Added canApplyPhysicsLocal(), isApplyPhysicsLocal(), objectName(), and setApplyPhysicsLocal() to MyControl
- Handle ChaseCamera and MotionEvent in MyControl
- Handle bone-index buffers containing shorts instead of bytes
- Added MyAnimation.findSpatialTrack()
- Allow MyAnimation.get{Scales/Translations}() to return null
- Renamed MyAnimation.findTrack() to findBoneTrack()
- Added MyAnimation.countTracks()
- Added MyAnimation.get{Rotations/Scales/Translations}()
- Added class StringLoader
- Standardized the BSD license texts
- Removed 10 editing methods from MyAnimation
- Renamed MyAnimation.createTrack()
- Fixed NPE while applying MyMesh.vertexLocation() to non-animated model
- Added accumulateScaled() method to MyQuaternion
- Moved the hasUV() method from Misc to MyMesh
- Fixed NPE during MyAnimation.behead()
- Added vertex{World}Location() and vertexVector3() methods to MyMesh
- Added count{Spatial/UserData/Vertices}() methods to MySpatial
- Added join() method for lists of strings (not needed in Java8)
- Added more cases to MySpatial.describeType()
- Removed MyAnimation.blendTo() method
- Split MyMesh utility class off from MySkeleton class
- Added behead() and zeroFirst() methods to MyAnimation class
- Added AlphaDiscardThreshold, Color, and UseVertexColor parameters to the multicolor2 material definitions
- Added driveMap() and listZipEntries() methods to Misc
- Added fourthRoot() and lerp() methods to MyMath
- Added slerp(), squad(), and squadA() methods to MyQuaternion
- Added listSkeletons() method to MySkeleton
- Added countControls() and listControls() methods to MySpatial
- Added addMatchPrefix() method to MyString
- Added accumulateScaled(), eq(), ne(), and lerp() methods to MyVector3f
- Fixed a serious logic error in Generator.nextVector3f()
- Added 5 methods to MyQuaternion, 2 methods to MyMath, and 1 to Validate
- Moved snapLocal() from MyMath to new MyQuaternion class
- Added method MyMath.standardize()
- Added methods countNe() and standardize() to MyVector3f
- Added methods ne() and standardize() to MyQuaternion
- Added methods distinct() and findPreviousIndex() to MyArray
- Added 5 methods to MyAnimation
- Added 3 methods to MySpatial
- Fixed NPEs caused by bone tracks without scales
- Avoid use of == and != on floats, causing semantic changes in some cases
- Moved 3 methods from MyMath to new MyArray class
- Privatized protected fields in DomeMesh and LoopMesh
- Added method MyArray.hasDistinct()
- Added method MyCamera.listViewPorts()
- Added method MyMath.isBetween()
- Added methods aboutEquals(), compareTo(), and equals() to ReadXZ/VectorXZ
- Added material definition multicolor2 to render point shapes
- Added DomeMesh and RoundedRectangle classes
- Added another constructor for RectangleMesh
- Added method MyMath.normalize()
- Use Mesh.Mode.LineLoop (where feasible) when generating meshes
- Fixed logic error in MyCamera.viewAspectRatio()
- Moved mesh generators to new jme3utilities.mesh package
- Rename Misc.getUserPath() to homePath() and generate absolute pathname
- Added class RectangleOutlineMesh
- Added method MyString.removeSuffix()
- Added option to MyAsset.createWireframeMaterial() to set the point size
- Creative use of mesh modes to save indices
- Renamed Rectangle to RectangleMesh to avoid confusion
- Removed Misc.isIdentity() for being redundant with MyMath.isIdentity()
- Replaced MyCamera.aspectRatio() with {display/frustum/view}AspectRatio()
- Added utility methods to MyCamera and Misc
- Added LoopMesh class
- Added simpler constructors for RectangleMesh
- Distinguish BitmapText in MySpatial.describeType()
- Fixed logic error in MyCamera.aspectRatio()
- Added Rectangle class to generate meshes
- Added utility methods to MyCamera, MyMath, MySpatial, and MyVector3f
- Handle StatsView case in MyControl.isEnabled()
- Changed API of MySkeleton for clarity
- Better handling of multiple skeletons and missing skeletons in MySkeleton
- Fixed aliasing bugs/hazards in MyAsset
- Added methods to MyControl, MySpatial and MyString, partly from debug library
- Added wireframe shaders and material definitions, partly from SkyControl lib
- Added 4 new methods to the MyAnimation class
- Changed semantics of escape(), quote(), and unescape() in MyString
- Added new methods to MyAnimation, MySkeleton, MyVector3f
- Removed the Indices class
- Removed findMinMaxHeights() and getMaxY() from MySpatial
- Created jme3-utilities-heart library by splitting off packages from the SkyControl and jme3-utilities-x libraries