
This component also known as a raycast portal allows users to interact with objects through a camera.
Usage
Name | Type | Description |
---|---|---|
persistent
|
Bool | Determines whether or not this item will be saved to the server. |
UpdateOrder
|
Int | Controls the order in which this component is updated. |
Enabled
|
Bool | Controls whether or not this component is enabled. Some components stop their functionality when this field is disabled, but some don't. |
Offset
|
Float | How far back from the camera's actual view direction to project from |
RayExit
|
IUVToRayConverter | Usually a camera |
UVOffset
|
Float2 | The added offset to the UV point you hit on the mesh before it's projected out; best to keep this (0,0) unless needed |
UVScale
|
Float2 | The multiplied offset to the UV point you hit on the mesh before it's projected out; best to keep this (1,1) unless needed |
RepeatUV
|
Bool | Whether to repeat between the 0-1 range when the laser on the source hits a UV beyond 0-1 |
OverrideHitTriggers
|
Nullable`1<Bool> | Whether to hit colliders, requires Filter to have a sync delegate, but doesn't need to be enabled for this component to work |
Filter
|
delegate of identity Func`3<ICollider, Int, Bool> | This is a field usually used by the dash manager in local space. Very hard to use, and is not required at all |
FilterMode
|
FilterCombineMode | how to use the Filter if provided.
|
Behavior
- The camera needs to be in orthographic mode for best results. it still works in perspective but because of perspective warping it only works well in the center. This component is used for the dash, but can be utilized in real world space, allowing for some interesting effects.
- This component only works with mesh colliders. The type of mesh does not matter, since it uses the UVs; the mesh triangles have to determine what point on the camera output to project the raycast out of.
- The mesh collider can only be a front sided collider for this component to work.
- Only user interaction lasers are allowed to pass through, and only press button interactions.
Examples
In this example we will create a Camera, that looks at a Canvas, and a Quad that renders what the Camera sees.
The MeshUVRaycastPortal will transfer the laser interactions from the Quad's MeshCollider to the Canvas, through the Camera.
1. Create New -> Object -> Camera
2. Spawn -> resdb:///613cb78341d5b330aee559a1871011ccfb733221428ff9601ce56e19c7b1631e.brson
( I will refer to it as Checkbox)
- or from Resonite Essentials -> Examples -> UIX -> Checkbox
3. Place the Checkbox in front of the Camera
4. Create New -> 3D Model -> Quad
5. Create New -> Materials -> PBS Metallic (for example)
6. Set the Material as the Quad's Material
7. Grab the RenderTextureProvider from the Camera, and set it as this Material's MainTexture (AlbedoTexture)
8. Inspect the Quad, and add the MeshUVRaycastPortal
9. Set the MeshUVRaycastPortal's Camera field to the Camera created by us
10. Now when you try to interact with the UI through the Quad, the UI should be responsive