mirror of https://github.com/raysan5/raylib
761 lines
42 KiB
Plaintext
761 lines
42 KiB
Plaintext
changelog
|
|
---------
|
|
|
|
Current Release: raylib 2.0.0 (July 2018)
|
|
|
|
-----------------------------------------------
|
|
Release: raylib 2.0 (July 2018)
|
|
-----------------------------------------------
|
|
KEY CHANGES:
|
|
- Removed external dependencies (GLFW3 and OpenAL)
|
|
- Complete redesign of audio module to use mini_al audio library
|
|
- Support AppVeyor and Travis CI (continuous integration) building
|
|
- Reviewed raymath.h for better consistency and performance (inlining)
|
|
- Refactor all #define SUPPORT_* into a single config.h
|
|
- Support TCC compiler (32bit and 64bit)
|
|
|
|
Detailed changes:
|
|
[build] REMOVED: GitHub develop branch
|
|
[build] REMOVED: External dependencies GLFW and OpenAL
|
|
[build] ADDED: Android 64bit ARM support
|
|
[build] ADDED: FreeBSD, OpenBSD, NetBSD, Dragon Fly OS support
|
|
[build] ADDED: Universal Windows Platform (UWP) support
|
|
[build] ADDED: Wayland Linux desktop support
|
|
[build] ADDED: AppVeyor CI for automatic Windows builds
|
|
[build] ADDED: Travis CI for automatic Linux/macOS builds
|
|
[build] ADDED: rglfw (GLFW3 module) to avoid external dependency
|
|
[build] ADDED: VS2017 UWP project
|
|
[build] ADDED: Builder project template
|
|
[build] ADDED: Compiler memory sanitizer for better debug
|
|
[build] ADDED: CMake package target and CI auto-deploy tags
|
|
[build] ADDED: DEBUG library building support
|
|
[build] ADDED: Notepad++ NppExec scripts
|
|
[build] REVIEWED: VS2015 and VS2017 projects
|
|
[build] REVIEWED: Android APK build pipeline
|
|
[core] REVIEWED: Window creation hints to support transparent windows
|
|
[core] Unified InitWindow() between platforms
|
|
[core] Export Android main entry point
|
|
[core] RENAMED: Begin3dMode() to BeginMode3D()
|
|
[core] RENAMED: End3dMode() to EndMode3D()
|
|
[core] RENAMED: Begin2dMode() to BeginMode2D()
|
|
[core] RENAMED: End2dMode() to EndMode2D()
|
|
[core] RENAMED: struct Camera to Camera3D
|
|
[core] RENAMED: struct SpriteFont to Font -> plus all required functions!
|
|
[core] RENAMED: enum TextureFormat to PixelFormat
|
|
[core] REVIEWED: Rectangle params int to float
|
|
[core] REVIEWED: timing system for macOS
|
|
[core] REMOVED: ColorToFloat()
|
|
[core] ADDED: GetCurrentTime() on macOS
|
|
[core] ADDED: GetTime()
|
|
[core] ADDED: struct Vector4
|
|
[core] ADDED: SetTraceLog() to define trace log messages type
|
|
[core] ADDED: GetFileName() to get filename from path string
|
|
[core] ADDED: ColorToHSV()
|
|
[core] ADDED: ColorNormalize()
|
|
[core] ADDED: SetWindowSize() to scale Windows in runtime
|
|
[core] ADDED: SetMouseScale() to scale mouse input
|
|
[core] ADDED: key definitions - KEY_GRAVE, KEY_SLASH, KEY_BACKSLASH
|
|
[core] RENAMED: GetHexValue() to ColorToInt()
|
|
[core] REVIEWED: Fade()
|
|
[core] REVIEWED: InitWindow() to avoid void pointer (safety)
|
|
[core] Support camera 3d orthographic projection mode
|
|
[shapes] ADDED: DrawRectangleLinesEx()
|
|
[textures] Improved pixel formats support (32bit channels)
|
|
[textures] Improved textures support for OpenGL 2.1
|
|
[textures] REMOVED: DrawRectangleT() --> Added support to DrawRectangle()
|
|
[textures] ADDED: GetPixelDataSize(); pixel data size in bytes (image or texture)
|
|
[textures] ADDED: ImageAlphaClear() --> Clear alpha channel to desired color
|
|
[textures] ADDED: ImageAlphaCrop() --> Crop image depending on alpha value
|
|
[textures] ADDED: ImageAlphaPremultiply() --> Premultiply alpha channel
|
|
[textures] ADDED: ImageDrawRectangle()
|
|
[textures] ADDED: ImageMipmaps()
|
|
[textures] ADDED: GenImageColor()
|
|
[textures] ADDED: GetPixelDataSize()
|
|
[textures] ADDED: ImageRotateCW()
|
|
[textures] ADDED: ImageRotateCCW()
|
|
[textures] ADDED: ImageResizeCanvas()
|
|
[textures] ADDED: GetImageDataNormalized()
|
|
[textures] REVIEWED: ImageFormat() to use normalized data
|
|
[textures] REVIEWED: Manual mipmap generation
|
|
[textures] REVIEWED: LoadASTC()
|
|
[textures] REVIEWED: GenImagePerlinNoise()
|
|
[textures] REVIEWED: ImageTextEx() to support UTF8 basic characters
|
|
[textures] REVIEWED: GetTextureData() for RPI - requires some work
|
|
[textures] Added new example: text drawing on image
|
|
[text] Corrected issue with ttf font y-offset
|
|
[text] Support SDF font data generation
|
|
[text] ADDED: GenImageFontAtlas()
|
|
[text] ADDED: LoadFontData() to load data from TTF file
|
|
[text] REMOVED: LoadTTF() internal function
|
|
[text] REVIEWED: DrawTextEx() - avoid rendering SPACE character!
|
|
[text] RENAMED: GetDefaultFont() to GetFontDefault()
|
|
[rlgl] ADDED: rlCheckBufferLimit()
|
|
[rlgl] ADDED: LoadShaderCode()
|
|
[rlgl] ADDED: GetMatrixModelview()
|
|
[rlgl] ADDED: SetVrDistortionShader(Shader shader)
|
|
[rlgl] REVIEWED: rlLoadTexture() - added mipmaps support, improved compressed textures loading
|
|
[rlgl] REVIEWED: rlReadTexturePixels()
|
|
[models] Support 4 components mesh.tangent data
|
|
[models] Removed tangents generation from LoadOBJ()
|
|
[models] ADDED: MeshTangents()
|
|
[models] ADDED: MeshBinormals()
|
|
[models] ADDED: ExportMesh()
|
|
[models] ADDED: GetCollisionRayModel()
|
|
[models] RENAMED: CalculateBoundingBox() to MeshBoundingBox()
|
|
[models] REMOVED: GetCollisionRayMesh() - does not consider model transform
|
|
[models] REVIEWED: LoadMesh() - fallback to default cube mesh if loading fails
|
|
[audio] ADDED: Support for MP3 fileformat
|
|
[audio] ADDED: IsAudioStreamPlaying()
|
|
[audio] ADDED: SetAudioStreamVolume()
|
|
[audio] ADDED: SetAudioStreamPitch()
|
|
[utils] Corrected issue with SaveImageAs()
|
|
[utils] RENAMED: SaveImageAs() to ExportImage()
|
|
[utils] REMOVED: rres support - moved to external library (rres.h)
|
|
[shaders] REVIEWED: GLSL 120 shaders
|
|
[raymath] ADDED: Vector3RotateByQuaternion()
|
|
[raymath] REVIEWED: math usage to reduce temp variables
|
|
[raymath] REVIEWED: Avoid pointer-based parameters for API consistency
|
|
[physac] REVIEWED: physac.h timing system
|
|
[examples] Replaced dwarf model by brand new 3d assets: 3d medieval buildings
|
|
[examples] Assets cleaning and some replacements
|
|
[games] ADDED: GGJ18 game - transmission mission
|
|
[games] REVIEWED: Light my Ritual game - improved gameplay drawing
|
|
[*] Updated external libraries to latest version
|
|
[*] Multiple bugs corrected (check github issues)
|
|
|
|
-----------------------------------------------
|
|
Release: raylib 1.8.0 (Oct 2017)
|
|
-----------------------------------------------
|
|
NOTE:
|
|
In this release, multiple parts of the library have been reviewed (again) for consistency and simplification.
|
|
It exposes more than 30 new functions in comparison with previous version and it improves overall programming experience.
|
|
|
|
BIG CHANGES:
|
|
- New Image generation functions: Gradient, Checked, Noise, Cellular...
|
|
- New Mesh generation functions: Cube, Sphere, Cylinder, Torus, Knot...
|
|
- New Shaders and Materials systems to support PBR materials
|
|
- Custom Android APK build pipeline with simple Makefile
|
|
- Complete review of rlgl layer functionality
|
|
- Complete review of raymath functionality
|
|
|
|
detailed changes:
|
|
[rlgl] RENAMED: rlglLoadTexture() to rlLoadTexture()
|
|
[rlgl] RENAMED: rlglLoadRenderTexture() to rlLoadRenderTexture()
|
|
[rlgl] RENAMED: rlglUpdateTexture() to rlUpdateTexture()
|
|
[rlgl] RENAMED: rlglGenerateMipmaps() to rlGenerateMipmaps()
|
|
[rlgl] RENAMED: rlglReadScreenPixels() to rlReadScreenPixels()
|
|
[rlgl] RENAMED: rlglReadTexturePixels() to rlReadTexturePixels()
|
|
[rlgl] RENAMED: rlglLoadMesh() to rlLoadMesh()
|
|
[rlgl] RENAMED: rlglUpdateMesh() to rlUpdateMesh()
|
|
[rlgl] RENAMED: rlglDrawMesh() to rlDrawMesh()
|
|
[rlgl] RENAMED: rlglUnloadMesh() to rlUnloadMesh()
|
|
[rlgl] RENAMED: rlglUnproject() to rlUnproject()
|
|
[rlgl] RENAMED: LoadCompressedTexture() to LoadTextureCompressed()
|
|
[rlgl] RENAMED: GetDefaultTexture() to GetTextureDefault()
|
|
[rlgl] RENAMED: LoadDefaultShader() to LoadShaderDefault()
|
|
[rlgl] RENAMED: LoadDefaultShaderLocations() to SetShaderDefaultLocations()
|
|
[rlgl] RENAMED: UnloadDefaultShader() to UnLoadShaderDefault()
|
|
[rlgl] ADDED: rlGenMapCubemap(), Generate cubemap texture map from HDR texture
|
|
[rlgl] ADDED: rlGenMapIrradiance(), Generate irradiance texture map
|
|
[rlgl] ADDED: rlGenMapPrefilter(), Generate prefilter texture map
|
|
[rlgl] ADDED: rlGenMapBRDF(), Generate BRDF texture map
|
|
[rlgl] ADDED: GetVrDeviceInfo(), Get VR device information for some standard devices
|
|
[rlgl] REVIEWED: InitVrSimulator(), to accept device parameters as input
|
|
[core] ADDED: SetWindowTitle(), Set title for window (only PLATFORM_DESKTOP)
|
|
[core] ADDED: GetExtension(), Get file extension
|
|
[shapes] REMOVED: DrawRectangleGradient(), replaced by DrawRectangleGradientV() and DrawRectangleGradientH()
|
|
[shapes] ADDED: DrawRectangleGradientV(), Draw a vertical-gradient-filled rectangle
|
|
[shapes] ADDED: DrawRectangleGradientH(), Draw a horizontal-gradient-filled rectangle
|
|
[shapes] ADDED: DrawRectangleGradientEx(), Draw a gradient-filled rectangle with custom vertex colors
|
|
[shapes] ADDED: DrawRectangleT(), Draw rectangle using text character
|
|
[textures] ADDED: SaveImageAs(), Save image as PNG file
|
|
[textures] ADDED: GenImageGradientV(), Generate image: vertical gradient
|
|
[textures] ADDED: GenImageGradientH(), Generate image: horizontal gradient
|
|
[textures] ADDED: GenImageGradientRadial(), Generate image: radial gradient
|
|
[textures] ADDED: GenImageChecked(), Generate image: checked
|
|
[textures] ADDED: GenImageWhiteNoise(), Generate image: white noise
|
|
[textures] ADDED: GenImagePerlinNoise(), Generate image: perlin noise
|
|
[textures] ADDED: GenImageCellular(), Generate image: cellular algorithm. Bigger tileSize means bigger cells
|
|
[textures] ADDED: GenTextureCubemap(), Generate cubemap texture from HDR texture
|
|
[textures] ADDED: GenTextureIrradiance(), Generate irradiance texture using cubemap data
|
|
[textures] ADDED: GenTexturePrefilter(), Generate prefilter texture using cubemap data
|
|
[textures] ADDED: GenTextureBRDF(), Generate BRDF texture using cubemap data
|
|
[models] REMOVED: LoadMeshEx(), Mesh struct variables can be directly accessed
|
|
[models] REMOVED: UpdateMesh(), very ineficient
|
|
[models] REMOVED: LoadHeightmap(), use GenMeshHeightmap() and LoadModelFromMesh()
|
|
[models] REMOVED: LoadCubicmap(), use GenMeshCubicmap() and LoadModelFromMesh()
|
|
[models] RENAMED: LoadDefaultMaterial() to LoadMaterialDefault()
|
|
[models] ADDED: GenMeshPlane(), Generate plane mesh (with subdivisions)
|
|
[models] ADDED: GenMeshCube(), Generate cuboid mesh
|
|
[models] ADDED: GenMeshSphere(), Generate sphere mesh (standard sphere)
|
|
[models] ADDED: GenMeshHemiSphere(), Generate half-sphere mesh (no bottom cap)
|
|
[models] ADDED: GenMeshCylinder(), Generate cylinder mesh
|
|
[models] ADDED: GenMeshTorus(), Generate torus mesh
|
|
[models] ADDED: GenMeshKnot(), Generate trefoil knot mesh
|
|
[models] ADDED: GenMeshHeightmap(), Generate heightmap mesh from image data
|
|
[models] ADDED: GenMeshCubicmap(), Generate cubes-based map mesh from image data
|
|
[raymath] REVIEWED: full Matrix functionality to align with GLM in usage
|
|
[raymath] RENAMED: Vector3 functions for consistency: Vector*() renamed to Vector3*()
|
|
[build] Integrate Android APK building into examples Makefile
|
|
[build] Integrate Android APK building into templates Makefiles
|
|
[build] Improved Visual Studio 2015 project, folders, references...
|
|
[templates] Reviewed the full pack to support Android building
|
|
[examples] Reviewed full collection to adapt to raylib changes
|
|
[examples] [textures] ADDED: textures_image_generation
|
|
[examples] [models] ADDED: models_mesh_generation
|
|
[examples] [models] ADDED: models_material_pbr
|
|
[examples] [models] ADDED: models_skybox
|
|
[examples] [models] ADDED: models_yaw_pitch_roll
|
|
[examples] [others] REVIEWED: rlgl_standalone
|
|
[examples] [others] REVIEWED: audio_standalone
|
|
[github] Moved raylib webpage to own repo: github.com/raysan5/raylib.com
|
|
[games] Reviewed game: Koala Seasons
|
|
[*] Updated STB libraries to latest version
|
|
[*] Multiple bugs corrected (check github issues)
|
|
|
|
-----------------------------------------------
|
|
Release: raylib 1.7.0 (20 May 2017)
|
|
-----------------------------------------------
|
|
NOTE:
|
|
In this new raylib release, multiple parts of the library have been reviewed for consistency and simplification.
|
|
It exposes almost 300 functions, around 30 new functions in comparison with previous version and, again,
|
|
it sets a stepping stone towards raylib future.
|
|
|
|
BIG changes:
|
|
- More than 30 new functions added to the library, check list below.
|
|
- Support of configuration flags on every raylib module, to customize library build.
|
|
- Improved build system for all supported platforms with a unique Makefile to compile sources.
|
|
- Complete review of examples and sample games, added new sample material.
|
|
- Support automatic GIF recording of current window, just pressing Ctrl+F12
|
|
- Improved library consistency and organization in general.
|
|
|
|
other changes:
|
|
[core] Added function: SetWindowIcon(), to setup icon by code
|
|
[core] Added function: SetWindowMonitor(), to set current display monitor
|
|
[core] Added function: SetWindowMinSize(), to set minimum resize size
|
|
[core] Added function: TakeScreenshot(), made public to API (also launched internally with F12)
|
|
[core] Added function: GetDirectoryPath(), get directory for a given fileName (with path)
|
|
[core] Added function: GetWorkingDirectory(), get current working directory
|
|
[core] Added function: ChangeDirectory(), change working directory
|
|
[core] Added function: TraceLog(), made public to API
|
|
[core] Improved timing system to avoid busy wait loop on frame sync: Wait()
|
|
[core] Added support for gamepad on HTML5 platform
|
|
[core] Support mouse lock, useful for camera system
|
|
[core] Review functions description comments
|
|
[rlgl] Removed function: GetStandardShader(), removed internal standard shader
|
|
[rlgl] Removed function: CreateLight(), removed internal lighting system
|
|
[rlgl] Removed function: DestroyLight(), removed internal lighting system
|
|
[rlgl] Removed function: InitVrDevice(), removed VR device render, using simulator
|
|
[rlgl] Removed function: CloseVrDevice(), removed VR device render, using simulator
|
|
[rlgl] Removed function: IsVrDeviceReady(), removed VR device render, using simulator
|
|
[rlgl] Removed function: IsVrSimulator(), removed VR device render, using simulator
|
|
[rlgl] Added function: InitVrSimulator(), init VR simulator for selected device
|
|
[rlgl] Added function: CloseVrSimulator(), close VR simulator for current device
|
|
[rlgl] Added function: IsVrSimulatorReady(), detect if VR device is ready
|
|
[rlgl] Added function: BeginVrDrawing(), begin VR simulator stereo rendering
|
|
[rlgl] Added function: EndVrDrawing(), end VR simulator stereo rendering
|
|
[rlgl] Renamed function: ReadTextFile() to LoadText() and exposed to API
|
|
[rlgl] Removed internal lighting system and standard shader, moved to example
|
|
[rlgl] Removed Oculus Rift support, moved to oculus_rift example
|
|
[rlgl] Removed VR device support and replaced by VR simulator
|
|
[shapes] Added function: DrawLineEx(), draw line with QUADS, supports custom line thick
|
|
[shapes] Added function: DrawLineBezier(), draw a line using cubic-bezier curves in-out
|
|
[shapes] Added function: DrawRectanglePro(), draw a color-filled rectangle with pro parameters
|
|
[textures] Removed function: LoadImageFromRES(), redesigning custom RRES fileformat
|
|
[textures] Removed function: LoadTextureFromRES(), redesigning custom RRES fileformat
|
|
[textures] Removed function: LoadTextureEx(), use instead Image -> LoadImagePro(), LoadImageEx()
|
|
[textures] Added function: LoadImagePro()), load image from raw data with parameters
|
|
[textures] Review TraceLog() message when image file not found
|
|
[text] Renamed function: LoadSpriteFontTTF() to LoadSpriteFontEx(), for consistency
|
|
[text] Removed rBMF fileformat support, replaced by .png
|
|
[text] Refactor SpriteFont struct (better for rres custom fileformat)
|
|
[text] Renamed some variables for consistency
|
|
[models] Added function: LoadMesh(), load mesh from file
|
|
[models] Added function: LoadMeshEx(), load mesh from vertex data
|
|
[models] Added function: UnloadMesh(), unload mesh from memory (RAM and/or VRAM)
|
|
[models] Added function: GetCollisionRayMesh(), get collision info between ray and mesh
|
|
[models] Added function: GetCollisionRayTriangle(), get collision info between ray and triangle
|
|
[models] Added function: GetCollisionRayGround(), get collision info between ray and ground plane
|
|
[models] Renamed function: LoadModelEx() to LoadModelFromMesh()
|
|
[models] Removed function: DrawLight(), removed internal lighting system
|
|
[models] Renamed function: LoadModelEx() to LoadModelFromMesh() for consistency
|
|
[models] Removed function: LoadStandardMaterial(), removed internal standard shader
|
|
[models] Removed function: LoadModelFromRES(), redesigning custom RRES fileformat
|
|
[models] Renamed multiple variables for consistency
|
|
[audio] Added function: SetMasterVolume(), define listener volume
|
|
[audio] Added function: ResumeSound(), resume a paused sound
|
|
[audio] Added function: SetMusicLoopCount(), set number of repeats for a music
|
|
[audio] Added function: LoadWaveEx(), load wave from raw audio data
|
|
[audio] Added function: WaveCrop(), crop wave audio data
|
|
[audio] Added function: WaveFormat(), format audio data
|
|
[audio] Removed function: LoadSoundFromRES(), redesigning custom RRES fileformat
|
|
[audio] Added support for 32bit audio samples
|
|
[audio] Preliminary support for multichannel, limited to mono and stereo
|
|
[audio] Make sure buffers are ready for update: UpdateMusicStream()
|
|
[utils] Replaced function: GetExtension() by IsFileExtension() and made public to API
|
|
[utils] Unified function: TraceLog() between Android and other platforms
|
|
[utils] Removed internal function: GetNextPOT(), simplified implementation
|
|
[raymath] Added function: QuaternionToEuler(), to work with Euler angles
|
|
[raymath] Added function: QuaternionFromEuler(), to work with Euler angles
|
|
[raymath] Added multiple Vector2 math functions
|
|
[build] Integrate Android source building into Makefile
|
|
[example] Added example: shapes_lines_bezier
|
|
[example] Added example: text_input_box
|
|
[github] Moved gh-pages branch to master/docs
|
|
[github] Moved rlua.h and Lua examples to own repo: raylib-lua
|
|
[games] Reviewed full games collection
|
|
[games] New game added to collection: Koala Seasons
|
|
[*] Reviewed and improved examples collection (new assets)
|
|
[*] Reorganized library functions, structs, enums
|
|
[*] Updated STB libraries to latest version
|
|
|
|
-----------------------------------------------
|
|
Release: raylib 1.6.0 (20 November 2016)
|
|
-----------------------------------------------
|
|
NOTE:
|
|
This new raylib version commemorates raylib 3rd anniversary and represents another complete review of the library.
|
|
It includes some interesting new features and is a stepping stone towards raylib future.
|
|
|
|
HUGE changes:
|
|
[rlua] Lua BINDING: Complete raylib Lua binding, ALL raylib functions ported to Lua plus the +60 code examples.
|
|
[audio] COMPLETE REDESIGN: Improved music support and also raw audio data processing and playing, +20 new functions added.
|
|
[physac] COMPLETE REWRITE: Improved performance, functionality and simplified usage, moved to own repository and added multiple examples!
|
|
|
|
other changes:
|
|
|
|
[core] Corrected issue on OSX with HighDPI display
|
|
[core] Added flag to allow resizable window
|
|
[core] Allow no default font loading
|
|
[core] Corrected old issue with mouse buttons on web
|
|
[core] Improved gamepad support, unified across platforms
|
|
[core] Gamepad id functionality: GetGamepadName(), IsGamepadName()
|
|
[core] Gamepad buttons/axis checking functionality:
|
|
[core] Reviewed Android key inputs system, unified with desktop
|
|
[rlgl] Redesigned lighting shader system
|
|
[rlgl] Updated standard shader for better performance
|
|
[rlgl] Support alpha on framebuffer: rlglLoadRenderTexture()
|
|
[rlgl] Reviewed UpdateVrTracking() to update camera
|
|
[rlgl] Added IsVrSimulator() to check for VR simulator
|
|
[shapes] Corrected issue on DrawPolyEx()
|
|
[textures] Simplified supported image formats support
|
|
[textures] Improved text drawing within an image: ImageDrawText()
|
|
[textures] Support image alpha mixing: ImageAlphaMask()
|
|
[textures] Support textures filtering: SetTextureFilter()
|
|
[textures] Support textures wrap modes: SetTextureWrap()
|
|
[text] Improved TTF spritefont generation: LoadSpriteFontTTF()
|
|
[text] Improved AngelCode fonts support (unordered chars)
|
|
[text] Added TraceLog info on image spritefont loading
|
|
[text] Improved text measurement: MeasureTextEx()
|
|
[models] Improved OBJ loading flexibility
|
|
[models] Reviewed functions: DrawLine3D(), DrawCircle3D()
|
|
[models] Removed function: ResolveCollisionCubicmap()
|
|
[camera] Redesigned camera system and ported to header-only
|
|
[camera] Removed function: UpdateCameraPlayer()
|
|
[gestures] Redesigned gestures module to header-only
|
|
[audio] Simplified Music loading and playing system
|
|
[audio] Added trace on audio device closing
|
|
[audio] Reviewed Wave struct, improved flexibility
|
|
[audio] Support sound data update: UpdateSound()
|
|
[audio] Added support for FLAC audio loading/streaming
|
|
[raygui] Removed raygui from raylib repo (moved to own repo)
|
|
[build] Added OpenAL static library
|
|
[build] Added Visual Studio 2015 projects
|
|
[build] Support shared/dynamic raylib compilation
|
|
[*] Updated LibOVR to SDK version 1.8
|
|
[*] Updated games to latest raylib version
|
|
[*] Improved examples and added new ones
|
|
[*] Improved Android support
|
|
|
|
-----------------------------------------------
|
|
Release: raylib 1.5.0 (18 July 2016)
|
|
-----------------------------------------------
|
|
NOTE:
|
|
Probably this new version is the biggest boost of the library ever, lots of parts of the library have been redesigned,
|
|
lots of bugs have been solved and some **AMAZING** new features have been added.
|
|
|
|
HUGE changes:
|
|
[rlgl] OCULUS RIFT CV1: Added support for VR, not oly Oculus Rift CV1 but also stereo rendering simulator (multiplatform).
|
|
[rlgl] MATERIALS SYSTEM: Added support for Materials (.mtl) and multiple material properties: diffuse, specular, normal.
|
|
[rlgl] LIGHTING SYSTEM: Added support for up to 8 lights of 3 different types: Omni, Directional and Spot.
|
|
[physac] REDESIGNED: Improved performance and simplified usage, physic objects now are managed internally in a second thread!
|
|
[audio] CHIPTUNES: Added support for module audio music (.xm, .mod) loading and playing. Multiple mixing channels supported.
|
|
|
|
other changes:
|
|
|
|
[core] Review Android button inputs
|
|
[core] Support Android internal data storage
|
|
[core] Renamed WorldToScreen() to GetWorldToScreen()
|
|
[core] Removed function SetCustomCursor()
|
|
[core] Removed functions BeginDrawingEx(), BeginDrawingPro()
|
|
[core] Replaced functions InitDisplay() + InitGraphics() with: InitGraphicsDevice()
|
|
[core] Added support for field-of-view Y (fovy) on 3d Camera
|
|
[core] Added 2D camera mode functions: Begin2dMode() - End2dMode()
|
|
[core] Translate mouse inputs to Android touch/gestures internally
|
|
[core] Translate mouse inputs as touch inputs in HTML5
|
|
[core] Improved function GetKeyPressed() to support multiple keys (including function keys)
|
|
[core] Improved gamepad support, specially for RaspberryPi (including multiple gamepads support)
|
|
[rlgl] Support stereo rendering simulation (duplicate draw calls by viewport, optimized)
|
|
[rlgl] Added distortion shader (embeded) to support custom VR simulator: shader_distortion.h
|
|
[rlgl] Added support for OpenGL 2.1 on desktop
|
|
[rlgl] Improved 2D vs 3D drawing system (lines, triangles, quads)
|
|
[rlgl] Improved DXT-ETC1 support on HTML5
|
|
[rlgl] Review function: rlglUnproject()
|
|
[rlgl] Removed function: rlglInitGraphics(), integrated into rlglInit()
|
|
[rlgl] Updated Mesh and Shader structs
|
|
[rlgl] Simplified internal (default) dynamic buffers
|
|
[rlgl] Added support for indexed and dynamic mesh data
|
|
[rlgl] Set fixed vertex attribs location points
|
|
[rlgl] Improved mesh data loading support
|
|
[rlgl] Added standard shader (embeded) to support materials and lighting: shader_standard.h
|
|
[rlgl] Added light functions: CreateLight(), DestroyLight()
|
|
[rlgl] Added wire mode functions: rlDisableWireMode(), rlEnableWireMode()
|
|
[rlgl] Review function consistency, added: rlglLoadMesh(), rlglUpdateMesh(), rlglDrawMesh(), rlglUnloadMesh()
|
|
[rlgl] Replaced SetCustomShader() by: BeginShaderMode() - EndShaderMode()
|
|
[rlgl] Replaced SetBlendMode() by: BeginBlendMode() - EndBlendMode()
|
|
[rlgl] Added functions to customize internal matrices: SetMatrixProjection(), SetMatrixModelview()
|
|
[rlgl] Unified internal shaders to only one default shader
|
|
[rlgl] Added support for render to texture (RenderTexture2D):
|
|
LoadRenderTexture() - UnloadRenderTexture()
|
|
BeginTextureMode() - EndTextureMode()
|
|
[rlgl] Removed SetShaderMap*() functions
|
|
[rlgl] Redesigned default buffers usage functions:
|
|
LoadDefaultBuffers() - UnloadDefaultBuffers()
|
|
UpdateDefaultBuffers() - DrawDefaultBuffers()
|
|
[shapes] Corrected bug on GetCollisionRec()
|
|
[textures] Added support for Nearest-Neighbor image scaling
|
|
[textures] Added functions to draw text on image: ImageDrawText(), ImageDrawTextEx()
|
|
[text] Reorganized internal functions: Added LoadImageFont()
|
|
[text] Security check for unsupported BMFonts
|
|
[models] Split mesh creation from model loading on heightmap and cubicmap
|
|
[models] Updated BoundingBox collision detections
|
|
[models] Added color parameter to DrawBoundigBox()
|
|
[models] Removed function: DrawQuad()
|
|
[models] Removed function: SetModelTexture()
|
|
[models] Redesigned DrawPlane() to use RL_TRIANGLES
|
|
[models] Redesigned DrawRectangleV() to use RL_TRIANGLES
|
|
[models] Redesign to accomodate new materials system: LoadMaterial()
|
|
[models] Added material functions: LoadDefaultMaterial(), LoadStandardMaterial()
|
|
[models] Added MTL material loading support: LoadMTL()
|
|
[models] Added function: DrawLight()
|
|
[audio] Renamed SoundIsPlaying() to IsSoundPlaying()
|
|
[audio] Renamed MusicIsPlaying() to IsMusicPlaying()
|
|
[audio] Support multiple Music streams (indexed)
|
|
[audio] Support multiple mixing channels
|
|
[gestures] Improved and reviewed gestures system
|
|
[raymath] Added QuaternionInvert()
|
|
[raymath] Removed function: PrintMatrix()
|
|
[raygui] Ported to header-only library (https://github.com/raysan5/raygui)
|
|
[shaders] Added depth drawing shader (requires a depth texture)
|
|
[shaders] Reviewed included shaders and added comments
|
|
[OpenAL Soft] Updated to latest version (1.17.2)
|
|
[GLFW3] Updated to latest version (3.2)
|
|
[stb] Updated to latest headers versions
|
|
[GLAD] Converted to header only library and simplified to only used extensions
|
|
[*] Reorganize library folders: external libs moved to src/external folder
|
|
[*] Reorganize src folder for Android library
|
|
[*] Review external dependencies usage
|
|
[*] Improved Linux and OSX build systems
|
|
[*] Lots of tweaks and bugs corrected all around
|
|
|
|
-----------------------------------------------
|
|
Release: raylib 1.4.0 (22 February 2016)
|
|
-----------------------------------------------
|
|
NOTE:
|
|
This version supposed another big improvement for raylib, including new modules and new features.
|
|
More than 30 new functions have been added to previous raylib version.
|
|
Around 8 new examples and +10 new game samples have been added.
|
|
|
|
BIG changes:
|
|
[textures] IMAGE MANIPULATION: Functions to crop, resize, colorize, flip, dither and even draw image-to-image or text-to-image.
|
|
[text] SPRITEFONT SUPPORT: Added support for AngelCode fonts (.fnt) and TrueType fonts (.ttf).
|
|
[gestures] REDESIGN: Gestures system simplified and prepared to process generic touch events, including mouse events (multiplatform).
|
|
[physac] NEW MODULE: Basic 2D physics support, use colliders and rigidbodies; apply forces to physic objects.
|
|
|
|
other changes:
|
|
|
|
[rlgl] Removed GLEW library dependency, now using GLAD
|
|
[rlgl] Implemented alternative to glGetTexImage() on OpenGL ES
|
|
[rlgl] Using depth data on batch drawing
|
|
[rlgl] Reviewed glReadPixels() function
|
|
[core][rlgl] Reviewed raycast system, now 3D picking works
|
|
[core] Android: Reviewed Android App cycle, paused if inactive
|
|
[shaders] Implemented Blinn-Phong lighting shading model
|
|
[textures] Implemented Floyd-Steinberg dithering - ImageDither()
|
|
[text] Added line-break support to DrawText()
|
|
[text] Added TrueType Fonts support (using stb_truetype)
|
|
[models] Implement function: CalculateBoundingBox(Mesh mesh)
|
|
[models] Added functions to check Ray collisions
|
|
[models] Improve map resolution control on LoadHeightmap()
|
|
[camera] Corrected small-glitch on zoom-in with mouse-wheel
|
|
[gestures] Implemented SetGesturesEnabled() to enable only some gestures
|
|
[gestures] Implemented GetElapsedTime() on Windows system
|
|
[gestures] Support mouse gestures for desktop platforms
|
|
[raymath] Complete review of the module and converted to header-only
|
|
[easings] Added new module for easing animations
|
|
[stb] Updated to latest headers versions
|
|
[*] Lots of tweaks around
|
|
|
|
-----------------------------------------------
|
|
Release: raylib 1.3.0 (01 September 2015)
|
|
-----------------------------------------------
|
|
NOTE:
|
|
This version supposed a big boost for raylib, new modules have been added with lots of features.
|
|
Most of the modules have been completely reviewed to accomodate to the new features.
|
|
Over 50 new functions have been added to previous raylib version.
|
|
Most of the examples have been redone and +10 new advanced examples have been added.
|
|
|
|
BIG changes:
|
|
[rlgl] SHADERS: Support for model shaders and postprocessing shaders (multiple functions)
|
|
[textures] FORMATS: Support for multiple internal formats, including compressed formats
|
|
[camera] NEW MODULE: Set of cameras for 3d view: Free, Orbital, 1st person, 3rd person
|
|
[gestures] NEW MODULE: Gestures system for Android and HTML5 platforms
|
|
[raygui] NEW MODULE: Set of IMGUI elements for tools development (experimental)
|
|
|
|
other changes:
|
|
|
|
[rlgl] Added check for OpenGL supported extensions
|
|
[rlgl] Added function SetBlenMode() to select some predefined blending modes
|
|
[core] Added support for drop&drag of external files into running program
|
|
[core] Added functions ShowCursor(), HideCursor(), IsCursorHidden()
|
|
[core] Renamed function SetFlags() to SetConfigFlags()
|
|
[shapes] Simplified some functions to improve performance
|
|
[textures] Review of Image struct to support multiple data formats
|
|
[textures] Added function LoadImageEx()
|
|
[textures] Added function LoadImageRaw()
|
|
[textures] Added function LoadTextureEx()
|
|
[textures] Simplified function parameters LoadTextureFromImage()
|
|
[textures] Added function GetImageData()
|
|
[textures] Added function GetTextureData()
|
|
[textures] Renamed function ConvertToPOT() to ImageConvertToPOT()
|
|
[textures] Added function ImageConvertFormat()
|
|
[textures] Added function GenTextureMipmaps()
|
|
[text] Added support for Latin-1 Extended characters for default font
|
|
[text] Redesigned SpriteFont struct, replaced Character struct by Rectangle
|
|
[text] Removed function GetFontBaseSize(), use directly spriteFont.size
|
|
[models] Review of struct: Model (added shaders support)
|
|
[models] Added 3d collision functions (sphere vs sphere vs box vs box)
|
|
[models] Added function DrawCubeTexture()
|
|
[models] Added function DrawQuad()
|
|
[models] Added function DrawRay()
|
|
[models] Simplified funtion DrawPlane()
|
|
[models] Removed function DrawPlaneEx()
|
|
[models] Simplified funtion DrawGizmo()
|
|
[models] Removed function DrawGizmoEx()
|
|
[models] Added function LoadModelEx()
|
|
[models] Review of function LoadCubicMap()
|
|
[models] Added function ResolveCollisionCubicmap()
|
|
[audio] Decopupled from raylib, now this module can be used as standalone
|
|
[audio] Added function UpdateMusicStream()
|
|
[raymath] Complete review of the module
|
|
[stb] Updated to latest headers versions
|
|
[*] Lots of tweaks around
|
|
|
|
-----------------------------------------------
|
|
Release: raylib 1.2.2 (31 December 2014)
|
|
-----------------------------------------------
|
|
[*] Added support for HTML5 compiling (emscripten, asm.js)
|
|
[core] Corrected bug on input handling (keyboard and mouse)
|
|
[textures] Renamed function CreateTexture() to LoadTextureFromImage()
|
|
[textures] Added function ConvertToPOT()
|
|
[rlgl] Added support for color tint on models on GL 3.3+ and ES2
|
|
[rlgl] Added support for normals on models
|
|
[models] Corrected bug on DrawBillboard()
|
|
[models] Corrected bug on DrawHeightmap()
|
|
[models] Renamed LoadCubesmap() to LoadCubicmap()
|
|
[audio] Added function LoadSoundFromWave()
|
|
[makefile] Added support for Linux and OSX compiling
|
|
[stb] Updated to latest headers versions
|
|
[*] Lots of tweaks around
|
|
|
|
---------------------------------------------------------------
|
|
Update: raylib 1.2.1 (17 October 2014) (Small Fixes Update)
|
|
---------------------------------------------------------------
|
|
[core] Added function SetupFlags() to preconfigure raylib Window
|
|
[core] Corrected bug on fullscreen mode
|
|
[rlgl] rlglDrawmodel() - Added rotation on Y axis
|
|
[text] MeasureTextEx() - Corrected bug on measures for default font
|
|
|
|
-----------------------------------------------
|
|
Release: raylib 1.2 (16 September 2014)
|
|
-----------------------------------------------
|
|
NOTE:
|
|
This version supposed a complete redesign of the [core] module to support Android and Raspberry Pi.
|
|
Multiples modules have also been tweaked to accomodate to the new platforms, specially [rlgl]
|
|
|
|
[core] Added multiple platforms support: Android and Raspberry Pi
|
|
[core] InitWindow() - Complete rewrite and split for Android
|
|
[core] InitDisplay() - Internal function added to calculate proper display size
|
|
[core] InitGraphics() - Internal function where OpenGL graphics are initialized
|
|
[core] Complete refactoring of input functions to accomodate to new platforms
|
|
[core] Mouse and Keyboard raw data reading functions added for Raspberry Pi
|
|
[core] GetTouchX(), GetTouchY() - Added for Android
|
|
[core] Added Android callbacks to process inputs and Android activity commands
|
|
[rlgl] Adjusted buffers depending on platform
|
|
[rlgl] Added security check in case deployed vertex excess buffer size
|
|
[rlgl] Adjusted indices type depending on GL version (int or short)
|
|
[rlgl] Fallback to VBOs only usage if VAOs not supported on ES2
|
|
[rlgl] rlglLoadModel() stores vbo ids on new Model struct
|
|
[textures] Added support for PKM files (ETC1, ETC2 compression support)
|
|
[shapes] DrawRectangleV() - Modified, depending on OGL version uses TRIANGLES or QUADS
|
|
[text] LoadSpriteFont() - Modified to use LoadImage()
|
|
[models] Minor changes on models loading to accomodate to new Model struct
|
|
[audio] PauseMusicStream(), ResumeMusicStream() - Added
|
|
[audio] Reduced music buffer size to avoid stalls on Raspberry Pi
|
|
[src] Added makefile for Windows and RPI
|
|
[src] Added resources file (raylib icon and executable info)
|
|
[examples] Added makefile for Windows and RPI
|
|
[examples] Renamed and merged with test examples for coherence with module names
|
|
[templates] Added multiple templates to be use as a base-code for games
|
|
|
|
-----------------------------------------------
|
|
Release: raylib 1.1.1 (22 July 2014)
|
|
-----------------------------------------------
|
|
[core] ShowLogo() - To enable raylib logo animation at startup
|
|
[core] Corrected bug with window resizing
|
|
[rlgl] Redefined colors arrays to use byte instead of float
|
|
[rlgl] Removed double buffer system (no performance improvement)
|
|
[rlgl] rlglDraw() - Reorganized buffers drawing order
|
|
[rlgl] Corrected bug on screen resizing
|
|
[shapes] DrawRectangle() - Use QUADS instead of TRIANGLES
|
|
[models] DrawSphereWires() - Corrected some issues
|
|
[models] LoadOBJ() - Redesigned to support multiple meshes
|
|
[models] LoadCubesMap() - Loading a map as cubes (by pixel color)
|
|
[textures] Added security check if file doesn't exist
|
|
[text] Corrected bug on SpriteFont loading
|
|
[examples] Corrected some 3d examples
|
|
[test] Added cubesmap loading test
|
|
|
|
-----------------------------------------------
|
|
Release: raylib 1.1.0 (19 April 2014)
|
|
-----------------------------------------------
|
|
NOTE:
|
|
This version supposed a complete internal redesign of the library to support OpenGL 3.3+ and OpenGL ES 2.0.
|
|
New module [rlgl] has been added to 'translate' immediate mode style functions (i.e. rlVertex3f()) to GL 1.1, 3.3+ or ES2.
|
|
Another new module [raymath] has also been added with lot of useful 3D math vector-matrix-quaternion functions.
|
|
|
|
[rlgl] New module, abstracts OpenGL rendering (multiple versions support)
|
|
[raymath] New module, useful 3D math vector-matrix-quaternion functions
|
|
[core] Adapt all OpenGL code (initialization, drawing) to use [rlgl]
|
|
[shapes] Rewrite all shapes drawing functions to use [rlgl]
|
|
[textures] Adapt texture GPU loading to use [rlgl]
|
|
[textures] Added support for DDS images (compressed and uncompressed)
|
|
[textures] CreateTexture() - Redesigned to add mipmap automatic generation
|
|
[textures] DrawTexturePro() - Redesigned and corrected bugs
|
|
[models] Rewrite all 3d-shapes drawing functions to use [rlgl]
|
|
[models] Adapt model loading and drawing to use [rlgl]
|
|
[models] Model struct updated to include texture id
|
|
[models] SetModelTexture() - Added, link a texture to a model
|
|
[models] DrawModelEx() - Redesigned with extended parameters
|
|
[audio] Added music streaming support (OGG files)
|
|
[audio] Added support for OGG files as Sound
|
|
[audio] PlayMusicStream() - Added, open a new music stream and play it
|
|
[audio] StopMusicStream() - Added, stop music stream playing and close stream
|
|
[audio] PauseMusicStream() - Added, pause music stream playing
|
|
[audio] MusicIsPlaying() - Added, to check if music is playing
|
|
[audio] SetMusicVolume() - Added, set volume for music
|
|
[audio] GetMusicTimeLength() - Added, get current music time length (in seconds)
|
|
[audio] GetMusicTimePlayed() - Added, get current music time played (in seconds)
|
|
[utils] Added log tracing functionality - TraceLog(), TraceLogOpen(), TraceLogClose()
|
|
[*] Log tracing messages all around the code
|
|
|
|
-----------------------------------------------
|
|
Release: raylib 1.0.6 (16 March 2014)
|
|
-----------------------------------------------
|
|
[core] Removed unused lighting-system code
|
|
[core] Removed SetPerspective() function, calculated directly
|
|
[core] Unload and reload default font on fullscreen toggle
|
|
[core] Corrected bug gamepad buttons checking if no gamepad available
|
|
[texture] DrawTextureV() - Added, to draw using Vector2 for position
|
|
[texture] LoadTexture() - Redesigned, now uses LoadImage() + CreateTexture()
|
|
[text] FormatText() - Corrected memory leak bug
|
|
[models] Added Matrix struct and related functions
|
|
[models] DrawBillboard() - Reviewed, now it works!
|
|
[models] DrawBillboardRec() - Reviewed, now it works!
|
|
[tests] Added folder with multiple tests for new functions
|
|
|
|
-----------------------------------------------
|
|
Update: raylib 1.0.5 (28 January 2014)
|
|
-----------------------------------------------
|
|
[audio] LoadSound() - Corrected a bug, WAV file was not closed!
|
|
[core] GetMouseWheelMove() - Added, check mouse wheel Y movement
|
|
[texture] CreateTexture2D() renamed to CreateTexture()
|
|
[models] LoadHeightmap() - Added, Heightmap can be loaded as a Model
|
|
[tool] rREM updated, now supports (partially) drag and drop of files
|
|
|
|
-----------------------------------------------
|
|
Release: raylib 1.0.4 (23 January 2014)
|
|
-----------------------------------------------
|
|
[tool] Published a first alpha version of rREM tool (raylib Resource Embedder)
|
|
[core] GetRandomValue() - Bug corrected, now works right
|
|
[core] Fade() - Added, fades a color to an alpha percentadge
|
|
[core] WriteBitmap() - Moved to new module: utils.c, not used anymore
|
|
[core] TakeScreenshot() - Now uses WritePNG() (utils.c)
|
|
[utils] New module created with utility functions
|
|
[utils] WritePNG() - Write a PNG file (used by TakeScreenshot() on core)
|
|
[utils] DecompressData() - Added, used for rRES resource data decompresion
|
|
[textures] LoadImageFromRES() - Added, load an image from a rRES resource file
|
|
[textures] LoadTextureFromRES() - Added, load a texture from a rRES resource file
|
|
[audio] LoadSoundFromRES() - Added, load a sound from a rRES resource file
|
|
[audio] IsPlaying() - Added, check if a sound is currently playing
|
|
[audio] SetVolume() - Added, set the volume for a sound
|
|
[audio] SetPitch() - Added, set the pitch for a sound
|
|
[examples] ex06a_color_select completed
|
|
[examples] ex06b_logo_anim completed
|
|
[examples] ex06c_font select completed
|
|
|
|
-----------------------------------------------
|
|
Release: raylib 1.0.3 (19 December 2013)
|
|
-----------------------------------------------
|
|
[fonts] Added 8 rBMF free fonts to be used on projects!
|
|
[text] LoadSpriteFont() - Now supports rBMF file loading (raylib Bitmap Font)
|
|
[examples] ex05a_sprite_fonts completed
|
|
[examples] ex05b_rbmf_fonts completed
|
|
[core] InitWindowEx() - InitWindow with extended parameters, resizing option and custom cursor!
|
|
[core] GetRandomValue() - Added, returns a random value within a range (int)
|
|
[core] SetExitKey() - Added, sets a key to exit program (default is ESC)
|
|
[core] Custom cursor not drawn when mouse out of screen
|
|
[shapes] CheckCollisionPointRec() - Added, check collision between point and rectangle
|
|
[shapes] CheckCollisionPointCircle() - Added, check collision between point and circle
|
|
[shapes] CheckCollisionPointTriangle() - Added, check collision between point and triangle
|
|
[shapes] DrawPoly() - Added, draw regular polygons of n sides, rotation can be defined!
|
|
|
|
-----------------------------------------------
|
|
Release: raylib 1.0.2 (1 December 2013)
|
|
-----------------------------------------------
|
|
[text] GetDefaultFont() - Added, get default SpriteFont to be used on DrawTextEx()
|
|
[shapes] CheckCollisionRecs() - Added, check collision between rectangles
|
|
[shapes] CheckCollisionCircles() - Added, check collision between circles
|
|
[shapes] CheckCollisionCircleRec() - Added, check collision circle-rectangle
|
|
[shapes] GetCollisionRec() - Added, get collision rectangle
|
|
[textures] CreateTexture2D() - Added, create Texture2D from Image data
|
|
[audio] Fixed WAV loading function, now audio works!
|
|
|
|
-----------------------------------------------
|
|
Update: raylib 1.0.1 (28 November 2013)
|
|
-----------------------------------------------
|
|
[text] DrawText() - Removed spacing parameter
|
|
[text] MeasureText() - Removed spacing parameter
|
|
[text] DrawFps() - Renamed to DrawFPS() for coherence with similar function
|
|
[core] IsKeyPressed() - Change functionality, check if key pressed once
|
|
[core] IsKeyDown() - Added, check if key is being pressed
|
|
[core] IsKeyReleased() - Change functionality, check if key released once
|
|
[core] IsKeyUp() - Added, check if key is being NOT pressed
|
|
[core] IsMouseButtonDown() - Added, check if mouse button is being pressed
|
|
[core] IsMouseButtonPressed() - Change functionality, check if mouse button pressed once
|
|
[core] IsMouseButtonUp() - Added, check if mouse button is NOT being pressed
|
|
[core] IsMouseButtonReleased() - Change functionality, check if mouse button released once
|
|
[textures] DrawTexturePro() - Added, texture drawing with 'pro' parameters
|
|
[examples] Function changes applied to ALL examples
|
|
|
|
-----------------------------------------------
|
|
Release: raylib 1.0.0 (18 November 2013)
|
|
-----------------------------------------------
|
|
* Initial version
|
|
* 6 Modules provided:
|
|
- core: basic window/context creation functions, input management, timing functions
|
|
- shapes: basic shapes drawing functions
|
|
- textures: image data loading and conversion to OpenGL textures
|
|
- text: text drawing, sprite fonts loading, default font loading
|
|
- models: basic 3d shapes drawing, OBJ models loading and drawing
|
|
- audio: audio device initialization, WAV files loading and playing
|