Seite 1 von 5

PureBasic 4.60 Beta 1 released! (diesmal wirklich)

Verfasst: 04.04.2011 00:51
von freak
Erstmal ein "haha" für den gleichnamigen Aprischerz. Besonders einfallsreich war der ja nicht gerade... :roll:


Jetzt aber ernsthaft:
Die erste Beta für die neue Version ist da!

Dieses Release dreht sich hauptsächlich um 3D. Die OGRE-Engine hat ein Update bekommen, und es gibt eine Menge neuer Bibliotheken und Befehle dazu. Aber auch Programmierer die nicht mit 3D arbeiten sollten auf ihre Kosten kommen.

Die 3D-Befehle sind noch nicht dokumentiert. Eine genaue Liste gibt es weiter unten. Die anderen Neuerungen sind bereits in der englischen Dokumentation enthalten (die deutsche muss noch bearbeitet werden). Weitere Informationen und Beispiele gibt es demnächst im englischen Forum.

Wichtig:
Für die 3D-Befehle könnte es nötig sein eine neuere DirectX9-Version zu installieren. Wenn eine fehlende DLL beim Ausführen der 3D-Beispiele auftaucht, dann ist dies der Grund. Die Runtimes gibt es hier zum Download: http://www.microsoft.com/downloads/en/d ... laylang=de

Hier ist die Liste der neuen Features:

Code: Alles auswählen

Libraries:
- added CanvasGadget(), CanvasOutput()
- added SetGadgetItemData() for PanelGadget
- added MoveElement(), MergeLists(), SplitList() commands
- added RandomizeList(), RandomizeArray()
- added PushListPosition(), PopListPosition(), PushMapPosition(), PopMapPosition()
- added ImageID parameter to OpenSubMenu()
- added #PB_ListIcon_ThreeState and #PB_ListIcon_Inbetween
- added #PB_Tree_ThreeState and #PB_Tree_Inbetween
- added crossplatform ComboBox events
- added 'Joint' library
- added 'SpecialEffect' library
- added 'StaticGeometry' library
- added CameraPitch(), CameraRoll(), CameraYaw(), SwitchCamera()
- added ApplyEntityForce(), ApplyEntityImpulse(), EntityPitch(), EntityRoll(), EntityYaw(), GetEntityAttribute(),
        GetEntityMaterial(), SetEntityAttribute(), SetEntityMaterial()
- added LightDiffuseColor(), SpotLightRange(), LightLookAt(), LightPower(), DisableLightShadows()
- added MaterialDepthWrite(), MaterialSelfIlluminationColor(), MaterialShininess(), GetScriptMaterial()
- added BuildMeshShadowVolume(), CreateLine3D(), CreateCube(), CreateSphere(), CreateCylinder(), CreatePlane(), AddSubMesh()
        MeshVertexCount(), UpdateMeshBoundingBox(), MeshRadius(), AddMeshVertex(), MeshVertexNormal(), MeshVertexColor()
        MeshVertexTextureCoordinate(), AddMeshFace(), FinishMesh(), NormalizeMesh(), SaveMesh(), SetMeshMaterial(), SubMeshCount()
        TransformMesh()
- added NodePitch(), NodeRoll(), NodeYaw()

- changed FindString() 'StartPosition' parameter to be optional
- changed WebGadget to use WebKitGtk on Linux
- changed ContainerGadget with #PB_Container_Borderless to no longer add a 2px invisible border on Linux
- changed EntityPhysicBody(), CreateLight(), RenderWorld(), ShowGUI, WorldShadows()

- removed: Get/SetEntityMass(), Get/SetEntityFriction()
- removed: SetMeshData() (temporary, needs to be updated)

IDE:
- added IDE options for commandline project building
- added monitoring of files for changes on disk while they are open in the IDE
- added FilePanel custom implementation with Drag & Drop, Dropdown menu, scrolling also on OSX
- added Diff tool for directories/files
- added Html help viewer for Linux/OSX
- added Help viewer in toolspanel
- new Color Picker tool
- enabled font selection in IDE for OSX
- ProjectPanel now remembers node expanded states

Debugger:
- added maximize button to all debugger windows
- added all IsXxx() and XxxID() functions to the expression parser (for data breakpoints)

Manual:
- The manual is being updated to a new format which more clearly describes
individual function parameters and return values. This is not yet complete,
but will be finished for the final release.
Und die neuen 3D-Befehle im Detail:

Code: Alles auswählen

Quick help for new 3D commands:
-------------------------------

