> ## Documentation Index
> Fetch the complete documentation index at: https://docs.altoura.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Object System

# Objects for Surface Types

When creating for the object system there are a few requirements based on the surface type for the object to be able to spawn on.

## Floor Object

*Object Requirements:*

* the pivot of the GameObject parent should be at the bottom center of the mesh object
* a collider on the GameObject parent that covers the area of the object that will be clickable / draggable (if there is no collider added at this level there will be a box collider generated on this level by the code)

*Portal Requirements:*

* set the constraints of the object to **Horizontal (Floor)** when creating or editing the object in the portal

<Frame caption="floor object example">
  <img src="https://mintcdn.com/altoura-785c3552/uN9er-P_53ywyRvz/images/docs/e48986a-Floor.png?fit=max&auto=format&n=uN9er-P_53ywyRvz&q=85&s=91b235b3f54b4e892eb757a574e543f9" width="1917" height="952" data-path="images/docs/e48986a-Floor.png" />
</Frame>

## Wall Object

*Object Requirements:*

* the pivot of the GameObject parent should be at the back center of the mesh object
* the z forward of the pivot should be facing backwards to define the front of the GameObject is
* a collider on the GameObject parent that covers the area of the object that will be clickable / draggable (if there is no collider added at this level there will be a box collider generated on this level by the code)

*Portal Requirements:*

* set the constraints of the object to **Vertical (Wall)** when creating or editing the object in the portal

<Frame caption="wall object example">
  <img src="https://mintcdn.com/altoura-785c3552/ZuSJMQqW-zq_BCI_/images/docs/bdb5710-Wall.png?fit=max&auto=format&n=ZuSJMQqW-zq_BCI_&q=85&s=e3a885c3e6231f92decada9dda8b2c40" width="1917" height="915" data-path="images/docs/bdb5710-Wall.png" />
</Frame>

## Ceiling Object

*Object Requirements:*

* the pivot of the GameObject parent should be at the top center of the mesh object
* a collider on the GameObject parent that covers the area of the object that will be clickable / draggable (if there is no collider added at this level there will be a box collider generated on this level by the code)

*Portal Requirements:*

* set the constraints of the object to **Ceiling** when creating or editing the object in the portal

<Frame caption="ceiling object example">
  <img src="https://mintcdn.com/altoura-785c3552/pvN_b_9fLlPnvtUQ/images/docs/055ac7b-Ceiling.png?fit=max&auto=format&n=pvN_b_9fLlPnvtUQ&q=85&s=7474a6a59373717b647e63328308330b" width="1917" height="902" data-path="images/docs/055ac7b-Ceiling.png" />
</Frame>

## Hanger Object

*Object Requirements:*

* the pivot of the GameObject parent should be at the top center of the mesh object
* a collider on the GameObject parent that covers the area of the object that will be clickable / draggable (if there is no collider added at this level there will be a box collider generated on this level by the code)

*Portal Requirements:*

* set the constraints of the object to **Hanger** when creating or editing the object in the portal

<Frame caption="hanger object example">
  <img src="https://mintcdn.com/altoura-785c3552/_Fb1P96m80-mEejg/images/docs/53b785a-Hanger.png?fit=max&auto=format&n=_Fb1P96m80-mEejg&q=85&s=5e8607e2ec5b469835b601eaae1b8301" width="1913" height="917" data-path="images/docs/53b785a-Hanger.png" />
</Frame>

# Additional Object Customization

## Adding a Horizontal Surface

Adding a horizontal surface to an object will allow for other objects with the horizontal constraint to be added on top of the object.

*Object Requirements:*

* a GameObject named 'Horizontal' as a child of the object parent
* a collider on the GameObject parent that covers the area of the object that will be clickable to add a another object to

<Frame caption="horizontal surface example">
  <img src="https://mintcdn.com/altoura-785c3552/FoIV9SzgFfYMUXXv/images/docs/326758f-Horizontal.png?fit=max&auto=format&n=FoIV9SzgFfYMUXXv&q=85&s=178a0493fa40fe3d895c638b8ff904c1" width="1918" height="912" data-path="images/docs/326758f-Horizontal.png" />
</Frame>

## Adding a Vertical Surface

Adding a vertical surface to an object will allow for other objects with the vertical constraint to be added on top of the object.

*Object Requirements:*

* a GameObject named 'Vertical' as a child of the object parent
* a collider on the GameObject parent that covers the area of the object that will be clickable to add a another object to

<Frame caption="vertical surface example">
  <img src="https://mintcdn.com/altoura-785c3552/rSHiWKFaLfV4dcN7/images/docs/6bf86adcc0502053119181c0dbe1e54cce7b13ec6fc078ef6b7650ed0585abcd-image.png?fit=max&auto=format&n=rSHiWKFaLfV4dcN7&q=85&s=ef838c4ea8f3607c14c11a5d3bde9a14" width="1917" height="710" data-path="images/docs/6bf86adcc0502053119181c0dbe1e54cce7b13ec6fc078ef6b7650ed0585abcd-image.png" />
