Page 1 of 6

PureBasic 5.00 beta 2

Posted: Fri Aug 31, 2012 1:03 am
by Fred
Hi there !

Yes, yes, yes, it's a brand new number for this PureBasic beta release. You may ask why we did it. And the answer is rather easy: we have finished the 64-bit support for all supported systems, upgraded old frameworks when necessary (Cocoa), added a tons a new commands on the 3D side and even got a brand new Form Designer ! Even more, there is some 'minor' additions, and internal component upgrade. Just check out the change log:

Code: Select all

- Added: Cocoa support on OS X (now the default toolkit)
- Added: 64-bit version of PureBasic for OS X
- Added: Brand new Form Designer, for Windows, Linux and OS X
- Added: Carbon subsystem for PowerPC and x86 version of PureBasic (use 'carbon' as subsystem to enable it)
- Added: Multi-dimensional arrays in structure support
- Added: InitScintilla() on Linux and OS X avoid compilation issues (empty function)
- Added: #PB_Window_NoActivate flag to OpenWindow() and HideWindow()
- Added: #PB_EventType_RightClick support ScintillaGadget()
- Added: Favorites section to the explorer tool (IDE)
- Added: Trigger for custom tools when a new source file is created (IDE)
- Added: SetWindowCallback() support to OS X to have callback events (only a few type supported: #PB_Event_SizeWindow, Splitter, ScrollBar)
- Added: partial thread-safety to GTK (Linux)
- Added: SpritePixelCollision() support for OS X and Linux

- Changed: SetModulePosition() is now in milliseconds, no more in pattern

- Updated: Scintilla updated to 3.1.0
- Updated: Expat updated to 2.1.0
- Updated: libjpeg updated to 8.0d
- Updated: libpng updated to 1.5.12
- Updated: Ogre to 1.8.0, bullet to 2.80, hydrax to 0.5.4, CEGUI to 0.7.7
- Updated: ModPlug lib update to 0.8.8.4
- Updated: Use of VC++ 2010 instead of VC++ 2005 to compile the Windows libraries (32-bit and 64-bit), resulting of better optimized code

Engine3D:
---------
Added: a new optional parameter to  InitEngine3D() with constants #PB_Engine3D_DebugLog and #PB_Engine3D_DebugOutput
Added: RayPick(x, y, z, x2, y2, z2 [, PickMask]) ; Returns the first #Entity crossed by the ray
Added: 'PickMask' parameter to MousePick()

World:
------
Added: RenderWorld() now returns 'TimeSinceLastFrame', in milliseconds
Added: SkyBox() and SkyDome() now supports Fog()
Added: 'Color' and 'TextureSize' parameters to WorldShadows()
Added: #PB_World_UnderWater and #PB_World_WaterGodRays flags to CreateWater()

Camera:
------
Added:   CameraViewWidth(#Camera)  ; return camera width in pixels
Added:   CameraViewHeight(#Camera) ; return camera height in pixels
Added:   CameraViewX(#Camera)      ; return Y position in pixels
Added:   CameraViewY(#Camera)      ; return X position in pixels
Added:   CameraDirection(#Camera, x, y, z)  ; change the direction
Added:   CameraDirectionX/Y/Z(#Camera) - Retrieve the direction of the #Camera.
Added:   new 'IsActive' optional parameter to render to texture for CreateCamera()
Added:   SetCameraFixedYawAxis(#Camera, Mode [VectorX, VectorY, VectorZ]) - Change the way the yaw axis is managed
Changed: CameraLookAt()          ; doesn't change the direction anymore



Material:
---------
Added: ScaleMaterial(#Material, x, y)
Added: MaterialFog(#Material, Color, Intensity, StartDistance, EndDistance) - Display a fog effect on the material
Added: ReloadMaterial(MaterialName$, Filename$, ParseScript)
Added: ResetMaterial(ObjectType)
Added: #PB_Material_Anisotropic support to MaterialFilteringMode() and #PB_Default support as Material to set the default settings for materials.
Added: #PB_Material_Wireframe, #PB_Material_Point and #PB_Material_Solid to MaterialShadingMode()


Node:
-----
Added: NodeFixedYawAxis()

Sound3D:
--------
Added: SoundListenerLocate() ; to move the sound listener (the ear) in the world

Entity:
-------
Added: new 'PickMask' optional paramater for CreateEntity() 
Added: #PB_Entity_Wireframe, #PB_Entity_Solid, #PB_Entity_Point and #PB_Entity_DisplaySkeleton to EntityRenderMode()
Added: FreeEntityJoints(#Entity) - Free all joints associated with the #Entity.
Added: AttachEntityObject(#Entity, Bone$, ObjectID [, x, y, z, Pitch, Roll, Yaw]) - Attach an object to the #Entity.
Added: DetachEntityObject(#Entity, ObjectID) - Detach the object from the #Entity.
Added: EntityBoneX/Y/Z(entityID, Bone$ [, OffsetX, OffsetY, OffsetZ]) 
Added: EntityBonePitch()
Added: EntityBoneRoll()
Added: EntityBoneYaw()
Added: DirectionX/Y/Z optional parameters to EntityLookAt()
Added: EntityVelocity(#Entity, x, y, z) - Change the linear velocity of the #Entity.
Added: EntityAngularFactor(#Entity, x, y, z) - Change the angular factor of the #Entity.
Added: EntityLinearFactor(#Entity, x, y, z) - Change the linear factor of the #Entity.
Added: EntityCustomParameter(#Entity, SubEntityIndex, ParameterIndex, Value1, Value2, Value3, Value4) - Set a custom parameter to the #Entity shader script.
Added: EntityParentNode(#Entity)
Added: EntityBoundingBoxX/Y/Z(#Entity, Point, Flags)
Added: DisableEntityBody(#Entity, Disable)
Added: to Get/SetEntityAttributes:
  #PB_Entity_VelocityX: Get
  #PB_Entity_VelocityY: Get
  #PB_Entity_VelocityZ: Get
  #PB_Entity_MassCenterX: Get/Set
  #PB_Entity_MassCenterY: Get/Set
  #PB_Entity_MassCenterZ: Get/Set
  #PB_Entity_MaxVelocity: Get/Set



EntityAnimation:
----------------
Added: AddEntityAnimationTime(#Entity, Animation$, Time) - Add time to the specified #Entity animation.
Added: EnableEntityAnimation(#Entity, Animation$, Enable [, Loop]) - Enable the specified #Entity animation.
Added: EntityAnimationStatus(#Entity, Animation$) - Return the specified #Entity animation status (constants: #PB_EntityAnimation_Stopped, #PB_EntityAnimation_Started, #PB_EntityAnimation_Unknown)
Added: EntityAnimationBlendMode(#Entity, Mode) - with #PB_Entity_Average and #PB_Entity_Cumulative
Added: GetEntityAnimationTime(#Entity, Animation$) - Get the current #Entity animation time.
Added: SetEntityAnimationTime(#Entity, Animation$, Time) - Set the current #Entity animation time.
Added: GetEntityAnimationWeight(#Entity, Animation$) - Get the #Entity animation weight.
Added: SetEntityAnimationWeight(#Entity, Animation$, Weight) - Set the #Entity animation weight (useful for EntityAnimationBlendMode()).
Added: GetEntityAnimationLength(#Entity, Animation$) - Get the #Entity animation length.
Added: SetEntityAnimationLength(#Entity, Animation$, Length) - Set the #Entity animation length.
Added: UpdateEntityAnimation(#Entity, Animation$) - Update the animation, especially after vertex changes

Node:
-----
Change: Attach/DetachNodeObject() removed the 'type' object
Added: NodeLookAt(): Optional DirectionX/Y/Z parameter



NodeAnimation
-------------
Added: FreeNodeAnimation(#NodeAnimation) - Free the specified #NodeAnimation.
Added: CreateNodeAnimation(#NodeAnimation, Length, Interpolation, RotationInterpolation) - Create a new #NodeAnimation.
  'Interpolation' can be: #PB_NodeAnimation_Linear or #PB_NodeAnimation_Spline
  'RotationInterpolation' can be #PB_NodeAnimation_LinearRotation or #PB_NodeAnimation_SphericalRotation
Added: CreateNodeAnimationTrack(#NodeAnimation, Index, NodeID) - Create a new track for the #NodeAnimation.
Added: CreateNodeAnimationKeyFrame(#NodeAnimation, Track, Time, x, y, z) - Create a new keyframe for the #NodeAnimation track.
Added: GetNodeAnimationKeyFrameTime(#NodeAnimation, Track, KeyFrame) - Get the keyframe time for the #NodeAnimation track.
Added: SetNodeAnimationKeyFramePosition(#NodeAnimation, Track, KeyFrame, x, y, z) - Set the keyframe position for the #NodeAnimation track.
Added: GetNodeAnimationKeyFrameX(#NodeAnimation, Track, KeyFrame) - Get the x keyframe position for the #NodeAnimation track.
Added: GetNodeAnimationKeyFrameY(#NodeAnimation, Track, KeyFrame) - Get the y keyframe position for the #NodeAnimation track.
Added: GetNodeAnimationKeyFrameZ(#NodeAnimation, Track, KeyFrame) - Get the z keyframe position for the #NodeAnimation track.
Added: SetNodeAnimationKeyFrameRotation(#NodeAnimation, Track, KeyFrame, Pitch, Yaw, Roll) - Set the keyframe position for the #NodeAnimation track.
Added: GetNodeAnimationKeyFramePitch(#NodeAnimation, Track, KeyFrame) - Get the keyframe pitch for the #NodeAnimation track.
Added: GetNodeAnimationKeyFrameYaw(#NodeAnimation, Track, KeyFrame) - Get the y keyframe yaw for the #NodeAnimation track.
Added: GetNodeAnimationKeyFrameRoll(#NodeAnimation, Track, KeyFrame) - Get the z keyframe roll for the #NodeAnimation track.
Added: SetNodeAnimationKeyFrameScale(#NodeAnimation, Track, KeyFrame, ScaleX, ScaleY, ScaleZ) - Set the keyframe scale for the #NodeAnimation track.
Added: AddNodeAnimationTime(#NodeAnimation, Time) - Add time to the specified #NodeAnimation.
Added: EnableNodeAnimation(#NodeAnimation, Enable [, Loop]) - Enable the specified #NodeAnimation.
Added: NodeAnimationStatus(#NodeAnimation) - Return the specified #NodeAnimation status.
Added: GetNodeAnimationTime(#NodeAnimation) - Get the current #NodeAnimation time.
Added: SetNodeAnimationTime(#NodeAnimation, Time) - Set the current #NodeAnimation time.
Added: GetNodeAnimationWeight(#NodeAnimation) - Get the #NodeAnimation weight.
Added: SetNodeAnimationWeight(#NodeAnimation, Weight) - Set the #NodeAnimation weight.
Added: GetNodeAnimationLength(#NodeAnimation) - Get the #NodeAnimation length.
Added: SetNodeAnimationLength(#NodeAnimation, Length) - Set the #NodeAnimation length.

Light:
------
Added: LightAttenuation(#Light, Range, Constant, Linear, Quadratic)
Added: LightX(#Light)
Added: LightY(#Light)
Added: LightZ(#Light)
Added: LightDirection(#Light, x, y, z)
Added: LightDirectionX(#Light)
Added: LightDirectionY(#Light)
Added: LightDirectionZ(#Light)
Added: RotateLight(#Light, Pitch, Yaw, Roll [, Flags])
Added: LightPitch(#Light)
Added: LightYaw(#Light)
Added: LightRoll(#Light)


Particule:
----------
Added: GetScriptParticle(#ParticleEmitter, Name$) - Get a particule emitter defined in scripts files.

Texture:
--------
Added: CreateRenderTexture(#Texture, CameraID, Width, Height, RenderedTextureName$ [, Flags]) - Create a new rendered based #Texture.
       Flags can be: #PB_Texture_ManualUpdate or PB_Texture_AutomaticUpdate (default)
Added: UpdateRenderTexture(#Texture)  ; update the rendered texture, only in manual mode
Added: SaveRenderTexture(#Texture, Filename$) 
Added: CreateCubeMapTexture(#Texture, CameraID, Width, Height, RenderedTextureName$ [, Flags]) - Create a new rendered based #Texture.
Added: EntityCubeMapTexture(#Texture, #Entity) - Apply the cube map #Texture to the #Entity.
Updated: CreateTexture() now handle alpha textures as well


Effect:
-------
Updated: HideEffect(integer effectID, int hidden) ; now handle ribbon as well
Added: EffectID(#Effect)
Changed: CreateRibbonEffect() - 'InitialWidth' parameter has been removed
Added: RibbonEffectWidth(#Effect, ChainIndex, Width, FadeoutWidth) 
Added: AttachRibbonEffect(#Effect, NodeID) - Attach the ribbon #Effect to the node.
Added: DetachRibbonEffect(#Effect, NodeID) - Detach the node from the ribbon #Effect. 
Added: CreateLensFlareEffect(#Effect, CameraID, NodeID, BurstSize, HaloSize, HaloMaterialID,	CircleMaterialID, BurstMaterialID) - Create a new lens flare #Effect. 
Added: LensFlareEffectColor(#Effect, ColorType, Color) - Change the color of the specified lens flare part.

Joint:
------
Added: EnableHingeJointAngularMotor(#Joint, Enable, TargetVelocity, MaxMotorImpulse) - Enable the angular motor on the hinge #Joint.
Modified: Modification de la lib Joint pour supprimer la limitation d'un joint par entity:
  - Ajout d'un paramètre #Joint pour les fonctions suivantes : ConeTwistJoint(), HingeJoint(), PointJoint(), SliderJoint()
  - Remplacement du paramètre #Entity par le paramètre #Joint dans les fonctions suivantes : FreeJoint()
Added: #PB_HingeJoint_LowerLimit and #PB_HingeJoint_UpperLimit to Get/SetJointAttribute()


VertexAnimation:
-----------------
Added: CreateVertexAnimation(#Mesh, Animation$, Length) - Create a new vertex animation for the #mesh.
Added: CreateVertexTrack(#Mesh, Animation$, Index) - Create a new track to the #Mesh animation.
Added: CreateVertexPoseKeyFrame(#Mesh, Animation$, Track, Time) - Create a new keyframe to the #Mesh track.
Added: AddVertexPoseReference(#Mesh, Animation$, Track, Index, PoseIndex, Influence) - Add a new vertex pose reference to the #Mesh track.
Added: UpdateVertexPoseReference(#Mesh, Animation$, Track, Index, PoseIndex, Influence) - Update a new vertex pose reference to the #Mesh track.
Added: VertexPoseReferencesSize(#Mesh, Animation$, Track, Index) - Return the vertex pose reference size of the specified #Mesh track.
Added: MeshPoseName(#Mesh, PoseIndex) - Return the mesh pose name.


StaticGeometry:
---------------
Added: Optional 'Pitch', 'Yaw', 'Roll' parameters to AddStaticGeometryEntity()


Spline:
-------
CreateSpline(#Spline) - Create a new empty #Spline
FreeSpline(#Spline) - Free the #Spline.
AddSplinePoint(#Spline, x, y, z)
ClearSpline(#Spline) - Clear the #Spine.
CountSplinePoints(#Spline) - Return the number of point in the #Spine.
SplinePointX(#Spline, Index) - Return the x position of the #Spline point.
SplinePointY(#Spline, Index) - Return the y position of the #Spline point.
SplinePointZ(#Spline, Index) - Return the z position of the #Spline point.
UpdateSplinePoint(#Spline, Index, x, y, z) - Update the specified #Spline point.
ComputeSpline(#Spline, Time) - Compute the #Spline at the given time.
SplineX(#Spline) - Return the x position of the #Spline.
SplineY(#Spline) - Return the y position of the #Spline.
SplineZ(#Spline) - Return the z position of the #Spline.


Terrain:
--------
FreeTerrain(#Terrain) - Free the #Terrain.
SetupTerrains(LigthID, Distance, Flags) - Setup the default options for all terrains.
CreateTerrain(#Terrain, Size, WorldSize, Scale, Layer, Filename$, Extension$) - Create a new #Terrain.
TerrainPhysicBody(#Terrain, Restitution, Friction) - Add a static physic body to the #Terrain.
DefineTerrainTile(#Terrain, TileX, TileY, Heightname$, FlipX, FlipY) - Defines a new #Terrain tile.
AddTerrainTexture(#Terrain, Layer, WorldSize, DiffuseSpecular$, NormalHeight$) - Add a texture to the #Terrain.
BuildTerrain(#Terrain) - Construct the #Terrain.
TerrainLocate(#Terrain, x, y, z) - Change the #Terrain location.
TerrainHeight(#Terrain, x, z) - Return the height of the #Terrain at the specified coordinates.
TerrainTileHeightAtPosition(#Terrain, TileX, TileY, Layer, x, y) - Return the height of the #Terrain tile.
TerrainTilePointX(#Terrain, TileX, TileY, x, y, z) - Return the x position in the #Terrain tile of the point.
TerrainTilePointY(#Terrain, TileX, TileY, x, y, z) - Return the y position in the #Terrain tile of the point.
TerrainTileSize(#Terrain, TileX, TileY) - Return the size of the #Terrain tile.
GetTerrainTileHeightAtPoint(#Terrain, TileX, TileY, x, y) - Get the height of the #Terrain tile at the specified position.
SetTerrainTileHeightAtPoint(#Terrain, TileX, TileY, x, y, Height) - Set the height of the #Terrain tile at the specified position.
UpdateTerrain(#Terrain) - Update the whole #Terrain.
TerrainTileLayerMapSize(#Terrain, TileX, TileY) - Return the #Terrain tile layer map size.
GetTerrainTileLayerBlend(#Terrain, TileX, TileY, Layer, x, y) - Get the #Terrain tile layer blend value.
SetTerrainTileLayerBlend(#Terrain, TileX, TileY, Layer, x, y, Value) - Set the #Terrain tile layer blend value.
UpdateTerrainTileLayerBlend(#Terrain, TileX, TileY, Layer) - Update the #Terrain tile blend value.
TerrainMousePick(#Terrain, CameraID, x, y) - Perform a mouse picking on the #Terrain.
SaveTerrain(#Terrain, ModifiedOnly) - Save the #Terrain on disk.
TerrainRenderMode(#Terrain, Flags) - Change the #Terrain render mode.

Window3D:
---------
InputEvent3D(): Added a special key parameter to handle non printable keys


Obsolete:
---------
Removed: AnimateEntity() (replaced with Start/StopEntityAnimation())
Removed: #PB_Entity_Wireframe, #PB_Entity_Point and #PB_Entity_Solid to EntityRenderMode()
Removed: CheckEntityCollision(), NextWorldCollision(), FirstWorldCollisionEntity(), SecondWorldCollisionEntity()
A lot of new 3D examples have been done by comtois and G-Rom, here are the archives:
comtois: http://ftp-developpez.com/comtois/fichi ... amples.zip
g-rom: http://purebasic-skybox.googlecode.com/ ... amples.rar

We are very proud of the long way done since the first 4.00 release and we are looking forward to push PureBasic even further ! I would like to thanks all the guys who made this possible all this time, including Timo (Fr34k), Andre, Berikco, Comtois, G-Rom, Polo and all the former one, check the history for the full listing :). Yes, it's still beta, but we hope to go final somewhere soon, so don't hesitate to test it to have a rock solid 5.00 version !

The Fantaisie Software Team

Re: PureBasic 5.00 beta 2

Posted: Fri Aug 31, 2012 1:14 am
by Shield
Holy Cow! :)

Re: PureBasic 5.00 beta 2

Posted: Fri Aug 31, 2012 1:17 am
by Polo
What a list! Thanks :)

Re: PureBasic 5.00 beta 2

Posted: Fri Aug 31, 2012 1:25 am
by STARGÅTE
Thank you very much, especially for
Fred wrote:Added: Multi-dimensional arrays in structure support

Re: PureBasic 5.00 beta 2

Posted: Fri Aug 31, 2012 1:33 am
by spacebuddy
Wow, thank you :D

Re: PureBasic 5.00 beta 2

Posted: Fri Aug 31, 2012 1:45 am
by kenmo
When I saw the thread title, I thought it was a joke... then I saw who posted it. :D

Thanks for this wonderful software!

Re: PureBasic 5.00 beta 2

Posted: Fri Aug 31, 2012 1:45 am
by ts-soft
Thank you :D

PS: The formdesigner on linux is missing the execute-flag!

Re: PureBasic 5.00 beta 2

Posted: Fri Aug 31, 2012 1:47 am
by skywalk
Multi-dimensional arrays inside structures :!: :shock:
You realize you just ruined my long weekend. :evil:

Re: PureBasic 5.00 beta 2

Posted: Fri Aug 31, 2012 2:25 am
by Starwolf20
Very Great News !!!!!!!

Re: PureBasic 5.00 beta 2

Posted: Fri Aug 31, 2012 2:26 am
by Guimauve
Great news

But any reason why we move from V4.70 Beta 1 to V5.00 Beta 2 ?

Best regards
Guimauve

Re: PureBasic 5.00 beta 2

Posted: Fri Aug 31, 2012 2:36 am
by J. Baker
Awesome! Thanks a lot! :D

Re: PureBasic 5.00 beta 2

Posted: Fri Aug 31, 2012 2:38 am
by Shield
STARGÅTE wrote:Thank you very much, especially for
Fred wrote:Added: Multi-dimensional arrays in structure support
Indeed, since I really don't care about all the 3D stuff.
But I'm sure other people are going to like the new additions. :)

Re: PureBasic 5.00 beta 2

Posted: Fri Aug 31, 2012 4:11 am
by idle
Well done team!

There goes my wine for the week :twisted:

Re: PureBasic 5.00 beta 2

Posted: Fri Aug 31, 2012 4:13 am
by Mohawk70
You guys are doing great !

Especially like -->
Multi-dimensional arrays inside structures
:D

Re: PureBasic 5.00 beta 2

Posted: Fri Aug 31, 2012 4:51 am
by GoodNPlenty
Amazing!! What a Great Surprise, You Guys are Awesome.