Tundra 1.0.6 is now out. I will summarize shortly on the biggest changes. If you are a Tundra script developer and you have your own scripts deployed, be sure to check the last section on what you need to do to get you scripts running in 1.0.6.
There is a new login portal for realXtend. When you start your new 1.0.6 client, just hit "Try It" write your name and login! Give us some feedback what you think of the new browser ui and the login portal. You can also launch your Tundra 1.0.6 client from your normal browser by doing the same login. If you are not interested in the finer details below and you have scripts made for Tundra 1.0.5 please at least read section "JavaScript Breaking Changes" to help with the transition to 1.0.6. Again as always your client will notify you of the update automatically inside 24h when its started. Or you can manually check for updates from the windows menu or inside the viewer from the File menu. *Features* - New web browser like ui for the client. You can think of Tundra as a web browser that also has 3D rendering capabilities. There is one static tab for login if you are disconnected or for the 3D content if you are connected. - You can jump to web tabs and have as many open as you like, both in disconnected and connected states. There is also a feature to set your home page, bookmarks will follow later. Basic idea is that tundra:// urls can be set as your home page, you can modify the browser settings to auto join the server too if youd like. You can also directly login to a world by writing tundra://server:port/?username=<your_name>[&protocol=udp/tcp] (inside [] is optional, it defaults to tcp) on any tab and it will connect to that world and jump to the 3D tab. - There is a new content area for tools on the browser ui. When inworld you should notice there are two icons added there Scene and Assets, so you dont have to use Shift+S/A or the top menus to access them. Inworld scripts can also add their own actions there, so depending on the world you might have more tools available to you. When disconnected the world tools are always cleared from the ui. Brief example on how to add your tools at the end. - Please give me some feed back how you like the new browser like interface. For web tabs all modern web sites should work ok (using 4.7.1 QWebKit under the hood) and has flash support as well. - New realxtend login portal. This utilizes our registered tundra:// protocol (currently only on windows). There are two ways it can be used 1) Login with your browser of choice (chrome/firefox/ie etc.), it will launch a Tundra client and login to the world. 2) Go to this page with your Tundra clients browser, do a login and it will connect to the world with your current client. Hosting for the actual Tundra servers is provided from Adminotech Ltd. - Menu items have been arranged a bit better, there is a new sub menu called settings. - Renderer settings are back and operational, this means ctrl+f will toggle full screen mode once again. - New EC_ProxomityTrigger. - New EC_LaserPointer. - UiServiceInterface was removed. See more under JavaScript Breaking Changes. - EC_Avatars attribute appearanceId renamed to appearanceRef. See more under JavaScript Breaking Changes. - New module CameraInputModule that provides web camera input. Also a test app you can access in a client from "View -> Web Camera". See how to utilize this new webcam api from http://www.realxtend.org/doxygen/class_camera_input_module.html under Detailed Description. - Post-processing settings are back in business. Accessed from menu View -> Post-prosessing. - New python irc client. Toni can post specifics about this if interested on using it. You can eg. make a Tundra server report to a IRC channel when a user logged in or out. *Enhancements* - Doxygen documentation got a lot of updates and cleanup: http://www.realxtend.org/doxygen/ Still not perfect but getting there! - Py prints and enabled modules tweaks/cleanup, thanks to Toni. - Server will now always report port, protocol, used config files and auto server store params. New menu item on non-headless server "Server -> Configure Auto Store" to have ui ask you them, in headless mode you need to modify the config directly. - New menu action in "File" menu. On server there are "New" that opens a new txml for editing, then you can do "Save" or "Save as...". On client you can do "Import Web Scene", give a url to a txml/tbin file and it will be added to your current world you are connected to. When connected on a client you also have the option to "Save as..." the whole scene. - Renamed attributes from Entity and IComponent to lower case. See more under JavaScript Breaking Changes. - ConfigAPI has new function bool HasValue(file, section, key) so you can check if there are no initial values and write your defaults if this returns false. *Bug Fixes* - Fixed issue that mumble voip had positional audio enabled when tundra cannot provide the own avatar position yet to the mumble library. This has the effect that voip could only be heard near scene center (0,0,0). - Fixed shutdown crash dump: Framework was killing qobjects that had Framework as parent, this caused in certain rare cases (eg. js qwebview usage) to crash on exit. - Fixed our QApplication subclass not to pump events/messages in Qt main loop after exiting had started. - Fixed avatar applications first person mode mouse jitter when looking around. (you can get here by zooming all the way to the avatar). - Fix EC_WebViews going black when you resize the main window. *Links* Full changelog of commits from github. Read more here if you are insterested in specifics on what has changed: https://github.com/realXtend/naali/compare/d7d12cf407...ced3636af8c0 Tundra 1.0.6 windows installer: http://realxtend-naali.googlecode.com/files/realXtend-Tundra-1.0.6.msi New login portal (you need 1.0.6 installed for this to work): http://login.realxtend.org/ *JavaScript Breaking Changes* If you have already made Tundra scripts that are running nicely in Tundra 1.0.5 you need to read this section. I'm going to write the biggest js api changes and how to modify your scripts to get the running in Tundra 1.0.6 successfully. - *Rename*: IComponent::OnAttributeChanged() to AttributeChanged() - entity.OnAttributeChanged.connect(myHandler) -> entity. AttributeChanged.connect(myHandler) - *Rename*: Entity and IComponent attributes to lower case. - entity.Id -> entity.id, entity.Name -> entity.name - comp.Name -> comp.name, comp.TypeName -> comp.typeName, comp.NetworkSyncEnabled -> comp.networkSyncEnabled, comp.UpdateMode -> comp.updateMode - *Rename*: EC_Avatar attribute appearanceId to appearanceRef - You probably rarely use this if you havent implemented your own av app (the one we ship has been fixed). entity.avatar.appearanceId -> entity.avatar.apperanceRef - *Rename*: EC_Placeable QVector3D and QQuaternion attribute name chages. - You don't need to do changes if you are using placeable.transform and its vectors. If you are directly using the QVector3D or QQuaterion "duplicate" attributes you should first of all convert your code to use the transforms attribute. If you dont want to do this you can read the current api from http://www.realxtend.org/doxygen/class_e_c___placeable.html - *Removed*: UiServiceInterface - This is not a big change, you can do this by search and replace on all of your scripts. The uiservice.FunctionX() was not needed anymore how Tundra setups its UiAPI, so the same function can now be found from ui.FunctionX() - uiservice.FunctionX() -> ui.FunctionX() just search and replace "uiservice." with "ui." If you still have problems after doing the changes, dont hesitate to contact us on the mailing list so we can help! There might be something I am missing here, just wrote it from the top of my head. Also note that breaking JavaScript changes will continue in future releases, planned changes: - Put all core api objects under a "namespace" so ui.FunctionX() -> tundra.ui.FunctionX() - This will be done to isolate core objects from normal ones in your js. For example if you do at some point asset = something; you cannot access our core api asset.FunctionX() anymore. - Remove *Raw() duplicate functions that are only there for script languages. This would mean eg. entity.GetOrCreateComponentRaw("EC_Mesh") -> entity.GetOrCreateComponent("EC_Mesh") - On a side note this has already been implemented succesfully in the tundrajj branch. Porting this is only a matter or time for Toni who will propably get the code there. Or we wait untill tundrajj is going to be merged. *JavaScript: How to use the browser ui tools section and url opening capabilities* // This will add you tool icon to the toolbar on the browser ui // your widgets show() slot is called when user presses the button var myToggleAction = new QAction(new QIcon(asset.GetAssetCache().GetDiskSource(new QUrl(" http://server.com/myicon.png"))), "My Tool Name", null); ui.EmitAddAction(myToggleAction); myToggleAction.triggered.connect(myWidget.show); // This will open a new tab in our main browser url. On a headless server it does nothing. var myUrl = new QUrl("http://google.com"); ui.EmitOpenUrl(myUrl); Best regards, Jonne Nauha Adminotech developer -- http://groups.google.com/group/realxtend http://www.realxtend.org