fix(scripting): stabilize mono wrapper test teardown

This commit is contained in:
2026-04-15 14:27:21 +08:00
parent 982a877714
commit 65cb212020
8 changed files with 351 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
using XCEngine;
namespace Gameplay
{
public sealed class CameraLightLookupProbe : MonoBehaviour
{
public bool HasCamera;
public bool HasLight;
public bool CameraLookupSucceeded;
public bool LightLookupSucceeded;
public void Start()
{
HasCamera = HasComponent<Camera>();
HasLight = HasComponent<Light>();
CameraLookupSucceeded = TryGetComponent(out Camera camera);
LightLookupSucceeded = TryGetComponent(out Light light);
CameraLookupSucceeded = CameraLookupSucceeded && camera != null;
LightLookupSucceeded = LightLookupSucceeded && light != null;
}
}
}

View File

@@ -0,0 +1,36 @@
using XCEngine;
namespace Gameplay
{
public sealed class CameraPropertyProbe : MonoBehaviour
{
public bool CameraLookupSucceeded;
public float ObservedFieldOfView;
public float ObservedNearClipPlane;
public float ObservedFarClipPlane;
public float ObservedDepth;
public bool ObservedPrimary;
public void Start()
{
CameraLookupSucceeded = TryGetComponent(out Camera camera);
if (camera == null)
{
CameraLookupSucceeded = false;
return;
}
ObservedFieldOfView = camera.fieldOfView;
ObservedNearClipPlane = camera.nearClipPlane;
ObservedFarClipPlane = camera.farClipPlane;
ObservedDepth = camera.depth;
ObservedPrimary = camera.primary;
camera.fieldOfView = 75.0f;
camera.nearClipPlane = 0.3f;
camera.farClipPlane = 500.0f;
camera.depth = 3.0f;
camera.primary = false;
}
}
}

View File

@@ -0,0 +1,33 @@
using XCEngine;
namespace Gameplay
{
public sealed class LightPropertyProbe : MonoBehaviour
{
public bool LightLookupSucceeded;
public float ObservedIntensity;
public float ObservedRange;
public float ObservedSpotAngle;
public bool ObservedCastsShadows;
public void Start()
{
LightLookupSucceeded = TryGetComponent(out Light light);
if (light == null)
{
LightLookupSucceeded = false;
return;
}
ObservedIntensity = light.intensity;
ObservedRange = light.range;
ObservedSpotAngle = light.spotAngle;
ObservedCastsShadows = light.castsShadows;
light.intensity = 2.5f;
light.range = 42.0f;
light.spotAngle = 55.0f;
light.castsShadows = true;
}
}
}

View File

@@ -0,0 +1,30 @@
using XCEngine;
namespace Gameplay
{
public sealed class MeshRendererFlagsProbe : MonoBehaviour
{
public bool MeshRendererLookupSucceeded;
public bool ObservedCastShadows;
public bool ObservedReceiveShadows;
public int ObservedRenderLayer;
public void Start()
{
MeshRendererLookupSucceeded = TryGetComponent(out MeshRenderer meshRenderer);
if (meshRenderer == null)
{
MeshRendererLookupSucceeded = false;
return;
}
ObservedCastShadows = meshRenderer.castShadows;
ObservedReceiveShadows = meshRenderer.receiveShadows;
ObservedRenderLayer = meshRenderer.renderLayer;
meshRenderer.castShadows = false;
meshRenderer.receiveShadows = true;
meshRenderer.renderLayer = 11;
}
}
}

View File

@@ -0,0 +1,29 @@
using XCEngine;
namespace Gameplay
{
public sealed class MeshRendererPathProbe : MonoBehaviour
{
public bool MeshRendererLookupSucceeded;
public int ObservedInitialMaterialCount;
public string ObservedInitialMaterial0Path = string.Empty;
public int ObservedUpdatedMaterialCount;
public string ObservedUpdatedMaterial1Path = string.Empty;
public void Start()
{
MeshRendererLookupSucceeded = TryGetComponent(out MeshRenderer meshRenderer);
if (meshRenderer == null)
{
MeshRendererLookupSucceeded = false;
return;
}
ObservedInitialMaterialCount = meshRenderer.materialCount;
ObservedInitialMaterial0Path = meshRenderer.GetMaterialPath(0);
meshRenderer.SetMaterialPath(1, "Materials/runtime_override.mat");
ObservedUpdatedMaterialCount = meshRenderer.materialCount;
ObservedUpdatedMaterial1Path = meshRenderer.GetMaterialPath(1);
}
}
}