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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
/*
* Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved.
*
* NVIDIA CORPORATION and its licensors retain all intellectual property
* and proprietary rights in and to this software, related documentation
* and any modifications thereto. Any use, reproduction, disclosure or
* distribution of this software and related documentation without an express
* license agreement from NVIDIA CORPORATION is strictly prohibited.
*/
#include "BlastAssetModel.h"
#include "Renderer.h"
#include "BlastController.h"
#include "Utils.h"
#include "ResourceManager.h"
#include "PsFileBuffer.h"
#include "NvBlastExtPxAsset.h"
#include <sstream>
BlastAssetModel::BlastAssetModel(TkFramework& framework, PxPhysics& physics, PxCooking& cooking, Renderer& renderer, const char* modelName)
: BlastAsset(renderer)
{
ResourceManager& resourceManager = m_renderer.getResourceManager();
// Physics Asset
std::ostringstream blastFileName;
blastFileName << modelName << ".bpxa";
std::string path;
if (resourceManager.findFile(blastFileName.str(), path))
{
PsFileBuffer fileBuf(path.c_str(), PxFileBuf::OPEN_READ_ONLY);
m_pxAsset = ExtPxAsset::deserialize(fileBuf, framework, physics);
ASSERT_PRINT(m_pxAsset != nullptr, "can't load bpxa file");
}
else
{
ASSERT_PRINT(false, "wrong blastFilename");
}
// load obj file
std::ostringstream objFileName;
objFileName << modelName << ".obj";
if (resourceManager.findFile(objFileName.str(), path))
{
m_model = BlastModel::loadFromFileTinyLoader(path.c_str());
if (!m_model)
{
ASSERT_PRINT(false, "obj load failed");
}
}
else
{
ASSERT_PRINT(false, "wrong objFileName");
}
validate();
}
BlastAssetModel::~BlastAssetModel()
{
m_pxAsset->release();
}
|