</Frame>

## Adding Slots to an Object

Adding a slots to an object will allow for other objects to be added in specific slots on the object if there are horizontal surfaces defined in the object.

### Slots for objects of any size or type

*Object Requirements:*

* horizontal surfaces on the object (see above for how to add a horizontal surface to an object)
* a GameObject named 'Slot' with children at the positions of the slots

<Frame caption="slots example">
  <img src="https://mintcdn.com/altoura-785c3552/FoIV9SzgFfYMUXXv/images/docs/2aa2959-MicrosoftTeams-image_2.png?fit=max&auto=format&n=FoIV9SzgFfYMUXXv&q=85&s=ba6c8126fec27daf409610c020399ea0" width="1920" height="896" data-path="images/docs/2aa2959-MicrosoftTeams-image_2.png" />
</Frame>

### Slots for objects of a specific type and any size

*Object Requirements:*

* the 'Slot' GameObject parent name to follow the pattern: Slot$TypeOfObject ex. Slot$Shirt

*Portal Requirements:*

* add type (can be any tag) to tag list when creating or editing the object in the portal

<Frame caption="slots with object type example">
  <img src="https://mintcdn.com/altoura-785c3552/niZvlZtOVSBbiV3u/images/docs/8a1a8dd-MicrosoftTeams-image_3.png?fit=max&auto=format&n=niZvlZtOVSBbiV3u&q=85&s=a0045a71c5db6f8f63a95ca1bed34e2a" width="1920" height="887" data-path="images/docs/8a1a8dd-MicrosoftTeams-image_3.png" />
</Frame>

### Slots for objects of a specific type and size

*Object Requirements:*

* the 'Slot' GameObject parent name to follow the pattern: Slot$SizeofSlot#TypeOfObject ex. Slot$Medium#Shirt

*Portal Requirements:*

* add type (can be any tag) and size (only tags **small** / **medium** / **large**) to tag list when creating or editing the object in the portal

<Frame caption="slots with object type and size example">
  <img src="https://mintcdn.com/altoura-785c3552/uN9er-P_53ywyRvz/images/docs/e058b17-MicrosoftTeams-image.png?fit=max&auto=format&n=uN9er-P_53ywyRvz&q=85&s=f8727d8697220ceb34269ec83ffa855a" width="1913" height="893" data-path="images/docs/e058b17-MicrosoftTeams-image.png" />
</Frame>

<Frame caption="object with type and size example">
  <img src="https://mintcdn.com/altoura-785c3552/z2_JFZPNE9ekTL9F/images/docs/a41bfea-MicrosoftTeams-image_1.png?fit=max&auto=format&n=z2_JFZPNE9ekTL9F&q=85&s=c978b99ad7de6f70e1cf9a80924922bd" width="1308" height="652" data-path="images/docs/a41bfea-MicrosoftTeams-image_1.png" />
</Frame>

## Adding Hanger on a vertical placed object

*Object Requirements:*

* a GameObject named 'HangerPivot' as a child of the object parent where the hanger object will be spawned
* a collider on the GameObject parent collider should be at the back side and z direction facing forward (+Z)

*Portal Requirements:*

* set the constraints of the object to **Vertical (Wall)** when creating or editing the object in the portal

<Frame caption="Hanger on a vertical placed object example">
  <img src="https://mintcdn.com/altoura-785c3552/ZuSJMQqW-zq_BCI_/images/docs/c019bcb-Hanger_Rod.png?fit=max&auto=format&n=ZuSJMQqW-zq_BCI_&q=85&s=9959ec9be0e187d444469eefb97a7f05" width="2554" height="1000" data-path="images/docs/c019bcb-Hanger_Rod.png" />
</Frame>

## Adding Slots to an Object with Horizontal Surface

Adding a slots to an object will allow for other objects to be added in specific slots on the object if there are horizontal surfaces defined in the object.

### Slots for objects of any size or type

*Object Requirements:*

* horizontal surfaces on the object (see above for how to add a horizontal surface to an object)
* a GameObject named 'Slot' with children at the positions of the slots
* the slots transform y direction should be facing upwards (+Y)

<Frame caption="slots example">
  <img src="https://mintcdn.com/altoura-785c3552/FoIV9SzgFfYMUXXv/images/docs/2aa2959-MicrosoftTeams-image_2.png?fit=max&auto=format&n=FoIV9SzgFfYMUXXv&q=85&s=ba6c8126fec27daf409610c020399ea0" width="1920" height="896" data-path="images/docs/2aa2959-MicrosoftTeams-image_2.png" />
</Frame>

<Frame caption="Slot point direction">
  <img src="https://mintcdn.com/altoura-785c3552/uN9er-P_53ywyRvz/images/docs/e37a668-Slot_Horizontal.png?fit=max&auto=format&n=uN9er-P_53ywyRvz&q=85&s=76764ae04b7ac0ae69ab061c9a9dc072" width="1075" height="706" data-path="images/docs/e37a668-Slot_Horizontal.png" />
