Skip to content

Commit 22817dd

Browse files
committed
Use normalized path for correctMeshPath
1 parent 5b2764e commit 22817dd

36 files changed

+155
-102
lines changed

apps/openmw/mwlua/types/activator.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "types.hpp"
22

3+
#include "modelproperty.hpp"
4+
35
#include <components/esm3/loadacti.hpp>
46
#include <components/lua/luastate.hpp>
57
#include <components/lua/util.hpp>
@@ -49,9 +51,7 @@ namespace MWLua
4951
record["id"]
5052
= sol::readonly_property([](const ESM::Activator& rec) -> std::string { return rec.mId.serializeText(); });
5153
record["name"] = sol::readonly_property([](const ESM::Activator& rec) -> std::string { return rec.mName; });
52-
record["model"] = sol::readonly_property([](const ESM::Activator& rec) -> std::string {
53-
return Misc::ResourceHelpers::correctMeshPath(rec.mModel);
54-
});
54+
addModelProperty(record);
5555
record["mwscript"] = sol::readonly_property([](const ESM::Activator& rec) -> sol::optional<std::string> {
5656
return LuaUtil::serializeRefId(rec.mScript);
5757
});

apps/openmw/mwlua/types/apparatus.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "types.hpp"
22

3+
#include "modelproperty.hpp"
4+
35
#include <components/esm3/loadappa.hpp>
46
#include <components/lua/luastate.hpp>
57
#include <components/lua/util.hpp>
@@ -39,9 +41,7 @@ namespace MWLua
3941
record["id"]
4042
= sol::readonly_property([](const ESM::Apparatus& rec) -> std::string { return rec.mId.serializeText(); });
4143
record["name"] = sol::readonly_property([](const ESM::Apparatus& rec) -> std::string { return rec.mName; });
42-
record["model"] = sol::readonly_property([](const ESM::Apparatus& rec) -> std::string {
43-
return Misc::ResourceHelpers::correctMeshPath(rec.mModel);
44-
});
44+
addModelProperty(record);
4545
record["mwscript"] = sol::readonly_property([](const ESM::Apparatus& rec) -> sol::optional<std::string> {
4646
return LuaUtil::serializeRefId(rec.mScript);
4747
});

apps/openmw/mwlua/types/armor.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "types.hpp"
22

3+
#include "modelproperty.hpp"
4+
35
#include <components/esm3/loadarmo.hpp>
46
#include <components/lua/luastate.hpp>
57
#include <components/lua/util.hpp>
@@ -96,8 +98,7 @@ namespace MWLua
9698
record["id"]
9799
= sol::readonly_property([](const ESM::Armor& rec) -> std::string { return rec.mId.serializeText(); });
98100
record["name"] = sol::readonly_property([](const ESM::Armor& rec) -> std::string { return rec.mName; });
99-
record["model"] = sol::readonly_property(
100-
[](const ESM::Armor& rec) -> std::string { return Misc::ResourceHelpers::correctMeshPath(rec.mModel); });
101+
addModelProperty(record);
101102
record["icon"] = sol::readonly_property([vfs](const ESM::Armor& rec) -> std::string {
102103
return Misc::ResourceHelpers::correctIconPath(rec.mIcon, vfs);
103104
});

apps/openmw/mwlua/types/book.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
#include "types.hpp"
22

3-
#include <components/misc/strings/algorithm.hpp>
4-
#include <components/misc/strings/lower.hpp>
3+
#include "modelproperty.hpp"
54

65
#include <components/esm3/loadbook.hpp>
76
#include <components/esm3/loadskil.hpp>
87
#include <components/lua/luastate.hpp>
98
#include <components/lua/util.hpp>
109
#include <components/misc/resourcehelpers.hpp>
10+
#include <components/misc/strings/algorithm.hpp>
11+
#include <components/misc/strings/lower.hpp>
1112
#include <components/resource/resourcesystem.hpp>
1213

