feat: 适配 UE5.8 升级与仓库配置整理
- 升级 Target.cs 构建设置到 V7 / EngineIncludeOrderVersion.Unreal5_8 - DynamicIronBlock 温度计算从手动 RHI dispatch 迁移到 RDG (FRDGBuilder + FComputeShaderUtils::Dispatch + FRDGPooledBuffer 包装外部缓冲) - 移除两个 shader 头中废弃的 SHADER_USE_PARAMETER_STRUCT 宏 (UE5.8 已不需要) - BladeSmith.uproject: 关联 UE5.8 + 启用 ModelContextProtocol/AllToolsets/MCPClientToolset 插件 - DefaultEngine.ini: r.Substrate=False - 移除废弃的 DeformAsyncTask.cpp - 新增项目级 opencode.json (MCP unreal-mcp 配置) 与 .vscode 手写配置 (c_cpp_properties/mcp) - 整理 .gitignore: 永久排除 AI 工具配置/缓存 (.claude/.codex/.cursor/.gemini/.codegraph/.planning 等)、graphify 缓存、IDE 生成物 - 移出跟踪: .claude/ (含 session-namer 技能)、.vsconfig
This commit is contained in:
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"Bash(\"E:\\MiceCola\\work\\UE_5_6\\Engine\\Build\\BatchFiles\\Build.bat\" BladeSmithEditor Win64 Development \"-Project=E:\\MiceCola\\work\\BladeSmith\\BladeSmith.uproject\" -WaitMutex -FromMsBuild)",
|
||||
"Bash(dir:*)",
|
||||
"Bash(git add:*)",
|
||||
"Bash(git commit:*)",
|
||||
"Skill(gsd:*)",
|
||||
"Bash(findstr:*)",
|
||||
"Bash(powershell:*)",
|
||||
"Bash(Select-Object -Last 20)",
|
||||
"WebSearch"
|
||||
],
|
||||
"deny": [],
|
||||
"ask": []
|
||||
},
|
||||
"outputStyle": "Explanatory"
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
---
|
||||
name: session-namer
|
||||
description: 会话命名管理工具 - 在开始新任务前帮助命名或恢复会话
|
||||
---
|
||||
|
||||
# 会话命名管理
|
||||
|
||||
当您开始新的工作会话时,此技能帮助您管理会话命名。
|
||||
|
||||
## 当前会话状态
|
||||
|
||||
请检查是否需要命名当前会话:
|
||||
|
||||
### 可用操作
|
||||
|
||||
1. **命名当前会话**
|
||||
使用命令: `/rename <会话名称>`
|
||||
例如: `/rename 实现各向异性形变`
|
||||
|
||||
2. **恢复历史会话**
|
||||
使用命令: `/resume <会话名称>`
|
||||
或在 REPL 中使用: `/continue`
|
||||
|
||||
3. **继续当前会话**
|
||||
如果不需要命名,直接开始工作即可
|
||||
|
||||
## BladeSmith 项目常用会话命名建议
|
||||
|
||||
基于项目结构,建议的会话命名模式:
|
||||
|
||||
- **功能开发**: `feat-功能名称` (如 `feat-温度系统`)
|
||||
- **Bug 修复**: `fix-问题描述` (如 `fix-边缘约束问题`)
|
||||
- **代码重构**: `refactor-模块名称` (如 `refactor-GPU着色器`)
|
||||
- **性能优化**: `perf-优化目标` (如 `perf-网格简化`)
|
||||
- **文档编写**: `docs-文档主题` (如 `docs-API文档`)
|
||||
- **测试相关**: `test-测试内容` (如 `test-形变系统`)
|
||||
|
||||
## 最近的 Git 分支作为参考
|
||||
|
||||
当前分支: hammer-deformation-phase1
|
||||
|
||||
如果需要查看更多分支或上下文,我可以帮您:
|
||||
- 列出最近的 git 分支
|
||||
- 查看最近的提交历史
|
||||
- 查看未完成的工作
|
||||
|
||||
---
|
||||
|
||||
**是否需要我帮助您命名当前会话?** 请告诉我您计划做什么,或者直接使用 `/rename` 命令。
|
||||
+30
-1
@@ -74,4 +74,33 @@ Plugins/**/Intermediate/*
|
||||
# Cache files for the editor to use
|
||||
DerivedDataCache/*
|
||||
|
||||
nul
|
||||
nul
|
||||
|
||||
# ==================== AI/agent 工具配置与缓存 (机器相关,不入库) ====================
|
||||
.claude/
|
||||
.codex/
|
||||
.cursor/
|
||||
.gemini/
|
||||
.codegraph/
|
||||
.planning/
|
||||
.omo/run-continuation/
|
||||
|
||||
# graphify 技能缓存
|
||||
.graphify_python
|
||||
.graphify_uncached.txt
|
||||
.ignore
|
||||
graphify-out/
|
||||
Source/BladeSmith/graphify-out/
|
||||
|
||||
# IDE 生成缓存
|
||||
.vsconfig
|
||||
.vscode/compileCommands_*/
|
||||
.vscode/compileCommands_*.json
|
||||
.vscode/compile_commands.json
|
||||
BladeSmith.code-workspace
|
||||
|
||||
# MCP 配置 (改用 opencode.json)
|
||||
.mcp.json
|
||||
|
||||
# 构建日志
|
||||
upgrade_build.log
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Win32",
|
||||
"cStandard": "c17",
|
||||
"cppStandard": "c++20",
|
||||
"intelliSenseMode": "msvc-x64"
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
||||
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"servers":
|
||||
{
|
||||
"unreal-mcp":
|
||||
{
|
||||
"type": "http",
|
||||
"url": "http://127.0.0.1:8000/mcp"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"components": [
|
||||
"Component.Unreal.Debugger",
|
||||
"Component.Unreal.Ide",
|
||||
"Microsoft.Net.Component.4.6.2.TargetingPack",
|
||||
"Microsoft.VisualStudio.Component.VC.14.38.17.8.ATL",
|
||||
"Microsoft.VisualStudio.Component.VC.14.38.17.8.x86.x64",
|
||||
"Microsoft.VisualStudio.Component.VC.Llvm.Clang",
|
||||
"Microsoft.VisualStudio.Component.VC.Tools.x86.x64",
|
||||
"Microsoft.VisualStudio.Component.Windows11SDK.22621",
|
||||
"Microsoft.VisualStudio.Workload.CoreEditor",
|
||||
"Microsoft.VisualStudio.Workload.ManagedDesktop",
|
||||
"Microsoft.VisualStudio.Workload.NativeDesktop",
|
||||
"Microsoft.VisualStudio.Workload.NativeGame"
|
||||
]
|
||||
}
|
||||
+25
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"FileVersion": 3,
|
||||
"EngineAssociation": "5.6",
|
||||
"EngineAssociation": "{91698CCB-4566-3FC8-DE61-969023373C2D}",
|
||||
"Category": "",
|
||||
"Description": "",
|
||||
"Modules": [
|
||||
@@ -28,6 +28,30 @@
|
||||
{
|
||||
"Name": "HDRIBackdrop",
|
||||
"Enabled": true
|
||||
},
|
||||
{
|
||||
"Name": "GeometryProcessing",
|
||||
"Enabled": true
|
||||
},
|
||||
{
|
||||
"Name": "MeshModelingToolset",
|
||||
"Enabled": true
|
||||
},
|
||||
{
|
||||
"Name": "RiderLink",
|
||||
"Enabled": false
|
||||
},
|
||||
{
|
||||
"Name": "MCPClientToolset",
|
||||
"Enabled": true
|
||||
},
|
||||
{
|
||||
"Name": "ModelContextProtocol",
|
||||
"Enabled": true
|
||||
},
|
||||
{
|
||||
"Name": "AllToolsets",
|
||||
"Enabled": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -39,6 +39,7 @@ r.DefaultFeature.LocalExposure.HighlightContrastScale=0.8
|
||||
r.DefaultFeature.LocalExposure.ShadowContrastScale=0.8
|
||||
r.DefaultFeature.AutoExposure=False
|
||||
r.Lumen.TraceMeshSDFs=1
|
||||
r.Substrate=False
|
||||
|
||||
[/Script/WindowsTargetPlatform.WindowsTargetSettings]
|
||||
DefaultGraphicsRHI=DefaultGraphicsRHI_DX12
|
||||
|
||||
@@ -50,8 +50,7 @@ extern FThreadSafeDeformationParams GDeformationParams;
|
||||
class MICESHADERS_API FDeformComputeShader : public FGlobalShader
|
||||
{
|
||||
DECLARE_GLOBAL_SHADER(FDeformComputeShader);
|
||||
SHADER_USE_PARAMETER_STRUCT(FDeformComputeShader, FGlobalShader);
|
||||
|
||||
|
||||
BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
|
||||
// 碰撞参数
|
||||
SHADER_PARAMETER(FVector3f, ImpactPoint)
|
||||
|
||||
@@ -60,7 +60,6 @@ extern MICESHADERS_API FThreadSafeTemperatureParams GTemperatureParams;
|
||||
class MICESHADERS_API FTemperatureComputeShader : public FGlobalShader
|
||||
{
|
||||
DECLARE_GLOBAL_SHADER(FTemperatureComputeShader);
|
||||
SHADER_USE_PARAMETER_STRUCT(FTemperatureComputeShader, FGlobalShader);
|
||||
|
||||
BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
|
||||
// 体素网格参数
|
||||
|
||||
@@ -8,8 +8,9 @@ public class BladeSmithTarget : TargetRules
|
||||
public BladeSmithTarget(TargetInfo Target) : base(Target)
|
||||
{
|
||||
Type = TargetType.Game;
|
||||
DefaultBuildSettings = BuildSettingsVersion.V5;
|
||||
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_5;
|
||||
DefaultBuildSettings = BuildSettingsVersion.V7;
|
||||
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_8;
|
||||
CppStandard = CppStandardVersion.Cpp20;
|
||||
ExtraModuleNames.Add("BladeSmith");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -955,8 +955,7 @@ void ADynamicIronBlock::UpdateVertexColors()
|
||||
FVector VertexPosFloat(VertexPos.X, VertexPos.Y, VertexPos.Z);
|
||||
|
||||
// 采样该位置的温度
|
||||
//float Temperature = SampleTemperatureAtPosition(VertexPosFloat);
|
||||
float Temperature = 900;
|
||||
float Temperature = SampleTemperatureAtPosition(VertexPosFloat);
|
||||
// 统计温度范围
|
||||
MinTemp = FMath::Min(MinTemp, Temperature);
|
||||
MaxTemp = FMath::Max(MaxTemp, Temperature);
|
||||
@@ -1294,6 +1293,14 @@ void ADynamicIronBlock::DispatchTemperatureCompute(float DeltaTime)
|
||||
return;
|
||||
}
|
||||
|
||||
// 验证其他缓冲区
|
||||
if (!PlasticityBuffer.IsValid() || !SurfaceVoxelFlagsBuffer.IsValid())
|
||||
{
|
||||
UE_LOG(LogTemp, Error, TEXT("DynamicIronBlock: Plasticity or Flags buffer not valid! P=%d F=%d"),
|
||||
PlasticityBuffer.IsValid(), SurfaceVoxelFlagsBuffer.IsValid());
|
||||
return;
|
||||
}
|
||||
|
||||
// 准备调度参数(捕获到lambda中)
|
||||
FIntVector Resolution = TemperatureResolution;
|
||||
float Conductivity = ThermalConductivity;
|
||||
@@ -1305,16 +1312,17 @@ void ADynamicIronBlock::DispatchTemperatureCompute(float DeltaTime)
|
||||
UE_LOG(LogTemp, Log, TEXT("DynamicIronBlock: Dispatching temperature compute - Resolution=(%d,%d,%d), DeltaTime=%.4f"),
|
||||
Resolution.X, Resolution.Y, Resolution.Z, DeltaTime);
|
||||
|
||||
// Ping-Pong缓冲区引用(捕获到lambda传递给RDG)
|
||||
FBufferRHIRef InputBuffer = bUseBufferA ? TemperatureBufferA : TemperatureBufferB;
|
||||
FBufferRHIRef OutputBuffer = bUseBufferA ? TemperatureBufferB : TemperatureBufferA;
|
||||
// Ping-Pong缓冲区引用(捕获到lambda传递给渲染线程)
|
||||
const bool bCurrentBufferA = bUseBufferA;
|
||||
FBufferRHIRef InputBuffer = bCurrentBufferA ? TemperatureBufferA : TemperatureBufferB;
|
||||
FBufferRHIRef OutputBuffer = bCurrentBufferA ? TemperatureBufferB : TemperatureBufferA;
|
||||
FBufferRHIRef FlagsBuffer = SurfaceVoxelFlagsBuffer;
|
||||
FBufferRHIRef PlasticityBuf = PlasticityBuffer;
|
||||
|
||||
// 切换缓冲区(下次Tick使用新的缓冲区)
|
||||
bUseBufferA = !bUseBufferA;
|
||||
|
||||
// 调度GPU计算(使用RDG正确的资源管理)
|
||||
// 调度GPU计算(UE5.8已移除手动RHI Compute dispatch API,改用RDG)
|
||||
ENQUEUE_RENDER_COMMAND(DispatchTemperatureCS)(
|
||||
[Resolution, Conductivity, Cooling, Ambient, ForgeMin, ForgeMax, DeltaTime,
|
||||
InputBuffer, OutputBuffer, FlagsBuffer, PlasticityBuf]
|
||||
@@ -1336,48 +1344,47 @@ void ADynamicIronBlock::DispatchTemperatureCompute(float DeltaTime)
|
||||
return;
|
||||
}
|
||||
|
||||
UE_LOG(LogTemp, Log, TEXT("DynamicIronBlock [RenderThread]: Shader valid, creating RDG..."));
|
||||
UE_LOG(LogTemp, Log, TEXT("DynamicIronBlock [RenderThread]: Shader valid, setting up RDG compute dispatch..."));
|
||||
|
||||
// 使用RDG
|
||||
FRDGBuilder GraphBuilder(RHICmdList, RDG_EVENT_NAME("TemperatureConduction"));
|
||||
// 构建RDG图
|
||||
FRDGBuilder GraphBuilder(RHICmdList);
|
||||
|
||||
// 将外部RHI缓冲区正确注册到RDG系统
|
||||
// 创建缓冲区描述符
|
||||
const uint32 NumElements = InputBuffer->GetSize() / sizeof(float);
|
||||
FRDGBufferDesc TempBufferDesc = FRDGBufferDesc::CreateBufferDesc(sizeof(float), NumElements);
|
||||
FRDGBufferDesc FlagsBufferDesc = FRDGBufferDesc::CreateBufferDesc(sizeof(uint32), NumElements);
|
||||
// 将外部裸RHI缓冲区包装为FRDGPooledBuffer后注册到RDG
|
||||
//(UE5.8的RegisterExternalBuffer只接受FRDGPooledBuffer,不再接受裸FBufferRHIRef)
|
||||
auto WrapExternalBuffer = [&GraphBuilder](FBufferRHIRef RawBuffer, const TCHAR* Name) -> FRDGBufferRef
|
||||
{
|
||||
// 所有缓冲区均为4字节typed元素(float温度/塑性 或 uint体素标志)
|
||||
const uint32 BytesPerElement = sizeof(float);
|
||||
const uint32 NumElements = RawBuffer->GetSize() / BytesPerElement;
|
||||
FRDGBufferDesc Desc = FRDGBufferDesc::CreateBufferDesc(BytesPerElement, NumElements);
|
||||
TRefCountPtr<FRDGPooledBuffer> PooledBuffer = new FRDGPooledBuffer(RawBuffer, Desc, NumElements, Name);
|
||||
return GraphBuilder.RegisterExternalBuffer(PooledBuffer);
|
||||
};
|
||||
|
||||
// 创建FRDGPooledBuffer并注册
|
||||
TRefCountPtr<FRDGPooledBuffer> InputPooledBuffer = new FRDGPooledBuffer(RHICmdList, InputBuffer, TempBufferDesc, NumElements, TEXT("InputTemperatureBuffer"));
|
||||
TRefCountPtr<FRDGPooledBuffer> OutputPooledBuffer = new FRDGPooledBuffer(RHICmdList, OutputBuffer, TempBufferDesc, NumElements, TEXT("OutputTemperatureBuffer"));
|
||||
TRefCountPtr<FRDGPooledBuffer> FlagsPooledBuffer = new FRDGPooledBuffer(RHICmdList, FlagsBuffer, FlagsBufferDesc, NumElements, TEXT("SurfaceVoxelFlagsBuffer"));
|
||||
TRefCountPtr<FRDGPooledBuffer> PlasticityPooledBuffer = new FRDGPooledBuffer(RHICmdList, PlasticityBuf, TempBufferDesc, NumElements, TEXT("PlasticityBuffer"));
|
||||
FRDGBufferRef InputRDG = WrapExternalBuffer(InputBuffer, TEXT("InputTemperature"));
|
||||
FRDGBufferRef OutputRDG = WrapExternalBuffer(OutputBuffer, TEXT("OutputTemperature"));
|
||||
FRDGBufferRef FlagsRDG = WrapExternalBuffer(FlagsBuffer, TEXT("SurfaceVoxelFlags"));
|
||||
FRDGBufferRef PlasticityRDG = WrapExternalBuffer(PlasticityBuf, TEXT("Plasticity"));
|
||||
|
||||
FRDGBufferRef InputTempRDG = GraphBuilder.RegisterExternalBuffer(InputPooledBuffer);
|
||||
FRDGBufferRef OutputTempRDG = GraphBuilder.RegisterExternalBuffer(OutputPooledBuffer);
|
||||
FRDGBufferRef FlagsRDG = GraphBuilder.RegisterExternalBuffer(FlagsPooledBuffer);
|
||||
FRDGBufferRef PlasticityRDG = GraphBuilder.RegisterExternalBuffer(PlasticityPooledBuffer);
|
||||
// 通过RDG创建SRV/UAV(格式必须与缓冲区创建时一致:温度/塑性=PF_R32_FLOAT,体素标志=PF_R32_UINT)
|
||||
FRDGBufferSRV* InputTempSRV = GraphBuilder.CreateSRV(FRDGBufferSRVDesc(InputRDG, PF_R32_FLOAT));
|
||||
FRDGBufferSRV* FlagsSRV = GraphBuilder.CreateSRV(FRDGBufferSRVDesc(FlagsRDG, PF_R32_UINT));
|
||||
FRDGBufferUAV* OutputTempUAV = GraphBuilder.CreateUAV(FRDGBufferUAVDesc(OutputRDG, PF_R32_FLOAT));
|
||||
FRDGBufferUAV* OutputPlasticityUAV = GraphBuilder.CreateUAV(FRDGBufferUAVDesc(PlasticityRDG, PF_R32_FLOAT));
|
||||
|
||||
|
||||
UE_LOG(LogTemp, Log, TEXT("DynamicIronBlock [RenderThread]: External RHI buffers registered to RDG, setting shader parameters..."));
|
||||
|
||||
// 设置Shader参数
|
||||
FTemperatureComputeShader::FParameters* PassParameters = GraphBuilder.AllocParameters<FTemperatureComputeShader::FParameters>();
|
||||
PassParameters->VoxelResolution = Resolution;
|
||||
PassParameters->ThermalConductivity = Conductivity;
|
||||
PassParameters->CoolingRate = Cooling;
|
||||
PassParameters->AmbientTemperature = Ambient;
|
||||
PassParameters->ForgeTemperatureMin = ForgeMin;
|
||||
PassParameters->ForgeTemperatureMax = ForgeMax;
|
||||
PassParameters->DeltaTime = DeltaTime;
|
||||
|
||||
// 创建SRV和UAV(使用正确注册的RDG资源)
|
||||
PassParameters->InputTemperatureBuffer = GraphBuilder.CreateSRV(FRDGBufferSRVDesc(InputTempRDG, PF_R32_FLOAT));
|
||||
PassParameters->SurfaceVoxelFlagsBuffer = GraphBuilder.CreateSRV(FRDGBufferSRVDesc(FlagsRDG, PF_R32_UINT));
|
||||
PassParameters->OutputTemperatureBuffer = GraphBuilder.CreateUAV(FRDGBufferUAVDesc(OutputTempRDG, PF_R32_FLOAT));
|
||||
PassParameters->OutputPlasticityBuffer = GraphBuilder.CreateUAV(FRDGBufferUAVDesc(PlasticityRDG, PF_R32_FLOAT));
|
||||
|
||||
UE_LOG(LogTemp, Log, TEXT("DynamicIronBlock [RenderThread]: Shader parameters set, calculating group count..."));
|
||||
// 分配并填充参数(RDG参数指针由GraphBuilder托管生命周期)
|
||||
FTemperatureComputeShader::FParameters* Parameters = GraphBuilder.AllocParameters<FTemperatureComputeShader::FParameters>();
|
||||
Parameters->VoxelResolution = Resolution;
|
||||
Parameters->ThermalConductivity = Conductivity;
|
||||
Parameters->CoolingRate = Cooling;
|
||||
Parameters->AmbientTemperature = Ambient;
|
||||
Parameters->ForgeTemperatureMin = ForgeMin;
|
||||
Parameters->ForgeTemperatureMax = ForgeMax;
|
||||
Parameters->DeltaTime = DeltaTime;
|
||||
Parameters->InputTemperatureBuffer = InputTempSRV;
|
||||
Parameters->SurfaceVoxelFlagsBuffer = FlagsSRV;
|
||||
Parameters->OutputTemperatureBuffer = OutputTempUAV;
|
||||
Parameters->OutputPlasticityBuffer = OutputPlasticityUAV;
|
||||
|
||||
// 计算线程组数量
|
||||
FIntVector GroupSize = FTemperatureComputeShader::GetGroupSize();
|
||||
@@ -1387,21 +1394,24 @@ void ADynamicIronBlock::DispatchTemperatureCompute(float DeltaTime)
|
||||
FMath::DivideAndRoundUp(Resolution.Z, GroupSize.Z)
|
||||
);
|
||||
|
||||
UE_LOG(LogTemp, Log, TEXT("DynamicIronBlock [RenderThread]: GroupCount=(%d,%d,%d), adding compute pass..."),
|
||||
UE_LOG(LogTemp, Log, TEXT("DynamicIronBlock [RenderThread]: GroupCount=(%d,%d,%d), dispatching..."),
|
||||
GroupCount.X, GroupCount.Y, GroupCount.Z);
|
||||
|
||||
// 添加计算Pass
|
||||
FComputeShaderUtils::AddPass(
|
||||
GraphBuilder,
|
||||
RDG_EVENT_NAME("TemperatureConduction"),
|
||||
ComputeShader,
|
||||
PassParameters,
|
||||
GroupCount
|
||||
);
|
||||
// 添加Compute Pass并调度(RDG自动处理资源状态转换与屏障)
|
||||
GraphBuilder.AddPass(
|
||||
RDG_EVENT_NAME("TemperatureCompute"),
|
||||
Parameters,
|
||||
ERDGPassFlags::Compute,
|
||||
[ComputeShader, Parameters, GroupCount](FRHIComputeCommandList& CommandList)
|
||||
{
|
||||
FComputeShaderUtils::Dispatch(
|
||||
CommandList,
|
||||
ComputeShader,
|
||||
*Parameters,
|
||||
GroupCount);
|
||||
});
|
||||
|
||||
UE_LOG(LogTemp, Log, TEXT("DynamicIronBlock [RenderThread]: Compute pass added, executing RDG..."));
|
||||
|
||||
// 执行RDG,自动处理资源转换和同步
|
||||
// 执行RDG图(编译并提交到RHI命令列表)
|
||||
GraphBuilder.Execute();
|
||||
|
||||
UE_LOG(LogTemp, Log, TEXT("DynamicIronBlock: Temperature compute dispatched successfully (%d x %d x %d groups)"),
|
||||
|
||||
@@ -8,8 +8,9 @@ public class BladeSmithEditorTarget : TargetRules
|
||||
public BladeSmithEditorTarget(TargetInfo Target) : base(Target)
|
||||
{
|
||||
Type = TargetType.Editor;
|
||||
DefaultBuildSettings = BuildSettingsVersion.V5;
|
||||
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_5;
|
||||
DefaultBuildSettings = BuildSettingsVersion.V7;
|
||||
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_8;
|
||||
CppStandard = CppStandardVersion.Cpp20;
|
||||
ExtraModuleNames.Add("BladeSmith");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"mcp": {
|
||||
"unreal-mcp": {
|
||||
"type": "remote",
|
||||
"url": "http://127.0.0.1:8000/mcp",
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user