// Copyright Epic Games, Inc. All Rights Reserved. /*=========================================================================== Generated code exported from UnrealHeaderTool. DO NOT modify this manually! Edit the corresponding .h files instead! ===========================================================================*/ // IWYU pragma: private, include "Dataflow/GeometryCollectionMakeNodes.h" #ifdef GEOMETRYCOLLECTIONNODES_GeometryCollectionMakeNodes_generated_h #error "GeometryCollectionMakeNodes.generated.h already included, missing '#pragma once' in GeometryCollectionMakeNodes.h" #endif #define GEOMETRYCOLLECTIONNODES_GeometryCollectionMakeNodes_generated_h #include "UObject/ObjectMacros.h" #include "UObject/ScriptMacros.h" PRAGMA_DISABLE_DEPRECATION_WARNINGS // ********** Begin ScriptStruct FMakeLiteralStringDataflowNode ************************************ struct Z_Construct_UScriptStruct_FMakeLiteralStringDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_30_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeLiteralStringDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeLiteralStringDataflowNode; // ********** End ScriptStruct FMakeLiteralStringDataflowNode ************************************** // ********** Begin ScriptStruct FMakeLiteralStringDataflowNode_v2 ********************************* struct Z_Construct_UScriptStruct_FMakeLiteralStringDataflowNode_v2_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_55_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeLiteralStringDataflowNode_v2_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeLiteralStringDataflowNode_v2; // ********** End ScriptStruct FMakeLiteralStringDataflowNode_v2 *********************************** // ********** Begin ScriptStruct FMakePointsDataflowNode ******************************************* struct Z_Construct_UScriptStruct_FMakePointsDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_79_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakePointsDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakePointsDataflowNode; // ********** End ScriptStruct FMakePointsDataflowNode ********************************************* // ********** Begin ScriptStruct FMakeBoxDataflowNode ********************************************** struct Z_Construct_UScriptStruct_FMakeBoxDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_125_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeBoxDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeBoxDataflowNode; // ********** End ScriptStruct FMakeBoxDataflowNode ************************************************ // ********** Begin ScriptStruct FMakeSphereDataflowNode ******************************************* struct Z_Construct_UScriptStruct_FMakeSphereDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_170_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeSphereDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeSphereDataflowNode; // ********** End ScriptStruct FMakeSphereDataflowNode ********************************************* // ********** Begin ScriptStruct FMakeLiteralFloatDataflowNode ************************************* struct Z_Construct_UScriptStruct_FMakeLiteralFloatDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_211_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeLiteralFloatDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeLiteralFloatDataflowNode; // ********** End ScriptStruct FMakeLiteralFloatDataflowNode *************************************** // ********** Begin ScriptStruct FMakeLiteralFloatDataflowNode_v2 ********************************** struct Z_Construct_UScriptStruct_FMakeLiteralFloatDataflowNode_v2_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_236_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeLiteralFloatDataflowNode_v2_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeLiteralFloatDataflowNode_v2; // ********** End ScriptStruct FMakeLiteralFloatDataflowNode_v2 ************************************ // ********** Begin ScriptStruct FMakeLiteralDoubleDataflowNode ************************************ struct Z_Construct_UScriptStruct_FMakeLiteralDoubleDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_260_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeLiteralDoubleDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeLiteralDoubleDataflowNode; // ********** End ScriptStruct FMakeLiteralDoubleDataflowNode ************************************** // ********** Begin ScriptStruct FMakeLiteralIntDataflowNode *************************************** struct Z_Construct_UScriptStruct_FMakeLiteralIntDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_281_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeLiteralIntDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeLiteralIntDataflowNode; // ********** End ScriptStruct FMakeLiteralIntDataflowNode ***************************************** // ********** Begin ScriptStruct FMakeLiteralIntDataflowNode_v2 ************************************ struct Z_Construct_UScriptStruct_FMakeLiteralIntDataflowNode_v2_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_306_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeLiteralIntDataflowNode_v2_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeLiteralIntDataflowNode_v2; // ********** End ScriptStruct FMakeLiteralIntDataflowNode_v2 ************************************** // ********** Begin ScriptStruct FMakeLiteralBoolDataflowNode ************************************** struct Z_Construct_UScriptStruct_FMakeLiteralBoolDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_329_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeLiteralBoolDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeLiteralBoolDataflowNode; // ********** End ScriptStruct FMakeLiteralBoolDataflowNode **************************************** // ********** Begin ScriptStruct FMakeLiteralBoolDataflowNode_v2 *********************************** struct Z_Construct_UScriptStruct_FMakeLiteralBoolDataflowNode_v2_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_354_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeLiteralBoolDataflowNode_v2_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeLiteralBoolDataflowNode_v2; // ********** End ScriptStruct FMakeLiteralBoolDataflowNode_v2 ************************************* // ********** Begin ScriptStruct FMakeLiteralVectorDataflowNode ************************************ struct Z_Construct_UScriptStruct_FMakeLiteralVectorDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_379_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeLiteralVectorDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeLiteralVectorDataflowNode; // ********** End ScriptStruct FMakeLiteralVectorDataflowNode ************************************** // ********** Begin ScriptStruct FMakeTransformDataflowNode **************************************** struct Z_Construct_UScriptStruct_FMakeTransformDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_415_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeTransformDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeTransformDataflowNode; // ********** End ScriptStruct FMakeTransformDataflowNode ****************************************** // ********** Begin ScriptStruct FMakeTransformDataflowNode_v2 ************************************* struct Z_Construct_UScriptStruct_FMakeTransformDataflowNode_v2_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_457_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeTransformDataflowNode_v2_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeTransformDataflowNode_v2; // ********** End ScriptStruct FMakeTransformDataflowNode_v2 *************************************** // ********** Begin ScriptStruct FMakeQuaternionDataflowNode *************************************** struct Z_Construct_UScriptStruct_FMakeQuaternionDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_501_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeQuaternionDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeQuaternionDataflowNode; // ********** End ScriptStruct FMakeQuaternionDataflowNode ***************************************** // ********** Begin ScriptStruct FMakeFloatArrayDataflowNode *************************************** struct Z_Construct_UScriptStruct_FMakeFloatArrayDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_541_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeFloatArrayDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeFloatArrayDataflowNode; // ********** End ScriptStruct FMakeFloatArrayDataflowNode ***************************************** // ********** Begin ScriptStruct FMakeCollectionDataflowNode *************************************** struct Z_Construct_UScriptStruct_FMakeCollectionDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_576_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeCollectionDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeCollectionDataflowNode; // ********** End ScriptStruct FMakeCollectionDataflowNode ***************************************** // ********** Begin ScriptStruct FMakeRotatorDataflowNode ****************************************** struct Z_Construct_UScriptStruct_FMakeRotatorDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_605_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeRotatorDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeRotatorDataflowNode; // ********** End ScriptStruct FMakeRotatorDataflowNode ******************************************** // ********** Begin ScriptStruct FBreakTransformDataflowNode *************************************** struct Z_Construct_UScriptStruct_FBreakTransformDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_637_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FBreakTransformDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FBreakTransformDataflowNode; // ********** End ScriptStruct FBreakTransformDataflowNode ***************************************** // ********** Begin ScriptStruct FMakeSphereMeshDataflowNode *************************************** struct Z_Construct_UScriptStruct_FMakeSphereMeshDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_686_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeSphereMeshDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeSphereMeshDataflowNode; // ********** End ScriptStruct FMakeSphereMeshDataflowNode ***************************************** // ********** Begin ScriptStruct FMakeCapsuleMeshDataflowNode ************************************** struct Z_Construct_UScriptStruct_FMakeCapsuleMeshDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_719_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeCapsuleMeshDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeCapsuleMeshDataflowNode; // ********** End ScriptStruct FMakeCapsuleMeshDataflowNode **************************************** // ********** Begin ScriptStruct FMakeCylinderMeshDataflowNode ************************************* struct Z_Construct_UScriptStruct_FMakeCylinderMeshDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_760_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeCylinderMeshDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeCylinderMeshDataflowNode; // ********** End ScriptStruct FMakeCylinderMeshDataflowNode *************************************** // ********** Begin ScriptStruct FMakeBoxMeshDataflowNode ****************************************** struct Z_Construct_UScriptStruct_FMakeBoxMeshDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_801_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeBoxMeshDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeBoxMeshDataflowNode; // ********** End ScriptStruct FMakeBoxMeshDataflowNode ******************************************** // ********** Begin ScriptStruct FMakePlaneDataflowNode ******************************************** struct Z_Construct_UScriptStruct_FMakePlaneDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_842_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakePlaneDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakePlaneDataflowNode; // ********** End ScriptStruct FMakePlaneDataflowNode ********************************************** // ********** Begin ScriptStruct FMakeDiscMeshDataflowNode ***************************************** struct Z_Construct_UScriptStruct_FMakeDiscMeshDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_886_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeDiscMeshDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeDiscMeshDataflowNode; // ********** End ScriptStruct FMakeDiscMeshDataflowNode ******************************************* // ********** Begin ScriptStruct FMakeStairMeshDataflowNode **************************************** struct Z_Construct_UScriptStruct_FMakeStairMeshDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_939_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeStairMeshDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeStairMeshDataflowNode; // ********** End ScriptStruct FMakeStairMeshDataflowNode ****************************************** // ********** Begin ScriptStruct FMakeRectangleMeshDataflowNode ************************************ struct Z_Construct_UScriptStruct_FMakeRectangleMeshDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_988_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeRectangleMeshDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeRectangleMeshDataflowNode; // ********** End ScriptStruct FMakeRectangleMeshDataflowNode ************************************** // ********** Begin ScriptStruct FMakeTorusMeshDataflowNode **************************************** struct Z_Construct_UScriptStruct_FMakeTorusMeshDataflowNode_Statics; #define FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h_1033_GENERATED_BODY \ friend struct ::Z_Construct_UScriptStruct_FMakeTorusMeshDataflowNode_Statics; \ GEOMETRYCOLLECTIONNODES_API static class UScriptStruct* StaticStruct(); \ typedef FDataflowNode Super; struct FMakeTorusMeshDataflowNode; // ********** End ScriptStruct FMakeTorusMeshDataflowNode ****************************************** #undef CURRENT_FILE_ID #define CURRENT_FILE_ID FID_Engine_Plugins_Experimental_GeometryCollectionPlugin_Source_GeometryCollectionNodes_Public_Dataflow_GeometryCollectionMakeNodes_h // ********** Begin Enum EMakeBoxDataTypeEnum ****************************************************** #define FOREACH_ENUM_EMAKEBOXDATATYPEENUM(op) \ op(EMakeBoxDataTypeEnum::Dataflow_MakeBox_DataType_MinMax) \ op(EMakeBoxDataTypeEnum::Dataflow_MakeBox_DataType_CenterSize) \ op(EMakeBoxDataTypeEnum::Dataflow_Max) enum class EMakeBoxDataTypeEnum : uint8; template<> struct TIsUEnumClass { enum { Value = true }; }; template<> GEOMETRYCOLLECTIONNODES_NON_ATTRIBUTED_API UEnum* StaticEnum(); // ********** End Enum EMakeBoxDataTypeEnum ******************************************************** // ********** Begin Enum EMakeMeshTypeEnum ********************************************************* #define FOREACH_ENUM_EMAKEMESHTYPEENUM(op) \ op(EMakeMeshTypeEnum::Sphere) \ op(EMakeMeshTypeEnum::Capsule) \ op(EMakeMeshTypeEnum::Cylinder) enum class EMakeMeshTypeEnum : uint8; template<> struct TIsUEnumClass { enum { Value = true }; }; template<> GEOMETRYCOLLECTIONNODES_NON_ATTRIBUTED_API UEnum* StaticEnum(); // ********** End Enum EMakeMeshTypeEnum *********************************************************** // ********** Begin Enum EDataflowStairTypeEnum **************************************************** #define FOREACH_ENUM_EDATAFLOWSTAIRTYPEENUM(op) \ op(EDataflowStairTypeEnum::Linear) \ op(EDataflowStairTypeEnum::Floating) \ op(EDataflowStairTypeEnum::Curved) \ op(EDataflowStairTypeEnum::Spiral) enum class EDataflowStairTypeEnum : uint8; template<> struct TIsUEnumClass { enum { Value = true }; }; template<> GEOMETRYCOLLECTIONNODES_NON_ATTRIBUTED_API UEnum* StaticEnum(); // ********** End Enum EDataflowStairTypeEnum ****************************************************** PRAGMA_ENABLE_DEPRECATION_WARNINGS