Some minor fixing

This commit is contained in:
Vladislav Khorev 2026-05-12 19:32:57 +03:00
parent 001077a1d6
commit efb85f7328
13 changed files with 126849 additions and 25718 deletions

View File

@ -72,11 +72,19 @@
"rotationX": 0.0, "rotationX": 0.0,
"rotationY": 0.0, "rotationY": 0.0,
"rotationZ": 0.0, "rotationZ": 0.0,
"positionX": 0.0, "positionX": 1.9653,
"positionY": -5.0, "positionY": 1.0911,
"positionZ": 0.0, "positionZ": 0.91977,
"scale": 1.0, "scale": 1.0,
"interactive": false "interactive": true,
"item": {
"id": "phone",
"name": "Телефон",
"description": "Я не могу себе представить жизнь без своего телефона",
"icon": "resources/fire2.png",
"radius": 0.3
},
"activateFunction" : "on_bookshelf_clicked"
}, },
{ {
"name": "Computer001", "name": "Computer001",
@ -85,11 +93,12 @@
"rotationX": 0.0, "rotationX": 0.0,
"rotationY": 0.0, "rotationY": 0.0,
"rotationZ": 0.0, "rotationZ": 0.0,
"positionX": 0.0, "positionX": 5.0916,
"positionY": -5.0, "positionY": 1.1534,
"positionZ": 0.0, "positionZ": 1.0568,
"scale": 1.0, "scale": 1.0,
"interactive": false "interactive": true,
"activateFunction" : "on_computer_clicked"
}, },
{ {
"name": "DiningTable001", "name": "DiningTable001",
@ -115,7 +124,15 @@
"positionY": 0.91414, "positionY": 0.91414,
"positionZ": 1.56758, "positionZ": 1.56758,
"scale": 1.0, "scale": 1.0,
"interactive": false "interactive": true,
"item": {
"id": "knife",
"name": "Серебряный нож",
"description": "Этот серебряный нож я одолжил у Айпери, и я должен его вернуть.",
"icon": "resources/fire2.png",
"radius": 0.3
},
"activateFunction" : "on_knife_pickup"
}, },
{ {
"name": "Book001", "name": "Book001",
@ -128,7 +145,15 @@
"positionY": 0.95746, "positionY": 0.95746,
"positionZ": 0.786023, "positionZ": 0.786023,
"scale": 1.0, "scale": 1.0,
"interactive": false "interactive": true,
"item": {
"id": "phone",
"name": "Книга",
"description": "Это книга о манасчи Жусупе Мамае.",
"icon": "resources/fire2.png",
"radius": 0.3
},
"activateFunction" : "on_book_pickup"
}, },
{ {
"name": "stairs", "name": "stairs",

View File

@ -3,8 +3,8 @@
{ {
"id": "npc_02_woman", "id": "npc_02_woman",
"name": "Студентка", "name": "Студентка",
"animationIdlePath": "resources/w/girl/girl_walk006.txt", "animationIdlePath": "resources/w/girl/girl_walk010.txt",
"animationWalkPath": "resources/w/girl/girl_walk006.txt", "animationWalkPath": "resources/w/girl/girl_walk010.txt",
"meshTextures": { "meshTextures": {
"polySurface1": "resources/w/girl/Chat_02_diff_1.png" "polySurface1": "resources/w/girl/Chat_02_diff_1.png"
}, },
@ -12,7 +12,7 @@
"positionY": 0.0, "positionY": 0.0,
"positionZ": -4.61801, "positionZ": -4.61801,
"facingAngle" : 3.141592, "facingAngle" : 3.141592,
"walkSpeed": 1.66, "walkSpeed": 1.8,
"rotationSpeed": 8.0, "rotationSpeed": 8.0,
"modelScale": 0.016, "modelScale": 0.016,
"modelCorrectionRotX": 0.0, "modelCorrectionRotX": 0.0,

View File

@ -22,7 +22,7 @@
}, },
{ {
"id": "npc_02_woman", "id": "npc_02_woman",
"name": "Бегимай", "name": "Айпери",
"animationIdlePath": "resources/w/girl/girl_walk002.txt", "animationIdlePath": "resources/w/girl/girl_walk002.txt",
"animationWalkPath": "resources/w/girl/girl_walk002.txt", "animationWalkPath": "resources/w/girl/girl_walk002.txt",
"meshTextures": { "meshTextures": {

View File

@ -7,7 +7,7 @@
{ {
"id": "line_1", "id": "line_1",
"type": "Line", "type": "Line",
"speaker": "Бегимай", "speaker": "Айпери",
"portrait": "resources/w/avatar_girlfriend.png", "portrait": "resources/w/avatar_girlfriend.png",
"text": "Ты куда собрался, Бекзат?", "text": "Ты куда собрался, Бекзат?",
"next": "line_2" "next": "line_2"
@ -15,7 +15,7 @@
{ {
"id": "line_2", "id": "line_2",
"type": "Line", "type": "Line",
"speaker": "Бегимай", "speaker": "Айпери",
"portrait": "resources/w/avatar_girlfriend.png", "portrait": "resources/w/avatar_girlfriend.png",
"text": "Пока ты не заберешь нож из учительской, никуда я тебя не выпущу.", "text": "Пока ты не заберешь нож из учительской, никуда я тебя не выпущу.",
"next": "end_1" "next": "end_1"
@ -25,12 +25,104 @@
"type": "End" "type": "End"
} }
] ]
},
{
"id": "teacher_dialog001",
"start": "line_1",
"nodes": [
{
"id": "line_1",
"type": "Line",
"speaker": "Аида Дженибековна",
"portrait": "resources/w/avatar_teacher.png",
"text": "Бекзат, тебе отдельное задание на модуль.",
"next": "line_2"
},
{
"id": "line_2",
"type": "Line",
"speaker": "Аида Дженибековна",
"portrait": "resources/w/avatar_teacher.png",
"text": "Подготовь презентацию по теме \"Манас в изложении Жусупа Мамая\".",
"next": "line_3"
},
{
"id": "line_3",
"type": "Line",
"speaker": "Аида Дженибековна",
"portrait": "resources/w/avatar_teacher.png",
"text": "Книга лежит в библиотеке, но забирать ее из библиотеки нельзя.",
"next": "line_4"
},
{
"id": "line_4",
"type": "Line",
"speaker": "Бекзат",
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
"text": "Как же я буду готовиться к презентации, если книгу забирать нельзя?",
"next": "line_5"
},
{
"id": "line_5",
"type": "Line",
"speaker": "Аида Дженибековна",
"portrait": "resources/w/avatar_teacher.png",
"text": "Там в библиотеке есть компьютер, напиши презентацию прямо на нем.",
"next": "line_6"
},
{
"id": "line_6",
"type": "Line",
"speaker": "Аида Дженибековна",
"portrait": "resources/w/avatar_teacher.png",
"text": "Там в библиотеке есть компьютер, напиши презентацию прямо на нем.",
"next": "line_7"
},
{
"id": "line_7",
"type": "Line",
"speaker": "Бекзат",
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
"text": "Ладно...",
"next": "end_1"
},
{
"id": "end_1",
"type": "End"
}
]
},
{
"id": "book_dialog001",
"start": "line_1",
"nodes": [
{
"id": "line_1",
"type": "Line",
"speaker": "Бекзат",
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
"text": "Мне стоит вернуь книгу на место, прежде чем уходить из библиотеки.",
"next": "line_2"
},
{
"id": "line_2",
"type": "Line",
"speaker": "Бекзат",
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
"text": "Иначе Аида Дженибековна меня убъет.",
"next": "end_1"
},
{
"id": "end_1",
"type": "End"
}
]
} }
], ],
"cutscenes": [ "cutscenes": [
{ {
"id": "test_cutscene_01", "id": "test_cutscene_01",
"background": "resources/test_cutscene1_fix.png", "background": "resources/test_cutscene001.png",
"durationMs": 25000, "durationMs": 25000,
"fadeOutMs": 500, "fadeOutMs": 500,
"fadeInMs": 500, "fadeInMs": 500,
@ -57,6 +149,12 @@
} }
], ],
"lines": [ "lines": [
{
"speaker": "Аида Дженибековна",
"portrait": "resources/hero.png",
"text": "Здравствуйте, студенты. Кого я вижу, где вы были весь семестр?",
"durationMs": 3000
},
{ {
"speaker": "Аида Дженибековна", "speaker": "Аида Дженибековна",
"portrait": "resources/hero.png", "portrait": "resources/hero.png",
@ -74,7 +172,7 @@
"portrait": "resources/hero.png", "portrait": "resources/hero.png",
"text": "Этот мир описан в эпосе Манас как Кайып или Аль-Гайб, но некоторые ученые называют его миром теней.", "text": "Этот мир описан в эпосе Манас как Кайып или Аль-Гайб, но некоторые ученые называют его миром теней.",
"durationMs": 3000, "durationMs": 3000,
"background": "resources/test_cutscene2_fix.png" "background": "resources/test_cutscene001.png"
}, },
{ {
@ -82,49 +180,49 @@
"portrait": "resources/hero.png", "portrait": "resources/hero.png",
"text": "В этом мире обитают феи, духи и джинны. Простым смертным в этот мир дорога закрыта.", "text": "В этом мире обитают феи, духи и джинны. Простым смертным в этот мир дорога закрыта.",
"durationMs": 3000, "durationMs": 3000,
"background": "resources/test_cutscene2_fix.png" "background": "resources/test_cutscene001.png"
}, },
{ {
"speaker": "Аида Дженибековна", "speaker": "Аида Дженибековна",
"portrait": "resources/hero.png", "portrait": "resources/hero.png",
"text": "Время там течет по другому - за один день в теневом мире могут пройти годы жизни обычного мира.", "text": "Время там течет по другому - за один день в теневом мире могут пройти годы жизни обычного мира.",
"durationMs": 3000, "durationMs": 3000,
"background": "resources/test_cutscene3_fix.png" "background": "resources/test_cutscene001.png"
}, },
{ {
"speaker": "Аида Дженибековна", "speaker": "Аида Дженибековна",
"portrait": "resources/hero.png", "portrait": "resources/hero.png",
"text": "Обычно, мир теней никак не пересекается с нашим миром живых людей.", "text": "Обычно, мир теней никак не пересекается с нашим миром живых людей.",
"durationMs": 2000, "durationMs": 2000,
"background": "resources/test_cutscene3_fix.png" "background": "resources/test_cutscene001.png"
}, },
{ {
"speaker": "Аида Дженибековна", "speaker": "Аида Дженибековна",
"portrait": "resources/hero.png", "portrait": "resources/hero.png",
"text": "Но в критические моменты для народа, обитатели теневого мира могут приходить в наш мир.", "text": "Но в критические моменты для народа, обитатели теневого мира могут приходить в наш мир.",
"durationMs": 2000, "durationMs": 2000,
"background": "resources/test_cutscene3_fix.png" "background": "resources/test_cutscene001.png"
}, },
{ {
"speaker": "Аида Дженибековна", "speaker": "Аида Дженибековна",
"portrait": "resources/hero.png", "portrait": "resources/hero.png",
"text": "Совсем недавно закончилась пандемия, а сегодня мир захлестнули кровавые войны.", "text": "Совсем недавно закончилась пандемия, а сегодня мир захлестнули кровавые войны.",
"durationMs": 2000, "durationMs": 2000,
"background": "resources/test_cutscene1_fix.png" "background": "resources/test_cutscene001.png"
}, },
{ {
"speaker": "Аида Дженибековна", "speaker": "Аида Дженибековна",
"portrait": "resources/hero.png", "portrait": "resources/hero.png",
"text": "В такие кризисные моменты истории, грань между мирами становится особенно тонкой.", "text": "В такие кризисные моменты истории, грань между мирами становится особенно тонкой.",
"durationMs": 2000, "durationMs": 2000,
"background": "resources/test_cutscene1_fix.png" "background": "resources/test_cutscene001.png"
}, },
{ {
"speaker": "Аида Дженибековна", "speaker": "Аида Дженибековна",
"portrait": "resources/hero.png", "portrait": "resources/hero.png",
"text": "На сегодня лекция завершена. Домашнее задание - к практическому занятию вы должны подготовить презентации, каждый по своей теме.", "text": "На сегодня лекция завершена. Домашнее задание - к практическому занятию вы должны подготовить презентации, каждый по своей теме.",
"durationMs": 2000, "durationMs": 2000,
"background": "resources/test_cutscene3_fix.png" "background": "resources/test_cutscene001.png"
} }
] ]
}, },

