Releases: HTTP3D/WalkTheWeb
WalkTheWeb v3.4.14
Release Date: 5/31/2022
By Aaron Dishno Ed.D.
This software is a hosting software for 3D Websites as part of 3D Internet Metaverse that combine 3D Gaming with 3D Shopping. It is a 3D CMS for 3D Games and 3D Plugins.
Demo 3D Website: https://3d.walktheweb.com/
This release focuses on update badges, microphone controls for audio streaming (work in progress), user avatar update process, and BabylonJS 5.0 update!
Here are the details for this release:
Stop Propagation on Update Buttons - When selecting the Update Buttons on Communities, Buildings, Things, Avatars, and User Avatars, the update button would then load the item after it updates because the button is stacked on the load button. We added the event Stop Propagation function to the process to make sure it only completes the update when clicked.
New Server Stats and Information - On the Admin Dashboard (with Admin Permission on the server) we added a list of server based stats as found in the database and file system. The connect/dashboard.php page has been rewritten to supply the data, init class changed the form for what was the 3D Websites totals, and changed the JavaScript to format the results set for the listing.
Update Badges - Improved the Check for Updates process to include 3D Communities, 3D Buildings, 3D Things, and 3D Avatars. We added the update badges to the Admin Menu Items to show there are updates. This also improved the check for updates process by removing a duplicate call to the check function.
Added Updates List to the main Updates page - In the Admin Menu, under Dashboard, Updates, we added a listing of all 3D Webs (Communities, Buildings, Things, and Avatars) that have updates available. This makes it a one stop place to see and perform all available updates. The list only appears when there are updates available.
Additional Version Check Information - To simplify the results lists of updates, we passed through the webname, webdesc, and webimage with the items to have updates to make it easy to display the title, description, and thumbnail image in the list to be updated. This page comes from the 3dnet.walktheweb.com hub server.
New dirSize PHP Function available - We added a new function to get a directory size in bytes. This dirSize function is found in the DB Class file and then extended into the Handlers, connect, and plugins classes.
Feedback page has Badges - The Feedback page now has badges to show how many NEW feedback items are listed. It also adds them to the total dashboard badge.
Pending Downloads Badges - In the Admin Menu, Dashboard page, if there are any pending WalkTheWeb Downloads, they will now trigger badge update notifications to help you find them. Download or Cancel the items to remove the badges.
Plugin Hooks for Mic and Sound - We added hooks for plugins to run functions when the mic or sound is turned on or off.
Added Toggle Mic Function - We added a toggle mic function that can trigger any behaviors that need the mic. This function will be used to make sure all mic functions have a global cut off and on switch.
Mic added to Main Menu - The mic has been added to the main menu, as a record in the menuitems table (in tables class). This mic icon will turn off or on the mic globally for all WalkTheWeb mic needs.
Global Mic Variable - In order to determine if the global microphone setting is on or off, we added a Boolean WTW.micMute variable that can be checked from JavaScript code.
Added Mic Activation on the Menu - We added a mic icon to the main menu bar to toggle on and off the mic. The mic runs from a separate audio thread JavaScript worker process.
Test Mic Functionality - We now have a test mic functionality. In the main Menu, Settings Menu, there is an item for Test Microphone. When selected you will get the opportunity to toggle on or off the mic and see the test bars light up based on the volume of sound the mic receives.
New Active Load Zones Function - We added a JavaScript function called getActiveLoadZones in the wtw_actionzonefunctions.js file that returns an array of all load zones your avatar is currently intersecting.
New Active Webs Function - We added a JavaScript function called getActiveWebs in the wtw_actionzonefunctions.js file that returns an array of all webs your avatar is currently intersecting. It includes a list of webtype and webid for each without duplicates. Furthermore, it only includes checking the extreme load zones.
Added Plugin Hook for On Mic Volume Change - We added a JavaScript hook for the On Mic Volume Change (onvolumechange) function. This is tied to the Color spectrum on the test mic meter function. On the Volume Changes, it will execute the plugin function WTW.pluginsOnMicVolumeChange(zvolume).
Avatar Animation Update Process - The avatar Update process was causing unwanted duplicates for some of the animations. We improved the process to make sure duplicates do not happen. If it is an event like onwalk, onjump, onwalkbackwards, etc... it will only allow one event and the animation finds it and updates the single event. When it is an onoption event (used for unlimited animations to be loaded) it now checks for the actual animation file name to see if it is a duplicate. This will now allow the Friendly Names to be changed without creating duplicates. (formerly it was using the friendly name and file name combo to determine duplicates.)
Upgraded to BabylonJS 5.0 Game Engine! - We updated the BabylonJS Game Engine to 5.0! Check out all of the enhancements. https://www.babylonjs.com
Basic Avatars Bone Parenting - After the update to Babylon version 5, while loading an avatar, when we try to parent the bones to the avatar base it throws an error. Although we previously used this method, it may not need this step, so it has been removed from active avatars and when editing an avatar in admin mode.
Sorted the Optional Avatar Animations - Added a sort array code to the additional animations so that you can search alphabetically to trigger the animation for your Avatar.
Load Avatar for Plugins vs Designer - When loading the avatar in the designer, the load avatar process tries to load the pluginsAvatarLoadComplete function, which is not available unless in full load mode. We added a check to see if the plugins function is available before trying to load it. Now it works when the avatar is loaded into the scene, but not when the avatar is loaded into the designer.
Save Avatar from Designer was Throwing Error - When saving your avatar from the designer, it was throwing an error on the defaultspeedratio, which was removed from the useravataranimations database table. We removed the reference to the field and now it functions without error.
WalkTheWeb v3.4.13
Release Date: 4/29/2022
By Aaron Dishno Ed.D.
This software is a hosting software for 3D Websites as part of 3D Internet Metaverse that combine 3D Gaming with 3D Shopping. It is a 3D CMS for 3D Games and 3D Plugins.
Demo 3D Website: https://3d.walktheweb.com/
This release focuses on version based Updates for 3D Communities, 3D Buildings, 3D Things, 3D Avatars, and User Avatars. It uses the share functionality to create new versions and make them available for others to download the new versions as updates.
Here are the details for this release:
Added Downloads Queue Table - We added a new table called downloads that will queue up potential WalkTheWeb 3D Downloads to your server. At this time, it is for 3D Communities, 3D Buildings, 3D Things, and 3D Avatars. The intent is to populate this table when items are requested to be downloaded from other sources (like the walktheweb.org website), then pending an admin approval on your server, the items will complete the download and add to your available 3D Webs respectively.
Added Download Date and UserID to Downloads Table - We added downloaddate and downloaduserid to downloads table to assist in determining if an item in the queue was downloaded and deleted or just canceled and deleted.
www.walktheweb.org Now Supports Downloads Search - We now added the WalkTheWeb Downloads functionality to the www.walktheweb.org website (work in progress to support the GitHub project and users/developers). These are the same downloads you can find within WalkTheWeb open-source. When you click download, you will be prompted for your WalkTheWeb URL and the system will add the download to a queue found on your Admin Dashboard. It will still require someone with admin permissions to download, but it makes it easier to prompt the download list.
Admin Dashboard Downloads Queue - On the WalkTheWeb open-source Admin Dashboard, when you have any downloads in the Queue (prompted from www.walktheweb.org website), they will show with the options to download or cancel. This downloads queue window only shows when there are downloads pending.
Toggle Admin Dashboard Windows - The toggle arrow to maximize or minimize the Admin Dashboard windows was not working properly. Corrected the code to hide or show the contents of the box for the resizing.
Downloads Functions added to the Communities Class - We added two functions to the wtw_communities.php class file to handle adding and updating records in the downloads queue. Add uses the addDownloadQueue function and supports the Connect class, while updateDownloadsQueue function is used by the handlers class to update a record to downloaded or cancelled in the downloads table.
Downloads Queue Handler for Updates - The Handler for the Communities Class now has the addition of updatedownloadqueue function case to process the updates to the downloads queue as downloaded or cancelled. Downloaded 3D Web records will have a downloaddate and downloaduserid in the table, both conditions mark the file deleted (processed and flagged to not show in the queue). No records are actually deleted.
Dashboard Connect Additions - The Admin Dashboard uses the connect/dashboard.php file to load the contents. We added code to include any downloads in the queue. If found, the process will use this information to validate the download and add additional information to it, such as preview image, title, description, version, and author.
Preview Feed for Downloads Queue - The downloads queue uses the minimum key field data to determine the item to download. In order for the Dashboard page to show the download information and preview image, we added a service on 3dnet.walktheweb.com that receives a set of downloadid, webid, and webtype (community, building, thing, or avatar) and returns the same data populated with the download information needed for the preview. The JavaScript function getDownloadsInfo in wtw_adminforms.js performs this process.
Corrected Image Previews for Avatars - When selecting an avatar, some of the legacy avatars used a different defined path. We updated the path to check for alternate path images before defaulting to a missing image type icon.
Added Ability to Delete My Avatar from List - When logging in, you are given a chance to select your avatar from a list of your previously used avatars. If you scroll to the bottom, we added a button to Edit My Avatars List. When selected it adds a delete button next to each avatar in your list. Select delete to flag the user avatar as deleted and no longer to show on the list. The actual records are not deleted. To cancel, click the Cancel - Edit My Avatars Button that replaces the original Edit button.
Updated pluginsGetMyAvatarList to support Edit Mode Parameter - We updated the existing pluginsGetMyAvatarList plugin hook to add a parameter determining if the My Avatars List is in Edit mode or not. zeditmode is passed and can be a Boolean true or false. If it is undefined, it defaults to false.
Delete User Avatar Functionality Added - We added a process for flagging a user avatar as deleted, where it will not show up on any of the lists. The process includes a deleteUserAvatar function in core/scripts/avatars/wtw_avatarfunctions.js, deleteuseravatar case in the /core/handlers/avatars.php, and a deleteUserAvatar function in the /core/functions/class_wtwavatars.php class. At this time, the avatar can be recovered only through setting the deleted column to zero in the useravatars database table.
Version Information added to WalkTheWeb Downloads - When searching for WalkTheWeb downloads, we now added version information to the feed from the 3dnet.walktheweb.com hub, as well as providing update user and date separate than the create user and date. Then we added them to the display when searching downloads from within WalkTheWeb Open-Source.
Added Int value for Version Order - Avatars, Communities, Buildings, and Things now have a version. In addition, we added a versionorder int field to the database which is a calculated sum of 1,000,000 x first digit, 1,000 x second digit, and the third digit. This makes it easier to sort the table in version order.
Connect Web files Added Userid - On the connect communities, community, buildings, building, things, and thing, they were returning the createdate, but we added the updatedate, updateuserid, and createuserid.
Save Template Share Form Version - The Process to save the Share form for communities, buildings, and things now saves the Version and Version Description. This includes the Form fields, JavaScript functions, Handlers, and Class functions.
Read Only Version on Info Page - Since the Version is controlled by Shared Webs (set when you share an upgraded Community, Building, Thing, or Avatar), we made the information page under Options and Settings show the Version and Latest Version Description as read only. Use the Share Page in the menu to create a new version.
Version Control in Database - For consistency, we are now using versionid, version, versionorder, and versiondesc fields to determine and track versions. Versionid is the key field value of the first version and remains the same during updated versions to keep the chain of updates preserved. Version is the 3 integers separated by period, where the first is major updates or rewrites, second is minor updates, and third is bug fixes or small modifications and adjustments. The versionorder is a numerical representation of the version used to sort the versions, as the sum of the first value multiplied by 1,000,000, second by 1,000, and third value as is. The versiondesc is a short note describing the update, Initial Version is the default value. This now applies to Avatars, Buildings, Communities, Things, UploadObjects, and UserAvatars. Some existing fields like versionuploadobjectsid were renamed to versionid for consistency.
keyExists Function Table Prefix - In the DB Class, there is a function to check if the keyExists that works with the getNewKey function. The getNewKey automatically added the tableprefix value to the table name, while the keyExists function did not. For consistency, the keyExists function now automatically appends the tableprefix value and it has been removed from the table names when calling the function.
Version Update for User Avatars - When you load your User Avatars, the selection window will now show you if there is an updated version of your avatar! Just click to update. This should preserve your custom colors and add any missing animations. It will replace animations that match the animationevent with the updated avatar animationevent. So you should make a backup copy of any avatar changes and custom animations you have from the original, you will need to update them again after the version update.
New User Update Avatar Process - In the Handlers, Avatar Class, and corresponding JavaScript (wtw_login.js and 3dinternet plugin), we added a process to update the user avatar to the latest version of the avatar based on the 3dnet.walktheweb.com hub repository. This includes downloading the avatar and animations. The process will overwrite any custom changes in the files, so make a backup before proceeding.
Version Check Service Now Available - We now have a versioncheck.php page available on https://3dnet.walktheweb.com/connect/ that you can send an array of items to check and receive the results of any updates currently available. Just send an array of webtype, webid, version, and versionid to receive updates. Webtype is community, building, thing, or avatar; webid is the id of the item to be updated, versionid is the id of the original version, and version is the current version loaded.
WalkTheWeb v3.4.12
Release Date: 3/31/2022
By Aaron Dishno Ed.D.
This software is a hosting software for 3D Websites as part of 3D Internet Metaverse that combine 3D Gaming with 3D Shopping. It is a 3D CMS for 3D Games and 3D Plugins.
Demo 3D Website: https://3d.walktheweb.com/
This release focuses on multiplayer and chat functionality.
In addition it covers banning and blocking avatars in multiplayer as well as a new cleaner look to the install pages.
Finally, the multiplayer service options are now offered during the installation process, the options can also be found in the Admin Menu under the 3D Internet settings.
Here are the details for this release:
Added 3D Internet Blocked Instances Table - Added a table called wtwprefix_3dinternet_blockedinstances to track blocked and banned instances from your scenes on a user level. This functionality will be tied to multiplayer movement and chat functionality.
Looping Backwards through an Array Correction - Numerous times in the code we looped backwards through an array as noted by the i-- most often used to remove an index. By going backwards, when you remove the index, the next index is in tact to continue the process, unlike when you go forward and it shifts the remaining indexes while skipping one. We found a lack of consistency and sometimes an error in the method where it would skip an index. We searched and replaced the code to be more consistent with this pattern: for (var i=array.length-1; i > -1; i--) ... Note that some did not use the -1 from the length and just trapped the out of index by checking as null, while others used i >=0 which did work. But we found cases where it used i > 0 which does skip the lowest index. They are all corrected now.
Avatar Double loading in Multiplayer - Corrected an issue where avatars were loading twice while in multiplayer. They were downloading once, but playing the enter avatar animation twice. Corrected the issue by checking the second event to see if it already loaded.
Added JavaScript Hooks for Avatar Enter Events - We added two new hooks in the JavaScript code to make it easy to add custom code in plugins. The first is when the Avatar Enters the scene (part of the loading) and the second is when the avatar is completely loaded and visible. pluginsEnterAvatar and pluginsAvatarLoadComplete both pass the parameter zavatarname.
Block Chat or Ban Avatar - You can now block chat or ban an avatar by clicking on the avatar in the 3D Scene and selecting it from the menu. When you Block Chat, the avatar in your scene and your avatar in their scene will change to 50% transparency, you will not be able to start a private chat, you will not see any group chat from them, and they will not get see any group chat from you. If you Ban the User, the avatar will go to full transparency and all of the Block Chat functions are also in effect.
Rebranded the Styled the Install Process - We rebranded and styled the Install Process so that it uses the same logo that displays on the bottom left, black background based, and larger fonts. We also moved inline styles to the stylesheet.
New Install Step - Optional Services (Multiplayer) - We now added an additional screen to the setup process to offer Optional Services. The first service offered is to enable multiplayer. There are 3 basic multiplayer plans to start; Developer, Small Business, and Gamers. You can either purchase a year of service or simply click No Thanks. After the step is shown once, it will not show again. The same settings and ability to turn on Multiplayer is available in the Admin Menu, 3D Internet, Control Panel.
Updated Socket.io to the Latest Release - We updated socket.io to version 4.4.1 (latest release). This is for the multiplayer and chat functionality.
Renamed Plugin Hook pluginsCheckActionPerZone - We will be adding a new hook in the check action zone function that is not in the zone array loop so we renamed the existing plugin function from pluginsCheckActionZone to pluginsCheckActionPerZone since it iterates through the array of zones.. We also renamed pluginsCheckActionZoneTrigger to pluginsCheckActionPerZoneTrigger for consistency since it is also in the iteration of the array.
Added Mold ID to 3D Text - In the addMold3DText function on script page wtw_3dblog.js under molds, when the text is added it used a mold name but was missing the ID. Without the id, it could not be selected with getMeshById functions. We added the ID to the mesh to match the name to resolve this issue.
New JavaScript Hook for Reset Activity Timer - We added a new hook for when my avatar movement resets the activity timer. This timer is currently being used to pause the scene rendering if the avatar is not moved within a set amount of time. For mobile devices it is relatively short while on desktop devices it is extremely long. Reason has to do with battery saving concerns on mobile devices. This new hook allows plugins to tap into the process and set the reset loop differently or add functionality to when it is reset.
Remove getMoveEventsArray Function - We removed the unused getMoveEventsArray JavaScript Function from the 3D Internet Plugin.
Enabled Activity Timer - The Activity Timer has been disabled for a while since it had no extended use. With Multiplayer in full swing, we now needed the activity timer to decide when the inactivity timeout occurs so that we can gracefully disconnect form multiplayer, leading to a more reliable reconnect sequence. The Activity Timer is activated with the function resetActivityTimer, initially called in the loadUserSettingsAfterEngine function found in the wtw_core.js file.
Enhanced Multiplayer Functionality - We improved multiplayer functionality with special concentration on making sure avatars leave when disconnected and return as expected. This includes a timeout for inactivity that after 30 minutes your avatar will fade in your 3D Scene and in the 3D Scenes you are shown in multiplayer, then you have 5 minutes to either move you avatar to reset the timer or it will log you out of multiplayer until you do move to reenable it.
Added inactive Flag for Multiplayer Movement - In order to stop all multiplayer sending and receiving commands, we added a global variable wtw3dinternet.inactive Boolean flag that can be used to test if the activity timer timed out and multiplayer is temporary on hold.
Reconnect Load Zone Function - When a user disconnects all socket connections and rooms disconnect, so when we reconnect we needed a process to determine which Load Zones you are currently in and log you into the respective movement and group chat rooms.
Fade Multiplayer Avatar Listener - We added a Listener to the Movement (move channel object) to allow us to receive fade notifications caused by inactivity and returned activity. Fade can be used to obviously fade an avatar, but also can restore the opacity of an avatar using the same function.
Add Avatar Parameter - We added a box around your avatar that can determine when other avatars in multiplayer are near you. When they are near, they will be shown and fade into view and when they leave the avatar parameter they will fade out. In addition, multiplayer avatars are now being tracked anywhere within the Extreme Load Zone.
Multiplayer Script Documentation - The multiplayer 3D Internet Plugin now has a lot more comments and notes about each variable and function. This should help determine the use of each.
WalkTheWeb v3.4.11
Release Date: 2/28/2022
By Aaron Dishno Ed.D.
This software is a hosting software for 3D Websites as part of 3D Internet Metaverse that combine 3D Gaming with 3D Shopping. It is a 3D CMS for 3D Games and 3D Plugins.
Demo 3D Website: https://3d.walktheweb.com/
This release adds user feedback functionality, versioning framework, group chat, and enhanced one-on-one chat.
In addition, we added a new Unload Zone. This allows you to show low poly objects at a distance, then hide them after the detailed high poly object is loaded as you approach it.
Here are the details for this release:
Updated Copyright to include Database - In the browser console the Copyright statement is displayed. We added the database version, updated the date (which was missed on the last release), and reformatted the statement.
Unload Action Zone ID added to Molds Tables - Added the field for unloadactionzoneid as a varchar 16 to the communitymolds, buildingmolds, and thingmolds tables. This field will be used to track an unload zone or area within a load zone where the mold should not be loaded.
Updated Unload Zone Functions - An Unload Zone is a Zone you can add inside of a Load Zone to force the opposite of a Load Zone. Where an avatar enters a Load Zone and the identified molds are loaded, the Unload Zone creates a hole in the Load Zone where the Molds are not loaded. Example would be a building with a lot of details outside loaded in a load zone, yet when you are inside the unload zone inside the building, the outside details can be unloaded to increase the available resources for the inside scene. This affects the following functions: wtw_common.js function setShownMoldsByWeb excludes the identified molds from the load zone from being loaded; wtw_basicactionzones.js function addActionzoneUnloadzone to create the zone; wtw_addactionzonelist.js to define the add function, default form values, and form labels; and wtw_analytics, 3dinternet class_main.js, and 3dinternet chat.js functions needed to exclude unloadzone from loadzone filter.
ztestactionzoneid eliminated in loadMolds function - The loadMolds function in wtw_core.js set a variable named ztestactionzoneid but never used the variable after it was set. We eliminated its use in the function declaration and setting.
Exclusion Zone = Unload Zone on Mold Form - When editing a mold, under the Advanced Options section, you can now add an exclusion zone (unload zone) to the mold or 3D Model to have it unload while you are in a particular zone. This creates holes in the load zone allowing you to save on resources for molds you cannot see from the inside (like outside of a building not being shown when inside the building). Note that the Exclusion Zone only appears if you have added an Unload Zone to your 3D Community, 3D Building, or 3D Thing being edited.
Connect, Share, Copy, and Recovery for Unload Zone - The unload zone id needed to be added to every instance of the Molds arrays, connect, save functions, copy functions, recover molds, share, download and all other references to mold architecture. This affected 151 instances in 24 files.
Avatar Movement where Opposites Cancel - Previously, if you combine opposite movement, the two animations and movement would combine to cancel yet caused some strange behavior. We added code to test for the opposite movement and cancel the active animation in the avatar movement function. This applies to strafe, run strafe, turn, run turn, walk, run, walk backwards, and run backwards.
Filter Active and Inactive 3D Plugins - We added two menu items under admin menu, 3D Plugins so that you can now show All Plugins, Active Plugins, and Inactive Plugins separately.
Filter Users by Privilege, Local, Global, and Visiting - Filters have been added to the Admin Menu, Users list so that you can now see All Users, Privileged Users (ones with roles added), Local Users (no global token), Global Users (has global token, and Visiting Users (ones without roles). We also added a field for knowing if there is a user token in the connect users.php file.
Added Feedback Table - Added a feedback table to track feedback, suggestions, and issues.
Feedback Menu Option - All users can access the Feedback functionality in the main menu under Help.
Feedback Form and Snapshot - The feedback form allows the user to select a category, feedback type, subject, message, take a screen shot, and optionally include contact name and email. The snapshot will capture the current active Babylon Screen. It does not include the menus and other overlays.
Feedback Admin Functionality - Under the Desktop menu option on the Admin Menu, there is now a Feedback option that will allow you to view the list of submitted feedback, with the option to mark them as Closed (Archived). It includes the ability to Reopen and enlarge the Snapshot.
Feedback Process - The complete feedback process includes user submittal form, JavaScript to submit, Tools Handler, Tools Class, table entry, admin menu item, admin full page table, table generated list in admin, ability to track which feedback items are new vs open, and ability to close or reopen a feedback item. At this time, the process also automatically submits a copy of the table item to WalkTheWeb to assist in quality control.
Corrected Error when Adding Objects - When adding objects, the unload Action Zone field that was added to the form recently was causing an issue when there are no unload zones. Corrected the issue by checking if there are unload zones before trying to read the selected zone. This error in the process was blocking the saving of any object. It is corrected and working fine now.
WordPress Connect 3D Website Builder - The new WordPress WalkTheWeb app for creating 3D Stores will be released very soon and uses a connect WordPress file in WalkTheWeb to trigger creating a 3D Website from the remote secure WordPress App. It will require a WalkTheWeb user account with Admin Access and an active login to create a 3D Website. This process is similar to the setup process of WalkTheWeb.
Added Version Support to Downloads - Added versionid, version, and versiondesc to the various handlers, connect, and class functions related to communities, buildings, things, and avatars. This stage included making sure the version information travels with the WalkTheWeb Downloads and Shared items. Furthermore it updated the functions for save, download, copy, and import of these items.
New Group Chat Functionality! - We now have new group chat functionality! If you click Enter while the canvas is focused, it will open a text prompt. Just type and hit enter to send. The scope is currently the entire Community, Building, or Thing that is open. Your own posts show in yellow text, while all others show up in white. Hit the enter with a blank text top close the text prompt, or use the x on the prompt frame.
Updated Private Chat - The Private chat has been updated to include any avatar in your scene (community, building, or thing). Just click on the avatar, select private chat from the menu, and if they accept, you are off and running. If you close the chat, the other user gets the notification that you left. This chat also includes the update for "Typing" when the user is actively typing into the chat (before they send).
WalkTheWeb v3.4.10
Release Date: 1/13/2022
By Aaron Dishno Ed.D.
This software is a hosting software for 3D Websites as part of 3D Internet that combine 3D Gaming with 3D Shopping. It is a 3D CMS for 3D Games and 3D Plugins.
Demo 3D Website: https://3d.walktheweb.com
This release corrects an issue with avatars loading properly in some browsers using an update for Babylon Game Engine to 4.2.1.
This release also includes updates for multiplayer to work dynamically with a one to many relationship for opening a 3D Building alone and tracking avatars in multiple 3D Community Scenes at the same time with transposed positions and rotation.
Here are the details for this release:
SSL Certificate issue caused empty JSON - Some of the JSON calls that originate from the server were receiving an ssl verification error due to an update on the server to the CA Authority. A Patch update was released that corrected the issue. It has been applied to all WalkTheWeb servers.
Rendering glb, gltf, and obj 3D Models - We added the ability to render .glb, .gltf, and .obj 3D Models. This uses the JavaScript function for addMoldBabylonFile just like the babylon files, so that there is no difference in additional functionality added to the rendering and settings as it adds the 3D Model to the 3D Scene.
Set Object Folder without file Extension - Numerous calls throughout the code to the 3D Model Object Folder is calculated by removing the extension from the primary 3D Model file name. This takes place in JavaScript Admin Scripts and PHP Community Functions. Previously, it only supported .babylon files. It now additionally supports .glb, gltf, and obj files.
Add 3D Model Menu Option - We Added an Admin Menu option named Add 3D Model to the Edit 3D Thing (Thing, Building, and Community) Admin Menu. This makes it quicker and simpler to locate to add 3D Models to your 3D Scenes. In addition, we added the ctrl-m quick option that works when your mouse is over the menu.
Dynamic Camera Distance - Fixed camera position. Recent camera updates appeared to have broken the dynamic camera distance function. This function allows the camera to automatically shorten the distance towards the avatar when the view is obstructed by a wall or mesh. It used to use radius of the free camera or universal camera, but that value no longer works. We now assigned that value and added code to use the value on the camera position formula in the setMovingCameras function.
Avatar Scale Doorway - The Avatar Scale function adds a doorway as a guide to scale the avatar to be able to enter buildings. This 3D Mold is now added to the release.
Added Avatar Heartbeat - We added an avatar heartbeat in order to improve session ending and recover responses. The heartbeat is once per second and maintains a timestamp on the multiplayer server.
Dynamic One to Many Multiplayer Positioning - The multiplayer has been expanded to not only track multiple avatars in each 3D Community Scene and each 3D Building, but to also track players in any 3D Building and broadcast relative positioning, scaling, and rotation to each 3D Community where the 3D Building is placed. The opposite is also true, each avatar in every 3D Community Scene that nears any 3D Building is broadcast to that particular 3D Building when opened as a single 3D Building. Entering a 3D Community or 3D Building high visibility load zone enters the avatar into the multiplayer for that zone. Basically, the owner of a 3D Building 3D Store can open the 3D Building Store directly and interact and communicate with any avatar entering the 3D Building Store found in any 3D Community Scene. In addition, the other avatars see each other so they will understand how busy the store is collectively.
Avatar Not Loading Issue - It may be due to a browser or similar update, but the avatars and their animations were not loading under version 4.2.0 of Babylon game engine. After updating the Babylon game engine to 4.2.1, all is working again.
WalkTheWeb v3.4.9
Release Date: 8/30/2021
By Aaron Dishno Ed.D.
This software is a hosting software for 3D Websites as part of 3D Internet that combine 3D Gaming with 3D Shopping. It is a 3D CMS for 3D Games and 3D Plugins.
Demo 3D Website: https://3d.walktheweb.com
This Last month we focused on converting the multiplayer tracking from a scene based system to a High level Load Zone based system.
This Month we completed the backend enhancements to the multiplayer system and added the ability to set and add language(s) for the Admin and user menus. We are now multiple language supported!
Here are the details for this release:
Enter and Exit Action Zone Handlers - We have added Enter and Exit Action Zone Handlers for plugins to use. Each function will fire one per Action Zone the avatar enters and fire once on exit. Note that when the browser looses focus it may trigger an Exit, and Enter again when focus is restored.
Doc Type on Pages Set - The doctype on certain auxiliary pages was not set and caused a warning for Google Chrome that may set the page in quirks mode. After setting the doctype to html, it forces the page to stay out of quirks mode. This applies to the loading, viewers, login, and other pages in the /core/pages folder.
Addition of Language Translation Files - We added language translation files to the /core/languages folder to define the word translations for the menus and forms built in WalkTheWeb. Additional files can be added and it will automatically load and use any properly formatted file in the folder. The language for the menu can be set in the admin menu - settings - server settings.
Admin Menu Supports Multiple Languages - The Admin Menus now support multiple languages. Just add a language file to /core/languages based on the format in the Spanish Example file. Then you can select the language for the menu in the Admin Menu - Settings - Server Settings.
PHP Language Translate Function - We added a PHP function called with 2 underscores __("translate words") that will return the matching word's translation from the language files. The translation is not case sensitive. The function is part of the wtwdb class and extends to be called from the wtwhandlers, wtwconnect, and wtwadminmenu classes.
JavaScript and PHP Translation Functions Added - Created a JavaScript function WTW.('word') and ('word') in PHP classes wtwdb, wtwhandlers, wtwconnect, and wtwtools that will translate the word based on the default language set and the translation file found in /core/languages. This should make it easier to adapt the translated words into WalkTheWeb menus and forms.
Added Language Translation to 3D Plugins - Added the ability to add a translation file to a languages folder under the plugin root t translate any labels and terms used in the plugin. We also added the translation PHP function __() to the wtwplugins class.
Server Settings Updates - In Admin Menu, Settings, Server Settings, we updated the layout to be wider to accommodate the labels especially for other languages. I also fixed the loading of the default language using the wtw_defaultlanguage PHP variable.
Corrected Settings Forms Issue - The forms under Admin Menu Settings were not opening correctly. There was a closing div tag missing causing the form sections to be skewed.
Default Language Change Reload - On the Admin Menu - Settings - Server Settings page, when you change the default language for the menus, we added code to save the server settings form then reload the page with the new language showing.
Multiplayer is now Zone Based - The multiplayer tracking used to be based on the 3D Community Scene. It is now based on the High Load Zones. The main benefit is that it only tracks and shows 3D Avatars in the same Load Zone as well as adding tracking by each 3D Building or 3D Thing separately. The additional tracking allows us to show 3D Avatars near a particular 3D Building when loaded directly, even when they are in different 3D Community Scenes. This makes it easier to work a virtual customer service job in a 3D Store that is located in more than one 3D Scene.
Alternative Language Spanish - The focus of the language translation is the menu system and the first alternative language included is Spanish. It starts with the json language file in the /core/languages folder and has the addition of a language file(s) in the plugins languages subfolders. This stage of release did not fully translate all of the menu forms or full page forms.
WalkTheWeb v3.4.8
Release Date: 6/30/2021
By Aaron Dishno Ed.D.
This software is a hosting software for 3D Websites as part of 3D Internet that combine 3D Gaming with 3D Shopping. It is a 3D CMS for 3D Games and 3D Plugins.
Demo 3D Website: https://3d.walktheweb.com
This month we focused on prep work for the Group Chat and Movement that is based on Zones (3D Community Scene. 3D Building, and/or 3D Thing).
Edit User Roles - We have now added a way to edit user roles and add new roles. This will allow us to create groups of users... and in the near future set the permissions for what a user in a particular role can view. This means user groups that have access to certain things!
Add New User Role - Under the User Roles in Admin mode, you can now add a new Role.
Edit and Delete a Role - Under User Roles in Admin Mode, you can also edit an existing role name or delete a role. Using this form, you will not be able to delete some of the core roles like Admin, Architect, Developer, Graphics Artist, Subscriber, Guest or Host.
Global Role Access - When opening a 3D Community, 3D Building, or 3D Thing in the Admin Mode, the list was only returning the 3D Webs that you have granular access to edit. It now checks your logged in user for roles and will provide the complete list of 3D Webs available if you have the role of Admin, Developer, Architect, or Graphics Artist. This change applies to the connect files for communities, buildings, and things.
Image Plane and Image Uploads - When using a Plane and adding a texture, the texture was not reappearing when the webpage reloaded. It turns out that the image zwebimageid was blank. A test condition of setting zwebimageid to blank was not removed from a previous release testing. Since only one record can have a blank key field in the database, all additional image uploads were failing for duplicate key. The line was removed from code and now all image uploads work again as expected.
Image Scaling on Planes - The image scaling (uscale and vscale) for planes was using a proportional formula that defaulted to tiling after a reload instead of scaling one image. The formula has been removed for a straight forward setting. 1x1 will be the original one image stretched to the plane size. A 3x3 will show 3 images vertically and 3 images horizontally. etc... This will make it easier to predict and set the desired behavior.
Added Keystroke Hooks for Plugins - We added two new keystroke hooks so that plugins can intercept and code for Key Down and Key Up events. This will make it easier to customize keyboard mapping for movement or other triggers.
Display Name Input Value Populated - While the display name was being populated to the menu and other places, the main wtw_tdisplayname hidden input value was not being updated by some of the login functions (has various methods). We added code to the functions and also had it clear the value on all of the logout functions.
Clear Select Mold Duplicate Call - In the Touch Down input control function, the WTW.clearSelectedMold function was being called 2 times back to back. This was an unnecessary duplicate and has been removed.
Plugins Onclick Expanded Conditions - Previously, the pluginOnClick event would only fire if the picked name of an object was not blank. We moved the function call to be before the picked name is checked so that plugins can use a non picked click (example: click on the sky or ground to clear a previously selected 3D object in the scene) to add their own code as needed to reset conditions, clear items, or execute a custom function when nothing is selected.
Chat RoomID Expanded - In preparation for the addition of building based chats and multiplayer, we are expanding the ids for group chats and multiplayer (scene based) to include passing the communityid, buildingid, and thingid. The concept is that users in a 3D Community Scene can group chat and track multiplayer movement. If the owner of a 3D Building (for example 3D Shopping Store or Game) can open the 3D Building directly and chat with anyone from any 3D Community Scene that walks near one of the instances of the 3D Building.
Added Plugins Add Action Zone Hook - We added a hook for when a load action zone is added. This allows us to tap into the one moment when a load action zone is added (executes once per load action zone) and avoid the meInActionZone that gets fired every cycle that the avatar remains in the load action zone.
data variable renamed to zdata - In the 3D Internet plugin for multiplayer and chat, the passed variable for multiplayer services was using the variable data. To match the existing naming standards that has been changed to zdata since it is an internal variable in a function. This includes the chat.js, move.js, and voicechat.js files.
New Group Chat Text Prompt - There is a new Group Chat text Prompt that can be opened by hitting Return (while focused on the scene or mouse over scene). You can also hit return with the prompt blank to close it. If there is text, it will be set to the screen. We are in the early stages of passing the text to other users and requires more testing.
Text Block for Group Chat - When you submit text to the text prompt, the text is displayed on the screen (in scene, so that 3D VR can view it in scene). Each line will stay for 60 seconds then disappear.
Enter and Exit Chat Functions - We have added an Enter Chat function that executes when your avatar enters a High - Load when far Load Zone and an Exit Chat function that executes when the avatar leaves the High - Load when far Load Zone. In the near future these functions will connect your group chat text to one or multiple chats based on the 3D Community scene you are in and any near 3D Building you are approaching or are in. It is like walking in and out of chat zones.
WalkTheWeb v3.4.7
Release Date: 5/31/2021
By Aaron Dishno Ed.D.
This software is a hosting software for 3D Websites as part of 3D Internet that combine 3D Gaming with 3D Shopping. It is a 3D CMS for 3D Games and 3D Plugins.
Demo 3D Website: https://3d.walktheweb.com
This month was full of evaluations, bug fixes, creating demos for real businesses, and building up the to-do lists to plan out the next year in releases. Stay tuned for next month and our continued expansion and development of WalkTheWeb. Thank you! Aaron Dishno
WalkTheWeb v3.4.6
Release Date: 4/30/2021
By Aaron Dishno Ed.D.
This software is a hosting software for 3D Websites as part of 3D Internet that combine 3D Gaming with 3D Shopping. It is a 3D CMS for 3D Games and 3D Plugins.
Demo 3D Website: https://3d.walktheweb.com
This release focuses on setting up the ground work for version based upgrades to 3D Communities, 3D Buildings, 3D Things, and 3D Avatars as well as a few fixes and user interface improvements.
Updated in this release:
First Person Camera - The first person cameras for the normal universal camera are now parented properly and rotated to the right direction. The stable camera setting uses the standard follow camera moved to the avatar location parented to the avatar camera invisible box, which is used as a lock target when the camera is in follow mode. The motion first person camera uses the headtop as the parent which moves with the avatar animations. The first person camera is then offset to be 2 units forward so that it does not show any inside meshes like the avatar teeth!
Added Avatar Animation Count - When you add or edit an Avatar, you have the option to add as many animations as you like to the avatar. After I counted them 3 or 4 times when I was trying to describe a new avatar I decided there is a better way. I now added a counted to the bottom of the list of animations loaded on the avatar.
Alphabetized the Avatar Animations - We alphabetized the array of files returned from the getUploadedFileFileDetails PHP function. This allows us to have a sorted list of file names on file lists like the avatar animations drop down list.
Auto Select Latest File - When adding avatar animations, when you upload a new file, the process will now set the latest file uploaded as the selected item in the dropdown list. It looks specifically for babylon files and will not select the babylon manifest. If more than one gets uploaded, it will select the last babylon file.
Avatar Camera Off Movement Speed - We increased the accuracy of the scroll wheel movement for the Avatar Camera Off used in Building under Admin Mode. Before you could not get to smaller incremental zoom levels. This is a balance in speed of zooming and increment of zoom.
Default Animation File Set - In the Avatar Animations edit form, after the upload process was changed to set the last uploaded babylon file in the dropdown when added, the default for each animation edited was also changing to the new uploaded file. This has been corrected and both processes are setting the right file.
Opening Scene when Not Logged In - Last month we updated the cameras and all of the functions to the latest options available. When you opened the 3D Scene, before logging in, the camera was pointing straight up from the center location; always showing the sky until you logged in. Now the camera position is being activated even when you are not logged in and will show the scene in the camera view.
Updated Search Categories Samples - Since the Search Categories on the Share 3D Avatar form were copied from the 3D Things, the examples did not match what an avatar description would be like. We updated the category samples with Avatar, Leather Armor, and Boots as examples to describe the avatar with possible search terms.
Added Version Info to Copy Avatar - In the copy avatar process, the versionavatarid, version, and versiondesc have been added for the avatars table to be preserved when you copy a 3D Avatar.
Added Version Info to Save New Avatar - When saving a new 3D Avatar (Add New 3D Avatar or Create 3D Avatar), the version data was not set. It is now defaulting to the avatar id for versionavatarid, 1.0.0 for version, and Initial Version for versiondesc. This will make it easier to proceed with the next versions and upgrades.
Version added to Connect Files - The version, versionid, and versiondesc are now part of the responses from connect files for Avatars, Buildings, Communities, and Things. This will assist with checking and controlling version updates.
Rename Version ID - Since the use of versionid is all the same for avatars, communities, buildings, and things, we decided to rename versionavatarid, versioncommunityid, versionbuildingid, and versionthingid all to versionid. This will also make it easier to compare versions and look for updates.
Populate the Version ID in Tables - Since we changed to the versionid name, we needed to repopulate the versionid fields in the avatars, communities, buildings, and things tables. We also added the versiondesc with the words Initial Version for objects of version 1.0.0
Share Avatar Version Form Section - On the Share 3D Avatar Form, there is a new section for version. It includes Initial Share, Update Share, Version, and Instructions. Only the Update Share option allows you to change the version number.
Version is now saved with 3D Avatar - The Version is now saved with the SaveAvatarTemplate PHP function. It will grab the value from the Share 3D Avatar Form.
Added Version Description to Avatars - The Version Description has been added to the Share 3D Avatar form. This allows you to add up to 255 characters to describe what the update will include. This description will be seen when the users have the option to update to that version.
Avatar Version Added to Info Form - When editing an Avatar in Admin Mode, the 3D Avatar Information Form now displays the Version you are currently editing. This is not an editable field. You must use Share 3D Avatar option to create a new Version.
Select 3D Avatar to Edit Version - In Admin Mode, when you see the list to Select 3D Avatar to edit, it now shows the version (v#.#.#) number in parenthesis so that you can easily select from multiple versions of avatars with the same name.
Select 3D Community. Building, and Thing Version - In Admin Mode, the version has been added to all of the select 3D Web lists (3D Community, 3D Building, 3D Thing, and 3D Avatar). In addition, the version numbering has been aligned on the right side.
Version added to 3D Community Information - When editing a 3D Community in Admin Mode, the 3D Community Information Form now displays the Version you are currently editing. This is not an editable field. You must use Share 3D Community option to create a new Version.
Version added to 3D Building Information - When editing a 3D Building in Admin Mode, the 3D Building Information Form now displays the Version you are currently editing. This is not an editable field. You must use Share 3D Building option to create a new Version.
Version added to 3D Thing Information - When editing a 3D Thing in Admin Mode, the 3D Thing Information Form now displays the Version you are currently editing. This is not an editable field. You must use Share 3D Thing option to create a new Version.
WalkTheWeb v3.4.5
Release Date: 3/30/2021
By Aaron Dishno Ed.D.
This software is a hosting software for 3D Websites as part of 3D Internet that combine 3D Gaming with 3D Shopping. It is a 3D CMS for 3D Games and 3D Plugins.
Demo 3D Website: https://3d.walktheweb.com
This release focuses on the User Experience, avatar entrance animations, cameras, and further development on the Heads Up Display (HUD).
Updated in this release:
Web Text Field in Molds - The webtext field in the molds form was only saving under the condition if the shape was 3dtext. Since we are now using this field for 3D Store Signs and other uses, we set the condition to always save any value put into the webtext field. It has already been set to update in the setNewMolds function which changes the appearance during editing.
Deactivated Multiplayer in Admin Mode - In order to give more resources to building 3D Websites, we disabled the multiplayer in Admin Mode.
Table Fields for Versions - Since 3D Internet is constantly evolving, we wanted to add the ability to version 3D Communities, 3D Buildings, 3D Things, and 3D Avatars (all 3D Webs). This will allow us to track and provide options to update each of these 3D Webs. So as 3D Avatars get more animations, 3D Buildings change graphics, and 3D Community Scenes improve load speeds, we plan to make it easy to see if there are updates available and allow you to click to update these 3D Webs. At this stage, we added 3 fields for versionXXXXid, version, and versiondesc to each of the tables and populated the id with the key id and set the initial version to 1.0.0 for all 3D Webs.
3D Store Molds Selectable in Admin Mode - Some of the 3D Store Molds create child meshes when loaded. In admin mode we needed to make sure you could select the Mold for edit. Therefore, we added the isPickable flag and registerMouseOver to the various relevant child parts to make it easier to select.
Unindexed Mesh Issue - Overall the unindexed mesh setting on meshes seems to help speed up the render cycle. But there are a couple simple meshes that did not render correctly after the change. Therefore we removed the property to unindex the mesh. For example, the simple box was missing a corner. after the change and is now reversed.
Fixed the Video Player - We completely reworked the video player! First we cleaned up the design in Blender and added node based coloring, fixed the animation on the buttons, orientation for new video players to be facing you, changed the scaling to be simple values (before it wanted you to keep it to the right scale ratio for the screen shape), hooked up the screen play and pause, fixed the video poster, and added the Transformation Node based Scaling Guides.
Default Colors on Textures - In case the texture settings are not passed to the covering (material) step in adding a mold (mesh), we added default colors for diffuse, specular, ambient, and emissive colors and attempt to read any added values.
3D Models new Admin Mode Settings - When adding a 3D Model to a 3D Scene, we were limited to the settings that came from the 3D Model when it was built. We added new settings to assist in overriding or complimenting the 3D Model. These settings are diffuse color, specular color, emissive color, ambient color, receive shadows, and add water reflections. The receive shadows setting can assist if the 3D Model has shadows that make them too dark to see the details. Note that some of the color settings will not modify some of the 3D Models depending on the applied nodes, textures, and materials. These settings may also effect some of the already deployed 3D Models since we do set default colors if none are found. Please recheck your 3D Models coloring in your 3D Scenes as needed.
Admin Mode Edit Mold Water Reflection - The water reflection setting was not being set when you open a mold for edit. We corrected the load form code and also implemented the setting as part of the setNewMold function that is used to live update the mold as it is being edited.
Enabled Reflections - In scenes with water, we once again enabled the use of reflections and refractions. The related functions now use the latest Water Material. We modified the add function and created a remove function. We also added the function calls to the babylonfile 3D Models mold type, Avatars, and disposeClean functions.
3D Models now Accept tif Images - We added the tif extension to the allowed list of uploaded file types for 3D Models. Note that even though they upload, some of the images tested did not show until I converted them to jpg. It may be a browser or asynchronous timing when loading issue. If you test the 3D Model in a3D Scene, it appears to be consistent, either it loads correctly ever time or does not. If you see this issue, convert your images to jpg for better results.
Load All Quick Editor Setting - We have added a - Load All - Quick Editor Setting in Admin Mode. This allows you to load all Load Action Zones to show all sections of your map at once. While this is more memory intensive, it can be used to get snapshots and screen images showing any part of the 3D Scene at once. This only works in Admin Mode and has been implemented as a variable in the construct WTW.loadAllActionZones = 1. A button has been added into the Quick Editor Settings and in the Developer Tools menu.
New 3D Compass - We are working replace the Browse Menu with the new HUD. We just replaced the old compass with a new 3D Compass that is in the 3D Scene. It attaches to the active camera so it will always be in front of the user camera. It will rotate to the correct angle of the avatar movement, zero degrees being North. In addition, it has a Red Arrow that will always point to the closest 3D Building in the 3D Scene (really helps when you wander off into the distance).
Toggle Compass - We replaced the toggleCompass function with hudToggleCompass in the wtw_hud.js file. This function loads the compass and parents it to the new camerafront transform node that stays 20 units in front of the current active camera. The new Babylon files, textures, and Blender files for the compass can be found in the /content/system/babylon/compass folder. You can press c on the keyboard to toggle the compass on-off.
Camera Front parent Box - We added a transform node called camerafront that is automatically added in front of the current active camera. This box becomes the attach point for anything you avatar would hold, compass, and the HUD. It uses billboard mode so that it always faces the camera. This camerafront box is set to 20 units in front of the active camera by default. You can use it as a parent box for any item, then set your offset as position, rotation, and scaling as needed.
Retired the UI Canvas - We are finally retiring the wtw_uicanvas from the main elements. This canvas was an overlay of the Babylon render Canvas that was used to add active elements in front of the render canvas. The last thing we used it for was the compass, which is now replaced by a 3D Compass with the HUD.
Moved Compass Movement to Render Cycle - We retired the Load UI Canvass function therefore moved the compass rose movement to the scene render loop cycle. This eliminated a call to the function and integrated to the sky dome movement for the avatar.
Aligned Sunrise to East on Compass - The past compass was 90 degrees out of phase with the sunrise ever since I changed the avatar rotation to match the 3D Scene rotation months ago. With the new compass in place, I swapped the settings under the quick sky settings to match Sunrise in the East and sunset in the West.
Avatar Designer Loading - The Avatar designer was stuck on the loading screen. Ever since we added the Transform Nodes as the base of some 3D Objects (to speed up loading and rendering), we created a new function getMeshOrNodeByID as a global way to get an object regardless if it was a Mesh (mold) or Transform Node. It works great, but we forgot to add it to the Avatar Designer in the Avatar Plugin which has its own independent light-weight set of utilities that load with the designer. We added the function to that wtwavatars_common.js file and now the designer works as expected.
Avatar Enter Animations - We have reworked the Avatar Enter Animations! They were disabled when we rewrote the avatar designer a few months back. But now we have fixed the issues, reset some of the timing, and added the necessary clean-up elements. We reimplemented them as a way to enter a 3D Scene. Currently there are 11 animations and they will be chosen at random until we implement the new selection form in the new HUD.
Particle System Dispose Clean - The Particle systems were no longer being fully removed when we delete the parent object. Therefore we added code to the creation to tie the particle system variable to the object, then used it to check, stop, reset, and dispose of the particle system when it is called for disposeClean.
Camera Selection moved to HUD - The HUD is accessible by h or m on the keyboard. Under settings, you can now select cameras. These settings will be replacing the browse menu camera selection. We have expanded the selections, changed the format, removed the function to loadCameraSettings and switchCamera, added initCamera and will be using loadPrimaryCamera to retrieve any other needed settings. The settings on the HUD will continue to evolve as we expand the functionality.
Init Camera Function - We created a simple initCamera function with a switch condition to create different cameras and specific settings. This replaces the individual functions for each init camera (initAnaglyphCamera, initVRCamera, initVRGamepadCamera, initFollowCamera, initArcCamera, and the function to call and add more active cameras, addActiveCamera). This should make it simper to add and implement new camera definitions.