rj-action-library/Runtime/Procedural/Textures/TextureCombiner/TextureCombinerProcessingRe...

53 lines
1.4 KiB
C#
Raw Normal View History

2025-02-14 07:44:20 +00:00
using System.Collections;
using System.Collections.Generic;
using Godot;
using System;
2025-02-19 12:12:12 +00:00
using System.Threading;
using System.Threading.Tasks;
2025-02-14 07:44:20 +00:00
namespace Rokojori
{
public class TextureCombinerProcessingRect
{
public TextureCombinerContext context;
public int processingX = 0;
public int processingY = 0;
2025-02-19 12:12:12 +00:00
public int processingWidth = 0;
2025-02-14 07:44:20 +00:00
public int processingHeight = 0;
2025-02-19 12:12:12 +00:00
public Vector2 GetUV( int x, int y )
{
return new Vector2( x / (float) context.imageWidth, y / (float) context.imageHeight );
}
public Vector2 GetRelativeUV( int x, int y )
{
return GetUV( x + processingX, y + processingY );
}
public void SetOutputRelative( int x, int y, Color c )
{
outputBuffer.SetAt( x + processingX, y + processingY, c );
}
public Vector2 uvStart => GetUV( processingX, processingY );
public Vector2 uvEnd => GetUV( processingX + processingWidth, processingY + processingHeight );
public TextureCombinerBuffer inputBuffer;
public TextureCombinerBuffer outputBuffer;
public async Task CopyToFinalOutput( TextureCombinerBuffer bottomBuffer, TextureCombinerBuffer image )
{
var time = Async.StartTimer();
bottomBuffer.CopyTo( 0, 0, processingX, processingY, processingWidth, processingHeight, image );
time = await Async.WaitIfExceeded( time );
return;
}
2025-02-14 07:44:20 +00:00
}
}