</Frame>

### Slots for objects of a specific type and any size

*Object Requirements:*

* the 'Slot' GameObject parent name to follow the pattern: Slot$TypeOfObject ex. Slot$Shirt

*Portal Requirements:*

* add type (can be any tag) to tag list when creating or editing the object in the portal

<Frame caption="slots with object type example">
  <img src="https://mintcdn.com/altoura-785c3552/niZvlZtOVSBbiV3u/images/docs/8a1a8dd-MicrosoftTeams-image_3.png?fit=max&auto=format&n=niZvlZtOVSBbiV3u&q=85&s=a0045a71c5db6f8f63a95ca1bed34e2a" width="1920" height="887" data-path="images/docs/8a1a8dd-MicrosoftTeams-image_3.png" />
</Frame>

### Slots for objects of a specific type and size

*Object Requirements:*

* the 'Slot' GameObject parent name to follow the pattern: Slot$SizeofSlot#TypeOfObject ex. Slot$Medium#Shirt

*Portal Requirements:*

* add type (can be any tag) and size (only tags **small** / **medium** / **large**) to tag list when creating or editing the object in the portal

<Frame caption="slots with object type and size example">
  <img src="https://mintcdn.com/altoura-785c3552/uN9er-P_53ywyRvz/images/docs/e058b17-MicrosoftTeams-image.png?fit=max&auto=format&n=uN9er-P_53ywyRvz&q=85&s=f8727d8697220ceb34269ec83ffa855a" width="1913" height="893" data-path="images/docs/e058b17-MicrosoftTeams-image.png" />
</Frame>

<Frame caption="object with type and size example">
  <img src="https://mintcdn.com/altoura-785c3552/z2_JFZPNE9ekTL9F/images/docs/a41bfea-MicrosoftTeams-image_1.png?fit=max&auto=format&n=z2_JFZPNE9ekTL9F&q=85&s=c978b99ad7de6f70e1cf9a80924922bd" width="1308" height="652" data-path="images/docs/a41bfea-MicrosoftTeams-image_1.png" />
</Frame>

## Adding Slots to an Object with Vertical Surface

*Object Requirements:*

* same as Slots with horizontal surface
* only change is Slot z direction should be facing forward (+Z)

<Frame caption="Slot point direction">
  <img src="https://mintcdn.com/altoura-785c3552/RIgkSrBJFuycivOX/images/docs/eb3b3a2-Slot_Vertical.png?fit=max&auto=format&n=RIgkSrBJFuycivOX&q=85&s=28cf5ec814f7b4fca57c553fb409eed7" width="941" height="774" data-path="images/docs/eb3b3a2-Slot_Vertical.png" />
</Frame>

## Adding Slots to an Object with Hanger Surface

*Object Requirements:*

* the 'Slot' GameObject parent name to follow the pattern: Slot$TypeOfObject ex. Slot$HangerClothes
* the slots transform y direction should be facing upwards (+Y)

*Portal Requirements:*

* add type (can be any tag) to tag list when creating or editing the object in the portal

<Frame caption="slots with hanger surface example">
  <img src="https://mintcdn.com/altoura-785c3552/z2_JFZPNE9ekTL9F/images/docs/9be3424-HangerSlots.png?fit=max&auto=format&n=z2_JFZPNE9ekTL9F&q=85&s=d18c26c51e1e44f956e3988ada20c9c7" width="2563" height="900" data-path="images/docs/9be3424-HangerSlots.png" />
</Frame>

# Object Filtering

## Adding a Tag to an Object

Create an empty GameObject as a child of the object which we need the filter for. This tag can be added to an [object in the portal for filtering](/docs/tutorials/hello-world-space-builder/upload-object).

Filter naming convention - $Filter#TagName Eg - $Filter#Pant

<Frame caption="Object Filter Example">
  <img src="https://mintcdn.com/altoura-785c3552/ZuSJMQqW-zq_BCI_/images/docs/c81acd2-MicrosoftTeams-image_2.png?fit=max&auto=format&n=ZuSJMQqW-zq_BCI_&q=85&s=bfa1f627577c4195fe78808510dea7c9" width="2547" height="979" data-path="images/docs/c81acd2-MicrosoftTeams-image_2.png" />
</Frame>

<Frame caption="Portal tag example">
  <img src="https://mintcdn.com/altoura-785c3552/_Fb1P96m80-mEejg/images/docs/3ebbec4-MicrosoftTeams-image_3.png?fit=max&auto=format&n=_Fb1P96m80-mEejg&q=85&s=d912ba9d5dd68b325686d0163f387edd" width="2179" height="1274" data-path="images/docs/3ebbec4-MicrosoftTeams-image_3.png" />
</Frame>
