File Release Notes and Changelog
Notes:
Changes:
Purple# change list (since v0.3 alpha)
======================================
Thanks to (tell me if I forgot you):
Didl - GuiScrollList
Magnus - sound volume and panning
Aladdin, NK and Cowboy for their helpful comments...
Purple# v0.4:
===================
* Moved AABB.cs to Purple.Math
* Added setter for IQuad.Size and fixed size bug in Quad.Update
* Implemented GuiText and added Purple.Graphics.Gui.IGuiText
* Added Purple.Graphics.Gui.IButton, Purple.Graphics.Gui.Button
* Changes to IMouse and IKeyboard => event based and simplified interfaces
* Added Purple.Graphics.Gui.IGuiGauge, Purple.Graphics.Gui.GuiGauge
* Changed OnRender to OnRender(float deltaTime), introduced RenderEventHandler and added IRenderHandler.
* Added IMouseHandler and IRenderHandler to IGuiElement and removed IDrawable
* Add Initialized to InputEngine and IInputEngine
* Introduces Purple.Collections.CollectionBase
* Initial implementation of AI.FSM namespace...
* Use own mouse cursor within PurpleControl...
* Changed to FMOD 3.71 - ISoundObject implements IDisposable now
* SoundInit.Close disposes all soundObjects..
* Implementation of some classes in Purple.Actions namespace
* Added GuiElement.Visible property
* Added Purple.Graphics.DisplayModes collection and a Find method.
* Added 2d.fx and mouse cursor to Purple.Resources
* Added standard EffectLoader
* IQuadFactory and IQuad implement the IMultiApply interface instead of the method ApplyState
* Changed directory system of the Purple# projects (hopefully the last major change)
* Added an autoResize flag to ITextureLoader.Load(Stream) for controlling if the image is resized
to a power of two dimension of hardware that doesn't support other texture dimensions.
* Added some tutorials.
* Some minor changes in TextureManager.
* CGFX 1.2, DirectXFX effects work now - but there are still many missing features
Purple# v0.5:
===================
* Add IFileSystem, disc file system, zip file system (using SharpZipLib), RefFileSystem ...
- Mesh- and AnimationImporters use fs now...
- EffectCompiler uses IFileSystem instead of Path
- TextureManager converted
- Quake3Loader uses fs now...
- ShaderCompiler, HLSLShaderCompiler uses fs
- MD3Loader
- Purple.PlugIn.Factory
- Added Tutorial
- Added Purple.IO.Path that provides some filePath helper stuff
- Added ResourceFileSystem
* Added Purple.Engine handling all the core stuff
* Added PlugIn unloading
* Moved Skeleton and Bindings from IMeshImporter to ISkeletonImporter
* Moved the Quake3LevelLoader to the importers and made it an IMeshImporter
* IAction
- Added method Finish() to IAction
- Added event Started to IAction
- Changed ActionFinishedHandler to ActionHandler (also used for Started event)
- Removed Start(), Stop(), Apply()
- Added ActionScheduler
* Purple.Math
- Made Matrix3, Matrix4 serializable...
- Many updates to the Quaternion class
- Many updates to the Math.Basic class
* Added SortedMultiList
* Some minor bugfixes of the tutorials
* Fixed many MayaExporter Bugs and upgraded to Maya 5.0
* Added Purple.Graphics.Particles namespace with some particle system related classes
* Added Purple.AI.Gestures namespace that can be used for mouse gesture recognition
* Purple.Input
- Purple.Input.Mouse returns positions relative to the window size [0,1]
- Added standard mouse cursor resource
- Added cursor handling to Mouse
* Calculation of frameRate interpolates over 16 frames now
* Fixed a bug in SubTexture
* Added IRender interface that contains the OnRender(deltaTime) method
* Added Gui HowTo
Purple# v0.6:
===================
* Added Purple.Net namespace for network and multiplayer support
- Supports Udp and Tcp
- Packetizer creating packets of the network stream
* Reengineering of the Serialization namespace.
- Simpler serialization of objects
- Faster serialization of objects
- Smaller serialization data
- Removed all serializer objects.
* Added Tutorial4 for SharpDevelop
* FxCop Corrections to PurpleSharp.dll and PlugIns
- added strong name, that can be enabled via the STRONGNAME preprocessor flag (however just I should have the correct private key ;-)
- ComVisible is set to false for assemblies
- Make most of Purple# CLS compliant - some of the protected SetXXXX will be replaced by mixed visibility properties in .NET 2.0 again ...
* Fixed bug concerning VB.NET - it seems that the time, the static class constructor is executed, varies between VB and C#..
suprisingly the bug just appeared with SharpDevelop - !!!strange!!!
* Added Purple.Graphics.Terrain namespace and some classes
* Fixed Bug concerning that required an initialized GraphicsEngine
* Fixed 2d bug that caused rendering of lines at the borders of sprites
* Fixed in Gui Tutorial that occured when the window got resized and the button pressed
* Added Skinning class that provides some functionality for bone animation
* Renamed some player related classes
* Added an optional matrix per subset to the mesh
* Added ShadowVolume class for Stencil Shadows
* Added ColorChannels and ColorWriteEnable renderState
* Converted Purple# to DirectX Summer Update 2004.
* Fixed bug when cloning streams
* Added HLSLShaderCompiler to Device
* UploadConstants is now called before drawing a SubSet and not when an effect is set.
* Fixed line alignment of text
* Reworked update system of shader constants -> changeCounter
* added region to big file header
* Started with lighting stuff.
* Added stencil shadowing support
* Added Hover and Leave event to Button
* Added struct support for shader constants
* global error handling via Purple.Engine.ExceptionHandler...
* Changed initialisation to GraphicsSettings system that can be loaded from a configuration file or filled by a form...
* Added Format and GraphicsEngine.GetXXXBitInfo for Format
* replaced IDisplayMode, DisplayMode with struct DisplayMode within Purple.Graphics
* Size of form can now be set in OnInit without seeing the window resized
* removed DrawPointSprite
* Added Surface class - renamed TextureDescription to SurfaceDescription
* Extend ParticleSystem with IParticleEmitter interface and classes and made the whole namespace more complete and usable
* Added some missing SubTexture functionality
* Added more Buttons to the mouse and added support for native mouse cursor -> THX to Magnus!
* Addes some new surface formats.
* Added volume and panning to sound objects -> THX to Magnus!
Purple# v0.7:
===================
* Some extensions to the GUI.
- Added OnChar to GuiManager and gui elements.
- Added GuiTextBox.
- Added GuiProgressBar.
- Added GuiScrollBar.
- Added GuiScrollList (thanks to Didl).
- Added concept of focus to GuiManager.
- Fixed moving GuiGauge bug
- DebugOverlay
* Complete rework of the effect framework.
- Effect-driven => everything is rendered via effects
- Added shader library that contains some standard functions and structures
* Added support for shader debugging
* Preprocessor for effect files
* Reworked 2d engine -> simpler and faster ;-)
* SerializeStream can now be used by developer
- made public
- removed some complicated interaction with ISerializeCodec
* Made Purple# compatible to NVidias NVPerfHUD 2.1
* Some cool stuff I forgot to document and that I can't remember anymore
* Added some standard event handlers (VoidEventHandler, IntEventHandler, FloatEventHandler, ...)
* Management of textures is now widely controlled by the engine.
* Joystic support
- Force Feedback
* Removed RenderLoop.cs and added functionatliy to Engine.cs
* Game Framework
- Added PostRender, PreRender to PurpleForm for time consuming calculations that could
slow down the rendering process.
- Added BeginScene, EndScene, Present to PurpleForm
- Added DebugOverlay functionality to PurpleForm
- Added InitInputEngine to PurpleForm
* Action framework
- simplified Finish() and OnFinished() methods
- added VolumeFade Action for sound
* Corrected all tutorials and added some new ones
* Model, Mesh and Skeleton class changes
- The model class can be used to represent an (animated) character
- The model class consists of a skeleton, meshes and models that can be attached to
a certain bone of the skeleton
- The skeleton can be animated via Channels that influence a certain region of the skeleton
- Meshes can be animated by using BlendMeshes or SkinnedMeshes
- The skeleton stores the animated and prebound joints now itself
- Meshes and Channels can be animated via a player
- There is no seperate implementation for SkinnedModels, MD3Model, MD5Model anymore
Todo:
-----
* Rework (xml and binary) model format to suit the new way models are handled
* Effect restore state ...
* Light, Material - shadervars
* Check flags for textures, vertex, index buffers - DrawUserIndexedPrimitive,
* Maya exporter: textures, fx, automatic add of .mesh.xml although already .xml
* show depth, stencil, z, .. buffer - assign keys also wor fullscreen, windowed, wireframe modes...
* add some common exception handling stuff - PurpleException, StandardExceptions, Assert stuff, ...
* Effect.Clone, EffectManager reusing effects
* rework SceneGraph -> BeforeDraw.. (RegisterForRendering takes IRenderable or something like that) -> take a look at NVIDIA sceneGraph stuff
* Add DEUS Engine ask for MD2, QuakeLevelLoader code credits
* Include Textures in mesh file
* Incorporate CG
* RegisterForRendering also for mesh, models, ...
* MayaCameraController, QuakeCameraController care for initial view matrix
* Box, Sphere, Line, Plane, Ray
* HowTos
- Browser/ActiveX
- Terrain
- Shader
- SkyBox
- SceneGraph
- NormalMapper
- MayaExporter
- Light
- Shadows
* Exporter
- for 3dsMax 6.0
- for Blender
* Dynamic streams
* Networking Code
* ModelViewer, SpriteViewer
* Purple.Physics (ODE Wrapper)
* Many bugs and missing features in DirectXFx effects, CGFX, ...
* PlatformManager -> Timer
* FileSystem -> ConsoleForm.cs(416), Scanner.cs(323), Serializer.cs
* Video Playback
* Mouse picking
* heightmaps
* CgFX without installation
* Loading of .x files (DirectX Mesh format)
* more Lighting helper and classes
* GameState class (Forum)