/*==LICENSE==*

CyanWorlds.com Engine - MMOG client, server and tools
Copyright (C) 2011 Cyan Worlds, Inc.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

Additional permissions under GNU GPL version 3 section 7

If you modify this Program, or any covered work, by linking or
combining it with any of RAD Game Tools Bink SDK, Autodesk 3ds Max SDK,
NVIDIA PhysX SDK, Microsoft DirectX SDK, OpenSSL library, Independent
JPEG Group JPEG library, Microsoft Windows Media SDK, or Apple QuickTime SDK
(or a modified version of those libraries),
containing parts covered by the terms of the Bink SDK EULA, 3ds Max EULA,
PhysX SDK EULA, DirectX SDK EULA, OpenSSL and SSLeay licenses, IJG
JPEG Library README, Windows Media SDK EULA, or QuickTime SDK EULA, the
licensors of this Program grant you additional
permission to convey the resulting work. Corresponding Source for a
non-source form of such a combination shall include the source code for
the parts of OpenSSL and IJG JPEG Library used as well as that of the covered
work.

You can contact Cyan Worlds, Inc. by email legal@cyan.com
 or by snail mail at:
      Cyan Worlds, Inc.
      14617 N Newport Hwy
      Mead, WA   99021

*==LICENSE==*/
#ifndef plVersion_h_inc
#define plVersion_h_inc

#include "hsTypes.h"

// RULES:
// Log your change
// Set Minor Version to ZERO when you Bump Major Version
// If you change the minor, see GetChangedCreateables in plVersion.cpp

#define PLASMA2_MAJOR_VERSION	70	// Major Version...every file will need to be reexported
#define PLASMA2_MINOR_VERSION	2	// Minor Version...only files with the specified creatables
									// will need to be reexported

// Don't modify this, it's automatically updated when branches are made
#define PLASMA2_BRANCH_NAME "Main Branch"

class plVersion
{
public:
	static UInt16 GetMajorVersion();
	static UInt16 GetMinorVersion();

	// Pass in a creatable index to get its current version.  Zero means it
	// hasn't changed since the last major version change, anything else is the
	// last minor version it changed at.  This takes into account the version of
	// parent classes.
	static int GetCreatableVersion(UInt16 creatableIndex);
};

