Fix non-animated karts
This commit is contained in:
parent
e93e8b7708
commit
d4e9de1f53
@ -1236,7 +1236,8 @@ scene::IMeshSceneNode *IrrDriver::addMesh(scene::IMesh *mesh,
|
||||
const std::string& debug_name,
|
||||
scene::ISceneNode *parent,
|
||||
RenderInfo* render_info,
|
||||
bool all_parts_colorized)
|
||||
bool all_parts_colorized,
|
||||
int frame_for_mesh)
|
||||
{
|
||||
if (!CVS->isGLSL())
|
||||
return m_scene_manager->addMeshSceneNode(mesh, parent);
|
||||
@ -1251,7 +1252,8 @@ scene::IMeshSceneNode *IrrDriver::addMesh(scene::IMesh *mesh,
|
||||
core::vector3df(0, 0, 0),
|
||||
core::vector3df(1.0f, 1.0f, 1.0f),
|
||||
true, render_info,
|
||||
all_parts_colorized);
|
||||
all_parts_colorized,
|
||||
frame_for_mesh);
|
||||
node->drop();
|
||||
|
||||
return node;
|
||||
|
@ -393,7 +393,8 @@ public:
|
||||
const std::string& debug_name,
|
||||
scene::ISceneNode *parent = NULL,
|
||||
RenderInfo* render_info = NULL,
|
||||
bool all_parts_colorized = false);
|
||||
bool all_parts_colorized = false,
|
||||
int frame_for_mesh = -1);
|
||||
PerCameraNode *addPerCameraNode(scene::ISceneNode* node,
|
||||
scene::ICameraSceneNode* cam,
|
||||
scene::ISceneNode *parent = NULL);
|
||||
|
@ -32,8 +32,8 @@
|
||||
#include "utils/helpers.hpp"
|
||||
#include "utils/tuple.hpp"
|
||||
|
||||
#include <ISceneManager.h>
|
||||
#include <IMaterialRenderer.h>
|
||||
#include <ISceneManager.h>
|
||||
|
||||
// ============================================================================
|
||||
class ColorizeShader : public Shader<ColorizeShader, core::matrix4,
|
||||
@ -54,12 +54,14 @@ STKMeshSceneNode::STKMeshSceneNode(irr::scene::IMesh* mesh, ISceneNode* parent,
|
||||
irr::s32 id, const std::string& debug_name,
|
||||
const irr::core::vector3df& position,
|
||||
const irr::core::vector3df& rotation,
|
||||
const irr::core::vector3df& scale, bool createGLMeshes, RenderInfo* render_info, bool all_parts_colorized) :
|
||||
const irr::core::vector3df& scale, bool createGLMeshes, RenderInfo* render_info, bool all_parts_colorized,
|
||||
int frame_for_mesh) :
|
||||
CMeshSceneNode(mesh, parent, mgr, id, position, rotation, scale)
|
||||
{
|
||||
isDisplacement = false;
|
||||
immediate_draw = false;
|
||||
update_each_frame = false;
|
||||
m_frame_for_mesh = frame_for_mesh;
|
||||
isGlow = false;
|
||||
|
||||
m_debug_name = debug_name;
|
||||
@ -250,9 +252,18 @@ void STKMeshSceneNode::updateGL()
|
||||
{
|
||||
if (isGLInitialized)
|
||||
return;
|
||||
for (u32 i = 0; i < Mesh->getMeshBufferCount(); ++i)
|
||||
|
||||
scene::IAnimatedMesh* am = dynamic_cast<scene::IAnimatedMesh*>(Mesh);
|
||||
scene::IMesh* m = Mesh;
|
||||
if (am && m_frame_for_mesh > -1)
|
||||
{
|
||||
scene::IMeshBuffer* mb = Mesh->getMeshBuffer(i);
|
||||
// Get the correct frame of animation for animated mesh
|
||||
m = am->getMesh(m_frame_for_mesh);
|
||||
}
|
||||
|
||||
for (u32 i = 0; i < m->getMeshBufferCount(); ++i)
|
||||
{
|
||||
scene::IMeshBuffer* mb = m->getMeshBuffer(i);
|
||||
if (!mb)
|
||||
continue;
|
||||
GLMesh &mesh = GLmeshes[i];
|
||||
|
@ -29,6 +29,7 @@ class STKMeshSceneNode : public irr::scene::CMeshSceneNode, public STKMeshCommon
|
||||
{
|
||||
protected:
|
||||
PtrVector<RenderInfo> m_static_render_info;
|
||||
int m_frame_for_mesh;
|
||||
std::vector<GLMesh> GLmeshes;
|
||||
core::matrix4 ModelViewProjectionMatrix;
|
||||
core::vector3df windDir;
|
||||
@ -58,7 +59,8 @@ public:
|
||||
const irr::core::vector3df& rotation = irr::core::vector3df(0, 0, 0),
|
||||
const irr::core::vector3df& scale = irr::core::vector3df(1.0f, 1.0f, 1.0f),
|
||||
bool createGLMeshes = true,
|
||||
RenderInfo* render_info = NULL, bool all_parts_colorized = false);
|
||||
RenderInfo* render_info = NULL, bool all_parts_colorized = false,
|
||||
int frame_for_mesh = -1);
|
||||
virtual void render();
|
||||
virtual void setMesh(irr::scene::IMesh* mesh);
|
||||
virtual void OnRegisterSceneNode();
|
||||
|
@ -427,8 +427,12 @@ scene::ISceneNode* KartModel::attachModel(bool animated_models, bool always_anim
|
||||
? m_animation_frame[AF_STRAIGHT]
|
||||
: 0;
|
||||
|
||||
scene::IMesh* main_frame = m_mesh->getMesh(straight_frame);
|
||||
main_frame->setHardwareMappingHint(scene::EHM_STATIC);
|
||||
scene::IMesh* main_frame = m_mesh;
|
||||
if (!CVS->isGLSL())
|
||||
{
|
||||
main_frame = m_mesh->getMesh(straight_frame);
|
||||
main_frame->setHardwareMappingHint(scene::EHM_STATIC);
|
||||
}
|
||||
|
||||
std::string debug_name;
|
||||
|
||||
@ -437,7 +441,7 @@ scene::ISceneNode* KartModel::attachModel(bool animated_models, bool always_anim
|
||||
#endif
|
||||
|
||||
node = irr_driver->addMesh(main_frame, debug_name,
|
||||
NULL /*parent*/, getRenderInfo());
|
||||
NULL /*parent*/, getRenderInfo(), false, straight_frame);
|
||||
|
||||
#ifdef DEBUG
|
||||
node->setName(debug_name.c_str());
|
||||
|
Loading…
x
Reference in New Issue
Block a user