Add SerializeField private field support
This commit is contained in:
@@ -62,6 +62,30 @@ set(
|
||||
"${XCENGINE_PROJECT_MANAGED_OUTPUT_DIR}/mscorlib.dll"
|
||||
CACHE FILEPATH
|
||||
"Mono corlib copied into the project script assembly directory")
|
||||
set(
|
||||
XCENGINE_SCRIPTING_TEST_PROJECT_MANAGED_OUTPUT_DIR
|
||||
"${CMAKE_BINARY_DIR}/managed/ProjectScriptAssemblies"
|
||||
CACHE PATH
|
||||
"Output directory for scripting tests that validate project asset assemblies"
|
||||
)
|
||||
set(
|
||||
XCENGINE_SCRIPTING_TEST_PROJECT_SCRIPT_CORE_DLL
|
||||
"${XCENGINE_SCRIPTING_TEST_PROJECT_MANAGED_OUTPUT_DIR}/XCEngine.ScriptCore.dll"
|
||||
CACHE FILEPATH
|
||||
"ScriptCore assembly used by scripting tests for project asset assembly validation"
|
||||
)
|
||||
set(
|
||||
XCENGINE_SCRIPTING_TEST_PROJECT_GAME_SCRIPTS_DLL
|
||||
"${XCENGINE_SCRIPTING_TEST_PROJECT_MANAGED_OUTPUT_DIR}/GameScripts.dll"
|
||||
CACHE FILEPATH
|
||||
"GameScripts assembly used by scripting tests for project asset assembly validation"
|
||||
)
|
||||
set(
|
||||
XCENGINE_SCRIPTING_TEST_PROJECT_MONO_MSCORLIB_PATH
|
||||
"${XCENGINE_SCRIPTING_TEST_PROJECT_MANAGED_OUTPUT_DIR}/mscorlib.dll"
|
||||
CACHE FILEPATH
|
||||
"Mono corlib copied into the scripting test project assembly directory"
|
||||
)
|
||||
|
||||
foreach(XCENGINE_REQUIRED_PATH
|
||||
"${XCENGINE_CSC_DLL}"
|
||||
@@ -89,6 +113,7 @@ set(XCENGINE_SCRIPT_CORE_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/MonoBehaviour.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Object.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Quaternion.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/SerializeField.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Space.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Time.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/XCEngine.ScriptCore/Transform.cs
|
||||
@@ -111,6 +136,7 @@ set(XCENGINE_GAME_SCRIPT_SOURCES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/MeshComponentProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/MeshRendererEdgeCaseProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/ObjectApiProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/SerializeFieldProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/TagLayerProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/TickLogProbe.cs
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/GameScripts/TransformConversionProbe.cs
|
||||
@@ -190,6 +216,50 @@ add_custom_target(
|
||||
${XCENGINE_MANAGED_OUTPUT_DIR}/mscorlib.dll
|
||||
)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${XCENGINE_SCRIPTING_TEST_PROJECT_SCRIPT_CORE_DLL}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${XCENGINE_SCRIPTING_TEST_PROJECT_MANAGED_OUTPUT_DIR}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${XCENGINE_SCRIPT_CORE_DLL}
|
||||
${XCENGINE_SCRIPTING_TEST_PROJECT_SCRIPT_CORE_DLL}
|
||||
DEPENDS ${XCENGINE_SCRIPT_CORE_DLL}
|
||||
VERBATIM
|
||||
COMMENT "Copying XCEngine.ScriptCore.dll into the scripting test project assembly directory")
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${XCENGINE_SCRIPTING_TEST_PROJECT_GAME_SCRIPTS_DLL}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${XCENGINE_SCRIPTING_TEST_PROJECT_MANAGED_OUTPUT_DIR}
|
||||
COMMAND ${XCENGINE_DOTNET_EXECUTABLE} ${XCENGINE_CSC_DLL}
|
||||
/nologo
|
||||
/target:library
|
||||
/langversion:latest
|
||||
/nostdlib+
|
||||
/out:${XCENGINE_SCRIPTING_TEST_PROJECT_GAME_SCRIPTS_DLL}
|
||||
${XCENGINE_MANAGED_FRAMEWORK_REFERENCES}
|
||||
/reference:${XCENGINE_SCRIPTING_TEST_PROJECT_SCRIPT_CORE_DLL}
|
||||
${XCENGINE_PROJECT_GAME_SCRIPT_SOURCES}
|
||||
DEPENDS ${XCENGINE_PROJECT_GAME_SCRIPT_SOURCES} ${XCENGINE_SCRIPTING_TEST_PROJECT_SCRIPT_CORE_DLL}
|
||||
VERBATIM
|
||||
COMMENT "Building scripting test GameScripts.dll from project asset scripts")
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${XCENGINE_SCRIPTING_TEST_PROJECT_MONO_MSCORLIB_PATH}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${XCENGINE_SCRIPTING_TEST_PROJECT_MANAGED_OUTPUT_DIR}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
||||
${XCENGINE_MONO_MSCORLIB_PATH}
|
||||
${XCENGINE_SCRIPTING_TEST_PROJECT_MONO_MSCORLIB_PATH}
|
||||
DEPENDS ${XCENGINE_MONO_MSCORLIB_PATH}
|
||||
VERBATIM
|
||||
COMMENT "Copying mscorlib.dll into the scripting test project assembly directory")
|
||||
|
||||
add_custom_target(
|
||||
xcengine_test_project_managed_assemblies
|
||||
DEPENDS
|
||||
${XCENGINE_SCRIPTING_TEST_PROJECT_SCRIPT_CORE_DLL}
|
||||
${XCENGINE_SCRIPTING_TEST_PROJECT_GAME_SCRIPTS_DLL}
|
||||
${XCENGINE_SCRIPTING_TEST_PROJECT_MONO_MSCORLIB_PATH}
|
||||
)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${XCENGINE_PROJECT_SCRIPT_CORE_DLL}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${XCENGINE_PROJECT_MANAGED_OUTPUT_DIR}
|
||||
|
||||
@@ -15,10 +15,12 @@ namespace Gameplay
|
||||
public string Label = string.Empty;
|
||||
public Vector3 SpawnPoint;
|
||||
public FieldMetadataProbeState State = FieldMetadataProbeState.Running;
|
||||
[SerializeField] private bool HiddenFlag = true;
|
||||
public GameObject Target;
|
||||
public Quaternion UnsupportedRotation;
|
||||
public static int SharedCounter;
|
||||
private bool HiddenFlag = true;
|
||||
private int IgnoredPrivateCounter = 7;
|
||||
public bool HiddenFlagMirror => HiddenFlag;
|
||||
public int IgnoredPrivateCounterMirror => IgnoredPrivateCounter;
|
||||
}
|
||||
}
|
||||
|
||||
32
managed/GameScripts/SerializeFieldProbe.cs
Normal file
32
managed/GameScripts/SerializeFieldProbe.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using XCEngine;
|
||||
|
||||
namespace Gameplay
|
||||
{
|
||||
public sealed class SerializeFieldProbe : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private int HiddenCounter = 7;
|
||||
[SerializeField] private bool HiddenEnabled = true;
|
||||
private int IgnoredPrivateCounter = 99;
|
||||
|
||||
public int ObservedInitialHiddenCounter = -1;
|
||||
public bool ObservedInitialHiddenEnabled;
|
||||
public bool ObservedStoredValuesApplied;
|
||||
public int ObservedUpdatedHiddenCounter = -1;
|
||||
public bool ObservedUpdatedHiddenEnabled;
|
||||
public bool ObservedIgnoredPrivateCounterUntouched;
|
||||
|
||||
public void Start()
|
||||
{
|
||||
ObservedInitialHiddenCounter = HiddenCounter;
|
||||
ObservedInitialHiddenEnabled = HiddenEnabled;
|
||||
ObservedStoredValuesApplied = HiddenCounter == 42 && !HiddenEnabled;
|
||||
ObservedIgnoredPrivateCounterUntouched = IgnoredPrivateCounter == 99;
|
||||
|
||||
HiddenCounter += 1;
|
||||
HiddenEnabled = !HiddenEnabled;
|
||||
|
||||
ObservedUpdatedHiddenCounter = HiddenCounter;
|
||||
ObservedUpdatedHiddenEnabled = HiddenEnabled;
|
||||
}
|
||||
}
|
||||
}
|
||||
9
managed/XCEngine.ScriptCore/SerializeField.cs
Normal file
9
managed/XCEngine.ScriptCore/SerializeField.cs
Normal file
@@ -0,0 +1,9 @@
|
||||
using System;
|
||||
|
||||
namespace XCEngine
|
||||
{
|
||||
[AttributeUsage(AttributeTargets.Field, Inherited = true)]
|
||||
public sealed class SerializeField : Attribute
|
||||
{
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user