View File

@ -35,6 +35,15 @@ game_api.set_trigger_zone_callbacks("knife_dialog_zone001",
) )
function on_knife_pickup()
game_api.pickup_item("knife")
end
function on_book_pickup()
game_api.pickup_item("book")
end
function on_npc_interact(npc_index) function on_npc_interact(npc_index)
print("[Lua] NPC interaction! Index: " .. tostring(npc_index)) print("[Lua] NPC interaction! Index: " .. tostring(npc_index))
if npc_index == 1 then if npc_index == 1 then

BIN
resources/test_cutscene001.png (Stored with Git LFS) Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,123 +1,123 @@
===Vertices (Split by UV/Normal): 119 ===Vertices (Split by UV/Normal): 119
V 0: Pos(0.735579, 4.710862, 6.186687) Norm(-0.577341, -0.577355, 0.577355) UV(0.622728, 0.985786) V 0: Pos(-0.321174, -0.380694, 0.03328) Norm(-0.577341, -0.577355, 0.577355) UV(0.622728, 0.985786)
V 1: Pos(0.735579, 5.010581, 6.026967) Norm(-0.577341, 0.577355, -0.577355) UV(0.701365, 0.838077) V 1: Pos(-0.321174, -0.080976, -0.12644) Norm(-0.577341, 0.577355, -0.577355) UV(0.701365, 0.838077)
V 2: Pos(0.735579, 4.710862, 6.026967) Norm(-0.57735, -0.577325, -0.577377) UV(0.701365, 0.985786) V 2: Pos(-0.321174, -0.380694, -0.12644) Norm(-0.57735, -0.577325, -0.577377) UV(0.701365, 0.985786)
V 3: Pos(0.735579, 5.010581, 6.186687) Norm(-0.57735, 0.577325, 0.577377) UV(0.84347, 0.785241) V 3: Pos(-0.321174, -0.080976, 0.03328) Norm(-0.57735, 0.577325, 0.577377) UV(0.84347, 0.785241)
V 4: Pos(1.095298, 5.010581, 6.026967) Norm(0.57735, 0.577325, -0.577377) UV(0.764763, 0.962461) V 4: Pos(0.038545, -0.080976, -0.12644) Norm(0.57735, 0.577325, -0.577377) UV(0.764763, 0.962461)
V 5: Pos(0.735579, 5.010581, 6.026967) Norm(-0.577341, 0.577355, -0.577355) UV(0.764763, 0.785276) V 5: Pos(-0.321174, -0.080976, -0.12644) Norm(-0.577341, 0.577355, -0.577355) UV(0.764763, 0.785276)
V 6: Pos(1.095298, 5.010581, 6.186687) Norm(0.577341, 0.577355, 0.577355) UV(-0.0, 0.985999) V 6: Pos(0.038545, -0.080976, 0.03328) Norm(0.577341, 0.577355, 0.577355) UV(-0.0, 0.985999)
V 7: Pos(1.095298, 4.710862, 6.026967) Norm(0.577341, -0.577355, -0.577355) UV(0.078326, 0.83829) V 7: Pos(0.038545, -0.380694, -0.12644) Norm(0.577341, -0.577355, -0.577355) UV(0.078326, 0.83829)
V 8: Pos(1.095298, 5.010581, 6.026967) Norm(0.57735, 0.577325, -0.577377) UV(0.078326, 0.985999) V 8: Pos(0.038545, -0.080976, -0.12644) Norm(0.57735, 0.577325, -0.577377) UV(0.078326, 0.985999)
V 9: Pos(1.095298, 4.710862, 6.186687) Norm(0.57735, -0.577325, 0.577377) UV(0.843469, 0.962426) V 9: Pos(0.038545, -0.380694, 0.03328) Norm(0.57735, -0.577325, 0.577377) UV(0.843469, 0.962426)
V 10: Pos(0.735579, 4.710862, 6.026967) Norm(-0.57735, -0.577325, -0.577377) UV(0.922175, 0.785276) V 10: Pos(-0.321174, -0.380694, -0.12644) Norm(-0.57735, -0.577325, -0.577377) UV(0.922175, 0.785276)
V 11: Pos(1.095298, 4.710862, 6.026967) Norm(0.577341, -0.577355, -0.577355) UV(0.922175, 0.962461) V 11: Pos(0.038545, -0.380694, -0.12644) Norm(0.577341, -0.577355, -0.577355) UV(0.922175, 0.962461)
V 12: Pos(1.095298, 5.010581, 6.026967) Norm(0.57735, 0.577325, -0.577377) UV(0.717688, 0.0) V 12: Pos(0.038545, -0.080976, -0.12644) Norm(0.57735, 0.577325, -0.577377) UV(0.717688, 0.0)
V 13: Pos(0.735579, 4.710862, 6.026967) Norm(-0.57735, -0.577325, -0.577377) UV(0.865397, 0.17727) V 13: Pos(-0.321174, -0.380694, -0.12644) Norm(-0.57735, -0.577325, -0.577377) UV(0.865397, 0.17727)
V 14: Pos(0.735579, 5.010581, 6.026967) Norm(-0.577341, 0.577355, -0.577355) UV(0.717688, 0.17727) V 14: Pos(-0.321174, -0.080976, -0.12644) Norm(-0.577341, 0.577355, -0.577355) UV(0.717688, 0.17727)
V 15: Pos(0.735579, 5.010581, 6.186687) Norm(-0.57735, 0.577325, 0.577377) UV(0.764763, 0.60813) V 15: Pos(-0.321174, -0.080976, 0.03328) Norm(-0.57735, 0.577325, 0.577377) UV(0.764763, 0.60813)
V 16: Pos(1.095298, 4.710862, 6.186687) Norm(0.57735, -0.577325, 0.577377) UV(0.912472, 0.785241) V 16: Pos(0.038545, -0.380694, 0.03328) Norm(0.57735, -0.577325, 0.577377) UV(0.912472, 0.785241)
V 17: Pos(1.095298, 5.010581, 6.186687) Norm(0.577341, 0.577355, 0.577355) UV(0.764763, 0.785241) V 17: Pos(0.038545, -0.080976, 0.03328) Norm(0.577341, 0.577355, 0.577355) UV(0.764763, 0.785241)
V 18: Pos(0.441861, 5.434348, 6.437831) Norm(-0.57734, -0.577355, 0.577355) UV(0.865397, 0.0) V 18: Pos(-0.614892, 0.342792, 0.284424) Norm(-0.57734, -0.577355, 0.577355) UV(0.865397, 0.0)
V 19: Pos(0.441861, 5.653039, 6.019138) Norm(-0.57734, 0.577355, -0.577355) UV(0.973174, 0.206141) V 19: Pos(-0.614892, 0.561483, -0.134268) Norm(-0.57734, 0.577355, -0.577355) UV(0.973174, 0.206141)
V 20: Pos(0.441861, 5.434348, 6.019138) Norm(-0.577355, -0.577371, -0.577325) UV(0.865397, 0.206141) V 20: Pos(-0.614892, 0.342792, -0.134268) Norm(-0.577355, -0.577371, -0.577325) UV(0.865397, 0.206141)
V 21: Pos(0.441861, 5.653039, 6.437831) Norm(-0.577355, 0.577371, 0.577325) UV(0.206323, 0.553153) V 21: Pos(-0.614892, 0.561483, 0.284424) Norm(-0.577355, 0.577371, 0.577325) UV(0.206323, 0.553153)
V 22: Pos(1.020553, 5.653039, 6.019138) Norm(0.577355, 0.577371, -0.577325) UV(0.0, 0.83829) V 22: Pos(-0.0362, 0.561483, -0.134268) Norm(0.577355, 0.577371, -0.577325) UV(0.0, 0.83829)
V 23: Pos(0.441861, 5.653039, 6.019138) Norm(-0.57734, 0.577355, -0.577355) UV(0.0, 0.553246) V 23: Pos(-0.614892, 0.561483, -0.134268) Norm(-0.57734, 0.577355, -0.577355) UV(0.0, 0.553246)
V 24: Pos(1.020553, 5.653039, 6.437831) Norm(0.57734, 0.577355, 0.577355) UV(0.867943, 0.277359) V 24: Pos(-0.0362, 0.561483, 0.284424) Norm(0.57734, 0.577355, 0.577355) UV(0.867943, 0.277359)
V 25: Pos(1.020553, 5.434348, 6.019138) Norm(0.57734, -0.577355, -0.577355) UV(0.97572, 0.482684) V 25: Pos(-0.0362, 0.342792, -0.134268) Norm(0.57734, -0.577355, -0.577355) UV(0.97572, 0.482684)
V 26: Pos(1.020553, 5.653039, 6.019138) Norm(0.577355, 0.577371, -0.577325) UV(0.867943, 0.482684) V 26: Pos(-0.0362, 0.561483, -0.134268) Norm(0.577355, 0.577371, -0.577325) UV(0.867943, 0.482684)
V 27: Pos(1.020553, 5.434348, 6.437831) Norm(0.577355, -0.577371, 0.577325) UV(0.206322, 0.838197) V 27: Pos(-0.0362, 0.342792, 0.284424) Norm(0.577355, -0.577371, 0.577325) UV(0.206322, 0.838197)
V 28: Pos(0.441861, 5.434348, 6.019138) Norm(-0.577355, -0.577371, -0.577325) UV(0.412645, 0.553246) V 28: Pos(-0.614892, 0.342792, -0.134268) Norm(-0.577355, -0.577371, -0.577325) UV(0.412645, 0.553246)
V 29: Pos(1.020553, 5.434348, 6.019138) Norm(0.57734, -0.577355, -0.577355) UV(0.412645, 0.83829) V 29: Pos(-0.0362, 0.342792, -0.134268) Norm(0.57734, -0.577355, -0.577355) UV(0.412645, 0.83829)
V 30: Pos(1.020553, 5.653039, 6.019138) Norm(0.577355, 0.577371, -0.577325) UV(0.514952, 0.553153) V 30: Pos(-0.0362, 0.561483, -0.134268) Norm(0.577355, 0.577371, -0.577325) UV(0.514952, 0.553153)
V 31: Pos(0.441861, 5.434348, 6.019138) Norm(-0.577355, -0.577371, -0.577325) UV(0.622728, 0.838334) V 31: Pos(-0.614892, 0.342792, -0.134268) Norm(-0.577355, -0.577371, -0.577325) UV(0.622728, 0.838334)
V 32: Pos(0.441861, 5.653039, 6.019138) Norm(-0.57734, 0.577355, -0.577355) UV(0.514952, 0.838334) V 32: Pos(-0.614892, 0.561483, -0.134268) Norm(-0.57734, 0.577355, -0.577355) UV(0.514952, 0.838334)
V 33: Pos(0.441861, 5.653039, 6.437831) Norm(-0.577355, 0.577371, 0.577325) UV(0.622728, 0.553153) V 33: Pos(-0.614892, 0.561483, 0.284424) Norm(-0.577355, 0.577371, 0.577325) UV(0.622728, 0.553153)
V 34: Pos(1.020553, 5.434348, 6.437831) Norm(0.577355, -0.577371, 0.577325) UV(0.730505, 0.838077) V 34: Pos(-0.0362, 0.342792, 0.284424) Norm(0.577355, -0.577371, 0.577325) UV(0.730505, 0.838077)
V 35: Pos(1.020553, 5.653039, 6.437831) Norm(0.57734, 0.577355, 0.577355) UV(0.622728, 0.838077) V 35: Pos(-0.0362, 0.561483, 0.284424) Norm(0.57734, 0.577355, 0.577355) UV(0.622728, 0.838077)
V 36: Pos(0.53154, 4.669188, 6.377977) Norm(-0.820942, -0.525784, 0.222722) UV(0.551589, 0.17729) V 36: Pos(-0.525213, -0.422368, 0.22457) Norm(-0.820942, -0.525784, 0.222722) UV(0.551589, 0.17729)
V 37: Pos(0.672102, 5.02893, 6.046834) Norm(-0.410063, 0.525784, -0.745251) UV(0.717688, 0.0) V 37: Pos(-0.384651, -0.062626, -0.106573) Norm(-0.410063, 0.525784, -0.745251) UV(0.717688, 0.0)
V 38: Pos(0.672102, 4.669188, 6.046834) Norm(-0.41003, -0.525802, -0.745257) UV(0.717688, 0.17729) V 38: Pos(-0.384651, -0.422368, -0.106573) Norm(-0.41003, -0.525802, -0.745257) UV(0.717688, 0.17729)
V 39: Pos(0.53154, 5.02893, 6.377977) Norm(-0.820924, 0.525802, 0.222749) UV(0.049252, 0.277359) V 39: Pos(-0.525213, -0.062626, 0.22457) Norm(-0.820924, 0.525802, 0.222749) UV(0.049252, 0.277359)
V 40: Pos(1.226283, 5.128869, 6.1735) Norm(0.688382, 0.618212, -0.379399) UV(0.275794, -0.0) V 40: Pos(0.16953, 0.037313, 0.020093) Norm(0.688382, 0.618212, -0.379399) UV(0.275794, -0.0)
V 41: Pos(0.672102, 5.02893, 6.046834) Norm(-0.410063, 0.525784, -0.745251) UV(0.226542, 0.277359) V 41: Pos(-0.384651, -0.062626, -0.106573) Norm(-0.410063, 0.525784, -0.745251) UV(0.226542, 0.277359)
V 42: Pos(1.007622, 5.128869, 6.688632) Norm(0.20531, 0.618198, 0.758735) UV(0.27372, 0.553153) V 42: Pos(-0.049131, 0.037313, 0.535225) Norm(0.20531, 0.618198, 0.758735) UV(0.27372, 0.553153)
V 43: Pos(1.226283, 4.56925, 6.1735) Norm(0.688409, -0.618198, -0.379374) UV(0.537026, 0.277359) V 43: Pos(0.16953, -0.522306, 0.020093) Norm(0.688409, -0.618198, -0.379374) UV(0.537026, 0.277359)
V 44: Pos(1.226283, 5.128869, 6.1735) Norm(0.688382, 0.618212, -0.379399) UV(0.537026, 0.553153) V 44: Pos(0.16953, 0.037313, 0.020093) Norm(0.688382, 0.618212, -0.379399) UV(0.537026, 0.553153)
V 45: Pos(1.007622, 4.56925, 6.688632) Norm(0.205273, -0.618211, 0.758734) UV(0.551589, -0.0) V 45: Pos(-0.049131, -0.522306, 0.535225) Norm(0.205273, -0.618211, 0.758734) UV(0.551589, -0.0)
V 46: Pos(0.672102, 4.669188, 6.046834) Norm(-0.41003, -0.525802, -0.745257) UV(0.325047, 0.277359) V 46: Pos(-0.384651, -0.422368, -0.106573) Norm(-0.41003, -0.525802, -0.745257) UV(0.325047, 0.277359)
V 47: Pos(1.226283, 4.56925, 6.1735) Norm(0.688409, -0.618198, -0.379374) UV(0.275794, -0.0) V 47: Pos(0.16953, -0.522306, 0.020093) Norm(0.688409, -0.618198, -0.379374) UV(0.275794, -0.0)
V 48: Pos(1.226283, 5.128869, 6.1735) Norm(0.688382, 0.618212, -0.379399) UV(-0.0, 0.553153) V 48: Pos(0.16953, 0.037313, 0.020093) Norm(0.688382, 0.618212, -0.379399) UV(-0.0, 0.553153)
V 49: Pos(0.672102, 4.669188, 6.046834) Norm(-0.41003, -0.525802, -0.745257) UV(0.27372, 0.326611) V 49: Pos(-0.384651, -0.422368, -0.106573) Norm(-0.41003, -0.525802, -0.745257) UV(0.27372, 0.326611)
V 50: Pos(0.672102, 5.02893, 6.046834) Norm(-0.410063, 0.525784, -0.745251) UV(0.27372, 0.503901) V 50: Pos(-0.384651, -0.062626, -0.106573) Norm(-0.410063, 0.525784, -0.745251) UV(0.27372, 0.503901)
V 51: Pos(0.53154, 5.02893, 6.377977) Norm(-0.820924, 0.525802, 0.222749) UV(0.537025, 0.503901) V 51: Pos(-0.525213, -0.062626, 0.22457) Norm(-0.820924, 0.525802, 0.222749) UV(0.537025, 0.503901)
V 52: Pos(1.007622, 4.56925, 6.688632) Norm(0.205273, -0.618211, 0.758734) UV(0.764763, 0.277359) V 52: Pos(-0.049131, -0.522306, 0.535225) Norm(0.205273, -0.618211, 0.758734) UV(0.764763, 0.277359)
V 53: Pos(1.007622, 5.128869, 6.688632) Norm(0.20531, 0.618198, 0.758735) UV(0.764763, 0.553154) V 53: Pos(-0.049131, 0.037313, 0.535225) Norm(0.20531, 0.618198, 0.758735) UV(0.764763, 0.553154)
V 54: Pos(1.326249, 4.523787, 6.105271) Norm(-0.468337, -0.577333, 0.66884) UV(0.730505, 0.883925) V 54: Pos(0.269496, -0.567769, -0.048135) Norm(-0.468337, -0.577333, 0.66884) UV(0.730505, 0.883925)
V 55: Pos(1.317363, 5.19496, 6.054874) Norm(-0.668842, 0.577346, -0.468318) UV(0.755124, 0.553154) V 55: Pos(0.26061, 0.103404, -0.098532) Norm(-0.668842, 0.577346, -0.468318) UV(0.755124, 0.553154)
V 56: Pos(1.317363, 4.523787, 6.054874) Norm(-0.66884, -0.577359, -0.468305) UV(0.755124, 0.883925) V 56: Pos(0.26061, -0.567769, -0.098532) Norm(-0.66884, -0.577359, -0.468305) UV(0.755124, 0.883925)
V 57: Pos(1.326249, 5.19496, 6.105271) Norm(-0.468341, 0.577346, 0.668826) UV(0.893159, 0.482684) V 57: Pos(0.269496, 0.103404, -0.048135) Norm(-0.468341, 0.577346, 0.668826) UV(0.893159, 0.482684)
V 58: Pos(1.525328, 5.19496, 6.018205) Norm(0.468341, 0.577347, -0.668826) UV(0.867943, 0.586724) V 58: Pos(0.468575, 0.103404, -0.135202) Norm(0.468341, 0.577347, -0.668826) UV(0.867943, 0.586724)
V 59: Pos(1.317363, 5.19496, 6.054874) Norm(-0.668842, 0.577346, -0.468318) UV(0.867943, 0.482698) V 59: Pos(0.26061, 0.103404, -0.098532) Norm(-0.668842, 0.577346, -0.468318) UV(0.867943, 0.482698)
V 60: Pos(1.534214, 5.19496, 6.068602) Norm(0.668842, 0.577346, 0.468319) UV(0.97572, 0.60813) V 60: Pos(0.477461, 0.103404, -0.084805) Norm(0.668842, 0.577346, 0.468319) UV(0.97572, 0.60813)
V 61: Pos(1.525328, 4.523787, 6.018205) Norm(0.468338, -0.577334, -0.668838) UV(1.0, 0.277359) V 61: Pos(0.468575, -0.567769, -0.135202) Norm(0.468338, -0.577334, -0.668838) UV(1.0, 0.277359)
V 62: Pos(1.525328, 5.19496, 6.018205) Norm(0.468341, 0.577347, -0.668826) UV(1.0, 0.60813) V 62: Pos(0.468575, 0.103404, -0.135202) Norm(0.468341, 0.577347, -0.668826) UV(1.0, 0.60813)
V 63: Pos(1.525328, 4.523787, 6.018205) Norm(0.468338, -0.577334, -0.668838) UV(0.918374, 0.586724) V 63: Pos(0.468575, -0.567769, -0.135202) Norm(0.468338, -0.577334, -0.668838) UV(0.918374, 0.586724)
V 64: Pos(1.326249, 4.523787, 6.105271) Norm(-0.468337, -0.577333, 0.66884) UV(0.893159, 0.482684) V 64: Pos(0.269496, -0.567769, -0.048135) Norm(-0.468337, -0.577333, 0.66884) UV(0.893159, 0.482684)
V 65: Pos(1.317363, 4.523787, 6.054874) Norm(-0.66884, -0.577359, -0.468305) UV(0.918374, 0.482698) V 65: Pos(0.26061, -0.567769, -0.098532) Norm(-0.66884, -0.577359, -0.468305) UV(0.918374, 0.482698)
V 66: Pos(1.525328, 5.19496, 6.018205) Norm(0.468341, 0.577347, -0.668826) UV(0.412645, 0.883924) V 66: Pos(0.468575, 0.103404, -0.135202) Norm(0.468341, 0.577347, -0.668826) UV(0.412645, 0.883924)
V 67: Pos(1.317363, 4.523787, 6.054874) Norm(-0.66884, -0.577359, -0.468305) UV(0.514952, 0.553153) V 67: Pos(0.26061, -0.567769, -0.098532) Norm(-0.66884, -0.577359, -0.468305) UV(0.514952, 0.553153)
V 68: Pos(1.317363, 5.19496, 6.054874) Norm(-0.668842, 0.577346, -0.468318) UV(0.514952, 0.883924) V 68: Pos(0.26061, 0.103404, -0.098532) Norm(-0.668842, 0.577346, -0.468318) UV(0.514952, 0.883924)
V 69: Pos(1.326249, 5.19496, 6.105271) Norm(-0.468341, 0.577346, 0.668826) UV(0.764763, 0.60813) V 69: Pos(0.269496, 0.103404, -0.048135) Norm(-0.468341, 0.577346, 0.668826) UV(0.764763, 0.60813)
V 70: Pos(1.534214, 4.523787, 6.068602) Norm(0.668839, -0.577358, 0.468307) UV(0.867943, 0.277359) V 70: Pos(0.477461, -0.567769, -0.084805) Norm(0.668839, -0.577358, 0.468307) UV(0.867943, 0.277359)
V 71: Pos(1.534214, 5.19496, 6.068602) Norm(0.668842, 0.577346, 0.468319) UV(0.867943, 0.60813) V 71: Pos(0.477461, 0.103404, -0.084805) Norm(0.668842, 0.577346, 0.468319) UV(0.867943, 0.60813)
V 72: Pos(1.299895, 5.312884, 6.070292) Norm(-0.577358, -0.577347, 0.577347) UV(0.551589, 0.260175) V 72: Pos(0.243142, 0.221328, -0.083115) Norm(-0.577358, -0.577347, 0.577347) UV(0.551589, 0.260175)
V 73: Pos(1.299895, 5.376978, 6.026197) Norm(-0.577358, 0.577347, -0.577347) UV(0.573298, 0.228587) V 73: Pos(0.243142, 0.285422, -0.127209) Norm(-0.577358, 0.577347, -0.577347) UV(0.573298, 0.228587)
V 74: Pos(1.299895, 5.312884, 6.026197) Norm(-0.577359, -0.577332, -0.577359) UV(0.573298, 0.260175) V 74: Pos(0.243142, 0.221328, -0.127209) Norm(-0.577359, -0.577332, -0.577359) UV(0.573298, 0.260175)
V 75: Pos(1.299895, 5.376978, 6.070292) Norm(-0.577359, 0.577332, 0.577359) UV(0.658221, 0.17729) V 75: Pos(0.243142, 0.285422, -0.083115) Norm(-0.577359, 0.577332, 0.577359) UV(0.658221, 0.17729)
V 76: Pos(1.40399, 5.376978, 6.026197) Norm(0.577359, 0.577332, -0.577359) UV(0.636492, 0.228573) V 76: Pos(0.347237, 0.285422, -0.127209) Norm(0.577359, 0.577332, -0.577359) UV(0.636492, 0.228573)
V 77: Pos(1.299895, 5.376978, 6.026197) Norm(-0.577358, 0.577347, -0.577347) UV(0.636492, 0.177299) V 77: Pos(0.243142, 0.285422, -0.127209) Norm(-0.577358, 0.577347, -0.577347) UV(0.636492, 0.177299)
V 78: Pos(1.40399, 5.376978, 6.070292) Norm(0.577358, 0.577347, 0.577347) UV(0.573298, 0.260175) V 78: Pos(0.347237, 0.285422, -0.083115) Norm(0.577358, 0.577347, 0.577347) UV(0.573298, 0.260175)
V 79: Pos(1.40399, 5.312884, 6.026197) Norm(0.577358, -0.577347, -0.577347) UV(0.594921, 0.228588) V 79: Pos(0.347237, 0.221328, -0.127209) Norm(0.577358, -0.577347, -0.577347) UV(0.594921, 0.228588)
V 80: Pos(1.40399, 5.376978, 6.026197) Norm(0.577359, 0.577332, -0.577359) UV(0.594921, 0.260175) V 80: Pos(0.347237, 0.285422, -0.127209) Norm(0.577359, 0.577332, -0.577359) UV(0.594921, 0.260175)
V 81: Pos(1.40399, 5.312884, 6.070292) Norm(0.577359, -0.577332, 0.577359) UV(0.614763, 0.228563) V 81: Pos(0.347237, 0.221328, -0.083115) Norm(0.577359, -0.577332, 0.577359) UV(0.614763, 0.228563)
V 82: Pos(1.299895, 5.312884, 6.026197) Norm(-0.577359, -0.577332, -0.577359) UV(0.636492, 0.177299) V 82: Pos(0.243142, 0.221328, -0.127209) Norm(-0.577359, -0.577332, -0.577359) UV(0.636492, 0.177299)
V 83: Pos(1.40399, 5.312884, 6.026197) Norm(0.577358, -0.577347, -0.577347) UV(0.636492, 0.228573) V 83: Pos(0.347237, 0.221328, -0.127209) Norm(0.577358, -0.577347, -0.577347) UV(0.636492, 0.228573)
V 84: Pos(1.40399, 5.376978, 6.026197) Norm(0.577359, 0.577332, -0.577359) UV(0.551589, 0.17729) V 84: Pos(0.347237, 0.285422, -0.127209) Norm(0.577359, 0.577332, -0.577359) UV(0.551589, 0.17729)
V 85: Pos(1.299895, 5.312884, 6.026197) Norm(-0.577359, -0.577332, -0.577359) UV(0.583176, 0.228588) V 85: Pos(0.243142, 0.221328, -0.127209) Norm(-0.577359, -0.577332, -0.577359) UV(0.583176, 0.228588)
V 86: Pos(1.299895, 5.376978, 6.026197) Norm(-0.577358, 0.577347, -0.577347) UV(0.551589, 0.228588) V 86: Pos(0.243142, 0.285422, -0.127209) Norm(-0.577358, 0.577347, -0.577347) UV(0.551589, 0.228588)
V 87: Pos(1.299895, 5.376978, 6.070292) Norm(-0.577359, 0.577332, 0.577359) UV(0.583176, 0.17729) V 87: Pos(0.243142, 0.285422, -0.083115) Norm(-0.577359, 0.577332, 0.577359) UV(0.583176, 0.17729)
V 88: Pos(1.40399, 5.312884, 6.070292) Norm(0.577359, -0.577332, 0.577359) UV(0.614763, 0.228541) V 88: Pos(0.347237, 0.221328, -0.083115) Norm(0.577359, -0.577332, 0.577359) UV(0.614763, 0.228541)
V 89: Pos(1.40399, 5.376978, 6.070292) Norm(0.577358, 0.577347, 0.577347) UV(0.583176, 0.228541) V 89: Pos(0.347237, 0.285422, -0.083115) Norm(0.577358, 0.577347, 0.577347) UV(0.583176, 0.228541)
V 90: Pos(0.735579, 5.010581, 6.186687) Norm(-0.57735, 0.577325, 0.577377) UV(0.622728, 0.838077) V 90: Pos(-0.321174, -0.080976, 0.03328) Norm(-0.57735, 0.577325, 0.577377) UV(0.622728, 0.838077)
V 91: Pos(1.095298, 5.010581, 6.186687) Norm(0.577341, 0.577355, 0.577355) UV(0.84347, 0.962426) V 91: Pos(0.038545, -0.080976, 0.03328) Norm(0.577341, 0.577355, 0.577355) UV(0.84347, 0.962426)
V 92: Pos(1.095298, 4.710862, 6.186687) Norm(0.57735, -0.577325, 0.577377) UV(-0.0, 0.83829) V 92: Pos(0.038545, -0.380694, 0.03328) Norm(0.57735, -0.577325, 0.577377) UV(-0.0, 0.83829)
V 93: Pos(0.735579, 4.710862, 6.186687) Norm(-0.577341, -0.577355, 0.577355) UV(0.843469, 0.785241) V 93: Pos(-0.321174, -0.380694, 0.03328) Norm(-0.577341, -0.577355, 0.577355) UV(0.843469, 0.785241)
V 94: Pos(1.095298, 4.710862, 6.026967) Norm(0.577341, -0.577355, -0.577355) UV(0.865397, 0.0) V 94: Pos(0.038545, -0.380694, -0.12644) Norm(0.577341, -0.577355, -0.577355) UV(0.865397, 0.0)
V 95: Pos(0.735579, 4.710862, 6.186687) Norm(-0.577341, -0.577355, 0.577355) UV(0.912472, 0.60813) V 95: Pos(-0.321174, -0.380694, 0.03328) Norm(-0.577341, -0.577355, 0.577355) UV(0.912472, 0.60813)
V 96: Pos(0.441861, 5.653039, 6.437831) Norm(-0.577355, 0.577371, 0.577325) UV(0.973174, 0.0) V 96: Pos(-0.614892, 0.561483, 0.284424) Norm(-0.577355, 0.577371, 0.577325) UV(0.973174, 0.0)
V 97: Pos(1.020553, 5.653039, 6.437831) Norm(0.57734, 0.577355, 0.577355) UV(0.206323, 0.838198) V 97: Pos(-0.0362, 0.561483, 0.284424) Norm(0.57734, 0.577355, 0.577355) UV(0.206323, 0.838198)
V 98: Pos(1.020553, 5.434348, 6.437831) Norm(0.577355, -0.577371, 0.577325) UV(0.97572, 0.277359) V 98: Pos(-0.0362, 0.342792, 0.284424) Norm(0.577355, -0.577371, 0.577325) UV(0.97572, 0.277359)
V 99: Pos(0.441861, 5.434348, 6.437831) Norm(-0.57734, -0.577355, 0.577355) UV(0.206322, 0.553153) V 99: Pos(-0.614892, 0.342792, 0.284424) Norm(-0.57734, -0.577355, 0.577355) UV(0.206322, 0.553153)
V 100: Pos(1.020553, 5.434348, 6.019138) Norm(0.57734, -0.577355, -0.577355) UV(0.622728, 0.553153) V 100: Pos(-0.0362, 0.342792, -0.134268) Norm(0.57734, -0.577355, -0.577355) UV(0.622728, 0.553153)
V 101: Pos(0.441861, 5.434348, 6.437831) Norm(-0.57734, -0.577355, 0.577355) UV(0.730505, 0.553153) V 101: Pos(-0.614892, 0.342792, 0.284424) Norm(-0.57734, -0.577355, 0.577355) UV(0.730505, 0.553153)
V 102: Pos(0.53154, 5.02893, 6.377977) Norm(-0.820924, 0.525802, 0.222749) UV(0.551589, 0.0) V 102: Pos(-0.525213, -0.062626, 0.22457) Norm(-0.820924, 0.525802, 0.222749) UV(0.551589, 0.0)
V 103: Pos(1.007622, 5.128869, 6.688632) Norm(0.20531, 0.618198, 0.758735) UV(-0.0, -0.0) V 103: Pos(-0.049131, 0.037313, 0.535225) Norm(0.20531, 0.618198, 0.758735) UV(-0.0, -0.0)
V 104: Pos(1.007622, 4.56925, 6.688632) Norm(0.205273, -0.618211, 0.758734) UV(0.27372, 0.277359) V 104: Pos(-0.049131, -0.522306, 0.535225) Norm(0.205273, -0.618211, 0.758734) UV(0.27372, 0.277359)
V 105: Pos(0.53154, 4.669188, 6.377977) Norm(-0.820942, -0.525784, 0.222722) UV(0.502336, 0.277359) V 105: Pos(-0.525213, -0.422368, 0.22457) Norm(-0.820942, -0.525784, 0.222722) UV(0.502336, 0.277359)
V 106: Pos(1.226283, 4.56925, 6.1735) Norm(0.688409, -0.618198, -0.379374) UV(-0.0, 0.277359) V 106: Pos(0.16953, -0.522306, 0.020093) Norm(0.688409, -0.618198, -0.379374) UV(-0.0, 0.277359)
V 107: Pos(0.53154, 4.669188, 6.377977) Norm(-0.820942, -0.525784, 0.222722) UV(0.537025, 0.326611) V 107: Pos(-0.525213, -0.422368, 0.22457) Norm(-0.820942, -0.525784, 0.222722) UV(0.537025, 0.326611)
V 108: Pos(1.326249, 5.19496, 6.105271) Norm(-0.468341, 0.577346, 0.668826) UV(0.730505, 0.553154) V 108: Pos(0.269496, 0.103404, -0.048135) Norm(-0.468341, 0.577346, 0.668826) UV(0.730505, 0.553154)
V 109: Pos(1.534214, 5.19496, 6.068602) Norm(0.668842, 0.577346, 0.468319) UV(0.893159, 0.58671) V 109: Pos(0.477461, 0.103404, -0.084805) Norm(0.668842, 0.577346, 0.468319) UV(0.893159, 0.58671)
V 110: Pos(1.534214, 4.523787, 6.068602) Norm(0.668839, -0.577358, 0.468307) UV(0.97572, 0.277359) V 110: Pos(0.477461, -0.567769, -0.084805) Norm(0.668839, -0.577358, 0.468307) UV(0.97572, 0.277359)
V 111: Pos(1.534214, 4.523787, 6.068602) Norm(0.668839, -0.577358, 0.468307) UV(0.893159, 0.58671) V 111: Pos(0.477461, -0.567769, -0.084805) Norm(0.668839, -0.577358, 0.468307) UV(0.893159, 0.58671)
V 112: Pos(1.525328, 4.523787, 6.018205) Norm(0.468338, -0.577334, -0.668838) UV(0.412645, 0.553153) V 112: Pos(0.468575, -0.567769, -0.135202) Norm(0.468338, -0.577334, -0.668838) UV(0.412645, 0.553153)
V 113: Pos(1.326249, 4.523787, 6.105271) Norm(-0.468337, -0.577333, 0.66884) UV(0.764763, 0.277359) V 113: Pos(0.269496, -0.567769, -0.048135) Norm(-0.468337, -0.577333, 0.66884) UV(0.764763, 0.277359)
V 114: Pos(1.299895, 5.376978, 6.070292) Norm(-0.577359, 0.577332, 0.577359) UV(0.551589, 0.228587) V 114: Pos(0.243142, 0.285422, -0.083115) Norm(-0.577359, 0.577332, 0.577359) UV(0.551589, 0.228587)
V 115: Pos(1.40399, 5.376978, 6.070292) Norm(0.577358, 0.577347, 0.577347) UV(0.658221, 0.228563) V 115: Pos(0.347237, 0.285422, -0.083115) Norm(0.577358, 0.577347, 0.577347) UV(0.658221, 0.228563)
V 116: Pos(1.40399, 5.312884, 6.070292) Norm(0.577359, -0.577332, 0.577359) UV(0.573298, 0.228588) V 116: Pos(0.347237, 0.221328, -0.083115) Norm(0.577359, -0.577332, 0.577359) UV(0.573298, 0.228588)
V 117: Pos(1.299895, 5.312884, 6.070292) Norm(-0.577358, -0.577347, 0.577347) UV(0.614763, 0.17729) V 117: Pos(0.243142, 0.221328, -0.083115) Norm(-0.577358, -0.577347, 0.577347) UV(0.614763, 0.17729)
V 118: Pos(1.40399, 5.312884, 6.026197) Norm(0.577358, -0.577347, -0.577347) UV(0.583176, 0.17729) V 118: Pos(0.347237, 0.221328, -0.127209) Norm(0.577358, -0.577347, -0.577347) UV(0.583176, 0.17729)
===Triangles (Indices): 60 ===Triangles (Indices): 60
Tri: 0 1 2 Tri: 0 1 2

