News
|
So a Lot Has Been Happening |
|
|
by Matt Tropiano |
January 15, 2012 |
There are going to be some changes around here, soon. Not terribly huge ones, just some cosmetic and under-the-covers related stuff.
As you can probably tell, the updates have been rather sparse. To tell you the truth, it is because updating this site is a pain. There have been changes to project versions and stuff, but I have not been announcing them.
However, I've been writing some better CMS software for my websites, and this will be updated to that in a while, so I won't have to tear my hair out if I have to edit anything.
Ok, that's all for now - Happy Belated New Year!
|
|
|
Commons at 2.3 |
|
|
by Matt Tropiano |
August 7, 2011 |
The Commons project has been updated to version 2.3.0. There are some minor changes and fixes, and one large (but mostly unintrusive) one.
- Got rid of the SceneObject getUpper/Lower/X/Y/Z() functions. Debated just deprecating, but since they only had one typical equivalent value that used function calls on the same object to calculate. Adjust your code accordingly.
- Added Common.close(Closeable).
- Fixed: A particularly bad bug in Scene2D where Pair memory was re-used instead of re-instantiated, changing grid coordinates for all members of the Scene!
- Changed GridMap.get(int, int) so that it returns null if a set of coordinates off the grid is entered.
- Changed Wave: offset is a double, not float.
- Added Wave.getSample(int).
|
|
|
Updates to Commons and Lang |
|
|
by Matt Tropiano |
May 17, 2011 |
The Commons and Common Lang libraries were updated to version 2.2.0, and 2.0.1, respectively.
For Commons:
- Changed internals of the abstract data structures so that repetitive
gets, iterations, and other operations do not create new objects.
- Added new interface that extends Iterator, ResettableIterator, which
contains a reset() method that will set the iterator back to the beginning
of the structure it was created for, as though it were just created. The
general policy of reset() is that it will not create additional objects
to reset itself.
- All iterable structures now return a "ResettableIterator" class.
- Changed Ticker: it is now very, very accurate.
- Scene2D changed a lot. Generates no additional memory for lookups and
visibility checks.
- Added: randElement(Random, T ... objects) to RMath.
- Fixed: SparseGridMap's get(x,y) method did not correct bounds by wrap type.
- Added: SparseQueueGridMap.
- Added: FloatGrid.
- Added: AbstractVector.replace(int, T).
- Fixed: GridMap contained its own wrapping fields which undermined its
parent class's fields. These have been removed.
- Added: Polynomial.
And one little change to Common Lang:
- Fixed some end of block comments in Lexer not being detected.
|
|
|
Fixing Up Commons |
|
|
by Matt Tropiano |
April 11, 2011 |
The Commons library was updated to version 2.1.0, and with that come these wonderful changes...
- Removed update() from Scene2D.
- Fixed a bunch of places where AbstractLinkedList could break itself.
- Made all public entry points into Scene2D synchronized.
- Added "package-info" files to commons packages.
- Added Matrix4F and changed a method or two in Matrix4D.
- Changed internal datatype for Matrix4D in order to be consistent with the other *D structures.
|
|
|
Ch-Ch-Ch-Changes |
|
|
by Matt Tropiano |
March 17, 2011 |
Hey, everybody. Just got done with that revamp I posted about. Half a year
later and everything gets better!
The sidebar has more stuff on it than last time - mostly due to the splitting
of Commons into sibling projects.
All projects have been upgraded to version 2.0, mostly due to the Commons
series of libraries changing. If you need the older versions, they're under
"Other Downloads" on the right. Nightly (or almost-nightly) builds of the
projects are available, too - but I cannot guarantee the stability of the nightlies,
programming-wise or structure-wise.
Javadocs of course have been updated as well, and can be found in pretty much
the same place as last time.
Okay, that's it! Thanks for your patience!
|
|
|
Coming Soon and Slated Changes |
|
|
by Matt Tropiano |
November 8, 2010 |
After much deliberation, I have decided that Commons requires a complete revamp, or maybe packaged into smaller libraries. It may take a while to sift through the code and figure out what is crap and what isn't crap, and figure out what to keep and what to give the axe. Needless to say, the face of that project will change completely. Once the new version of the Commons libraries is released, newer versions of the existing projects will be released that will use the newer version of Commons.
Of course, this is not to say that Commons as it stands is crap, per se - everything is still completely functional. It could just be better, is all. ;)
Also, in the future, Black Rook is planning preliminary versions of the upcoming OpenGL and OpenAL encapsulation libraries, the purpose of which would be object-orienting the OpenGL and OpenAL contexts, and well as adding some helpful utility classes, so that's something to at least look forward to.
Also Doom Struct has been updated to 1.6.2:
- Fixed: Some versions of Doom (i.e. the "vanilla" ones) may rely on a particular lump order for entries in maps. WadIO has been changed to reflect this.
- Fixed: Doom-compatibility checking for linedefs allowed up to 32767 sidedefs when it should have been 65535.
|
|
|
Updates and Fixes |
|
|
by Matt Tropiano |
October 16, 2010 |
After quite a long time, there have been additions and fixes to the Commons project and Doom Struct project, respectively.
Changes to Commons:
- Added: GradientAbstract to math package for creating sampleable gradient types.
- Changed: SortedMap now extends VectorAbstract. Because of this, the value-fetching
function was changed to getValue() and U removeIndex() was changed to
U removeValueAtIndex() in order to clear up ambiguities, and the protected
methods swap() and compare() have been removed entirely. Naturally, this
may end up breaking programs. Please update your code to the new functions.
- Changed: SortedVector and ComparatorVector to use sort() and not its own methods.
The sorting methods in those classes have been deprecated as of this version.
- Added: RWaveTypeField: For setting/getting wave forms.
- Changed: RColorField: The edit cells are expandable with the field's size,
but not the selector button.
- Added: VectorAbstract.sort(int startIndex, int endIndex) for sorting within a range.
- Added: WaveUtils.createNoiseWave() for creating Noise functions.
- Added: Rectangle2D/F to com.blackrook.math.
- Added: coalesce(T ... objects) to Defs. Returns the first non-null object
in the list.
- Added: New constructor for Wave. Made sense to add it. You'll know it when
you see it.
The changes to Doom Struct, however, are far less numerous:
- Fixed: Saving a Doom or Strife-format Thing would fail if saved as anything
other than Hexen type.
- Fixed: Saving a Doom or Strife-format Linedef would fail if saved as
anything other than Hexen type.
- Fixed: "-" should be a valid character in entries and textures.
So, go to the Downloads section and get them!
|
|
|
Commons and Scripting Fixes and Additions |
|
|
by Matt Tropiano |
July 24, 2010 |
Changes have been made to both the Commons and Scripting libraries, which brings each project up to 1.7.0 and 1.2.0, respectively.
Changes to Commons:
- Fixed: Wave.getInterpolatedValue(long, int, int) was not returning the correct upper bound value in certain cases.
- Added: Class DataGrid for storing two-dimensional data to be used for grid-oriented data. It's essentially a non-jagged multidimensional array, but it contains other useful methods.
- Fixed: LL.remove(T) would not return true for items in the middle of the list if removed successfully. Geez, one day I'm gonna rewrite this sucker...
- Changed: Ticker uses an interrupt now to stop() the underlying ticker thread. Safer in cases of race conditions.
Changes to Scripting:
- Added: SimpleScriptEngine.callScript(String, String) for instantiating scripts at a particular label.
- Added: Additional methods to SimpleScriptInterpreter for using interpreters as a pool.
- Fixed: ControlInterpreter had a slightly buggy implementation of integers and incerement/decrement. This has been fixed.
|
|
|
Downloads Page and Some Overhauls |
|
|
by Matt Tropiano |
July 2, 2010 |
In case you didn't notice, for the past month or so, I added a new
Downloads section to the site. Also the
Commons Library received something cool: a way
to construct your own waveforms from discrete samples!
Well, I think it's pretty cool... but then again, I'm biased.
Also, several other projects have received updates, and the Online Javadoc
system has been changed. So, go exploring!
Changes to Doom Struct
- Added: Additional methods to ANIMATED and SWITCHES that allow for easier
retrieval and manipulation of entry contents.
- Added: The "WINXMSG" lumps in Hexen are now known as a text lumps.
Changes to Scripting
- Changed/Added: ControlInterpreters now recognize an INTEGER subtype on
Values. Types will promote to higher ones automatically depending on
certain conditions.
- Added: Additional necessary documentation for ControlInterpreter that was
missed. Apologies for the inconvenience.
- Changed: Commands can now have an INTEGER type argument, forcing whole
numbers.
Changes to Commons
- Changed: Lexer.Stream is now protected, not private.
- Added: com.blackrook.math.WaveFormType for interfacing WaveForm shapes and
types.
- Changed: The enum WaveForm has been changed to use WaveFormType.
- Added: QMath.cosineInterpolate for cosine interpolation.
- Added: QMath.cubicInterpolate for cubic interpolation.
- Added: com.blackrook.math.CustomWaveForm for abstract waveform sampling.
- Changed: Parser provides better error message for when a token can't
be read.
- Changed: QMath.wrap* methods to be more accurate (and computationally
efficient).
- Added: HashListTable.enqueue() and dequeue(), for treating the lists
like queues.
- Changed: Tweaked the accuracy of the Ticker class.
- Added: com.blackrook.struct.VectorAbstract for tying together most of the
vector types.
- Changed: ComparatorVector, SortedVector, VolatileList, and HandleVector
have been changed dramatically, but still remain the same functionally.
Code may need to be changed to conform to the new calls. This adds some
much needed consistency to the library.
|
|
|
Additional Changes to Doom Struct |
|
|
by Matt Tropiano |
June 6, 2010 |
The Doom Struct project has undergone some changes (for the better):
- Changed: Made Flat clear pixel data on dimension change.
- Changed: Internal representation of Flat data.
- Fixed: Flats now export properly in bytes.
- Fixed: ANIMATED now exports properly in bytes - a whole record needed to be
added with the terminal.
- Added: Internal representation of Animated Entry.
- Changed: The "textures" lump is now known as a text lump - it wasn't before.
- Added: checkNotNull() to DoomObjectUtils().
- Added: com.blackrook.doom.struct.Switches. Reads/edits a Boom engine
SWITCHES lump.
- Added: setPixelColor() and setImage() to DoomGraphicObjects. Flat, PNGData,
and Patch have been changed accordingly.
- Added: getNearestColor() to Palette.
- Changed: DoomUtil.getNearestColor() - if a palette is not specified, the
original color is used, unaltered.
|
|
|
Some Updates and a New Project |
|
|
by Matt Tropiano |
June 3, 2010 |
After a period of inactivity (with the site, at least), a new project has been put on the site: the Scripting project, which provides a means by which programmers can add a command-based script to their programs. The parsing and interpreter automation is already taken care of, and all that needs to be added by the end-user is what the commands do! What could be simpler (it's probably why we call the language "SimpleScript", but whatever)?
The Commons library has also been updated to version 1.5.0, bringing with it some additional changes and features:
- Added: Added package info files to the library.
- Added: "GenericContainer" classes and interfaces for writing simplistic container formats or container handlers.
- Changed: PNGContainerWriter calls toByteArray() once instead of twice. Should be a tad more efficient, that way.
- Changed: ComparatorVector and SortedVector no longer rely entirely on compareTo() returning 0 to determine equality. The method equals() is now called before the comparison steps.
- Changed: ComparatorVector's remove(int) method was RENAMED to removeIndex(int), like the other data structures in Struct. Please change your code accordingly. Deprecation was not an option, since it would not fix anything nor would it encourage current users of the method to change their code.
- Added: RTimerField to com.blackrook.swing.field. It is a field that acts like a stopwatch. The com.blackrook.swing.field.data package contains graphics used by this panel type.
- Deprecated: com.blackrook.lang: CLexer, CLexerSystem, and CLexerToken have all been deprecated. Please use their updated counterparts in the same package. Current users are encouraged to update their code.
- Changed: SortedVector's clear() method is now synchronized.
- Added: Clear() method to ComparatorVector.
- Added: Clear() method to Scene2D.
- Added: getAllFlaggedKeys(List out) to ResourceBank.
The Doom Struct project has also been updated to version 1.4.0, though its not as significant as Commons:
- Added: Added package info files to the library.
- Fixed: DoomObjectUtils.checkEqual(String, String, String) now tests for INequality, like it should.
- Changed: Made WadFile.getData(Entry) public.
- Added: WadFile.getDataAsStream(Entry).
|
|
|
Whole Lotta Changes |
|
|
by Matt Tropiano |
April 15, 2010 |
Several projects have been updated on the site.
The Commons was updated to version 1.4.0. Changes include:
- Removed: getResource() from com.blackrook.lang.Lexer. It also no longer implements ResourceLoader.
- Added: RCheckBox to com.blackrook.swing.field.
- Added: com.blackrook.swing.dialog package: contains useful dialog types.
- Added: RList to com.blackrook.swing.field.
- Added: Methods for adding files to the JVM classpath at runtime (com.blackrook.struct).
- Defs.addFilesToClassPath(File...)
- Defs.addURLsToClassPath(URL...)
- Added: Methods for adding native libraries to the JVM classpath at runtime (com.blackrook.struct). Employs a bit of a hack to get this to work.
- Defs.addLibrariesToPath(File...)
- Defs.addLibraryToPath(File)
- Changed/Added: A dialog box for picking a date for RDateField (com.blackrook.swing.field).
The DataLanguage project was updated to version 1.1.0. Changes include:
- Changed: Changed DLReader completely to use CommonLexer and Parser in the commons library. This reader should be incompatible with existing implementations, but not enough to warrant a major version number change. Minor changes to existing code will be needed to use this.
- Changed: Copyright label in DLWriter.
- Added: method to DLWriter for writing to a generic OutputStream.
And finally, the Doom Struct project was updated to version 1.3.0. Changes include:
- Added: com.blackrook.doom.struct.Animated. Reads/edits a Boom Engine ANIMATED lump.
- Removed: A serial ID from Texture (unnecessary).
- Changed: Some Linedef special names in DoomUtilTables.
- Fixed/Changed: Reject.get/setSectorIsVisibleTo's functions were reversed. Apologies for the mixup.
Phew. Did anyone actually read any of that? :)
|
|
|
Commons Update |
|
|
by Matt Tropiano |
March 25, 2010 |
The Commons Library has been updated to version 1.3.0 with a bunch of new stuff!
- Fixed: If ComparatorVector's increment size is 0 or less, it should double its size on expansion.
- Added: getAllObjects() method to Scene2D.
- Fixed: Scene2D's getIntersectingObjects() somehow decided that objects can intersect with themselves. Whoops.
- Changed: com.blackrook.scene.SceneObject/Scene2D - added methods for getting pre-calculated bounding areas for potential collision detection. Scene2D's profiling methods have been changed to support these methods that should have existed in the first place. Apologies to those who are already using this interface - you will have to update implementors of this class.
- Changed: com.blackrook.math.Wave and WaveForm - added method for other primitive types.
- Added: com.blackrook.swing.field package - A set of Swing panels for getting/setting data.
- Added: com.blackrook.struct.TallyTable - a special Hashtable for doing running tallies.
- Added: com.blackrook.lang.CommonLexer - a special Lexer that automatically reads certain C-like preprocessor directives.
- Added: Additional wrapValue() methods to com.blackrook.math.QMath.
- Fixed: Potential wrapValue() divide-by-zero errors fixed.
- Fixed/Changed: com.blackrook.lang.Lexer now recognizes that identifiers can start with underscores.
|
|
|
More Info Added |
|
|
by Matt Tropiano |
February 15, 2010 |
An Info section has been added to the site that details the coding practices and versioning practices that Black Rook uses. Check it out!
|
|
Next Page
|
Projects
Commons
Common I/O
Common Lang
Common Swing
Common Sync
DataLanguage
Doom Struct
Scripting
Documentation
Commons
Common I/O
Common Lang
Common Swing
Common Sync
DataLanguage
Doom Struct
Scripting
Other Downloads
Nightlies
Old Releases
|