feat(scripting): add script add-component api
This commit is contained in:
87
managed/GameScripts/AddComponentProbe.cs
Normal file
87
managed/GameScripts/AddComponentProbe.cs
Normal file
@@ -0,0 +1,87 @@
|
||||
using XCEngine;
|
||||
|
||||
namespace Gameplay
|
||||
{
|
||||
public sealed class AddComponentProbe : MonoBehaviour
|
||||
{
|
||||
public bool InitialHasCamera;
|
||||
public bool InitialHasLight;
|
||||
public bool InitialHasMeshFilter;
|
||||
public bool InitialHasMeshRenderer;
|
||||
public bool AddedTransform;
|
||||
public bool AddedCamera;
|
||||
public bool AddedLight;
|
||||
public bool AddedMeshFilter;
|
||||
public bool AddedMeshRenderer;
|
||||
public bool HasCameraAfterAdd;
|
||||
public bool HasLightAfterAdd;
|
||||
public bool HasMeshFilterAfterAdd;
|
||||
public bool HasMeshRendererAfterAdd;
|
||||
public bool CameraLookupSucceeded;
|
||||
public bool LightLookupSucceeded;
|
||||
public bool MeshFilterLookupSucceeded;
|
||||
public bool MeshRendererLookupSucceeded;
|
||||
public float ObservedCameraFieldOfView;
|
||||
public float ObservedLightIntensity;
|
||||
public string ObservedMeshPath = string.Empty;
|
||||
public int ObservedMaterialCount;
|
||||
public string ObservedMaterial0Path = string.Empty;
|
||||
public int ObservedRenderLayer;
|
||||
|
||||
public void Start()
|
||||
{
|
||||
InitialHasCamera = HasComponent<Camera>();
|
||||
InitialHasLight = HasComponent<Light>();
|
||||
InitialHasMeshFilter = HasComponent<MeshFilter>();
|
||||
InitialHasMeshRenderer = HasComponent<MeshRenderer>();
|
||||
|
||||
AddedTransform = AddComponent<Transform>() != null;
|
||||
AddedCamera = AddComponent<Camera>() != null;
|
||||
AddedLight = gameObject.AddComponent<Light>() != null;
|
||||
AddedMeshFilter = AddComponent<MeshFilter>() != null;
|
||||
AddedMeshRenderer = gameObject.AddComponent<MeshRenderer>() != null;
|
||||
|
||||
gameObject.AddComponent<Camera>();
|
||||
AddComponent<Light>();
|
||||
gameObject.AddComponent<MeshFilter>();
|
||||
AddComponent<MeshRenderer>();
|
||||
|
||||
HasCameraAfterAdd = HasComponent<Camera>();
|
||||
HasLightAfterAdd = HasComponent<Light>();
|
||||
HasMeshFilterAfterAdd = HasComponent<MeshFilter>();
|
||||
HasMeshRendererAfterAdd = HasComponent<MeshRenderer>();
|
||||
|
||||
CameraLookupSucceeded = TryGetComponent(out Camera camera);
|
||||
LightLookupSucceeded = TryGetComponent(out Light light);
|
||||
MeshFilterLookupSucceeded = TryGetComponent(out MeshFilter meshFilter);
|
||||
MeshRendererLookupSucceeded = TryGetComponent(out MeshRenderer meshRenderer);
|
||||
|
||||
if (camera != null)
|
||||
{
|
||||
camera.fieldOfView = 82.0f;
|
||||
ObservedCameraFieldOfView = camera.fieldOfView;
|
||||
}
|
||||
|
||||
if (light != null)
|
||||
{
|
||||
light.intensity = 4.5f;
|
||||
ObservedLightIntensity = light.intensity;
|
||||
}
|
||||
|
||||
if (meshFilter != null)
|
||||
{
|
||||
meshFilter.meshPath = "Meshes/added.mesh";
|
||||
ObservedMeshPath = meshFilter.meshPath;
|
||||
}
|
||||
|
||||
if (meshRenderer != null)
|
||||
{
|
||||
meshRenderer.SetMaterialPath(0, "Materials/added.mat");
|
||||
meshRenderer.renderLayer = 6;
|
||||
ObservedMaterialCount = meshRenderer.materialCount;
|
||||
ObservedMaterial0Path = meshRenderer.GetMaterialPath(0);
|
||||
ObservedRenderLayer = meshRenderer.renderLayer;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
51
managed/GameScripts/MeshRendererEdgeCaseProbe.cs
Normal file
51
managed/GameScripts/MeshRendererEdgeCaseProbe.cs
Normal file
@@ -0,0 +1,51 @@
|
||||
using XCEngine;
|
||||
|
||||
namespace Gameplay
|
||||
{
|
||||
public sealed class MeshRendererEdgeCaseProbe : MonoBehaviour
|
||||
{
|
||||
public int ObservedInitialMaterialCount;
|
||||
public string ObservedNegativeIndexPath = string.Empty;
|
||||
public string ObservedOutOfRangePathBeforeClear = string.Empty;
|
||||
public string ObservedMaterial0PathAfterNegativeWrite = string.Empty;
|
||||
public string ObservedMaterial1PathAfterNegativeWrite = string.Empty;
|
||||
public int ObservedMaterialCountAfterNegativeWrite;
|
||||
public int ObservedRenderLayerAfterNegativeWrite;
|
||||
public int ObservedMaterialCountAfterClear;
|
||||
public string ObservedMaterial0PathAfterClear = string.Empty;
|
||||
public string ObservedMaterial3PathAfterClear = string.Empty;
|
||||
public bool ObservedCastShadowsAfterClear;
|
||||
public bool ObservedReceiveShadowsAfterClear;
|
||||
public int ObservedRenderLayerAfterClear;
|
||||
|
||||
public void Start()
|
||||
{
|
||||
if (!TryGetComponent(out MeshRenderer meshRenderer) || meshRenderer == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ObservedInitialMaterialCount = meshRenderer.materialCount;
|
||||
ObservedNegativeIndexPath = meshRenderer.GetMaterialPath(-1);
|
||||
ObservedOutOfRangePathBeforeClear = meshRenderer.GetMaterialPath(3);
|
||||
|
||||
meshRenderer.SetMaterialPath(-1, "Materials/ignored.mat");
|
||||
|
||||
ObservedMaterial0PathAfterNegativeWrite = meshRenderer.GetMaterialPath(0);
|
||||
ObservedMaterial1PathAfterNegativeWrite = meshRenderer.GetMaterialPath(1);
|
||||
ObservedMaterialCountAfterNegativeWrite = meshRenderer.materialCount;
|
||||
|
||||
meshRenderer.renderLayer = -5;
|
||||
ObservedRenderLayerAfterNegativeWrite = meshRenderer.renderLayer;
|
||||
|
||||
meshRenderer.ClearMaterials();
|
||||
|
||||
ObservedMaterialCountAfterClear = meshRenderer.materialCount;
|
||||
ObservedMaterial0PathAfterClear = meshRenderer.GetMaterialPath(0);
|
||||
ObservedMaterial3PathAfterClear = meshRenderer.GetMaterialPath(3);
|
||||
ObservedCastShadowsAfterClear = meshRenderer.castShadows;
|
||||
ObservedReceiveShadowsAfterClear = meshRenderer.receiveShadows;
|
||||
ObservedRenderLayerAfterClear = meshRenderer.renderLayer;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user