Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ public override VisualElement CreateInspectorGUI()
mainSettings.Add(CreateProperty(serializedObj, "Renderer", "Renderer"));
mainSettings.Add(CreateProperty(serializedObj, "MirrorsMaterial", "Mirror Material"));
mainSettings.Add(CreateProperty(serializedObj, "ReflectingLayers", "Reflecting Layers"));
mainSettings.Add(CreateProperty(serializedObj, "clearFlags", "Clear Flags"));
mainSettings.Add(CreateProperty(serializedObj, "clearColor", "Clear Color"));

var clipSettings = new VisualElement();
clipSettings.style.marginTop = 6;
Expand Down
78 changes: 78 additions & 0 deletions Basis/Packages/com.basis.examples/Scripts/BasisSDKMirror.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,21 @@

public class BasisSDKMirror : MonoBehaviour
{
public enum MirrorClearFlags
{
FromReferenceCamera = 0,
Skybox = 1,
Color = 2,
Depth = 3,
Nothing = 4,
}

[Header("Main Settings")]
public Renderer Renderer;
public Material MirrorsMaterial;
[SerializeField] private LayerMask ReflectingLayers;
[SerializeField] private MirrorClearFlags clearFlags = MirrorClearFlags.FromReferenceCamera;
[SerializeField] private Color clearColor = Color.black;
public float ClipPlaneOffset = 0.001f;
public float nearClipLimit = 0.01f;
public float FarClipPlane = 25f;
Expand Down Expand Up @@ -48,6 +59,43 @@ public class BasisSDKMirror : MonoBehaviour
public Action OnCamerasRenderering;
public Action OnCamerasFinished;

public LayerMask ReflectionLayers
{
get => ReflectingLayers;
set
{
ReflectingLayers = value;
if (LeftCamera) LeftCamera.cullingMask = ReflectingLayers;
if (RightCamera) RightCamera.cullingMask = ReflectingLayers;
}
}

public MirrorClearFlags ClearFlags
{
get => clearFlags;
set
{
clearFlags = value;
Camera refCamera = BasisLocalCameraDriver.Instance.Camera;
if (LeftCamera) updateCameraClearFlags(LeftCamera, refCamera);
if (RightCamera) updateCameraClearFlags(RightCamera, refCamera);
}
}

public Color ClearColor
{
get => clearColor;
set
{
clearColor = value;
if (clearFlags == MirrorClearFlags.Color)
{
if (LeftCamera) LeftCamera.backgroundColor = clearColor;
if (RightCamera) RightCamera.backgroundColor = clearColor;
}
}
}

private BasisMeshRendererCheck basisMeshRendererCheck;
private Vector3 thisPosition;
private Vector3 normal;
Expand Down Expand Up @@ -375,6 +423,7 @@ private void CreateNewCamera(Camera sourceCamera, out Camera newCamera)
newCamera.farClipPlane = FarClipPlane;
newCamera.cullingMask = ReflectingLayers;
newCamera.useOcclusionCulling = OcclusionCulling;
updateCameraClearFlags(newCamera, sourceCamera);

if (newCamera.TryGetComponent(out UniversalAdditionalCameraData cameraData))
{
Expand All @@ -388,4 +437,33 @@ private void VisibilityFlag(bool isVisible)
{
IsAbleToRender = isVisible;
}

private void updateCameraClearFlags(Camera camera, Camera refCamera)
{
switch (clearFlags)
{
case MirrorClearFlags.Skybox:
camera.clearFlags = CameraClearFlags.Skybox;
break;
case MirrorClearFlags.Color:
camera.backgroundColor = clearColor;
camera.clearFlags = CameraClearFlags.Color;
break;
case MirrorClearFlags.Depth:
camera.clearFlags = CameraClearFlags.Depth;
break;
case MirrorClearFlags.Nothing:
camera.clearFlags = CameraClearFlags.Nothing;
break;
case MirrorClearFlags.FromReferenceCamera:
default:
if (refCamera == null)
{
return;
}
camera.backgroundColor = refCamera.backgroundColor;
camera.clearFlags = refCamera.clearFlags;
break;
}
}
}
2 changes: 2 additions & 0 deletions Basis/Packages/com.basis.shim/Shims/CilboxSceneBasis.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ public class CilboxSceneBasis : Cilbox
"Basis.IBasisImageDownload",
"Basis.BasisNetworkBehaviour",
"System.Delegate",
"BasisSDKMirror",
"BasisSDKMirror+MirrorClearFlags",

"UnityEngine.Texture2DArray",
"Basis.SafeUtil",
Expand Down
Loading