WFF משתמש בשפת ביטויים כדי לאפשר:
- שינוי המראה באמצעות
Transform
אוGyro
- התנהגות מותנית באמצעות הצהרות
Condition
- עיצוב מחרוזות ברכיבי
Template
שפת הביטויים היא שפת סקריפט שמכילה את האופרטורים הרגילים ומגוון פונקציות שאפשר להשתמש בהן.
בביטויים אפשר להשתמש במקורות נתונים – שמיוצגים בסוגריים מרובעים – כדי להגיב לקלטים חיצוניים כמו התאריך והשעה הנוכחיים, מדדי בריאות וכושר או אפילו מזג האוויר.
כשמשתמשים בביטויים, ההבדל העיקרי בין השימוש ב-Transform
או ב-Template
לבין השימוש ב-Condition
הוא שב-Transform
וב-Template
הביטוי צריך לייצר ערך (לדוגמה, המיקום החדש של הרכיב המקיף), ואילו ב-Condition
הביטוי צריך לייצר ערך בוליאני.
לדוגמה, Condition
עשוי להשתמש ב:
[DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] == 7
הפונקציה הזו מקבלת ערך בוליאני ומחליטה אם מדובר בסוף שבוע או לא, על סמך מקור הנתונים DAY_OF_WEEK
.
יש גם תמיכה בפונקציות – לדוגמה, ביטוי לסיבוב של ערך עד 5 מעלות בכל כיוון, על סמך הערך x-value
של מכשיר Wear OS במכשיר ה-accelerometer:
(5/90)*clamp([ACCELEROMETER_ANGLE_X],0,90) +
(-5/90)*clamp([ACCELEROMETER_ANGLE_X],-90,0)
הפונקציה clamp()
מגבילה ערך בין שני גבולות.
הערכה מחדש של הביטוי
התדירות שבה מתבצעת הערכה מחדש של הביטויים תלויה במקורות הנתונים שבהם הם נעשה שימוש. לדוגמה, הביטוי [DAY_OF_WEEK] == 6 || [DAY_OF_WEEK] ==
7
מבוצע מחדש רק כשמתחיל יום חדש. עם זאת, ביטוי שמשתמש במקור הנתונים [SECOND]
עובר הערכה מחדש בכל שנייה.
הערכה חוזרת עשויה לגרום לחישוב מחדש של הסצנה ולעיבוד מחדש, על סמך השינוי בתוצאה של הביטוי. לכן חשוב תמיד להשתמש במקורות נתונים שמבצעים הערכה מחדש בתדירות נמוכה ככל האפשר. לדוגמה, כדי לבדוק אם זה אחר הצהריים:
// Bad - re-evaluates every second
[SECONDS_IN_DAY] > 43200
// Good - limits re-evaluation frequency (1 = PM, 0 = AM)
[AMPM_STATE] == 1
ערכי תצורה בביטויים
בנוסף לפונקציות ולמקורות נתונים, אפשר להשתמש בערכי תצורה. לדוגמה, אם ב-UserConfigurations מוגדר BooleanConfiguration
בשם showBackgroundInAfternoon
, אפשר להשתמש בו בביטוי:
[CONFIGURATION.showBackgroundInAfternoon] == "TRUE" && [AMPM_STATE] == 1