render service with test layer
+grpc interaction
This commit is contained in:
parent
33010ffe5e
commit
74e4698c43
@ -1,77 +0,0 @@
|
|||||||
using System;
|
|
||||||
namespace Domain;
|
|
||||||
|
|
||||||
public class ConsoleImageDrawer
|
|
||||||
{
|
|
||||||
private char[,]? _image; // Изображение хранится внутри класса
|
|
||||||
|
|
||||||
// 1. Нарисовать изображение
|
|
||||||
public void DrawImage(char[,] image)
|
|
||||||
{
|
|
||||||
Console.Clear();
|
|
||||||
_image = image;
|
|
||||||
for (int i = 0; i < _image.GetLength(0); i++)
|
|
||||||
{
|
|
||||||
for (int j = 0; j < _image.GetLength(1); j++)
|
|
||||||
{
|
|
||||||
Console.SetCursorPosition(j, i);
|
|
||||||
Console.Write(_image[i, j]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 2. Заменить фон в указанной области на цвет
|
|
||||||
public void SetBackgroundColor(int startRow, int startCol, int height, int width, ConsoleColor color)
|
|
||||||
{
|
|
||||||
if (_image == null)
|
|
||||||
{
|
|
||||||
Console.Clear();
|
|
||||||
Console.ForegroundColor = ConsoleColor.Red;
|
|
||||||
Console.WriteLine("Image is not set");
|
|
||||||
Console.ForegroundColor = ConsoleColor.Black;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Console.BackgroundColor = color;
|
|
||||||
for (int i = startRow; i < Math.Min(startRow + height, _image.GetLength(0)); i++)
|
|
||||||
{
|
|
||||||
for (int j = startCol; j < Math.Min(startCol + width, _image.GetLength(1)); j++)
|
|
||||||
{
|
|
||||||
Console.SetCursorPosition(j, i);
|
|
||||||
Console.Write(_image[i, j]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Console.ResetColor(); // Сброс цвета
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. Отменить фон (вернуть черный)
|
|
||||||
public void ResetBackgroundColor(int startRow, int startCol, int height, int width)
|
|
||||||
{
|
|
||||||
SetBackgroundColor(startRow, startCol, height, width, ConsoleColor.Black);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 4. Изменить цвет указанного символа
|
|
||||||
public void SetCharacterColor(int row, int col, ConsoleColor foregroundColor)
|
|
||||||
{
|
|
||||||
if (_image == null)
|
|
||||||
{
|
|
||||||
Console.Clear();
|
|
||||||
Console.ForegroundColor = ConsoleColor.Red;
|
|
||||||
Console.WriteLine("Image is not set");
|
|
||||||
Console.ForegroundColor = ConsoleColor.Black;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (row >= 0 && row < _image.GetLength(0) && col >= 0 && col < _image.GetLength(1))
|
|
||||||
{
|
|
||||||
Console.SetCursorPosition(col, row);
|
|
||||||
Console.ForegroundColor = foregroundColor;
|
|
||||||
Console.Write(_image[row, col]);
|
|
||||||
Console.ResetColor(); // Сброс цвета
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 5. Стереть изображение
|
|
||||||
public void ClearImage()
|
|
||||||
{
|
|
||||||
Console.Clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,6 +1,6 @@
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace Domain.Somthing;
|
namespace Domain.Something;
|
||||||
|
|
||||||
public class ExpIniFileGenerator(uint rowCount, uint oddColumnCount, uint evenColumnCount)
|
public class ExpIniFileGenerator(uint rowCount, uint oddColumnCount, uint evenColumnCount)
|
||||||
{
|
{
|
||||||
@ -1,8 +0,0 @@
|
|||||||
namespace Domain.Abstractions;
|
|
||||||
|
|
||||||
public interface ILayer
|
|
||||||
{
|
|
||||||
public uint Order { get; }
|
|
||||||
public OpticalSchema OpticalSchema { get; }
|
|
||||||
public Task Execute();
|
|
||||||
}
|
|
||||||
13
Domain/Interfaces/ILayer.cs
Normal file
13
Domain/Interfaces/ILayer.cs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
using SkiaSharp;
|
||||||
|
namespace Domain;
|
||||||
|
|
||||||
|
public interface ILayer
|
||||||
|
{
|
||||||
|
public uint Order { get; }
|
||||||
|
public OpticalSchema OpticalSchema { get; }
|
||||||
|
public SKBitmap Image { get; }
|
||||||
|
public SKBitmap? Mask { get; }
|
||||||
|
public bool InvertMask { get; }
|
||||||
|
public Task Prerender();
|
||||||
|
public Task<SKBitmap> Render(uint u, uint u1, uint frameWidth, uint frameHeight, SKBitmap automask);
|
||||||
|
}
|
||||||
8
Domain/Interfaces/IRenderManager.cs
Normal file
8
Domain/Interfaces/IRenderManager.cs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
namespace Domain;
|
||||||
|
|
||||||
|
public interface IRenderManager
|
||||||
|
{
|
||||||
|
public Task<Guid> StartRender(Project project);
|
||||||
|
public Task StopRender(Guid renderId);
|
||||||
|
IEnumerable<Guid> GetActiveRenders();
|
||||||
|
}
|
||||||
0
Domain/Project.cs
Normal file
0
Domain/Project.cs
Normal file
0
Domain/Render.cs
Normal file
0
Domain/Render.cs
Normal file
0
Domain/RenderManager.cs
Normal file
0
Domain/RenderManager.cs
Normal file
92
Domain/RenderPart/BigFrameRender.cs
Normal file
92
Domain/RenderPart/BigFrameRender.cs
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
using Domain.Abstractions;
|
||||||
|
using Domain.Interfaces;
|
||||||
|
using Domain.Something;
|
||||||
|
using SkiaSharp;
|
||||||
|
|
||||||
|
namespace Domain;
|
||||||
|
|
||||||
|
public class BigFrameRender : RenderPartBase
|
||||||
|
{
|
||||||
|
private readonly uint _bigFrameWidth;
|
||||||
|
private readonly uint _bigFrameHeight;
|
||||||
|
public BigFrameRender(IEnumerable<ILayer> layers, uint row, uint col, uint bigFrameWidth, uint bigFrameHeight, Guid renderId) :
|
||||||
|
base(layers, row, col, renderId)
|
||||||
|
{
|
||||||
|
_bigFrameWidth = bigFrameWidth;
|
||||||
|
_bigFrameHeight = bigFrameHeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override async Task<IEnumerable<ExpIniFileGenerator.FrameExpInfo>> Execute(CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var frameExpInfos = new List<ExpIniFileGenerator.FrameExpInfo>();
|
||||||
|
BigFrameLayerRenderResult? previousLayerResult = null;
|
||||||
|
// _drawer.SetBackgroundColor((int)y, (int)x, (int)currentFrameHeight, (int)currentFrameWidth, ConsoleColor.DarkBlue);
|
||||||
|
|
||||||
|
foreach (var layer in _layers.OrderBy(q => q.Order))
|
||||||
|
{
|
||||||
|
previousLayerResult = await RenderBigFrame(layer, _col, _row, _bigFrameWidth, _bigFrameHeight, previousLayerResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (previousLayerResult != null)
|
||||||
|
{
|
||||||
|
//split bigFrame
|
||||||
|
for (uint row = 0; row < _bigFrameHeight; row++)
|
||||||
|
{
|
||||||
|
for (uint col = 0; col < _bigFrameWidth; col++)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Task.Delay(20).Wait();
|
||||||
|
var frameInfo = new ExpIniFileGenerator.FrameExpInfo{ Row = row, Column = col };
|
||||||
|
// if (!IsImageEmpty(previousLayerResult.Frame[col,row]))
|
||||||
|
// {
|
||||||
|
// frameInfo.IsContainAnything = true;
|
||||||
|
// await SaveImage(previousLayerResult.Frame[col, row], "");
|
||||||
|
// }
|
||||||
|
frameExpInfos.Add(frameInfo);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return frameExpInfos;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<BigFrameLayerRenderResult> RenderBigFrame(ILayer layer, uint x, uint y, uint bigFrameWidth, uint bigFrameHeight, BigFrameLayerRenderResult? previousLayerResult)
|
||||||
|
{
|
||||||
|
var automask = previousLayerResult?.Frame ?? new SKBitmap(Convert.ToInt32(bigFrameWidth), Convert.ToInt32(bigFrameHeight));
|
||||||
|
var result = new BigFrameLayerRenderResult()
|
||||||
|
{
|
||||||
|
Frame = new SKBitmap(Convert.ToInt32(bigFrameWidth), Convert.ToInt32(bigFrameHeight)),
|
||||||
|
};
|
||||||
|
result.Frame = await layer.Render(x, y, bigFrameWidth, bigFrameHeight, automask);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsImageEmpty(char image)
|
||||||
|
{
|
||||||
|
return image is '\0' or ' ';
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task SaveImage(char image, string destination)
|
||||||
|
{
|
||||||
|
//destinationn is object
|
||||||
|
//
|
||||||
|
await Task.Delay(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override Task RenderImage()
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public override long EstimateMemoryUsage()
|
||||||
|
{
|
||||||
|
return 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
6
Domain/RenderPart/FrameRender.cs
Normal file
6
Domain/RenderPart/FrameRender.cs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
namespace Domain.RenderPart;
|
||||||
|
|
||||||
|
// public class FrameRenderPart : RenderPartBase
|
||||||
|
// {
|
||||||
|
//
|
||||||
|
// }
|
||||||
46
Domain/RenderPart/RenderPartBase.cs
Normal file
46
Domain/RenderPart/RenderPartBase.cs
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
using System.Collections;
|
||||||
|
using Domain.Abstractions;
|
||||||
|
using Domain.Interfaces;
|
||||||
|
using Domain.Something;
|
||||||
|
|
||||||
|
namespace Domain;
|
||||||
|
|
||||||
|
public abstract class RenderPartBase : IFrameRender
|
||||||
|
{
|
||||||
|
protected readonly IEnumerable<ILayer> _layers;
|
||||||
|
|
||||||
|
protected uint _row;
|
||||||
|
protected uint _col;
|
||||||
|
|
||||||
|
public Guid RenderId { get; private set; }
|
||||||
|
|
||||||
|
protected RenderPartBase(IEnumerable<ILayer> layers, uint row, uint col, Guid renderId)
|
||||||
|
{
|
||||||
|
_layers = layers;
|
||||||
|
_row = row;
|
||||||
|
_col = col;
|
||||||
|
RenderId = renderId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract Task<IEnumerable<ExpIniFileGenerator.FrameExpInfo>> Execute(CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
public abstract long EstimateMemoryUsage();
|
||||||
|
|
||||||
|
protected abstract Task RenderImage();
|
||||||
|
|
||||||
|
protected virtual Task<ExpIniFileGenerator.FrameExpInfo> CreateFrameInfo()
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
return Task.FromResult(new ExpIniFileGenerator.FrameExpInfo());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual uint SetFrameNumber(uint row, uint column, uint columnsInRow)
|
||||||
|
{
|
||||||
|
return column + (row * columnsInRow);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Task SaveFrame()
|
||||||
|
{
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
}
|
||||||
23
Make3.RenderServer/Dockerfile
Normal file
23
Make3.RenderServer/Dockerfile
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base
|
||||||
|
USER $APP_UID
|
||||||
|
WORKDIR /app
|
||||||
|
EXPOSE 8080
|
||||||
|
EXPOSE 8081
|
||||||
|
|
||||||
|
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
|
||||||
|
ARG BUILD_CONFIGURATION=Release
|
||||||
|
WORKDIR /src
|
||||||
|
COPY ["Make3.RenderServer/Make3.RenderServer.csproj", "Make3.RenderServer/"]
|
||||||
|
RUN dotnet restore "Make3.RenderServer/Make3.RenderServer.csproj"
|
||||||
|
COPY . .
|
||||||
|
WORKDIR "/src/Make3.RenderServer"
|
||||||
|
RUN dotnet build "./Make3.RenderServer.csproj" -c $BUILD_CONFIGURATION -o /app/build
|
||||||
|
|
||||||
|
FROM build AS publish
|
||||||
|
ARG BUILD_CONFIGURATION=Release
|
||||||
|
RUN dotnet publish "./Make3.RenderServer.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
|
||||||
|
|
||||||
|
FROM base AS final
|
||||||
|
WORKDIR /app
|
||||||
|
COPY --from=publish /app/publish .
|
||||||
|
ENTRYPOINT ["dotnet", "Make3.RenderServer.dll"]
|
||||||
0
Make3.RenderServer/Layers/TestLayer.cs
Normal file
0
Make3.RenderServer/Layers/TestLayer.cs
Normal file
20
Make3.RenderServer/Make3.RenderServer.csproj
Normal file
20
Make3.RenderServer/Make3.RenderServer.csproj
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.4"/>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="..\.dockerignore">
|
||||||
|
<Link>.dockerignore</Link>
|
||||||
|
</Content>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
6
Make3.RenderServer/Make3.RenderServer.http
Normal file
6
Make3.RenderServer/Make3.RenderServer.http
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
@Make3.RenderServer_HostAddress = http://localhost:5198
|
||||||
|
|
||||||
|
GET {{Make3.RenderServer_HostAddress}}/weatherforecast/
|
||||||
|
Accept: application/json
|
||||||
|
|
||||||
|
###
|
||||||
41
Make3.RenderServer/Program.cs
Normal file
41
Make3.RenderServer/Program.cs
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
|
// Add services to the container.
|
||||||
|
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
|
||||||
|
builder.Services.AddOpenApi();
|
||||||
|
|
||||||
|
var app = builder.Build();
|
||||||
|
|
||||||
|
// Configure the HTTP request pipeline.
|
||||||
|
if (app.Environment.IsDevelopment())
|
||||||
|
{
|
||||||
|
app.MapOpenApi();
|
||||||
|
}
|
||||||
|
|
||||||
|
app.UseHttpsRedirection();
|
||||||
|
|
||||||
|
var summaries = new[]
|
||||||
|
{
|
||||||
|
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
|
||||||
|
};
|
||||||
|
|
||||||
|
app.MapGet("/weatherforecast", () =>
|
||||||
|
{
|
||||||
|
var forecast = Enumerable.Range(1, 5).Select(index =>
|
||||||
|
new WeatherForecast
|
||||||
|
(
|
||||||
|
DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
|
||||||
|
Random.Shared.Next(-20, 55),
|
||||||
|
summaries[Random.Shared.Next(summaries.Length)]
|
||||||
|
))
|
||||||
|
.ToArray();
|
||||||
|
return forecast;
|
||||||
|
})
|
||||||
|
.WithName("GetWeatherForecast");
|
||||||
|
|
||||||
|
app.Run();
|
||||||
|
|
||||||
|
record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary)
|
||||||
|
{
|
||||||
|
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
|
||||||
|
}
|
||||||
23
Make3.RenderServer/Properties/launchSettings.json
Normal file
23
Make3.RenderServer/Properties/launchSettings.json
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json.schemastore.org/launchsettings.json",
|
||||||
|
"profiles": {
|
||||||
|
"http": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"dotnetRunMessages": true,
|
||||||
|
"launchBrowser": false,
|
||||||
|
"applicationUrl": "http://localhost:5198",
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"https": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"dotnetRunMessages": true,
|
||||||
|
"launchBrowser": false,
|
||||||
|
"applicationUrl": "https://localhost:7264;http://localhost:5198",
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
0
Make3.RenderServer/TestProjectBackgroundService.cs
Normal file
0
Make3.RenderServer/TestProjectBackgroundService.cs
Normal file
8
Make3.RenderServer/appsettings.Development.json
Normal file
8
Make3.RenderServer/appsettings.Development.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
9
Make3.RenderServer/appsettings.json
Normal file
9
Make3.RenderServer/appsettings.json
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"Logging": {
|
||||||
|
"LogLevel": {
|
||||||
|
"Default": "Information",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"AllowedHosts": "*"
|
||||||
|
}
|
||||||
17
Make3.Renderer/Layer1.cs
Normal file
17
Make3.Renderer/Layer1.cs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
using Domain.Abstractions;
|
||||||
|
|
||||||
|
namespace Domain.ConcreteLayers;
|
||||||
|
|
||||||
|
public class Layer1 : ILayer
|
||||||
|
{
|
||||||
|
public uint Order { get; set; }
|
||||||
|
public OpticalSchema OpticalSchema { get; set; }
|
||||||
|
public char[,] Image { get; set; }
|
||||||
|
public char[,]? Mask { get; set; }
|
||||||
|
public bool InvertMask { get; set; }
|
||||||
|
|
||||||
|
public Task Execute()
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,26 +0,0 @@
|
|||||||
using Domain;
|
|
||||||
using Domain.Abstractions;
|
|
||||||
|
|
||||||
namespace Make3.Renderer.Layers;
|
|
||||||
|
|
||||||
internal abstract class LayerBase : ILayer
|
|
||||||
{
|
|
||||||
public uint Order { get; private set; }
|
|
||||||
|
|
||||||
public abstract OpticalSchema OpticalSchema { get; }
|
|
||||||
|
|
||||||
protected LayerBase(uint order)
|
|
||||||
{
|
|
||||||
Order = order;
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task Execute()
|
|
||||||
{
|
|
||||||
await Render();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual Task Render()
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,45 +0,0 @@
|
|||||||
using Domain;
|
|
||||||
|
|
||||||
namespace Make3.Renderer.Layers.TrekoLayers
|
|
||||||
{
|
|
||||||
internal class Treko : LayerBase
|
|
||||||
{
|
|
||||||
public override OpticalSchema OpticalSchema => OpticalSchema.Sp0;
|
|
||||||
|
|
||||||
|
|
||||||
internal Treko(uint order) : base(order) { }
|
|
||||||
|
|
||||||
protected override Task Render()
|
|
||||||
{
|
|
||||||
var a = Step3(Step2(Step1()));
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//return base.Render();
|
|
||||||
return Task.CompletedTask;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected string Step1()
|
|
||||||
{
|
|
||||||
Step1_1();
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
protected string Step1_1()
|
|
||||||
{
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
private string Step2(string inputValue)
|
|
||||||
{
|
|
||||||
return "nothing";
|
|
||||||
}
|
|
||||||
|
|
||||||
private int Step3(string inputValue)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,17 +0,0 @@
|
|||||||
using Domain;
|
|
||||||
|
|
||||||
namespace Make3.Renderer.Layers.TrekoLayers
|
|
||||||
{
|
|
||||||
internal class Treko3d : LayerBase
|
|
||||||
{
|
|
||||||
public override OpticalSchema OpticalSchema => OpticalSchema.Sp0;
|
|
||||||
|
|
||||||
internal Treko3d(uint order) : base(order) { }
|
|
||||||
|
|
||||||
protected override Task Render()
|
|
||||||
{
|
|
||||||
|
|
||||||
return base.Render();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue
Block a user