mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-02-22 03:40:49 +00:00
Merge branch '76timesthedetail' into 'master'
Read (almost) all NIF files from SeventySix - Meshes.ba2 See merge request OpenMW/openmw!3577
This commit is contained in:
commit
374b9759b0
@ -45,7 +45,9 @@ namespace Nif
|
|||||||
{
|
{
|
||||||
NiPointLight::read(nif);
|
NiPointLight::read(nif);
|
||||||
|
|
||||||
nif->read(mCutoff);
|
nif->read(mOuterSpotAngle);
|
||||||
|
if (nif->getVersion() >= NIFStream::generateVersion(20, 2, 0, 5))
|
||||||
|
nif->read(mInnerSpotAngle);
|
||||||
nif->read(mExponent);
|
nif->read(mExponent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,7 +58,8 @@ namespace Nif
|
|||||||
|
|
||||||
struct NiSpotLight : public NiPointLight
|
struct NiSpotLight : public NiPointLight
|
||||||
{
|
{
|
||||||
float mCutoff;
|
float mOuterSpotAngle;
|
||||||
|
float mInnerSpotAngle{ 0.f };
|
||||||
float mExponent;
|
float mExponent;
|
||||||
void read(NIFStream* nif) override;
|
void read(NIFStream* nif) override;
|
||||||
};
|
};
|
||||||
|
@ -136,6 +136,11 @@ namespace Nif
|
|||||||
nif->readVector(mData, nif->get<uint32_t>());
|
nif->readVector(mData, nif->get<uint32_t>());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BSCollisionQueryProxyExtraData::read(NIFStream* nif)
|
||||||
|
{
|
||||||
|
nif->readVector(mData, nif->get<uint32_t>());
|
||||||
|
}
|
||||||
|
|
||||||
void BSConnectPoint::Point::read(NIFStream* nif)
|
void BSConnectPoint::Point::read(NIFStream* nif)
|
||||||
{
|
{
|
||||||
mParent = nif->getSizedString();
|
mParent = nif->getSizedString();
|
||||||
|
@ -173,6 +173,13 @@ namespace Nif
|
|||||||
void read(NIFStream* nif) override;
|
void read(NIFStream* nif) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct BSCollisionQueryProxyExtraData : BSExtraData
|
||||||
|
{
|
||||||
|
std::vector<uint8_t> mData;
|
||||||
|
|
||||||
|
void read(NIFStream* nif) override;
|
||||||
|
};
|
||||||
|
|
||||||
struct BSConnectPoint
|
struct BSConnectPoint
|
||||||
{
|
{
|
||||||
struct Point
|
struct Point
|
||||||
|
@ -248,6 +248,8 @@ namespace Nif
|
|||||||
{ "BSBehaviorGraphExtraData", &construct<BSBehaviorGraphExtraData, RC_BSBehaviorGraphExtraData> },
|
{ "BSBehaviorGraphExtraData", &construct<BSBehaviorGraphExtraData, RC_BSBehaviorGraphExtraData> },
|
||||||
{ "BSBoneLODExtraData", &construct<BSBoneLODExtraData, RC_BSBoneLODExtraData> },
|
{ "BSBoneLODExtraData", &construct<BSBoneLODExtraData, RC_BSBoneLODExtraData> },
|
||||||
{ "BSClothExtraData", &construct<BSClothExtraData, RC_BSClothExtraData> },
|
{ "BSClothExtraData", &construct<BSClothExtraData, RC_BSClothExtraData> },
|
||||||
|
{ "BSCollisionQueryProxyExtraData",
|
||||||
|
&construct<BSCollisionQueryProxyExtraData, RC_BSCollisionQueryProxyExtraData> },
|
||||||
{ "BSConnectPoint::Children", &construct<BSConnectPoint::Children, RC_BSConnectPointChildren> },
|
{ "BSConnectPoint::Children", &construct<BSConnectPoint::Children, RC_BSConnectPointChildren> },
|
||||||
{ "BSConnectPoint::Parents", &construct<BSConnectPoint::Parents, RC_BSConnectPointParents> },
|
{ "BSConnectPoint::Parents", &construct<BSConnectPoint::Parents, RC_BSConnectPointParents> },
|
||||||
{ "BSDecalPlacementVectorExtraData",
|
{ "BSDecalPlacementVectorExtraData",
|
||||||
|
@ -231,7 +231,7 @@ namespace Nif
|
|||||||
info.read(nif);
|
info.read(nif);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_F76)
|
if (nif->getBethVersion() > NIFFile::BethVersion::BETHVER_FO4)
|
||||||
nif->skip(12); // Unknown
|
nif->skip(12); // Unknown
|
||||||
|
|
||||||
if (nif->getVersion() >= NIFStream::generateVersion(20, 0, 0, 2) && nif->get<bool>() && hasData)
|
if (nif->getVersion() >= NIFStream::generateVersion(20, 0, 0, 2) && nif->get<bool>() && hasData)
|
||||||
@ -420,8 +420,8 @@ namespace Nif
|
|||||||
{
|
{
|
||||||
nif->read(mRotationSpeedVariation);
|
nif->read(mRotationSpeedVariation);
|
||||||
|
|
||||||
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_F76)
|
if (nif->getBethVersion() > NIFFile::BethVersion::BETHVER_FO4)
|
||||||
nif->skip(5); // Unknown
|
nif->skip(17); // Unknown
|
||||||
|
|
||||||
nif->read(mRotationAngle);
|
nif->read(mRotationAngle);
|
||||||
nif->read(mRotationAngleVariation);
|
nif->read(mRotationAngleVariation);
|
||||||
|
@ -148,12 +148,6 @@ namespace Nif
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
uint32_t numShaderFlags1 = 0, numShaderFlags2 = 0;
|
|
||||||
nif->read(numShaderFlags1);
|
|
||||||
if (nif->getBethVersion() >= 152)
|
|
||||||
nif->read(numShaderFlags2);
|
|
||||||
nif->readVector(mShaderFlags1Hashes, numShaderFlags1);
|
|
||||||
nif->readVector(mShaderFlags2Hashes, numShaderFlags2);
|
|
||||||
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_F76 && recType == RC_BSLightingShaderProperty)
|
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_F76 && recType == RC_BSLightingShaderProperty)
|
||||||
{
|
{
|
||||||
nif->read(mType);
|
nif->read(mType);
|
||||||
@ -181,6 +175,13 @@ namespace Nif
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32_t numShaderFlags1 = 0, numShaderFlags2 = 0;
|
||||||
|
nif->read(numShaderFlags1);
|
||||||
|
if (nif->getBethVersion() >= 152)
|
||||||
|
nif->read(numShaderFlags2);
|
||||||
|
nif->readVector(mShaderFlags1Hashes, numShaderFlags1);
|
||||||
|
nif->readVector(mShaderFlags2Hashes, numShaderFlags2);
|
||||||
}
|
}
|
||||||
|
|
||||||
nif->read(mUVOffset);
|
nif->read(mUVOffset);
|
||||||
@ -324,7 +325,7 @@ namespace Nif
|
|||||||
{
|
{
|
||||||
nif->read(mSubsurfaceRolloff);
|
nif->read(mSubsurfaceRolloff);
|
||||||
nif->read(mRimlightPower);
|
nif->read(mRimlightPower);
|
||||||
if (mRimlightPower == std::numeric_limits<float>::max())
|
if (nif->getBethVersion() == 130 && mRimlightPower == std::numeric_limits<float>::max())
|
||||||
nif->read(mBacklightPower);
|
nif->read(mBacklightPower);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -335,27 +336,27 @@ namespace Nif
|
|||||||
mWetness.read(nif);
|
mWetness.read(nif);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_STF)
|
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_F76)
|
||||||
|
{
|
||||||
mLuminance.read(nif);
|
mLuminance.read(nif);
|
||||||
|
if (nif->getBethVersion() == NIFFile::BethVersion::BETHVER_F76)
|
||||||
if (nif->getBethVersion() == NIFFile::BethVersion::BETHVER_F76)
|
|
||||||
{
|
|
||||||
nif->read(mDoTranslucency);
|
|
||||||
if (mDoTranslucency)
|
|
||||||
mTranslucency.read(nif);
|
|
||||||
if (nif->get<uint8_t>() != 0)
|
|
||||||
{
|
{
|
||||||
mTextureArrays.resize(nif->get<uint32_t>());
|
nif->read(mDoTranslucency);
|
||||||
for (std::vector<std::string>& textureArray : mTextureArrays)
|
if (mDoTranslucency)
|
||||||
nif->getSizedStrings(textureArray, nif->get<uint32_t>());
|
mTranslucency.read(nif);
|
||||||
|
if (nif->get<uint8_t>() != 0)
|
||||||
|
{
|
||||||
|
mTextureArrays.resize(nif->get<uint32_t>());
|
||||||
|
for (std::vector<std::string>& textureArray : mTextureArrays)
|
||||||
|
nif->getSizedStrings(textureArray, nif->get<uint32_t>());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_STF)
|
||||||
|
{
|
||||||
|
nif->skip(4); // Unknown
|
||||||
|
nif->skip(4); // Unknown
|
||||||
|
nif->skip(2); // Unknown
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_STF)
|
|
||||||
{
|
|
||||||
nif->skip(4); // Unknown
|
|
||||||
nif->skip(4); // Unknown
|
|
||||||
nif->skip(2); // Unknown
|
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (static_cast<BSLightingShaderType>(mType))
|
switch (static_cast<BSLightingShaderType>(mType))
|
||||||
@ -439,7 +440,6 @@ namespace Nif
|
|||||||
|
|
||||||
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_F76)
|
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_F76)
|
||||||
{
|
{
|
||||||
nif->read(mRefractionPower);
|
|
||||||
mReflectanceTexture = nif->getSizedString();
|
mReflectanceTexture = nif->getSizedString();
|
||||||
mLightingTexture = nif->getSizedString();
|
mLightingTexture = nif->getSizedString();
|
||||||
nif->read(mEmittanceColor);
|
nif->read(mEmittanceColor);
|
||||||
|
@ -295,15 +295,15 @@ namespace Nif
|
|||||||
{
|
{
|
||||||
BSShaderTextureSetPtr mTextureSet;
|
BSShaderTextureSetPtr mTextureSet;
|
||||||
osg::Vec3f mEmissive;
|
osg::Vec3f mEmissive;
|
||||||
float mEmissiveMult;
|
float mEmissiveMult{ 1.f };
|
||||||
std::string mRootMaterial;
|
std::string mRootMaterial;
|
||||||
uint32_t mClamp;
|
uint32_t mClamp{ 3 };
|
||||||
float mAlpha;
|
float mAlpha{ 1.f };
|
||||||
float mRefractionStrength;
|
float mRefractionStrength;
|
||||||
float mGlossiness{ 80.f };
|
float mGlossiness{ 80.f };
|
||||||
float mSmoothness{ 1.f };
|
float mSmoothness{ 1.f };
|
||||||
osg::Vec3f mSpecular;
|
osg::Vec3f mSpecular;
|
||||||
float mSpecStrength;
|
float mSpecStrength{ 1.f };
|
||||||
std::array<float, 2> mLightingEffects;
|
std::array<float, 2> mLightingEffects;
|
||||||
float mSubsurfaceRolloff;
|
float mSubsurfaceRolloff;
|
||||||
float mRimlightPower;
|
float mRimlightPower;
|
||||||
|
@ -77,6 +77,7 @@ namespace Nif
|
|||||||
RC_BSBound,
|
RC_BSBound,
|
||||||
RC_BSBoneLODExtraData,
|
RC_BSBoneLODExtraData,
|
||||||
RC_BSClothExtraData,
|
RC_BSClothExtraData,
|
||||||
|
RC_BSCollisionQueryProxyExtraData,
|
||||||
RC_BSConnectPointChildren,
|
RC_BSConnectPointChildren,
|
||||||
RC_BSConnectPointParents,
|
RC_BSConnectPointParents,
|
||||||
RC_BSDecalPlacementVectorExtraData,
|
RC_BSDecalPlacementVectorExtraData,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user