Changelogs and Updates

This chapter covers the latest updates and changes made to the Table Realms Lua IDE. The releases are ordered as per descending chronological order.

New version of IDE 1.0.0_025

Table Realms IDE

  • GAP Audio files were not been reloaded when project are in expanded mode.
  • ENHANCEMENT You can now edit multi line text fields for components.

Table Realms Client

  • GAP Persistance has been changed to be more robust and to store locally until there is network when it will persist the data.

Table Realms Client & Lua

  • ENHANCEMENT Added functionality to show saving and loading of data as well as periodic saving abilities.
  • ENHANCEMENT Added functionality to download text and images at run time.
  • ENHANCEMENT Completed the feature of making bookings from within Lua.

Table Realms Client/Server & Lua

  • GAP Made the voting and Leaderboard systems work for group data as well.
  • BUG Fixed a bug in the Leaderboard functions when you don’t have a score yet.

Lua Changes

  • ENHANCEMENT Changed the scroll panel to respect it’s own pressed settings so you can disable pressing on scroll panels, leaving them code controlled only.
  • ENHANCEMENT Made the scroll panel more robust when child objects don’t have constraints.
  • GAP The image drawing for styles fill mode no respects the alignment settings.
  • BUG Extended the Calendar functions to correctly handle GetEpoc date from a calender. Previous it would return the current epoc not that Calendars epoc.
  • ENHANCEMENT Added Horizontal and Vertical alignment to the Image component.
  • ENHANCEMENT Added a new method to Panel and Page that assists in teh finding of all children with a specific name. This assists with populating replicated components in code. (FindChildrenByName(name))
  • ENHANCEMENT Added a new layout type LayoutCard.
  • ENHANCEMENT Vertical and Horizontal panels can now specify alignment for layout.
  • ENHANCEMENT Pages can now be added as pop-ups over the current page and then dropped. This allows a simple way to create model behaviour.
  • ENHANCEMENT ScrollPanel can now derive it’s size from Vertical and Horizontal panels in it.

New version of IDE 1.0.0_024

Table Realms IDE

  • BUG Fixed a bug that caused the solution to hang at times due to thread locking between Swing components and the LuaExecution queue. This happened when there was a Lua error when moving from one display page to another.
  • BUG Fixed a bug that had cropped in with teh last release preventing the launch of embedded games.
  • ENHANCEMENT We now hide the page properties when editing items on the page. We only show them when you select the page. This is a better use of screen space.
  • ENHANCEMENT Added a clone component menu to teh tree view right click pop up menu.

Table Realms Client

  • BUG Fixed a bug that had cropped in earlier preventing teh launch of embedded games.
  • BUGFixed a bug that was causing the system to crash on certain gateways and internet providers that strip out the ETag header.
  • BUG Corrected the handling of touch for WegGLBasic games. The touch was not being passed to the underlying web page.
  • STABILITY Profile image is downloaded in a thread, when rapidly re-scanning a new project it is possible that the image is not downloaded yet when the Lua code calls GetProfileImage this leads to some games loosing the profile image when rapid scanning between. We have placed the profile image into a static cache and used the known one as we reload any newer ones. This was also copied from the original bundle into the new bundle.
  • BUG Fixed a bug where in the controller model we were not correctly injecting a bunch of player data in or calling the correct connectionOpening methods of listeners if you were using the WN(HTTP) protocol.

Table Realms Client & Lua

  • STABILITY Fixed an error that occurs if you call GetBase64OfImage from lua but the image name you send is not in the asset cache. It now returns null if the image can not be found.

Table Realms Client/Server & Lua

Lua Changes

  • ENHANCEMENT The Model listeners are now managed in such a way that adding or removing them during a call to onw does not cause issues. Previously this was not possible as the behaviour would be unpredictable.
  • ENHANCEMENT Labels not correct support the nested model bindings and will update if any part is changed. When sub parts change the label removes itself from the listener status and then add itself back with then new values.
  • BUG Fixed an error in the list implementation we use. If you removed the first item of the list it would backfire and the list would become just the first item.

New version of IDE 1.0.0_018-023

Unfortunately due to extreme pressure notes were not kept for releases 18-22. We will try recapture these here in as much detail as can be rebuilt.