1314
#include "apps/openmw/mwbase/environment.hpp"
@@ -104,8 +105,7 @@ namespace MWLua
104105
record["id"]
105106
= sol::readonly_property([](const ESM::Book& rec) -> std::string { return rec.mId.serializeText(); });
106107
record["name"] = sol::readonly_property([](const ESM::Book& rec) -> std::string { return rec.mName; });
107-
record["model"] = sol::readonly_property(
108-
[](const ESM::Book& rec) -> std::string { return Misc::ResourceHelpers::correctMeshPath(rec.mModel); });
108+
addModelProperty(record);
109109
record["mwscript"] = sol::readonly_property(
110110
[](const ESM::Book& rec) -> sol::optional<std::string> { return LuaUtil::serializeRefId(rec.mScript); });
111111
record["icon"] = sol::readonly_property([vfs](const ESM::Book& rec) -> std::string {

apps/openmw/mwlua/types/clothing.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "types.hpp"
22

3+
#include "modelproperty.hpp"
4+
35
#include <components/esm3/loadclot.hpp>
46
#include <components/lua/luastate.hpp>
57
#include <components/lua/util.hpp>
@@ -91,8 +93,7 @@ namespace MWLua
9193
record["id"]
9294
= sol::readonly_property([](const ESM::Clothing& rec) -> std::string { return rec.mId.serializeText(); });
9395
record["name"] = sol::readonly_property([](const ESM::Clothing& rec) -> std::string { return rec.mName; });
94-
record["model"] = sol::readonly_property(
95-
[](const ESM::Clothing& rec) -> std::string { return Misc::ResourceHelpers::correctMeshPath(rec.mModel); });
96+
addModelProperty(record);
9697
record["icon"] = sol::readonly_property([vfs](const ESM::Clothing& rec) -> std::string {
9798
return Misc::ResourceHelpers::correctIconPath(rec.mIcon, vfs);
9899
});

apps/openmw/mwlua/types/container.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "types.hpp"
22

3+
#include "modelproperty.hpp"
4+
35
#include <components/esm3/loadcont.hpp>
46
#include <components/lua/luastate.hpp>
57
#include <components/lua/util.hpp>
@@ -49,9 +51,7 @@ namespace MWLua
4951
record["id"]
5052
= sol::readonly_property([](const ESM::Container& rec) -> std::string { return rec.mId.serializeText(); });
5153
record["name"] = sol::readonly_property([](const ESM::Container& rec) -> std::string { return rec.mName; });
52-
record["model"] = sol::readonly_property([](const ESM::Container& rec) -> std::string {
53-
return Misc::ResourceHelpers::correctMeshPath(rec.mModel);
54-
});
54+
addModelProperty(record);
5555
record["mwscript"] = sol::readonly_property([](const ESM::Container& rec) -> sol::optional<std::string> {
5656
return LuaUtil::serializeRefId(rec.mScript);
5757
});

apps/openmw/mwlua/types/creature.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
#include "types.hpp"
2+
13
#include "../stats.hpp"
24
#include "actor.hpp"
3-
#include "types.hpp"
5+
#include "modelproperty.hpp"
46

57
#include <components/esm3/loadcrea.hpp>
68
#include <components/lua/luastate.hpp>
@@ -37,8 +39,7 @@ namespace MWLua
3739
record["id"]
3840
= sol::readonly_property([](const ESM::Creature& rec) -> std::string { return rec.mId.serializeText(); });
3941
record["name"] = sol::readonly_property([](const ESM::Creature& rec) -> std::string { return rec.mName; });
40-
record["model"] = sol::readonly_property(
41-
[](const ESM::Creature& rec) -> std::string { return Misc::ResourceHelpers::correctMeshPath(rec.mModel); });
42+
addModelProperty(record);
4243
record["mwscript"] = sol::readonly_property([](const ESM::Creature& rec) -> sol::optional<std::string> {
4344
return LuaUtil::serializeRefId(rec.mScript);
4445
});

apps/openmw/mwlua/types/door.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "types.hpp"
22

3+
#include "modelproperty.hpp"
4+
35
#include "../localscripts.hpp"
46

57
#include <components/esm3/loaddoor.hpp>
@@ -107,8 +109,7 @@ namespace MWLua
107109
record["id"]
108110
= sol::readonly_property([](const ESM::Door& rec) -> std::string { return rec.mId.serializeText(); });
109111
record["name"] = sol::readonly_property([](const ESM::Door& rec) -> std::string { return rec.mName; });
110-
record["model"] = sol::readonly_property(
111-
[](const ESM::Door& rec) -> std::string { return Misc::ResourceHelpers::correctMeshPath(rec.mModel); });
112+
addModelProperty(record);
112113
record["mwscript"] = sol::readonly_property(
113114
[](const ESM::Door& rec) -> sol::optional<std::string> { return LuaUtil::serializeRefId(rec.mScript); });
114115
record["openSound"] = sol::readonly_property(
@@ -145,8 +146,7 @@ namespace MWLua
145146
record["id"] = sol::readonly_property(
146147
[](const ESM4::Door& rec) -> std::string { return ESM::RefId(rec.mId).serializeText(); });
147148
record["name"] = sol::readonly_property([](const ESM4::Door& rec) -> std::string { return rec.mFullName; });
148-
record["model"] = sol::readonly_property(
149-
[](const ESM4::Door& rec) -> std::string { return Misc::ResourceHelpers::correctMeshPath(rec.mModel); });
149+
addModelProperty(record);
150150
record["isAutomatic"] = sol::readonly_property(
151151
[](const ESM4::Door& rec) -> bool { return rec.mDoorFlags & ESM4::Door::Flag_AutomaticDoor; });
152152
}

apps/openmw/mwlua/types/ingredient.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "types.hpp"
22

3+
#include "modelproperty.hpp"
4+
35
#include <components/esm3/loadalch.hpp>
46
#include <components/esm3/loadingr.hpp>
57
#include <components/lua/luastate.hpp>
@@ -31,9 +33,7 @@ namespace MWLua
3133
record["id"]
3234
= sol::readonly_property([](const ESM::Ingredient& rec) -> std::string { return rec.mId.serializeText(); });
3335
record["name"] = sol::readonly_property([](const ESM::Ingredient& rec) -> std::string { return rec.mName; });
34-
record["model"] = sol::readonly_property([](const ESM::Ingredient& rec) -> std::string {
35-
return Misc::ResourceHelpers::correctMeshPath(rec.mModel);
36-
});
36+
addModelProperty(record);
3737
record["mwscript"] = sol::readonly_property([](const ESM::Ingredient& rec) -> sol::optional<std::string> {
3838
return LuaUtil::serializeRefId(rec.mScript);
3939
});

apps/openmw/mwlua/types/light.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "types.hpp"
22

3+
#include "modelproperty.hpp"
4+
35
#include <components/esm3/loadligh.hpp>
46
#include <components/lua/luastate.hpp>
57
#include <components/lua/util.hpp>
@@ -90,8 +92,7 @@ namespace MWLua
9092
record["id"]
9193
= sol::readonly_property([](const ESM::Light& rec) -> std::string { return rec.mId.serializeText(); });
9294
record["name"] = sol::readonly_property([](const ESM::Light& rec) -> std::string { return rec.mName; });
93-
record["model"] = sol::readonly_property(
94-
[](const ESM::Light& rec) -> std::string { return Misc::ResourceHelpers::correctMeshPath(rec.mModel); });
95+
addModelProperty(record);
9596
record["icon"] = sol::readonly_property([vfs](const ESM::Light& rec) -> std::string {
9697
return Misc::ResourceHelpers::correctIconPath(rec.mIcon, vfs);
9798
});

apps/openmw/mwlua/types/lockpick.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "types.hpp"
22

3+
#include "modelproperty.hpp"
4+
35
#include <components/esm3/loadlock.hpp>
46
#include <components/lua/luastate.hpp>
57
#include <components/lua/util.hpp>
@@ -30,8 +32,7 @@ namespace MWLua
3032
record["id"]
3133
= sol::readonly_property([](const ESM::Lockpick& rec) -> std::string { return rec.mId.serializeText(); });
3234
record["name"] = sol::readonly_property([](const ESM::Lockpick& rec) -> std::string { return rec.mName; });
33-
record["model"] = sol::readonly_property(
34-
[](const ESM::Lockpick& rec) -> std::string { return Misc::ResourceHelpers::correctMeshPath(rec.mModel); });
35+
addModelProperty(record);
3536
record["mwscript"] = sol::readonly_property([](const ESM::Lockpick& rec) -> sol::optional<std::string> {
3637
return LuaUtil::serializeRefId(rec.mScript);
3738
});

apps/openmw/mwlua/types/misc.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "types.hpp"
22

3+
#include "modelproperty.hpp"
4+
35
#include <components/esm3/loadcrea.hpp>
46
#include <components/esm3/loadmisc.hpp>
57
#include <components/lua/luastate.hpp>
@@ -81,9 +83,7 @@ namespace MWLua
8183
record["id"] = sol::readonly_property(
8284
[](const ESM::Miscellaneous& rec) -> std::string { return rec.mId.serializeText(); });
8385
record["name"] = sol::readonly_property([](const ESM::Miscellaneous& rec) -> std::string { return rec.mName; });
84-
record["model"] = sol::readonly_property([](const ESM::Miscellaneous& rec) -> std::string {
85-
return Misc::ResourceHelpers::correctMeshPath(rec.mModel);
86-
});
86+
addModelProperty(record);
8787
record["mwscript"] = sol::readonly_property([](const ESM::Miscellaneous& rec) -> sol::optional<std::string> {
8888
return LuaUtil::serializeRefId(rec.mScript);
8989
});
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#ifndef OPENMW_APPS_OPENMW_MWLUA_TYPES_MODELPROPERTY_H
2+
#define OPENMW_APPS_OPENMW_MWLUA_TYPES_MODELPROPERTY_H
3+
4+
#include <components/misc/resourcehelpers.hpp>
5+
#include <components/vfs/pathutil.hpp>
6+
7+
#include <sol/property.hpp>
8+
#include <sol/usertype.hpp>
9+
10+
namespace MWLua
11+
{
12+
template <class T>
13+
void addModelProperty(sol::usertype<T>& recordType)
14+
{
15+
recordType["model"] = sol::readonly_property([](const T& recordValue) -> std::string {
16+
return Misc::ResourceHelpers::correctMeshPath(VFS::Path::Normalized(recordValue.mModel)).value();
17+
});
18+
}
19+
}
20+
21+
#endif

apps/openmw/mwlua/types/npc.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
#include "actor.hpp"
21
#include "types.hpp"
32

3+
#include "actor.hpp"
4+
#include "modelproperty.hpp"
5+
46
#include <components/esm3/loadfact.hpp>
57
#include <components/esm3/loadnpc.hpp>
68
#include <components/lua/luastate.hpp>
@@ -93,8 +95,7 @@ namespace MWLua
9395
= sol::readonly_property([](const ESM::NPC& rec) -> int { return (int)rec.mNpdt.mDisposition; });
9496
record["head"]
9597
= sol::readonly_property([](const ESM::NPC& rec) -> std::string { return rec.mHead.serializeText(); });
96-
record["model"] = sol::readonly_property(
97-
[](const ESM::NPC& rec) -> std::string { return Misc::ResourceHelpers::correctMeshPath(rec.mModel); });
98+
addModelProperty(record);
9899
record["isEssential"]
99100
= sol::readonly_property([](const ESM::NPC& rec) -> bool { return rec.mFlags & ESM::NPC::Essential; });
100101
record["isMale"] = sol::readonly_property([](const ESM::NPC& rec) -> bool { return rec.isMale(); });

apps/openmw/mwlua/types/potion.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "types.hpp"
22

3+
#include "modelproperty.hpp"
4+
35
#include <components/esm3/loadalch.hpp>
46
#include <components/lua/luastate.hpp>
57
#include <components/lua/util.hpp>
@@ -76,8 +78,7 @@ namespace MWLua
7678
record["id"]
7779
= sol::readonly_property([](const ESM::Potion& rec) -> std::string { return rec.mId.serializeText(); });
7880
record["name"] = sol::readonly_property([](const ESM::Potion& rec) -> std::string { return rec.mName; });
79-
record["model"] = sol::readonly_property(
80-
[](const ESM::Potion& rec) -> std::string { return Misc::ResourceHelpers::correctMeshPath(rec.mModel); });
81+
addModelProperty(record);
8182
record["icon"] = sol::readonly_property([vfs](const ESM::Potion& rec) -> std::string {
8283
return Misc::ResourceHelpers::correctIconPath(rec.mIcon, vfs);
8384
});

apps/openmw/mwlua/types/probe.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "types.hpp"
22

3+
#include "modelproperty.hpp"
4+
35
#include <components/esm3/loadprob.hpp>
46
#include <components/lua/luastate.hpp>
57
#include <components/lua/util.hpp>
@@ -30,8 +32,7 @@ namespace MWLua
3032
record["id"]
3133
= sol::readonly_property([](const ESM::Probe& rec) -> std::string { return rec.mId.serializeText(); });
3234
record["name"] = sol::readonly_property([](const ESM::Probe& rec) -> std::string { return rec.mName; });
33-
record["model"] = sol::readonly_property(
34-
[](const ESM::Probe& rec) -> std::string { return Misc::ResourceHelpers::correctMeshPath(rec.mModel); });
35+
addModelProperty(record);
3536
record["mwscript"] = sol::readonly_property(
3637
[](const ESM::Probe& rec) -> sol::optional<std::string> { return LuaUtil::serializeRefId(rec.mScript); });
3738
record["icon"] = sol::readonly_property([vfs](const ESM::Probe& rec) -> std::string {

apps/openmw/mwlua/types/repair.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "types.hpp"
22

3+
#include "modelproperty.hpp"
4+
35
#include <components/esm3/loadrepa.hpp>
46
#include <components/lua/luastate.hpp>
57
#include <components/lua/util.hpp>
@@ -30,8 +32,7 @@ namespace MWLua
3032
record["id"]
3133
= sol::readonly_property([](const ESM::Repair& rec) -> std::string { return rec.mId.serializeText(); });
3234
record["name"] = sol::readonly_property([](const ESM::Repair& rec) -> std::string { return rec.mName; });
33-
record["model"] = sol::readonly_property(
34-
[](const ESM::Repair& rec) -> std::string { return Misc::ResourceHelpers::correctMeshPath(rec.mModel); });
35+
addModelProperty(record);
3536
record["mwscript"] = sol::readonly_property(
3637
[](const ESM::Repair& rec) -> sol::optional<std::string> { return LuaUtil::serializeRefId(rec.mScript); });
3738
record["icon"] = sol::readonly_property([vfs](const ESM::Repair& rec) -> std::string {

apps/openmw/mwlua/types/static.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "types.hpp"
22

3+
#include "modelproperty.hpp"
4+
35
#include <components/esm3/loadstat.hpp>
46
#include <components/lua/luastate.hpp>
57
#include <components/misc/resourcehelpers.hpp>
@@ -24,7 +26,6 @@ namespace MWLua
2426
= [](const ESM::Static& rec) -> std::string { return "ESM3_Static[" + rec.mId.toDebugString() + "]"; };
2527
record["id"]
2628
= sol::readonly_property([](const ESM::Static& rec) -> std::string { return rec.mId.serializeText(); });
27-
record["model"] = sol::readonly_property(
28-
[](const ESM::Static& rec) -> std::string { return Misc::ResourceHelpers::correctMeshPath(rec.mModel); });
29+
addModelProperty(record);
2930
}
3031
}

apps/openmw/mwlua/types/terminal.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "types.hpp"
22

3+
#include "modelproperty.hpp"
4+
35
#include <components/esm4/loadterm.hpp>
46
#include <components/lua/utilpackage.hpp>
57
#include <components/misc/convert.hpp>
@@ -33,8 +35,6 @@ namespace MWLua
3335
record["resultText"]
3436
= sol::readonly_property([](const ESM4::Terminal& rec) -> std::string { return rec.mResultText; });
3537
record["name"] = sol::readonly_property([](const ESM4::Terminal& rec) -> std::string { return rec.mFullName; });
36-
record["model"] = sol::readonly_property([](const ESM4::Terminal& rec) -> std::string {
37-
return Misc::ResourceHelpers::correctMeshPath(rec.mModel);
38-
});
38+
addModelProperty(record);
3939
}
4040
}

apps/openmw/mwlua/types/weapon.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#include "types.hpp"
22

3+
#include "modelproperty.hpp"
4+
35
#include <components/esm3/loadweap.hpp>
46
#include <components/lua/luastate.hpp>
57
#include <components/lua/util.hpp>
@@ -129,8 +131,7 @@ namespace MWLua
129131
record["id"]
130132
= sol::readonly_property([](const ESM::Weapon& rec) -> std::string { return rec.mId.serializeText(); });
131133
record["name"] = sol::readonly_property([](const ESM::Weapon& rec) -> std::string { return rec.mName; });
132-
record["model"] = sol::readonly_property(
133-
[](const ESM::Weapon& rec) -> std::string { return Misc::ResourceHelpers::correctMeshPath(rec.mModel); });
134+
addModelProperty(record);
134135
record["icon"] = sol::readonly_property([vfs](const ESM::Weapon& rec) -> std::string {
135136
return Misc::ResourceHelpers::correctIconPath(rec.mIcon, vfs);
136137
});

0 commit comments

Comments
 (0)