יצירת ביטויים

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