Add concrete component script field support
This commit is contained in:
@@ -125,6 +125,7 @@ set(XCENGINE_SCRIPT_CORE_SOURCES
|
||||
set(XCENGINE_GAME_SCRIPT_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/BuiltinComponentProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/AddComponentProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/ComponentReferenceProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/EnumFieldProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/FieldMetadataProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/GetComponentsProbe.cs
|
||||
|
||||
70
managed/GameScripts/ComponentReferenceProbe.cs
Normal file
70
managed/GameScripts/ComponentReferenceProbe.cs
Normal file
@@ -0,0 +1,70 @@
|
||||
using XCEngine;
|
||||
|
||||
namespace Gameplay
|
||||
{
|
||||
public sealed class ComponentFieldMetadataProbe : MonoBehaviour
|
||||
{
|
||||
public Transform Pivot;
|
||||
public Camera SceneCamera;
|
||||
public ScriptComponentTargetProbe ScriptTarget;
|
||||
public Component UnsupportedComponent;
|
||||
public Behaviour UnsupportedBehaviour;
|
||||
public MonoBehaviour UnsupportedMonoBehaviour;
|
||||
}
|
||||
|
||||
public sealed class ComponentFieldProbe : MonoBehaviour
|
||||
{
|
||||
public Transform Pivot;
|
||||
public Camera SceneCamera;
|
||||
public ScriptComponentTargetProbe ScriptTarget;
|
||||
|
||||
public bool ObservedStoredPivotApplied;
|
||||
public bool ObservedStoredCameraApplied;
|
||||
public bool ObservedStoredScriptApplied;
|
||||
public string ObservedPivotName = string.Empty;
|
||||
public string ObservedCameraName = string.Empty;
|
||||
public string ObservedScriptName = string.Empty;
|
||||
public int ObservedScriptAwakeCount = -1;
|
||||
public int ObservedScriptHostCallCount = -1;
|
||||
|
||||
public bool ObservedUpdatedPivotAssigned;
|
||||
public bool ObservedUpdatedCameraAssigned;
|
||||
public bool ObservedUpdatedScriptAssigned;
|
||||
public string ObservedUpdatedPivotName = string.Empty;
|
||||
public string ObservedUpdatedCameraName = string.Empty;
|
||||
public string ObservedUpdatedScriptName = string.Empty;
|
||||
|
||||
public void Start()
|
||||
{
|
||||
ObservedStoredPivotApplied = Pivot != null;
|
||||
ObservedStoredCameraApplied = SceneCamera != null;
|
||||
ObservedStoredScriptApplied = ScriptTarget != null;
|
||||
|
||||
ObservedPivotName = Pivot != null ? Pivot.gameObject.name : string.Empty;
|
||||
ObservedCameraName = SceneCamera != null ? SceneCamera.gameObject.name : string.Empty;
|
||||
ObservedScriptName = ScriptTarget != null ? ScriptTarget.gameObject.name : string.Empty;
|
||||
|
||||
if (ScriptTarget != null)
|
||||
{
|
||||
ObservedScriptAwakeCount = ScriptTarget.AwakeCount;
|
||||
ScriptTarget.IncrementFromHost();
|
||||
ObservedScriptHostCallCount = ScriptTarget.HostCallCount;
|
||||
}
|
||||
|
||||
Pivot = transform;
|
||||
SceneCamera = GetComponent<Camera>();
|
||||
ScriptTarget = GetComponent<ScriptComponentTargetProbe>();
|
||||
if (ScriptTarget == null)
|
||||
{
|
||||
ScriptTarget = AddComponent<ScriptComponentTargetProbe>();
|
||||
}
|
||||
|
||||
ObservedUpdatedPivotAssigned = Pivot != null;
|
||||
ObservedUpdatedCameraAssigned = SceneCamera != null;
|
||||
ObservedUpdatedScriptAssigned = ScriptTarget != null;
|
||||
ObservedUpdatedPivotName = Pivot != null ? Pivot.gameObject.name : string.Empty;
|
||||
ObservedUpdatedCameraName = SceneCamera != null ? SceneCamera.gameObject.name : string.Empty;
|
||||
ObservedUpdatedScriptName = ScriptTarget != null ? ScriptTarget.gameObject.name : string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user