feat(scripting): add mesh component script wrappers

This commit is contained in:
2026-03-27 14:52:00 +08:00
parent 2b0df52446
commit bea849646f
12 changed files with 448 additions and 8 deletions

View File

@@ -39,6 +39,22 @@ const Resources::ResourceHandle<Resources::Material>& MeshRendererComponent::Get
return index < m_materials.size() ? m_materials[index] : kNullHandle;
}
const std::string& MeshRendererComponent::GetMaterialPath(size_t index) const {
static const std::string kEmptyPath;
return index < m_materialPaths.size() ? m_materialPaths[index] : kEmptyPath;
}
void MeshRendererComponent::SetMaterialPath(size_t index, const std::string& materialPath) {
EnsureMaterialSlot(index);
m_materialPaths[index] = materialPath;
if (materialPath.empty()) {
m_materials[index].Reset();
return;
}
m_materials[index] = Resources::ResourceManager::Get().Load<Resources::Material>(materialPath.c_str());
}
void MeshRendererComponent::SetMaterial(size_t index, const Resources::ResourceHandle<Resources::Material>& material) {
EnsureMaterialSlot(index);
m_materials[index] = material;
@@ -100,9 +116,7 @@ void MeshRendererComponent::Deserialize(std::istream& is) {
m_materialPaths = SplitMaterialPaths(value);
m_materials.resize(m_materialPaths.size());
for (size_t i = 0; i < m_materialPaths.size(); ++i) {
if (!m_materialPaths[i].empty()) {
m_materials[i] = Resources::ResourceManager::Get().Load<Resources::Material>(m_materialPaths[i].c_str());
}
SetMaterialPath(i, m_materialPaths[i]);
}
} else if (key == "castShadows") {
m_castShadows = (std::stoi(value) != 0);