mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-19 21:53:51 +00:00
Move a method to the Node class
This commit is contained in:
parent
62e0abd945
commit
d26ffe9de0
4 changed files with 48 additions and 51 deletions
|
@ -384,6 +384,44 @@ void NiSkinInstance::post(NIFFile *nif)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Node::getProperties(const Nif::NiTexturingProperty *&texprop,
|
||||||
|
const Nif::NiMaterialProperty *&matprop,
|
||||||
|
const Nif::NiAlphaProperty *&alphaprop,
|
||||||
|
const Nif::NiVertexColorProperty *&vertprop,
|
||||||
|
const Nif::NiZBufferProperty *&zprop,
|
||||||
|
const Nif::NiSpecularProperty *&specprop,
|
||||||
|
const Nif::NiWireframeProperty *&wireprop) const
|
||||||
|
{
|
||||||
|
if(parent)
|
||||||
|
parent->getProperties(texprop, matprop, alphaprop, vertprop, zprop, specprop, wireprop);
|
||||||
|
|
||||||
|
for(size_t i = 0;i < props.length();i++)
|
||||||
|
{
|
||||||
|
// Entries may be empty
|
||||||
|
if(props[i].empty())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
const Nif::Property *pr = props[i].getPtr();
|
||||||
|
if(pr->recType == Nif::RC_NiTexturingProperty)
|
||||||
|
texprop = static_cast<const Nif::NiTexturingProperty*>(pr);
|
||||||
|
else if(pr->recType == Nif::RC_NiMaterialProperty)
|
||||||
|
matprop = static_cast<const Nif::NiMaterialProperty*>(pr);
|
||||||
|
else if(pr->recType == Nif::RC_NiAlphaProperty)
|
||||||
|
alphaprop = static_cast<const Nif::NiAlphaProperty*>(pr);
|
||||||
|
else if(pr->recType == Nif::RC_NiVertexColorProperty)
|
||||||
|
vertprop = static_cast<const Nif::NiVertexColorProperty*>(pr);
|
||||||
|
else if(pr->recType == Nif::RC_NiZBufferProperty)
|
||||||
|
zprop = static_cast<const Nif::NiZBufferProperty*>(pr);
|
||||||
|
else if(pr->recType == Nif::RC_NiSpecularProperty)
|
||||||
|
specprop = static_cast<const Nif::NiSpecularProperty*>(pr);
|
||||||
|
else if(pr->recType == Nif::RC_NiWireframeProperty)
|
||||||
|
wireprop = static_cast<const Nif::NiWireframeProperty*>(pr);
|
||||||
|
else
|
||||||
|
std::cerr<< "Unhandled property type: "<<pr->recName <<std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ogre::Matrix4 Node::getLocalTransform() const
|
Ogre::Matrix4 Node::getLocalTransform() const
|
||||||
{
|
{
|
||||||
Ogre::Matrix4 mat4(Ogre::Matrix4::IDENTITY);
|
Ogre::Matrix4 mat4(Ogre::Matrix4::IDENTITY);
|
||||||
|
|
|
@ -111,6 +111,14 @@ public:
|
||||||
boneIndex = ind;
|
boneIndex = ind;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void getProperties(const Nif::NiTexturingProperty *&texprop,
|
||||||
|
const Nif::NiMaterialProperty *&matprop,
|
||||||
|
const Nif::NiAlphaProperty *&alphaprop,
|
||||||
|
const Nif::NiVertexColorProperty *&vertprop,
|
||||||
|
const Nif::NiZBufferProperty *&zprop,
|
||||||
|
const Nif::NiSpecularProperty *&specprop,
|
||||||
|
const Nif::NiWireframeProperty *&wireprop) const;
|
||||||
|
|
||||||
Ogre::Matrix4 getLocalTransform() const;
|
Ogre::Matrix4 getLocalTransform() const;
|
||||||
Ogre::Matrix4 getWorldTransform() const;
|
Ogre::Matrix4 getWorldTransform() const;
|
||||||
};
|
};
|
||||||
|
|
|
@ -20,15 +20,6 @@
|
||||||
namespace NifOgre
|
namespace NifOgre
|
||||||
{
|
{
|
||||||
|
|
||||||
void getNodeProperties(const Nif::Node *node,
|
|
||||||
const Nif::NiTexturingProperty *&texprop,
|
|
||||||
const Nif::NiMaterialProperty *&matprop,
|
|
||||||
const Nif::NiAlphaProperty *&alphaprop,
|
|
||||||
const Nif::NiVertexColorProperty *&vertprop,
|
|
||||||
const Nif::NiZBufferProperty *&zprop,
|
|
||||||
const Nif::NiSpecularProperty *&specprop,
|
|
||||||
const Nif::NiWireframeProperty *&wireprop);
|
|
||||||
|
|
||||||
// Helper class that computes the bounding box and of a mesh
|
// Helper class that computes the bounding box and of a mesh
|
||||||
class BoundsFinder
|
class BoundsFinder
|
||||||
{
|
{
|
||||||
|
@ -320,7 +311,7 @@ void NIFMeshLoader::createSubMesh(Ogre::Mesh *mesh, const Nif::NiTriShape *shape
|
||||||
const Nif::NiWireframeProperty *wireprop = NULL;
|
const Nif::NiWireframeProperty *wireprop = NULL;
|
||||||
bool needTangents = false;
|
bool needTangents = false;
|
||||||
|
|
||||||
getNodeProperties(shape, texprop, matprop, alphaprop, vertprop, zprop, specprop, wireprop);
|
shape->getProperties(texprop, matprop, alphaprop, vertprop, zprop, specprop, wireprop);
|
||||||
std::string matname = NIFMaterialLoader::getMaterial(data, mesh->getName(), mGroup,
|
std::string matname = NIFMaterialLoader::getMaterial(data, mesh->getName(), mGroup,
|
||||||
texprop, matprop, alphaprop,
|
texprop, matprop, alphaprop,
|
||||||
vertprop, zprop, specprop,
|
vertprop, zprop, specprop,
|
||||||
|
|
|
@ -56,46 +56,6 @@ ostream& operator<<(ostream &o, const NifOgre::TextKeyMap&)
|
||||||
namespace NifOgre
|
namespace NifOgre
|
||||||
{
|
{
|
||||||
|
|
||||||
void getNodeProperties(const Nif::Node *node,
|
|
||||||
const Nif::NiTexturingProperty *&texprop,
|
|
||||||
const Nif::NiMaterialProperty *&matprop,
|
|
||||||
const Nif::NiAlphaProperty *&alphaprop,
|
|
||||||
const Nif::NiVertexColorProperty *&vertprop,
|
|
||||||
const Nif::NiZBufferProperty *&zprop,
|
|
||||||
const Nif::NiSpecularProperty *&specprop,
|
|
||||||
const Nif::NiWireframeProperty *&wireprop)
|
|
||||||
{
|
|
||||||
if(node->parent)
|
|
||||||
getNodeProperties(node->parent, texprop, matprop, alphaprop, vertprop, zprop, specprop, wireprop);
|
|
||||||
|
|
||||||
const Nif::PropertyList &proplist = node->props;
|
|
||||||
for(size_t i = 0;i < proplist.length();i++)
|
|
||||||
{
|
|
||||||
// Entries may be empty
|
|
||||||
if(proplist[i].empty())
|
|
||||||
continue;
|
|
||||||
|
|
||||||
const Nif::Property *pr = proplist[i].getPtr();
|
|
||||||
if(pr->recType == Nif::RC_NiTexturingProperty)
|
|
||||||
texprop = static_cast<const Nif::NiTexturingProperty*>(pr);
|
|
||||||
else if(pr->recType == Nif::RC_NiMaterialProperty)
|
|
||||||
matprop = static_cast<const Nif::NiMaterialProperty*>(pr);
|
|
||||||
else if(pr->recType == Nif::RC_NiAlphaProperty)
|
|
||||||
alphaprop = static_cast<const Nif::NiAlphaProperty*>(pr);
|
|
||||||
else if(pr->recType == Nif::RC_NiVertexColorProperty)
|
|
||||||
vertprop = static_cast<const Nif::NiVertexColorProperty*>(pr);
|
|
||||||
else if(pr->recType == Nif::RC_NiZBufferProperty)
|
|
||||||
zprop = static_cast<const Nif::NiZBufferProperty*>(pr);
|
|
||||||
else if(pr->recType == Nif::RC_NiSpecularProperty)
|
|
||||||
specprop = static_cast<const Nif::NiSpecularProperty*>(pr);
|
|
||||||
else if(pr->recType == Nif::RC_NiWireframeProperty)
|
|
||||||
wireprop = static_cast<const Nif::NiWireframeProperty*>(pr);
|
|
||||||
else
|
|
||||||
std::cerr<< "Unhandled property type: "<<pr->recName <<std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// FIXME: Should not be here.
|
// FIXME: Should not be here.
|
||||||
class DefaultFunction : public Ogre::ControllerFunction<Ogre::Real>
|
class DefaultFunction : public Ogre::ControllerFunction<Ogre::Real>
|
||||||
{
|
{
|
||||||
|
@ -454,7 +414,7 @@ class NIFObjectLoader
|
||||||
const Nif::NiWireframeProperty *wireprop = NULL;
|
const Nif::NiWireframeProperty *wireprop = NULL;
|
||||||
bool needTangents = false;
|
bool needTangents = false;
|
||||||
|
|
||||||
getNodeProperties(partnode, texprop, matprop, alphaprop, vertprop, zprop, specprop, wireprop);
|
partnode->getProperties(texprop, matprop, alphaprop, vertprop, zprop, specprop, wireprop);
|
||||||
partsys->setMaterialName(NIFMaterialLoader::getMaterial(particledata, fullname, group,
|
partsys->setMaterialName(NIFMaterialLoader::getMaterial(particledata, fullname, group,
|
||||||
texprop, matprop, alphaprop,
|
texprop, matprop, alphaprop,
|
||||||
vertprop, zprop, specprop,
|
vertprop, zprop, specprop,
|
||||||
|
|
Loading…
Reference in a new issue