Global REAL variables that:
- can be referenced by all objects/layers
- can be initialised by an expression that is automatically called when the watch starts
- are updated first ( before any other object/layer ) every watch cycle/tick based on an update expression
Having such variables would greatly improve the efficiency of watch face “programs” that currently have multiple layers all having to calculate the same expression a number of times every second. Not to mention the great reduction in complexity that would speed development and reduce the time needed to debug.
I have suggested this before … and it languished.
I currently think a ‘white box’ engine is a better / cleaner approach:
- supports time/date arithmetic, including calendar (events) and timezones
- supports custom (user) variables (as number, string, or time/date values)
- supports boolean and state fields (vast improvement over current/new -decr/+incr/reset), including initial state and coupling (conditional logic, triggered by variable change/update)
- supports extended Chronograph/Stopwatch capabilities: enhanced start/stop, laps, multiple target (incl. difference)
- returns rotation values (already cooked)
- returns time/date fields (based on calculated values, with the preferred locale, 12/24, style, etc.)
- could be extended to: astronomical/astrological data (Earth, Sun, moon, planets), enhanced fitness analysis (rest/work periods, targets, trends), etc.
This would greatly simplify the Facer engine (for Creator, or on the watch/device), and (as you noted) greatly reduce the amount of computation each UI update (time-tick/event). And all those customised tags and functions, that only support certain needs/preferences, could also be expunged.
Well, but i would add time or/and frame based animations/events as well, like in flash or the director.
Just like VAR a user defined variable can be a layer with two fields: expression and name. Then from another layers it can be referenced as a tag: #UserVariableName#