/*	Major Log							---Death to those who do not log changes---
	#	Date	Who		comment
	1	5/8/01	Paulg	Added version Number
	2	5/11/01	mf		Changed sortable mesh format by 2 bytes.
	3	5/14/01 Paulg	Index files Location is used for ReadConfig at Client Startup, RoomLoc added to Index
	4   5/21/01 matt	Fixed errant bounding types for physicals (old bad codes will choke)
	5	5/24/01 mf		Added Occluders to the data format.
	6	5/29/01 mf		Purvis changed the sound data format and didn't change the version.
	7	5/3/01	thamer	Cleaned up some object read/write routines
	8	6/12/01	mcn		Obliterated hsGTexture on down. Now we use plBitmaps and plMipmaps (class IDs changed)
	9	6/21/01 mcn		Updated drawable disk format. Forgot a field that made particle systems break when it wasn't there
   10	6/25/01	mcn		Updated plMipmap format. Helps resolve the huge memory issues we were having
   11	6/28/01 mf		Slight changes to material and geometry formats to support projective texturing.
   12	7/02/01 mcn		Changed file format to fix disappearing objects in SceneViewer
   13   7/09/01 bob		Changed file format of plSimpleParticleGenerator to allow mesh generated systems.
   14	7/13/01 thamer	Changed uoid read/write to include clone number
   15   7/20/01 thamer	Changed uoid sequence to support up to 4 player rooms
   16	7/20/01	mcn		Added a second drawable + key to drawInterfaces
   17   7/22/01 bob		Changed file format to have particle systems support material diffuse/opacity animations
   18	7/27/01 mcn		Added stuff to drawableSpans for SceneViewer. Are we ever going to have another non-zero minor version? :)
   19	7/31/01 mf		Did a get and the format had changed but the version hadn't been updated (again). Is this version thing dead?
   20	8/13/01	mcn		Not that I know of. Change to various object formats to support object instancing.
   21	8/20/01 mf		Like you'd know. Revised inter-object dependency connections throughout the five scene graphs.
   22	8/21/01 mf		CoordinateInterfaces keep refs to child SceneObjects instead of child CoordinateInterfaces.
   22	8/21/01	mcn		You hurt my feelings. I bump major version in retaliation. (Also upped max UV count) 
   23	8/24/01 mf		Made runtime lights respect Max's OTM.
   24	8/26/01 mcn		Changed plSound format to support stereo (background music) sounds
   25	9/05/01 thamer  Changed uoid to support 32bit clones
   26	9/14/01	mcn		Added all 12 parameters to the Audio Region component.
   27	9/25/01	mf		Added soft volumes to run-time lights. Breaks any scene with RT lights.
   28  10/03/01 matt    Changed physics format just enough to make everyone reexport everything.
   29	10/9/01 ee		Changed Uoid member types to a new format that can accomodate strings.
   30  10/10/01	mcn		Split diffuse layer colors to static and runtime diffuse colors. Breaks the entire universe and parts of New Jersey.
   31  10/11/01	ee		Activated string usage in uoids -- this version thing is sure not dead now.
   32  10/11/01	mf		Changed format of plSpan. Only breaks scenes with visible geometry. Should that be Minor Version?
   33  10/12/01 cp		changed read/write functions in plAnimTimeConvert.  Breaks all previously exported animations
   34  10/22/01 Colin	Changed format of plBitmap
   35  10/30/01	mf		Change to span format, breaks anything with visible geometry.
   36	11/5/01	mcn		Changed structure of sound classes to be far more intuitive and bug-free.
   37	11/9/01	ee		Just for fun.
   38  11/13/01 bob		Changed file format for plAnimTimeConvert / plAnimCmdMsg / plAGAnim (sense a theme?) 
   39  11/25/01 mf		More sorting info for drawable geometry.
   40  11/29/01 mcn		Fixed sound fade param read/write. Anything with sounds must be re-exported.
   41  12/04/01	bob		More animation file format changes.
   42  12/05/01 mcn		Changes to sound format. Now properties are in a general props field. Also added disable-LOD prop to sounds
   43  12/18/01	cjp		changes to physics system
   44  12/18/01 bob		anim file format.
   45  12/19/01 Colin	anim file format, again.
   46  12/28/01 mf		DrawInterface format change to purge the last of the Opaque/Blending dualism.
   47	 1/2/01	mf		Decoupled the hardware and software skinning vertex formats.
   48 	 1/6/01	mf		Added grey area to Soft Regions (formerly Soft Volumes).
   49   1/17/02 cp		new camera system checked into client and plugins	
   50   1/21/02 Colin	Physics changes
   51   1/24/02 Colin	Animation format change
   52   2/14/02 bob		plAnimTimeConvert format change
   53   2/14/02 matt    made all brains non-keyed. reordering all over the place
   54   3/15/02 cjp		new LOS query types, format change to plHKPhysical	
   55   4/09/02 cjp		more new LOS query types, format change to plHKPhysical, camera type changes	
   56   4/23/02 bob		nuked plSimpleModifier from plAGMasterMod. Changes file format for animation.
   57   5/17/02	Colin	Changed Uoid format for cloning
   58	7/02/02	thamer	Changed synchedOject R/W format to support more LocalOnly options
   59	8/14/02	bob		Anim file format
   60	2/08/03 mf		Changed formats for everything drawable and/or physical. That leaves behaviors, but it's about time for a major version change anyway.
   61	2/18/03 mf		Between my changes and Bob's, we're just not sure what hasn't changed anymore. At least drawables and avatars.
   62	3/30/03 mf		Added LoadMask to plUoid
   63	5/30/03	thamer	optimized Uoid size
   64  10/28/05 jeff	changed plLocation to handle more pages and plUoid for optimization reasons
   65	2/22/06 bob		animation key rewrite to save space
   66   2/27/06 bob		64-bit quaternion anim keys
   67	2/28/06 bob		Anims store UInt16 frame numbers, not 32-bit float times.
   68	3/03/06 bob		constant anim channels (plMatrixConstant, plScalarConstant had no R/W methods)
   69	5/08/06 bob		changed plVertCoder and hsMatrix44::Read/Write
   70	2/12/07 bob		Merged in several registry/resMangaer fixes
*/