CameraPitch(#Camera) - Retrieve the pitch of the #Camera.
CameraRoll(#Camera) - Retrieve the roll of the #Camera.
CameraYaw(#Camera) - Retrieve the yaw of the #Camera.
SwitchCamera(#Camera, #NewCamera) - Change the active #Camera with the #NewCamera.

ApplyEntityForce(#Entity, x, y, z []) - Apply a force to #Entity
ApplyEntityImpulse(#Entity, x, y, z []) - Apply a force to #Entity
EntityPhysicBody(#Entity, Type [, Mass [, Restitution, Friction]]) - Change the #Entity physic body
EntityPitch(#Entity) - Return the pitch of the #Entity.
EntityRoll(#Entity) - Return the roll of the #Entity.
EntityYaw(#Entity) - Return the yaw of the #Entity.
GetEntityAttribute(#Entity, Attribute) - Get the #Entity attribute value
GetEntityMaterial(#Entity) - Get the #Entity material
SetEntityAttribute(#Entity, Attribute, Value) - Set an #Entity attribute value
SetEntityMaterial(#Entity, MaterialID) - Set the #Entity material

PointJoint(#Entity, PivotX, PivotY, PivotZ [, #Entity2, PivotX2, PivotY2, PivotZ2])
GetJointAttribute, Long, Long, (#Entity, Attribute)
SetJointAttribute, Long, Long, Float, (#Entity, Attribute, Value)
FreeJoint(#Entity)
HingeJoint(#Entity, PivotX, PivotY, PivotZ, AxisX, AxisY, AxisZ, #Entity2, PivotX2, PivotY2, PivotZ2, AxisX2, AxisY2, AxisZ2)
ConeTwistJoint(#Entity, FxA, FyA, FzA, #Entity2, FxB, FyB, FzB)
SliderJoint(#Entity, FxA, FyA, FzA, #Entity2, FxB, FyB, FzB)

CreateLight(#Light, Color [, x, y, z [, Flags]]) - Create a new #Light.
LightDiffuseColor(#Light, Color)
SpotLightRange(#Light, InnerAngle, OutterAngle [, FallOff])
LightLookAt(#Light, x, y, z)
LightPower(#Light, Power)
DisableLightShadows(#Light, Disable)

MaterialDepthWrite(#Material, Enable) - Enable or disable the #Material depth write.
MaterialSelfIlluminationColor(#Material, Color) - Change the #Material self illumination color.
MaterialShininess(#Material, Shininess) - Change the #Material shininess.
GetScriptMaterial(#Material, Name$) - Get a material defined in scripts files.

BuildMeshShadowVolume(#Mesh)
CreateLine3D(#Mesh, x, y, z, Color, x2, y2, z2, Color2)
CreateCube(#Mesh, Size)
CreateSphere(#Mesh, Radius [Segments, Rings])
CreateCylinder(#Mesh, Radius, Length [, Tesselation, CloseTop, Oblique])
CreatePlane(#Mesh, TileSizeX, TileSizeZ, TileCountX, TileCountZ, TextureRepeatCountX, TextureRepeatCountY)
AddSubMesh()
MeshVertexCount(#Mesh [, SubMesh])
UpdateMeshBoundingBox(#Mesh)
MeshRadius(#Mesh)
AddMeshVertex(x, y, z)
MeshVertexNormal(x, y, z)
MeshVertexColor(Color)
MeshVertexTextureCoordinate(u, v)
AddMeshFace(Vertex1, Vertex2, Vertex3)
FinishMesh()
NormalizeMesh(#Mesh [, SubMesh])
SaveMeshLong, String, (#Mesh, Filename$)
SetMeshMaterial(#Mesh, MaterialID [, SubMesh])
SubMeshCount(#Mesh)
TransformMesh(#Mesh, x, y, z, ScaleX, ScaleY, ScaleZ, RotateX, RotateY, RotateZ [, SubMesh])

NodePitch(#Node) - Return the x position of the #Node.
NodeRoll(#Node) - Return the y position of the #Node.
NodeYaw(#Node) - Return the z position of the #Node.

CreateCompositorEffect(#Effect, CameraID, EffectName$)
CreateRibbonEffect(#Effect, MaterialID, NodeID, NbChains, NbElements, InitialWidth, Length)
FreeEffect(#Effect) - Free the specified #Effect.
HideCompositorEffect(#Effect, State)
CompositorEffectParameter(#Effect, CameraID, EffectName$, DataType, *Data)
IsEffect(#Effect) - Tests if the given '#Effect' is an initialized effect object.
RibbonEffectColor(#Effect, Color, FadeoutColor)

AddStaticGeometryEntity(#StaticGeometry, EntityID, x, y, z [, ScaleX, ScaleY, ScaleZ])
BuildStaticGeometry(#StaticGeometry)
CreateStaticGeometry(#StaticGeometry, Width, Height, Length, EnableShadows)
FreeStaticGeometry(#StaticGeometry) - Free the specified #StaticGeometry.
IsStaticGeometry(#StaticGeometry) - Tests if the given '#StaticGeometry' is an initialized effect object.

RenderWorld([ElapsedPhysicTime]) - Renders the 3D world on the screen.
ShowGUI(Intensity, ShowMouseCursor [#Camera, Enable]) - Shows or hides the GUI
WorldShadows(ShadowType [, Distance]) - Change the shadow handling in this world.
Zum englischen Announcement:
http://www.purebasic.fr/english/viewtop ... 14&t=45911

Zum Download:
http://www.purebasic.com/securedownload ... anguage=DE

Viel Spaß beim Testen der neuen Version.

Das PureBasic Team

Re: PureBasic 4.60 Beta 1 released! (diesmal wirklich)

Verfasst: 04.04.2011 01:01
von STARGÅTE
Danke, werde es sofort testen.

Re: PureBasic 4.60 Beta 1 released! (diesmal wirklich)

Verfasst: 04.04.2011 01:38
von CSHW89
Wow wahnsinn, geniale Sachen bei. Neben den 3D-Sachen natürlich, ist ja wohl das CanvasGadget richtig geil. Damit kann man mit Sicherheit ne Menge machen :allright: .
Dazu noch die Push/Pop-Funktionen bei Listen und Maps. Endlich ist es super einfach, doppelt durch ne Liste/Maps zu laufen.
*freu*
lg kevin

Re: PureBasic 4.60 Beta 1 released! (diesmal wirklich)

Verfasst: 04.04.2011 01:47
von ts-soft
Mal abgesehen von dem 3D zeuchs :mrgreen: , sehr schöne Erweiterungen bei.
Das neue WebGadget hat unter Kubuntu x64 auf Anhieb funktioniert :allright:

Re: PureBasic 4.60 Beta 1 released! (diesmal wirklich)

Verfasst: 04.04.2011 01:56
von STARGÅTE
So, die ersten Tests sind abgeschlossen:

- Die neuen List-Funktionen machen das verwalten von Baumstrukturen einfacher, vorallem, weil ja nun ein verschieben ohne mitschleifen des Inhalts funktioniert, danke dafür. Damit sollten ein paar meiner programme schon mal etwas schneller laufen.

- Icons bei OpenSubMenu() setzen ist ein guter Anfang, fehlt nur noch SetMenuItemImage() oder ein optionater Parameter bei SetMenuItemText(#Menu, Item, Text$ [, ImageID]) :wink:

- Das CanvasGadget() bietet ein sehr guten ersatz für das ImageGadget wenn es um ein "CustomGadget" geht.
Auch hier ein Danke, allerdings fehlt mit bei all seinen Funktionen eine wichtige:
Das erfassen von "geschiebenen Zeichen".
#PB_EventType_KeyUp erfasst leider nur die Taste, jedoch nicht das Zeichen was wirklich "geschireben" werden würde.
Beispiel: ´ + e = é oder ^ + u = û
Das wäre jedoch gerade beim erstellen von Editoren-Gadgets wichtig. Wäre der Einbau noch möglich ?

- Bugs sind mir noch keine aufgefallen, aber gerade die neuen List-Funktionen, werde ich morgen (heute) noch mal intensiver testen, gerade wenn es im Listen in Strukturen geht.

Re: PureBasic 4.60 Beta 1 released! (diesmal wirklich)

Verfasst: 04.04.2011 01:59
von TomS
Na super. Wollte grade in's Bett gehen und dann werd ich hier einfach so von der neuen Beta überfallen. Die musste jetzt noch drauf, sonst kann ich ja nicht ruhig schlafen :lol:

Von den neuen Funktionen hab ich noch nix getestet, aber schonmal ein dickes Lob für die neue Tab-Leiste!
Und die Help in der Sidebar find ich auch Klasse :allright:

EDIT: Zur Hilfe in der Sidebar gleichmal: Wir wär's mit automatischem Zeilenumbruch? Bei manchen Seiten brauchste ja nen zweiten Monitor um die ganze Hilfe drauf zu kriegen.
Und zweitens geht Strg+C nicht...

Re: PureBasic 4.60 Beta 1 released! (diesmal wirklich)

Verfasst: 04.04.2011 02:07
von CSHW89
Wir ist was kleines in der IDE aufgefallen. Alle neuen Tabs besitzen zu Anfang das Prädikat 'geändert'. In der alten Version wurden neue Tabs erst als 'geändert' angezeigt, wenn man ein Zeichen geschrieben hat. Dadurch gibt es zwei kleine Schönheitsfehler:
1. Wenn man ein neuen Tab ohne Inhalt schließen will, wird man gefragt, ob man speichern will.
2. Wenn man die IDE ohne Datei startet (ein leerer Tab ist offen) und dann eine Datei läd, bleibt der leere Tab da, muss also erst noch geschlossen werden.

Das war beides in 4.51 anders.

lg kevin

Re: PureBasic 4.60 Beta 1 released! (diesmal wirklich)

Verfasst: 04.04.2011 02:15
von ts-soft
@CSHW89
Das ist IMHO ein Bug der bereits von mir gemeldet wurde :wink:
http://www.purebasic.fr/english/viewtop ... 83#p350283

Mich wundert allerdings, das es diesen überhaupt gibt, der fällt doch
beim erstem öffnen der IDE bereits auf?

Re: PureBasic 4.60 Beta 1 released! (diesmal wirklich)

Verfasst: 04.04.2011 07:23
von DrShrek
freak hat geschrieben:Erstmal ein "haha" für den gleichnamigen Aprischerz. Besonders einfallsreich war der ja nicht gerade... :roll:
Aber dafür gut! :bounce:

Nun zur echten beta:
Danke ;-)

Re: PureBasic 4.60 Beta 1 released! (diesmal wirklich)

Verfasst: 04.04.2011 07:24
von RSBasic
:allright: (Wurde aber auch langsam Zeit. :lol: )