הוספת תת-מרחב לאפליקציה

מרחב משנה הוא מחיצה של מרחב תלת-ממדי באפליקציה, שבה אפשר למקם מודלים תלת-ממדיים, ליצור פריסות תלת-ממדיות ולהוסיף עומק לתוכן דו-ממדי. תת-מרחב מוצג רק כשהמיקום במרחב פעיל. במרחב הבית או במכשירים שאינם XR, המערכת מתעלמת מכל קוד במרחב המשנה הזה.

אפשר להשתמש ברכיבים של מרחבים משניים, כמו Volume ו-SpatialPanel, כדי למקם מודלים תלת-ממדיים. חלק מרכיבי ה-XR, כמו Orbiter או SpatialDialog, הם רכיבים סטנדרטיים לשילוב ב-2D שאפשר להשתמש בהם בכל מקום בהיררכיית ממשק המשתמש הדו-מימדי, אבל צריך להפעיל רכיבי SubspaceComposable במרחב המשנה של האפליקציה. כדי לעשות זאת, משתמשים ב-composable של ApplicationSubspace או ב-composable של Subspace.

כפי שרומז השם, הרכיב הניתן לקישור ApplicationSubspace צריך להכיל את כל התוכן המרחבי של האפליקציה. הרכיב הניתן לקיבוץ Subspace הוא אידיאלי להטמעת מחיצה של מרחב תלת-ממדי עמוק יותר בהיררכיית ממשק המשתמש הקיימת של האפליקציה.

כמו כל רכיב אחר שאפשר ליצור ממנו רכיבים מורכבים, אפשר להפעיל את Subspace ישירות בהיררכיית ממשק המשתמש הדו-מימדי. עם זאת, חשוב לדעת מהן ההשלכות של המקום שבו מפעילים את Subspace בהיררכיה.

מידע על היררכיות של מרחבים משניים

המרחב המשנה ברמה העליונה הוא המרחב המשנה החיצוני ביותר שהאפליקציה מפעילה. צריך להשתמש ב-composable‏ ApplicationSubspace למרחב המשנה ברמה העליונה, אבל אם משתמשים רק ב-composable של Subspace באפליקציה, ה-composable החיצוני ביותר של Subspace יהיה המרחב המשנה ברמה העליונה. במרחב המשנה ברמה העליונה הזה, המוגדר כברירת מחדל, מוגדר המרחב המומלץ להצגת האפליקציה. בדרך כלל זהו המיקום שבו ממוקמים הפריסה המרחבית של האפליקציה ו-SpatialPanel. אם צריך לשנות את הגבולות של המרחב המשני ברמה העליונה, מעבירים VolumeConstraints שונה ל-ApplicationSubspace.

עם זאת, אם תמקמו תת-מרחב אחר בתוך היררכיית ממשק משתמש דו-מימדי בחלונית שמכילה את תת-המרחב ברמה העליונה, תת-המרחב המוטמע יתנהג בצורה שונה.

למרחבים משניים בתצוגת עץ יש שני הבדלים עיקריים מ-Subspace ברמה העליונה:

  • הם משתתפים בפריסה הדו-ממדית שבה הם מופעלים. המשמעות היא שהגובה והרוחב של המרחב המשני יהיו מוגבלים על ידי הגובה והרוחב של הפריסה ההורה הדו-ממדית שלו.
  • הם מתנהגים כצאצאים של הישות שבה הם מופעלים. כלומר, אם קוראים ל-composable של Subspace שמוטמע בתוך SpatialPanel, המרחב המשנה הזה הוא צאצא של SpatialPanel שבו הוא נקרא.

ההתנהגויות האלה של תת-מרחב עץ מאפשרות יכולות כמו:

  • העברת הצאצא עם הישות ההורה
  • שינוי המיקום של הילד או הילדה באמצעות שינוי המיקום SubspaceModifier
  • הצגת אובייקט תלת-ממדי שמרחף מעל ממשק המשתמש הדו-ממדי ומתאים לגובה ולרוחב של המרחב המתאים בפריסה הדו-ממדית

הוספת תת-מרחב לאפליקציה

בדוגמת הקוד הבאה מוסבר איך להוסיף לאפליקציה מרחבים משניים ברמה העליונה ומרחבים משניים בתצוגת עץ:

setContent {
    // This is a top-level subspace
    ApplicationSubspace {
        SpatialPanel {
            MyComposable()
        }
    }
}

@Composable
private fun MyComposable() {
    Row {
        PrimaryPane()
        SecondaryPane()
    }
}

@Composable
private fun PrimaryPane() {
    // This is a nested subspace, because PrimaryPane is in a SpatialPanel
    // and that SpatialPanel is in a top-level Subspace
    Subspace {
        ObjectInAVolume(true)
    }
}