85 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			85 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using EpicGames.UHT.Types; | |||
|  | using UnrealSharpScriptGenerator.Utilities; | |||
|  | 
 | |||
|  | namespace UnrealSharpScriptGenerator.PropertyTranslators; | |||
|  | 
 | |||
|  | public class BoolPropertyTranslator : SimpleTypePropertyTranslator | |||
|  | { | |||
|  |     private const string OffSetPostfix = "_Offset"; | |||
|  |     private const string FieldMaskPostfix = "_FieldMask"; | |||
|  |      | |||
|  |     public BoolPropertyTranslator() : base(typeof(UhtBoolProperty), "bool", PropertyKind.Bool) | |||
|  |     { | |||
|  |     } | |||
|  | 
 | |||
|  |     public override string GetMarshaller(UhtProperty property) | |||
|  |     { | |||
|  |         return property.IsBitfield ? "BitfieldBoolMarshaller" : "BoolMarshaller"; | |||
|  |     } | |||
|  | 
 | |||
|  |     public override void ExportPropertyStaticConstructor(GeneratorStringBuilder builder, UhtProperty property, string nativePropertyName) | |||
|  |     { | |||
|  |         if (property.IsBitfield && !property.HasGetterSetterPair()) | |||
|  |         { | |||
|  |             builder.AppendLine($"{GetFieldMaskFieldName(nativePropertyName)} = {ExporterCallbacks.FPropertyCallbacks}.CallGetBoolPropertyFieldMaskFromName(NativeClassPtr, \"{nativePropertyName}\");"); | |||
|  |         } | |||
|  |          | |||
|  |         base.ExportPropertyStaticConstructor(builder, property, nativePropertyName); | |||
|  |     } | |||
|  |      | |||
|  |     public override void ExportPropertyVariables(GeneratorStringBuilder builder, UhtProperty property, string propertyEngineName) | |||
|  |     { | |||
|  |         if (property.IsBitfield) | |||
|  |         { | |||
|  |             builder.AppendLine($"static byte {GetFieldMaskFieldName(propertyEngineName)};"); | |||
|  |         } | |||
|  |      | |||
|  |         base.ExportPropertyVariables(builder, property, propertyEngineName); | |||
|  |     } | |||
|  |      | |||
|  |     public override void ExportToNative( | |||
|  |         GeneratorStringBuilder builder,  | |||
|  |         UhtProperty property,  | |||
|  |         string propertyName,  | |||
|  |         string destinationBuffer, | |||
|  |         string offset,  | |||
|  |         string source) | |||
|  |     { | |||
|  |         if (property.IsBitfield) | |||
|  |         { | |||
|  |             builder.AppendLine($"{GetMarshaller(property)}.ToNative(IntPtr.Add({destinationBuffer}, {offset}), {GetFieldMaskFieldName(propertyName)}, {source});"); | |||
|  |             return; | |||
|  |         } | |||
|  |          | |||
|  |         base.ExportToNative(builder, property, propertyName, destinationBuffer, offset, source); | |||
|  |     } | |||
|  | 
 | |||
|  |     public override void ExportFromNative( | |||
|  |         GeneratorStringBuilder builder, | |||
|  |         UhtProperty property,  | |||
|  |         string propertyName, | |||
|  |         string assignmentOrReturn,  | |||
|  |         string sourceBuffer,  | |||
|  |         string offset,  | |||
|  |         bool bCleanupSourceBuffer,  | |||
|  |         bool reuseRefMarshallers) | |||
|  |     { | |||
|  |         if (property.IsBitfield) | |||
|  |         { | |||
|  |             builder.AppendLine($"{assignmentOrReturn} {GetMarshaller(property)}.FromNative(IntPtr.Add({sourceBuffer}, {offset}), {GetFieldMaskFieldName(propertyName)});"); | |||
|  |             return; | |||
|  |         } | |||
|  |          | |||
|  |         base.ExportFromNative(builder, property, propertyName, assignmentOrReturn, sourceBuffer, offset, bCleanupSourceBuffer, reuseRefMarshallers); | |||
|  |     } | |||
|  |      | |||
|  |     private string GetOffsetFieldName(string nativePropertyName) | |||
|  |     { | |||
|  |         return $"{nativePropertyName}{OffSetPostfix}"; | |||
|  |     } | |||
|  |      | |||
|  |     private string GetFieldMaskFieldName(string nativePropertyName) | |||
|  |     { | |||
|  |         return $"{nativePropertyName}{FieldMaskPostfix}"; | |||
|  |     } | |||
|  | } |