File diff suppressed because it is too large Load Diff

View File

@ -149,6 +149,8 @@ CutsceneLine DialogueDatabase::parseCutsceneLine(const json& j) {
line.portrait = j.value("portrait", ""); line.portrait = j.value("portrait", "");
line.sfx = j.value("sfx", ""); line.sfx = j.value("sfx", "");
line.background = j.value("background", ""); line.background = j.value("background", "");
line.backgroundWidth = j.value("backgroundWidth", 0);
line.backgroundHeight = j.value("backgroundHeight", 0);
line.durationMs = j.value("durationMs", 0); line.durationMs = j.value("durationMs", 0);
line.waitForConfirm = j.value("waitForConfirm", false); line.waitForConfirm = j.value("waitForConfirm", false);
return line; return line;
@ -194,6 +196,8 @@ StaticCutsceneDefinition DialogueDatabase::parseCutscene(const json& j) {
StaticCutsceneDefinition cutscene; StaticCutsceneDefinition cutscene;
cutscene.id = j.value("id", ""); cutscene.id = j.value("id", "");
cutscene.background = j.value("background", ""); cutscene.background = j.value("background", "");
cutscene.backgroundWidth = j.value("backgroundWidth", 1280);
cutscene.backgroundHeight = j.value("backgroundHeight", 720);
cutscene.music = j.value("music", ""); cutscene.music = j.value("music", "");
cutscene.skippable = j.value("skippable", true); cutscene.skippable = j.value("skippable", true);
cutscene.durationMs = j.value("durationMs", 0); cutscene.durationMs = j.value("durationMs", 0);

View File

@ -408,14 +408,17 @@ void DialogueOverlay::drawCutscene(Renderer& renderer, const PresentationModel&
continue; continue;
} }
const float texW = static_cast<float>(texture->getWidth()); // Logical content dimensions for camera and UV math.
const float texH = static_cast<float>(texture->getHeight()); // backgroundWidth/backgroundHeight define the coordinate space the camera track was authored in;
// the texture is assumed to fill this space entirely regardless of its actual pixel dimensions.
const float imgW = (model.backgroundWidth > 0) ? static_cast<float>(model.backgroundWidth) : static_cast<float>(texture->getWidth());
const float imgH = (model.backgroundHeight > 0) ? static_cast<float>(model.backgroundHeight) : static_cast<float>(texture->getHeight());
ResolvedViewport layerViewport{}; ResolvedViewport layerViewport{};
if (model.cutsceneCamera.active) { if (model.cutsceneCamera.active) {
const ResolvedViewport fromViewport = resolveViewportPose(model.cutsceneCamera.from, texW, texH, W, H); const ResolvedViewport fromViewport = resolveViewportPose(model.cutsceneCamera.from, imgW, imgH, W, H);
const ResolvedViewport toViewport = resolveViewportPose(model.cutsceneCamera.to, texW, texH, W, H); const ResolvedViewport toViewport = resolveViewportPose(model.cutsceneCamera.to, imgW, imgH, W, H);
layerViewport = blendViewport( layerViewport = blendViewport(
fromViewport, fromViewport,
toViewport, toViewport,
@ -423,7 +426,7 @@ void DialogueOverlay::drawCutscene(Renderer& renderer, const PresentationModel&
); );
} }
else { else {
layerViewport = resolveViewportPose(CutsceneCameraPose{}, texW, texH, W, H); layerViewport = resolveViewportPose(CutsceneCameraPose{}, imgW, imgH, W, H);
} }
const float halfW = layerViewport.widthPx * 0.5f; const float halfW = layerViewport.widthPx * 0.5f;
@ -440,7 +443,7 @@ void DialogueOverlay::drawCutscene(Renderer& renderer, const PresentationModel&
}; };
}; };
// Source viewport corners in image pixel space (origin = bottom-left) // Source viewport corners in logical image space, then converted to UV via actual texture size.
const Eigen::Vector2f srcBL = rotatePoint(-halfW, -halfH); const Eigen::Vector2f srcBL = rotatePoint(-halfW, -halfH);
const Eigen::Vector2f srcTL = rotatePoint(-halfW, +halfH); const Eigen::Vector2f srcTL = rotatePoint(-halfW, +halfH);
const Eigen::Vector2f srcTR = rotatePoint(+halfW, +halfH); const Eigen::Vector2f srcTR = rotatePoint(+halfW, +halfH);
@ -448,8 +451,8 @@ void DialogueOverlay::drawCutscene(Renderer& renderer, const PresentationModel&
auto toUV = [&](const Eigen::Vector2f& p) -> Eigen::Vector2f { auto toUV = [&](const Eigen::Vector2f& p) -> Eigen::Vector2f {
return { return {
std::clamp(p.x() / max(texW, 1.0f), 0.0f, 1.0f), std::clamp(p.x() / max(imgW, 1.0f), 0.0f, 1.0f),
std::clamp(p.y() / max(texH, 1.0f), 0.0f, 1.0f) std::clamp(p.y() / max(imgH, 1.0f), 0.0f, 1.0f)
}; };
}; };

View File

@ -689,6 +689,8 @@ void DialogueRuntime::refreshCutscenePresentation() {
presentation.mode = PresentationMode::Cutscene; presentation.mode = PresentationMode::Cutscene;
presentation.backgroundPath = activeCutscene->background; presentation.backgroundPath = activeCutscene->background;
presentation.backgroundWidth = activeCutscene->backgroundWidth;
presentation.backgroundHeight = activeCutscene->backgroundHeight;
presentation.cutsceneCamera = evaluateCutsceneCameraBlend(); presentation.cutsceneCamera = evaluateCutsceneCameraBlend();
presentation.cutsceneImages = evaluateCutsceneImages(); presentation.cutsceneImages = evaluateCutsceneImages();
presentation.cutsceneSkippable = activeCutscene->skippable; presentation.cutsceneSkippable = activeCutscene->skippable;
@ -748,9 +750,11 @@ void DialogueRuntime::refreshCutscenePresentation() {
const CutsceneLine& line = activeCutscene->lines[currentCutsceneLine]; const CutsceneLine& line = activeCutscene->lines[currentCutsceneLine];
if (!line.background.empty()) { if (!line.background.empty()) {
currentCutsceneBackground = line.background; currentCutsceneBackground = line.background;
} if (line.backgroundWidth > 0) presentation.backgroundWidth = line.backgroundWidth;
if (line.backgroundHeight > 0) presentation.backgroundHeight = line.backgroundHeight;
}
presentation.mode = PresentationMode::Cutscene; presentation.mode = PresentationMode::Cutscene;
presentation.speaker = line.speaker; presentation.speaker = line.speaker;

View File

@ -110,6 +110,8 @@ struct CutsceneLine {
std::string portrait; std::string portrait;
std::string sfx; std::string sfx;
std::string background; std::string background;
int backgroundWidth = 0; // 0 = inherit from cutscene
int backgroundHeight = 0; // 0 = inherit from cutscene
int durationMs = 0; int durationMs = 0;
bool waitForConfirm = false; bool waitForConfirm = false;
}; };
@ -146,6 +148,8 @@ struct CutsceneImageCue {
struct StaticCutsceneDefinition { struct StaticCutsceneDefinition {
std::string id; std::string id;
std::string background; std::string background;
int backgroundWidth = 1280;
int backgroundHeight = 720;
std::string music; std::string music;
bool skippable = true; bool skippable = true;
int durationMs = 0; int durationMs = 0;
@ -201,6 +205,8 @@ struct PresentationModel {
std::vector<PresentedCutsceneImage> cutsceneImages; std::vector<PresentedCutsceneImage> cutsceneImages;
float cutsceneGlobalFadeAlpha = 1.0f; float cutsceneGlobalFadeAlpha = 1.0f;
float cutsceneBlackAlpha = 0.0f; float cutsceneBlackAlpha = 0.0f;
int backgroundWidth = 1280;
int backgroundHeight = 720;
}; };
struct SaveState { struct SaveState {