Table Realms IDE

  • Fixed bug when dragging a component onto a panel in the tree view.
  • Added a right click function to allow the rebuilding of the tree view.
  • Added a right click function to allow the duplication of pages.
  • Added short cuts in the help menu to the document and the forums.
  • Added a play/pause system for the executing Lua environment.
  • Automatically stop play when Lua has an exception.
  • Added a profiling view to evaluate lua performance including compiles.
  • IDE now supports editing the Design uncompressed into folders. (This is still in early stages). This allows multiple people to work on a solution at the same time.
  • Drag and Drop area has been expanded to include the full tree view of the designer.

Table Realms Client

  • Various stability bugs were fixed.
  • Now functions with an existing Goolge login even if you are offline.
  • A new protocol H was added allowing the downloading of Lua applications from an http url and not a normal TableRealms IP source.
  • A new protocol was added to allow the execution of non Table Realms solutions in the WebView as if they were Table Realms applications. This allows us to embed other HTML 5 games.

Table Realms Client & Lua

  • YouTube component added.
  • Twitter component added.
  • Google analytics added.
  • A new function to close the application down completed from Lua was added.
  • A new lua function to open another table realms application from the first one was added.
  • A new function to intercept pressing back from the application was added. (This allows us to perform specific tasks if Back is pressed, if no task executes the application will perform the normal exit scenario)

Table Realms Client/Server & Lua

  • Completed the data sets solution for storage online of data sets
  • Added a leader-board system for retrieving leader-boards.
  • Added a voting solution.

Lua Changes

  • Fixed some issues around page setting to prevent the circular behavior that happens at times when the model and page setting loop through messaging. This was causing pages to flip indefinitely.
  • Added an initial chat system (currently very limited circular chart).
  • Made the ScollPanel have eight and inertia.
  • Fixed some pressed behavior for buttons that made them click on touch as apposed to release. This makes solutions behave more in line with user’s expectations.

New version of IDE 1.0.0_017

Lua Changes

Scrolling Layout

Name Detail
Package: components
Files: PanelScrolling.lua

This now respects insets.

New version of IDE 1.0.0_016

Table Realms Client

Lua Changes

New flag for Server

We have added a new global flag SERVER if true the Lua is executing in a server environment. This is true even if the code is executing in a embedded server environment on the client.

LUA Changes

Page Shown

Name Detail
Package: base
Files: Page.lua, Component.lua

Components now have a function to update when a page becomes visible.

function Component:PageShown()

This can be extended for components to do preparations before display if need be.

New page functions

Name Detail
Package: base
Files: Main.lua

The following two functions were added. The enable the pushing of the current page and changing to a new one so the destination page can pop back to the page. This is handy for screens that are reused from various places.

PushAndSetPage will remember the current page and move to another. You can push more then one time and pop back.

function PushAndSetPage(pageName)

Restore last page we were pushed from.

function PopAndSetPage()

Clear the current page stack back to nothing. You only need this if you know you plan to abort the stack for some reason.

function ClearPageStack()

New page model change listener

Name Detail
Package: base
Files: Main.lua

Two new model change listeners have been added. These take a Lua pattern as apposed to a fixed pattern name. This is called now automatically by Label and Button when we have nested keys.

"${player.${currentPlayerId}.name}"

The lua keys for the above are

"currentPlayerId"
"^player%..*.name$"

the first is a simple direct model value and will place a standard model listener. The second places a pattern listener. This way if either changes the label/button will update it’s display.

function AddPatternModelListener(itemName,functionToCall)

function RemovePatternModelListener(itemName,functionToCall)

Additionally to support these changes the following functions were also modified.

Find model keys will return nested keys as shown above. It automatically converts a key with a sub key into a suitable pattern for Lua to test with.

function FindModelStringKeys(text)

Replace model keys will now perform nested key replacement. This means you can construct a key from sub-keys all in the string and the correct value will be shown.

function ReplaceWithModelStrings(text)

Further online data storage functions

Name Detail
Package: base
Files: Main.lua

Additional management functions for online storage were added. The current back-end does not yet divide the storage data into these groups but the interfaces manage the distinction for now.

DefineOnlineModelKeys

This will add a set of new keys to maintain online.

Loads a online set of parameters and adds them to the model then calls the callback function this sets name.

Parameter Detail
setName The name of this set of keys
onlineKeys The array of the online keys to add
callBack The callback to be called when these keys have been loaded
function DefineOnlineModelKeys(setName,onlineKeys,callBack)

Show and Hide hook functions for pages added

Name Detail
Package: base
Files: Page.lua

We have added hook functions for pages when they show or hide. This is useful to make adjustments just before a page shows or just after it is hidden.

The hook function will be passed the page being show or hidden.

function Page:AddShowHook(showFunction)

