Files
BlitzNext/Runtime/blitz3d/skinmodel.cpp
T

34 lines
765 B
C++
Raw Normal View History

2014-01-31 08:23:00 +13:00
2019-01-18 15:55:06 +01:00
#include "skinmodel.hpp"
2019-01-18 17:04:17 +01:00
#include "std.hpp"
2014-01-31 08:23:00 +13:00
2019-01-18 17:04:17 +01:00
SkinModel::SkinModel()
{
setRenderSpace(RENDER_SPACE_WORLD);
2014-01-31 08:23:00 +13:00
}
2019-01-18 17:04:17 +01:00
void SkinModel::setBones(const vector<Object*>& bones)
{
_bones = bones;
_surf_bones.resize(_bones.size());
2014-01-31 08:23:00 +13:00
}
2019-01-18 17:04:17 +01:00
void SkinModel::render(const RenderContext& rc)
{
2014-01-31 08:23:00 +13:00
int k;
2019-01-18 17:04:17 +01:00
for (k = 0; k < _bones.size(); ++k) {
Object* obj = _bones[k];
_surf_bones[k].coord_tform = obj->getRenderTform();
_surf_bones[k].normal_tform = _surf_bones[k].coord_tform.m.cofactor();
2014-01-31 08:23:00 +13:00
}
2019-01-18 17:04:17 +01:00
const MeshModel::SurfaceList& _surfs = getSurfaces();
2014-01-31 08:23:00 +13:00
2019-01-18 17:04:17 +01:00
for (k = 0; k < _surfs.size(); ++k) {
Surface* surf = _surfs[k];
if (gxMesh* mesh = surf->getMesh(_surf_bones)) {
enqueue(mesh, 0, surf->numVertices(), 0, surf->numTriangles(), surf->getBrush());
2014-01-31 08:23:00 +13:00
}
}
}