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