Donate Share

PurpleSharp

File Release Notes and Changelog

Release Name: Purple 0.7 Docu

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)