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}";
 | |
|     }
 | |
| } |