고정각도 회전

This commit is contained in:
2026-07-23 15:41:47 +09:00
parent 74d72f675a
commit f83646b613
5 changed files with 38 additions and 1 deletions

View File

@@ -10,7 +10,7 @@ namespace DinoLove.Dialog.GraphTool.Editor
// .dlg 그래프 에셋을 기존 런타임 타입(DialogGroup / DialogNode / DialogChoice)으로 변환한다.
// 생성된 DialogNode들은 서브에셋으로, DialogGroup이 메인 에셋으로 등록된다.
// 따라서 DialogPlayer는 수정 없이 임포트된 .dlg 에셋(= DialogGroup)을 그대로 사용한다.
[ScriptedImporter(9, DialogGraph.AssetExtension)] // 버전 올리면 기존 .dlg 에셋이 재임포트됨
[ScriptedImporter(10, DialogGraph.AssetExtension)] // 버전 올리면 기존 .dlg 에셋이 재임포트됨
internal class DialogGraphImporter : ScriptedImporter
{
public override void OnImportAsset(AssetImportContext ctx)
@@ -96,6 +96,8 @@ public override void OnImportAsset(AssetImportContext ctx)
dn.LineDuration = GetInputPortValue<float>(gn.GetInputPortByName(DialogLineNode.PORT_DURATION));
dn.LookAtPlayer = GetInputPortValue<bool>(gn.GetInputPortByName(DialogLineNode.PORT_LOOKAT));
dn.ForcePlayerLook = GetInputPortValue<bool>(gn.GetInputPortByName(DialogLineNode.PORT_FORCELOOK));
dn.UseFixedAngle = GetInputPortValue<bool>(gn.GetInputPortByName(DialogLineNode.PORT_USE_FIXED_ANGLE));
dn.FixedAngleY = GetInputPortValue<float>(gn.GetInputPortByName(DialogLineNode.PORT_FIXED_ANGLE_Y));
dn.WaitForInput = GetInputPortValue<bool>(gn.GetInputPortByName(DialogLineNode.PORT_WAITINPUT));
dn.Affection = GetInputPortValue<int>(gn.GetInputPortByName(DialogLineNode.PORT_AFFECTION));
dn.Progress = GetInputPortValue<int>(gn.GetInputPortByName(DialogLineNode.PORT_PROGRESS));
@@ -162,6 +164,8 @@ static void FillStagingNode(DialogStagingNode gn, DialogNode dn)
dn.LineDuration = GetInputPortValue<float>(gn.GetInputPortByName(DialogStagingNode.PORT_DURATION));
dn.LookAtPlayer = GetInputPortValue<bool>(gn.GetInputPortByName(DialogStagingNode.PORT_LOOKAT));
dn.ForcePlayerLook = GetInputPortValue<bool>(gn.GetInputPortByName(DialogStagingNode.PORT_FORCELOOK));
dn.UseFixedAngle = GetInputPortValue<bool>(gn.GetInputPortByName(DialogStagingNode.PORT_USE_FIXED_ANGLE));
dn.FixedAngleY = GetInputPortValue<float>(gn.GetInputPortByName(DialogStagingNode.PORT_FIXED_ANGLE_Y));
dn.Affection = GetInputPortValue<int>(gn.GetInputPortByName(DialogStagingNode.PORT_AFFECTION));
dn.Progress = GetInputPortValue<int>(gn.GetInputPortByName(DialogStagingNode.PORT_PROGRESS));

View File

@@ -26,6 +26,8 @@ internal class DialogLineNode : DialogGraphNode
public const string PORT_DURATION = "LineDuration";
public const string PORT_LOOKAT = "LookAtPlayer";
public const string PORT_FORCELOOK = "ForcePlayerLook";
public const string PORT_USE_FIXED_ANGLE = "UseFixedAngle";
public const string PORT_FIXED_ANGLE_Y = "FixedAngleY";
public const string PORT_WAITINPUT = "WaitForInput";
public const string PORT_AFFECTION = "Affection";
public const string PORT_PROGRESS = "Progress";
@@ -95,6 +97,10 @@ protected override void OnDefinePorts(IPortDefinitionContext context)
context.AddInputPort<bool>(PORT_LOOKAT).WithDisplayName("Look At Player").Build();
context.AddInputPort<bool>(PORT_FORCELOOK).WithDisplayName("Force Player Look")
.WithTooltip("이 대사 시작 시 플레이어(카메라)가 화자를 바라보도록 강제 회전").Build();
context.AddInputPort<bool>(PORT_USE_FIXED_ANGLE).WithDisplayName("Use Fixed Angle")
.WithTooltip("켜면 화자를 Fixed Angle Y(월드 Y각)로 고정 회전. 특정 각도에서만 자연스러운 애니메이션용").Build();
context.AddInputPort<float>(PORT_FIXED_ANGLE_Y).WithDisplayName("Fixed Angle Y")
.WithTooltip("Use Fixed Angle이 켜졌을 때 화자가 향할 월드 Y 회전(도)").Build();
context.AddInputPort<bool>(PORT_WAITINPUT).WithDisplayName("Wait For Input").Build();
context.AddInputPort<int>(PORT_AFFECTION).WithDisplayName("Affection ±")
.WithTooltip("0이 아니면 이 대사 재생 시 화자(비우면 대화 주인 NPC)의 호감도를 이만큼 증감").Build();

View File

@@ -19,6 +19,8 @@ internal class DialogStagingNode : DialogGraphNode
public const string PORT_DURATION = "Duration";
public const string PORT_LOOKAT = "LookAtPlayer";
public const string PORT_FORCELOOK = "ForcePlayerLook";
public const string PORT_USE_FIXED_ANGLE = "UseFixedAngle";
public const string PORT_FIXED_ANGLE_Y = "FixedAngleY";
public const string PORT_AFFECTION = "Affection";
public const string PORT_PROGRESS = "Progress";
@@ -50,6 +52,10 @@ protected override void OnDefinePorts(IPortDefinitionContext context)
.WithTooltip("대상 캐릭터가 플레이어를 바라봄").Build();
context.AddInputPort<bool>(PORT_FORCELOOK).WithDisplayName("Force Player Look")
.WithTooltip("플레이어가 대상 캐릭터를 바라봄").Build();
context.AddInputPort<bool>(PORT_USE_FIXED_ANGLE).WithDisplayName("Use Fixed Angle")
.WithTooltip("켜면 대상을 Fixed Angle Y(월드 Y각)로 고정 회전. 특정 각도에서만 자연스러운 애니메이션용").Build();
context.AddInputPort<float>(PORT_FIXED_ANGLE_Y).WithDisplayName("Fixed Angle Y")
.WithTooltip("Use Fixed Angle이 켜졌을 때 대상이 향할 월드 Y 회전(도)").Build();
context.AddInputPort<int>(PORT_AFFECTION).WithDisplayName("Affection ±")
.WithTooltip("0이 아니면 이 연출 재생 시 대상(비우면 대화 주인 NPC)의 호감도를 이만큼 증감").Build();
context.AddInputPort<int>(PORT_PROGRESS).WithDisplayName("Progress +")