/*	Minor Log							---Death to those who do not log changes---
	#	Date	Who		comment
	1	5/8/01	Paulg	Added version Number
	2	5/9/01	mcn		Changed color components of drawableSpans
	0	5/11/01	mf		Dropped back to zero on Major Version change
	1	8/06/01 thamer	Upped the version for mf's anim callback changes.
	2   8/06/01 bob		Changes to particle system read/write. 
	0	8/13/01	mcn		Bumped back to 0 due to major version change.
	1   8/23/01 bob		Added animation controller to particle systems, changing their format.
	0	8/24/01 mcn		Bumped back to 0 yet again.
	1	8/27/01	mcn		Changed how emissive flags are handled on materials.
	2	8/29/01 bob		Changed plAvatarMod file format
	0   9/05/01	thamer	Bumped back to 0 yet again.
	1	9/17/01 matt    Avatar only.
	2	9/24/01 bob		Avatar and sound file formats changed. (For age linking effects)
	0	9/25/01 mf		Reset to zero for major change.
   1	10/7/01 Colin	Format of plResponderModifier and plEventCallbackMsg changed.
   0	10/9/01 ee		Reset to zero for major change.
   1	10/11/01 mcn	Changed sound format. Anything with sounds (including avatar b/c of linking sounds) breaks. Is this a record for # of version changes in one week?
   1	10/15/01 mcn	Added soft volumes to sounds. Breaks anything with sounds. Again.
   2	10/17/01 Colin	Changed format of plAGAnim
   0	10/22/01 Colin	Reset to zero for major change.
   1	11/01/01 bob	Changed format for plAGAnim and plAGMasterMod. Will break avatars without re-export.
   0	11/02/01 mf		Reset to zero for major change.
   1	11/28/01 mcn	Changed meaning of sound volume property. Will work if not re-exported, but will sound wrong.
   0	11/29/01 mcn	Reset on major version change.
   1	12/10/01 bob	Changes to animTimeConvert. Animated materials will need a re-export.
   0	12/18/01 bob	Reset to zero for major change.
   1	1/07/02	 bob	File format change for particle systems.
   0	1/21/02  Colin	Reset to zero for major change.
   1	1/24/02  Colin	File format for responders
   2	1/24/02  mcn	Changed postEffectMod format. Not many people use it though, so only minor version change.
   0	1/24/02  Colin	Reset to zero for major change.
   1	1/28/02	 bob	File format change to avatars for clothing customization.
   2	1/30/02	 Colin	File format change to sit component
   3	1/31/02	 Colin	File format change to logic modifier (all detector components)
   4	2/13/02  Colin	File format change to ladder modifier
   0	2/14/02  bob	Reset to zero for major change.
   1(5)	2/14/02	 mcn	GUI control format changes to support dynamic text layers (the RIGHT way) 
   2(6)	2/19/02	 mcn	Added version field to dialogs, to allow synching with C++ and Python code (just in case)
   7	3/01/02	 mcn	Moved GUI controls to pfGUIColorScheme methods of handling colors/fonts
   8	3/01/02  cjp	changed format of new camera brains, only affects the few using them right now
   10	3/08/02	 mcn	Changed internal format of sounds to facilitate packing them in files later
   11	3/08/02	 mcn	Added a shadow option to GUI color schemes. Also added mouse-over animations to buttons.
   12	3/12/02  bob	Change format of clothing
   13   3/15/02  matt   Changed base class for sit modifier
   0	3/15/02  cjp	Only chris forgot to log it - mf
   1	3/29/02  mf		Added light group support for particle systems.
   2	4/02/02  Colin	Format change for responder modifiers
   0	4/15/02  cjp	Only chris forgot to log it - mf
   1	4/15/02	 mf		Added a parm to partycle systems just for fun.
   2	4/17/02	 cjp	Added new modifier for interface information, changed plMaxNode.cpp.
   0	4/23/02	 bob	Reset to zero.
   1	4/25/02	 mcn	GUI objects no longer fog. Must reexport GUI components.
   2	5/05/02	 mf		Particle system enhancements
   3	5/06/02  matt	Changes to one shot modifier and multistage modifier
   4	5/06/02	 bob	Changes to plArmatureMod and Clothing stuff. For swappable meshes and footsteps.
   5	5/07/02  bob	Changed clothing item file format (again) for text descriptions and thumbnails
   6	5/09/02  mcn	Added sound event capabilities to GUI controls
   7	5/13/02  mcn	Added some new options to GUI knobs
   8	5/14/02  matt	Fix net propagation for animation stages (fading) and generic brains (exit flags)
   0	5/17/02  Colin	Reset for major version
   1	5/21/02	 mcn	Added a channel select option for plWin32Sounds
   2	5/23/02  bob	Added multiple texture layers per element in plClothingItem
   3	5/23/02	 mcn	Added some options to plSoundBuffer.
   4	6/18/02	 mcn	Added some more options to plSound, incl. localOnly flags
   6	6/21/02  mcn	Updated plDynamicTextMap to include an initial image buffer
   7	6/26/02  mcn	Major revision to sound system to support hardware acceleration
   0	7/02/02	thamer	Reset for major version
   1    7/08/02  matt   Format change for animation stages -- added next/prevStage override
   2	7/10/02  bob	Format changes for avatar footstep sounds
   3	7/12/02  mcn	Format change to sounds for EAX effects
   4	7/23/02	 bob	Format change to footstep sounds for more surface options
   5	7/29/02	 mcn	More EAX format changes to sounds
   6	7/29/02	 mcn	Added cutoff attenuation to spot/omni lights
   7	8/01/02	 bob	Format change to clothing items
   0	8/14/02	 bob	Reset for major version
   1	8/19/02	 bob	plClothingItem file format
   2	9/02/02	 bob	plArmatureLODMod file format change for bone LOD
   3	9/12/02	 mf		Making ripples and waves play nice with each other.
   4	9/18/02	 bob	plClothingItem file format... again
   5	9/19/02	 mcn	New GUI control proxy stuff
   6	9/23/02	 mcn	Removed dead sound stuff
   7	9/24/02	 mcn	Sound priority stuff
   8	9/25/02	 mcn	Support for new grouped random sound objects
   9	10/15/02 mcn	Material anim support in GUI controls
   10	10/21/02 mcn	Variable volume support to group sounds. No format break.
   11	10/29/02 cjp	proper python notification of avatar page out & last avatar out plus elevator persistance fix - breaks message format for exclude regions 
   12	10/29/02 mcn	Fixing chris's booboo 
   13	10/29/02 cjp	Changed camera component data format slightly.
   16	11/18.02 cjp	changed camera speed components & objects, don't know where v 14 & 15 went	
   17   12/04/20 matt    New line-of-sight categories; format change for physicals.
   18	12/05/02 mf		Enhanced linefollowmod to play nice with stereizer, and added field to occluder's cullpoly.
   19	12/17/02 matt	Bumped armaturemod, based on strong circumstantial evidenced that I missed something.
   20	12/31/02 matt	New format for animation stages, written by the multistage mod.
   21   01/03/03 matt   Change to sitmodifier.
   22	01/16/03 matt	More simplification for animation stages and generic brains.
   23	01/20/03 bob	Added layer to clothing items for aged skin blending
   24	01/21/03 mf		plLayers now read and write out their shaders.
   25	01/29/03 bob	plMorphSequence read/writes the plSharedMeshes it uses
   27	02/05/03 mcn	Updates to pfGUIButtonMod
   0	02/18/03 mf		Reset for major version change.
   1	02/19/03 bob	Added layers to plClothingItem. Took the opp to cleanup the R/W functions
   2	02/21/03 mf		Added features to dynamic water. No one should notice.
   3	02/24/03 cjp	changed animated cameras - added new commands for controlling them
   4	02/24/03 mcn	Updates to GUI stuff to support, er, new GUI stuff.
   5	03/11/03 bob	Clothing and linkSound format change
   0	03/30/03 mf		Reset for major version change.
   9	04/14/03 Colin	Havok change.  At 9 since mf forgot to bump the version (and Matt did a bunch of undocumented bumps)
   10	04/15/03 bob	Added a footstep surface type
   11	4/18/03	 mcn	Added list of the layers grabbed by a GUI DynDisplay
   12	4/23/03	 bob	File format for plMultistageBehMod, needed for a ladder fix
   13	05/01/03 Colin	Changed how Havok vectors and quats are written
   14	03/30/03 mf		Particle effect enhancement
	0	05/30/03 thamer	Reset for major version change.
	1	06/01/03 bob	Added a flags variable to plSharedMesh
	2   06/06/03 markd  Added NotifyType for GUIButtons
	3	06/07/03 mcn	Added sound groups to physicals
	4	06/24/03 bob	More params for Flocking particles
    5	07/05/03 mf		Particle and footprints working together
	6	07/13/03 bob	Avatar file format
	7	07/31/03 bob	LinkToAgeMsg (which affects responders) and panic link regions
	8	08/21/03 Colin	Removed some stuff from plSoundBuffer
	9	08/22/03 bob	Added info to plClothingItem
   10	09/16/03 bob	Removed stuff in plAnimCmdMsg, which affects responders.
   11	09/18/03 mf		Changed plLoadMask, of which plWaveSet7 is the biggest user.
   12	01/03/04 jeff	pfGUIDynDisplayCtrl now stores material as well as layer information
!! 11	02/10/04 mf		Dropped back a version, to reduce patch size for Expansion 1.
   12	03/12/04 bob	New stuff in Swim Regions
    0	10/28/05 jeff	Reset for major version change
	1	11/28/05 jeff	GUI text boxes can now pull strings from the localization mgr
	2	12/01/05 jeff	pfKIMsg can now handle unicode strings
	3	02/02/06 adam	modified plDynamicEnvMap as a part of back-porting planar reflections from P21
	0	02/22/06 bob	Reset for major version change
	1	04/12/06 Colin	Changed physical format
	0	05/08/06 bob	Reset for major version change
	1   05/16/06 markd  Changed physics format to include boxes
	2	06/26/06 jeff	Changed coop brain format so book sharing works again
	3	12/05/06 bob	Avatar uses a render target instead of a plMipmap.
	4	01/16/07 bob	Still does, it's just not created at export.
	5	01/24/07 adam	Changed plAGMasterMod so one can be set as a group master in grouped anims
	0	02/12/07 bob	Reset for major version change
	1	03/29/07 jeff	Changed plLoadAvatarMsg and plArmatureMod to be more flexible
	2	06/28/07 jeff	Changed plAvBrainHuman format to store whether it's an actor or not
*/

#endif // plVersion_h_inc