blob: e32ba60927326b8527a0a29148607b6256d58bbb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
/* Starshatter: The Open Source Project
Copyright (c) 2021-2024, Starshatter: The Open Source Project Contributors
Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors
Copyright (c) 1997-2006, Destroyer Studios LLC.
*/
#include <memory>
#include <Solid.h>
template <typename ModelLoader>
bool
ImportInto(const char* pathname, Solid* target)
{
ModelLoader loader {pathname};
if (auto* original = target->GetModel()) {
auto solid = std::make_unique<Solid>();
if (!solid->Load(&loader))
return false;
auto* imported = solid->GetModel();
original->GetMaterials().append(imported->GetMaterials());
original->GetSurfaces().append(imported->GetSurfaces());
original->OptimizeMaterials();
imported->GetMaterials().clear();
imported->GetSurfaces().clear();
return true;
}
return target->Load(&loader);
}
|