function Page:AddHideHook(hideFunction)

Twitter Search view added

Name Detail
Package: components.twitter
Files: TwitterSearch.lua

This is a native component extension that shows a twitter search view. It will show you the results of the search with either dar or light themes.

YouTube show video or feed

Name Detail
Package: components.youtube
Files: YourTubePlayer.lua

This is a native component extension that shows a you tube player in the application. The native viewer can be configured to auto play and to allow full screen interaction.

Android Changes

Profile image

A new function was added to GeneralInformation to return put the players profile image into the image cache.

environment:GetProfileImage("profileImage")

Image Graphics

When an attempt to draw a missing image is made that attempt just returns. Previously there was an exception that stopped the Lua from continuing.

IDE Changes

Changes to the console view

In dark theme some color changes were made for readability. The console input block now honors the editor theme.

New version of IDE 1.0.0_015

Table Realms Client

BUG: Android 7 connection issues

It was discovered that Android 7 had very poor connection handling. The socket defaults differ to those of android 8 and have been configured manually. The stability is not much improved.

Lua Changes

Name Detail
Package: components
Files: Button.lua

Added the same behavior to the Button as Label so now we have the ability to embed model data into the strings and it will automatically update.

Name Detail
Package: base
Files: Page.lua

Added a new value to page that allows the passthrough of touch events to an embedded web view.

Name Detail
Package: base
Files: Main.lua

Main was moved to -4 in package order.

Name Detail
Package: base
Files: FlagsManagement.lua

A small script to split Global model flags up into parts and set them in the environment.

IDE Changes

UI Theme

A new dark theme has been added to the UI Dark theme. This can be changed in the settings window opened from the file menu.

BUG: Page not rebuilding when we edit data

There was a bug introduced when we fixed the updating of the component values. This has been resolved although the page will only rebuild when you click off it and back on. More resolution for the rebuilding should still be done.

Controller Model

Flags management

To implement correct flags handling we have had to make a few changes to various places. The flags are all managed in the Controller Model now those from the URL and those specified from the Global FLAGS variable as well as any added manually in the Lua code.

Added a new method to the GeneralInterface

/**
    * This is where flags are added to the solution from Lua. The Lua main code should identify the FLAGS global 
    * set from server break it apart on "," and send each part to this method.
    * 
    * Flags need to be set in time to be effective. Each flag has different rules for this. Flag that need to be 
    * set right early must be done so through the URL rather as thsoe are set before anything happens.
    * 
    * @param flagDetails an individual flag to be set.
    */
public void AddFlag(String flagDetails);

Android

Made the following change to the WebView

    webSettings.setDomStorageEnabled(true);

This allows the dom storage API to function. For come WebView application this may be a performance boost.

New version of IDE 1.0.0_014

Lua Changes

Name Detail
Package: components
Files: TouchPassthrough.lua

Fixed a typo in the definition of the component params.

Also fixed the x,y coordinates on the Touch and Release events to be modified, before they were just sending the raw x,y.

Added a Multi Touch checkbox on the component that defaults to true. This defaults to true.

Name Detail
Package: components
Files: PanelHorizontal.lua

Changed the one layout option from saying Fixed % Width to saying Fixed % Height also corrected the mathematical code to multiply by this factor first then divide by 100.

Name Detail
Package: components
Files: Button.lua

To make button more flexible we added a new method to set the script after runtime. This is needed as the current function is compiled during new so if you modify the script it will not recompile. So to set a button script you must call.

function Button:SetScript(script)
  • script: the new script string.
Name Detail
Package: components
Files: PanelVerticle.lua

Changed the one layout option from saying Fixed % Height to saying Fixed % Width also corrected the mathematical code to multiply by this factor first then divide by 100.

Controller Changes

Arguments in Lua have now been moved to been accusable during the compile phase. This was need as the initial compile really needs to set up things like instanceId from the arguments.

Various changes to the ModelController for the Lua histed stuff, fixing some threading issues and making it more resilient.

The ControlerModel has an added method to ConectionListerner. This is called just before the compilation. This allows for the creation of the Asset Cache (needed for some of the image functions) before the compilation of the Lua code.

Known bugs

BUG: When a number is passed from one Lua instance to another via the global model the type of double reverts to a string type.

IDE Changes

BUG: Boolean/Int/Double component properties not getting correct default value

When a component value is of type boolean and that component was added to a page. As can be seen with Label for example. The default value suggested for the component is not set. This has been fixed now to provide the correct Boolean default value.

BUG: Form details not saving after editing

There has been a bug in the solution where often values changed in a form do not save and it takes a few iterations of back and forth to resolve them. This is in fact a technical issue due to various threaded event listeners and race conditions.

After removing the unnecessary beanIntoGui in the changes and additionally making changed only update fields if there was in fact an alteration we have removed many of the race conditions.

It remains possible that there are some situations where the save does not happen. If any are seen please try recreate them and let us know the pattern that makes this happen.

New version of IDE 1.0.0_013

Lua Changes

Name Detail
Package: players
Files: Players.lua

Added a new list for players playersOrdered it is a normal array of all players. To order in this array is guaranteed to be the same in all players environments.

Name Detail
Package: components
Files: Panel.lua, Component.lua

Added the functions needed for Panel to return the component that matches SELECTED_ITEM_ID this will also evaluate the actual panel. The return is done as part of Paint this is required for performance as this is when graphics is available.

Component has a new method PaintSelected(graphics) this can be overrides if needed to add your own information to components that only shows in design mode. This is called last so it will pain over any children that might also render.

Name Detail
Package: components
Files: Label.lua

Label now allows the text binding of model data into the label. For example there is a model.name this is generally the current players handle. If you wanted to greet this player by name you can set the label text to "Hello ${name}." this will be replaced with "Hello Player.".

Whats more is if the value changes during execution it will update the label and repaint automatically. This means you do not need to repeatedly update the label yourself.

Name Detail
Package: components
Files: Button.lua

Button has had it’s disabled render behavior modified. Previously when a button was disabled and had no disabled style it would still render with it’s normal style. This has been changed to hiding the button when disabled if there is no disabled style. This is mor flexible as you can achieve the original behavior by allocating the same style to enabled and disabled. But now to hide the button simply do not give it a style.

Name Detail
Package: components
Files: PanelVerticle.lua

There was a layout bug that didn’t correctly handle self.gap being nil. Also it did not correctly calculate the gap in dp.

Also noticed the incorrect spelling of Vertical. This will need to be refactored one day. Might be able to do it with a temporary facade that remains for a while.

Name Detail
Package: components
Files: PanelStack.lua

There was a feature gap in PanelStack it did not take inset gaps into account correctly. This has been remedied.

Name Detail
Package: base
Files: Main.lua

Two new functions were added to assist the labels with model data replacements in strings. Some changes for stability were made to the Paint function.

FindModelStringKeys

This will return an array of all the model data keys in the string.

This will only search the first discoverable values. It will not search the returned data from the model for each and then process a second set of keys.

function FindModelStringKeys(text)
  • text: the string to search for keys in.
  • return: an array of the string keys in the string.

ReplaceWithModelStrings

This will replace items in the string with items from the model.

For example calling this with "Hello ${name}" will return with "Hello Bob" assuming the model contains a key, value pair of name=bob. For now values that are not found in the model are replaced with three periods "..." .

function ReplaceWithModelStrings(text)
  • text: source the string to replace model data in.
  • return: the returned string of model data.
Name Detail
Package: base
Files: Page.lua

Page Paint(graphics) was modified to call the PaintSelected(graphics) of the returned item from baseComponent.Paint(Graphics) only if such a method can be found.

IDE Changes

Edit Feature

We have added a bounding box on screen around the currently selected item in the tree view. This is to make it easier to see where your item falls in the screen display for layout. This required changed to both the base and component packages.

New Model Data

Added the following flags into the model

Lua Key Details
DESIGN_MODE This is true if you are running in the designer. Not set at all if not.
SELECTED_ITEM_ID When in the Editor this is the ID of the correctly selected item. Used to display debugging information

Controller Changes

Enhancement: Sending a receiving nil/null

Changed have been made to the model management to allow for the sending of nil/null values to essentially remove a key from the model.

So you can set model data to nil in Lua and it will remove from the Lua table and it will remove from the Map on the game/server.

If you set the model data to null in the Game/Server it will remove from the Lua table essentially leaving a nil in it’s place.

This is a HIGH RISK change and it has not yet been implemented in the .js or Unity engines. IT is currently only implemented in the Java Lua hosted solution.

BUG: Global data received

The controller has been updated to correctly flag incoming model data as global in the global set as it arrives from the host.

BUG: Model Data Callback issue

There was a bug when the model data was causing a callback into Lua and further changed to the mode data would be ignored. This was because there is a flag to prevent recursive updates when adjusting values form the network. The callback was moved to outside this loop so that model data changed in Lua during a callback for model data changed still works.

BUG: Model Data Callback thread locking

There was some synchronized data around information that was received from the connection before the Lua was ready to execute. This data was help in a list until the Lua was ready. During setting of data in a callback from Lua this could cause a thread locking issue. Where the thread processing the change synchronized around the list, would block a set from within the change listener that also tried to synchronize around the same list. This was fixed by removing the synchronization after the Lua was ready. Sine this can only happen as a result of a callback and they only occur when the Lua is ready it resolved the issue.

New version of IDE 1.0.0_012

Lua Changes

Name Detail
Package: players
Files: PlayersUpdatedOnStart.lua

Some code was moved from players to this file. This was to allow the developer to first add listeners to Add or Remove player functions before we calculate the first set. Previously functions added would not be called on the first calculation of players.

Controller Changes

The controller has been updated to correctly flag incoming model data as global in the global set as it arrives from the host.

Unity Runtime

New feature Global Data modified from Lua in Unity

Making the global data synchronize when changed in one Lua environment to the others was added to the unity implementation.

JS Runtime

BugFix Global Data

There was a bug in the implementation of global data. This bug was causing any global data without a ‘.’ in the name to fail to synchronize with the players environments. This in turn was breaking the Player management in Lua.

New feature Global Data modified from Lua in JS

Making the global data synchronize when changed in one Lua environment to the others was added to the JS implementation.

Table Realms IDE 1.0.0_011

Lua Changes

Name Detail
Package: components
Files: TouchPassthrough.lua

Comments typos fixed

Name Detail
Package: base
Files: Main.lua, DataStore.lua
Changes: Paint now checks if there is a graphics in the Lua context before performing paint. This was needed after we made the system able to run the camera at the same time as the Lua. A new file with data storage features was added called DataStore.lua

Add Data Store Local

Use this to add a local data store for model data.

All model data defined here will be saved locally on the device. No effort is made to synchronize this data.

Note:
  • All data is simply added to the model, this means all keys need to be unique per model.
  • The data loading for local happens right up front. However it will not access the local data until you have added the keys as a set.
function AddLocalDataStore(name, keys)
  • name: the name of the data store.
  • keys: an array of keys to store locally

Add Data Store Online

Use this to add an online data store for model data. A callback can be added for when it returns. Note only one callback per data-store key will be managed. So if you do more then that it call the last one.

All model data defined here will be saved online against the account holder and the game.

Note:
  • All data is simply added to the model, this means all keys need to be unique per model.
  • The loading happens asynchronously, you can not immediately assume the data is loaded. That is why a callback was added.
  • A current limitation of one DataSet need to be self managed by the developer. This is planned to change.
function AddOnlineDataStore(name, keys, callBack)
  • name: the name of the data store. Will be passed into the callback.
  • keys: an array of keys to store online
  • callBack: if supplied this method will be called when the keys are loaded.
Name Detail
Package: players
Files: Players.lua
Changes: Fixed a nil errors when players are added or removed but we have not selected to have any listers.


Name Detail
Package: base
Files: Main.lua

AddGlobalKeys

function AddGlobalKeys(globalKeys)

This function will add the keys delivered to global keys. This means that when shared with the host game from here on the keys will be marked as global.

Global keys are replicated between all devices and the game. Be careful as changes are not synchronized so if you change a global key on two players devices you may end up with an unknown state. It is best to make sure all global keys are only effected in one place.

There is no way to undo the addition of global keys in a session.

  • globalKeys: an array of keys to add to the global set.

Be careful not to add keys you intent to save locally or remotely to a global set. The behavior should you do so is indeterminate from session to session.

Name Detail
Package: base
Files: Base.lua
Changes: New methods added to assist with the handling of images, qr codes and taking photos.

Add Image From Base64

This will load an image into the image set from the base64 string provided.

function AddImageFromBase64(imageName, imagebase64)
  • imageName: the name of the image to be loaded.
  • imagebase64: the base64 encoded string for the image.
  • return: returns the image table or nothing if the load failed.

Encode Image To Base64

This will encode an image into a base64 string for decoding elsewhere. The encoding format is determined by the encoding type. Default is ‘png’

function GetBase64OfImage(imageName, encodingType)
  • imageName: the name of the image to be encoded.
  • encodingType: the encoding format desired (‘gif’,‘png’,‘jpg’).
  • return: returns the base64 string or nil if the conversion failed for any reason.

Create a new QR code from a string

function CreateQRImage(imageName, stringToEncode)

This will encode a string value into a QR code and add that coded image to the image library.

  • imageName: the name of the image to be created.
  • stringToEncode: the string content to be encoded into the image.
  • return: returns the image table or nothing if the encoding failed.

Take a photo and return it

function TakePhoto(imageName,callBack)

This will start the process of taking a photo. When the picture is taken or failed it will call back the function supplied.

  • imageName: the name of the image to be created.
  • callBack: the function to be called when the photo has been completed.

Scan a QR code and return the value

function ScanCode(callBack)

This will start the process of taking a photo and resolving the QR code in it. When the QR code has been scanned the callBack will be called.

  • callBack: the callBack function to call once the code has been scanned. If no function is supplied the ScanCode will do nothing.
Name Detail
Package: components
Files: Image.lua

The image component has had a new selection drop down added Render Quality. This allows us to set the quality of rendering for the image.

  • Low: antialias is off and the image will use nearest neighbor.
  • Med(default): antialias is on and the image will use bilinear.
  • High: antialias is on and the image will use bicubic.

Table Realms IDE 1.0.0_010

Main feature added is the player management information for both P2P and Lua to have more information about each player and to know which player the game instance is for.

Unity

The Unity plugin has been updated to keep the following global model data up to date. The plugin was pushed at 2019/02/01 09:50. `

Model changes

Scope Key Client Key In game Type ReadOnly Example Meaning
Global players players string yes 5242,34523 A comma seperated list of player id’s currently connected to the game.
Global player.{id}.name player.{id}.name string yes Fred Players data shared to all devices
Global player.{id}.state player.{id}.state string yes Connecting Players data shared to all devices
Global player.{id}.loaded player.{id}.loaded float yes 0.5 Players data shared to all devices
Global player.{id}.color player.{id}.color any no (by design) Players data shared to all devices

Because of these changes all the above model data will be available in the hosts and clients. The set of data player.{id}.{term} is flexible and as a game developer you can add to this model data for anything you want shared between all Lua clients and all the game instances.

Other Changes

Additionally the Unity Table Realms plugin code now intercepts the model.yourid update and sets it in TableRealmsGameNetwork.instance.yourid this is for games to know which player there game is running on.

Controller changes

These changes should not specifically effect the emulator as it can not be used for P2P testing.

P2P now sends the id for each device to the game that players is seeing. In embedded mode that is to the WebGL game hosted inside the application. This id goes through the model as yourid but is handled by each engine differently.

At time of writing this changes need to still be implemented separately in the Android application, these changes will only work with the correct application.

Lua Changes

A new Lua package players has been added. This package is some helper functions for player management.

Name Detail
Package: base
Files: Utils.lua

Added a function to assist with splitting strings string.split. It can be used as follows.

local str="Items,More,OtherThings"

local items=string.split(str,',')

print(table.tostring(items))

-- output

{
    "Items",
    "More",
    "OtherThings"
}
Name Detail
Package: base
Files: Main.lua

Main.lua was moved to order -5 this was to make room for the new players package to be before 0 but after Main.lua. This means a new version of the base libraries should be imported before player.

Name Detail
Package: players
Files: Players.lua

Players.lua introduces a few new functions to assist with player management. In particular it listened to changes to model.players and then breaks those changes into players leaving and joining the game. Calling callbacks for each event.


AddPlayersAddedListener(function(playerId)
    print("Added Player:" .. playerId)
end
)


AddPlayersRemovedListener(function(playerId)
    print("Removed Player:" .. playerId)
end
)

Table Realms IDE 1.0.0_009

Lua Changes

Name Detail
Package: base
File: Main.lua

Two errors fixed causing nulls to report when certain conditions were not met in the Main function. This happened when the screen was pressed but no suitable page was in fact selected.

Name Detail
Package: components
Files: Thumbstick.lua and ThumbstickDrawn.lua

There was an error on releasing where the incorrect parameters were being sent to update causing the thumbstick to lock down.

Name Detail
Package: components
File: TouchPassthrough.lua

A new component that passes the touch events to the game. There is some comments in the component on how to implement it in the engine.

Simulator

To facilitate better behavior I have made the following improvement to the way model data for doubles is handled. Previously that data is only shipped every 60ms this was to slow down the impact of multiple touch events saturating the network. I have changed this to send the double values if they were sent previously within 60ms immediately if not they will be cached and send on the 60ms timer. This means that the touch values for the touch component will always update just before the action for touch is sent preventing us from having a zero issue. This would also solve the issues we had previously with colors in Dashpop.

This new library needs to be compiled into the test version of the Table Realms android device.