mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-01 00:45:34 +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
9 changed files with 53 additions and 35 deletions
|
@ -45,7 +45,9 @@ namespace 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);
|
||||
}
|
||||
|
||||
|
|
|
@ -58,7 +58,8 @@ namespace Nif
|
|||
|
||||
struct NiSpotLight : public NiPointLight
|
||||
{
|
||||
float mCutoff;
|
||||
float mOuterSpotAngle;
|
||||
float mInnerSpotAngle{ 0.f };
|
||||
float mExponent;
|
||||
void read(NIFStream* nif) override;
|
||||
};
|
||||
|
|
|
@ -136,6 +136,11 @@ namespace Nif
|
|||
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)
|
||||
{
|
||||
mParent = nif->getSizedString();
|
||||
|
|
|
@ -173,6 +173,13 @@ namespace Nif
|
|||
void read(NIFStream* nif) override;
|
||||
};
|
||||
|
||||
struct BSCollisionQueryProxyExtraData : BSExtraData
|
||||
{
|
||||
std::vector<uint8_t> mData;
|
||||
|
||||
void read(NIFStream* nif) override;
|
||||
};
|
||||
|
||||
struct BSConnectPoint
|
||||
{
|
||||
struct Point
|
||||
|
|
|
@ -248,6 +248,8 @@ namespace Nif
|
|||
{ "BSBehaviorGraphExtraData", &construct<BSBehaviorGraphExtraData, RC_BSBehaviorGraphExtraData> },
|
||||
{ "BSBoneLODExtraData", &construct<BSBoneLODExtraData, RC_BSBoneLODExtraData> },
|
||||
{ "BSClothExtraData", &construct<BSClothExtraData, RC_BSClothExtraData> },
|
||||
{ "BSCollisionQueryProxyExtraData",
|
||||
&construct<BSCollisionQueryProxyExtraData, RC_BSCollisionQueryProxyExtraData> },
|
||||
{ "BSConnectPoint::Children", &construct<BSConnectPoint::Children, RC_BSConnectPointChildren> },
|
||||
{ "BSConnectPoint::Parents", &construct<BSConnectPoint::Parents, RC_BSConnectPointParents> },
|
||||
{ "BSDecalPlacementVectorExtraData",
|
||||
|
|
|
@ -231,7 +231,7 @@ namespace Nif
|
|||
info.read(nif);
|
||||
}
|
||||
|
||||
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_F76)
|
||||
if (nif->getBethVersion() > NIFFile::BethVersion::BETHVER_FO4)
|
||||
nif->skip(12); // Unknown
|
||||
|
||||
if (nif->getVersion() >= NIFStream::generateVersion(20, 0, 0, 2) && nif->get<bool>() && hasData)
|
||||
|
@ -420,8 +420,8 @@ namespace Nif
|
|||
{
|
||||
nif->read(mRotationSpeedVariation);
|
||||
|
||||
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_F76)
|
||||
nif->skip(5); // Unknown
|
||||
if (nif->getBethVersion() > NIFFile::BethVersion::BETHVER_FO4)
|
||||
nif->skip(17); // Unknown
|
||||
|
||||
nif->read(mRotationAngle);
|
||||
nif->read(mRotationAngleVariation);
|
||||
|
|
|
@ -148,12 +148,6 @@ namespace Nif
|
|||
}
|
||||
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)
|
||||
{
|
||||
nif->read(mType);
|
||||
|
@ -181,6 +175,13 @@ namespace Nif
|
|||
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);
|
||||
|
@ -324,7 +325,7 @@ namespace Nif
|
|||
{
|
||||
nif->read(mSubsurfaceRolloff);
|
||||
nif->read(mRimlightPower);
|
||||
if (mRimlightPower == std::numeric_limits<float>::max())
|
||||
if (nif->getBethVersion() == 130 && mRimlightPower == std::numeric_limits<float>::max())
|
||||
nif->read(mBacklightPower);
|
||||
}
|
||||
|
||||
|
@ -335,27 +336,27 @@ namespace Nif
|
|||
mWetness.read(nif);
|
||||
}
|
||||
|
||||
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_STF)
|
||||
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_F76)
|
||||
{
|
||||
mLuminance.read(nif);
|
||||
|
||||
if (nif->getBethVersion() == NIFFile::BethVersion::BETHVER_F76)
|
||||
{
|
||||
nif->read(mDoTranslucency);
|
||||
if (mDoTranslucency)
|
||||
mTranslucency.read(nif);
|
||||
if (nif->get<uint8_t>() != 0)
|
||||
if (nif->getBethVersion() == NIFFile::BethVersion::BETHVER_F76)
|
||||
{
|
||||
mTextureArrays.resize(nif->get<uint32_t>());
|
||||
for (std::vector<std::string>& textureArray : mTextureArrays)
|
||||
nif->getSizedStrings(textureArray, nif->get<uint32_t>());
|
||||
nif->read(mDoTranslucency);
|
||||
if (mDoTranslucency)
|
||||
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))
|
||||
|
@ -439,7 +440,6 @@ namespace Nif
|
|||
|
||||
if (nif->getBethVersion() >= NIFFile::BethVersion::BETHVER_F76)
|
||||
{
|
||||
nif->read(mRefractionPower);
|
||||
mReflectanceTexture = nif->getSizedString();
|
||||
mLightingTexture = nif->getSizedString();
|
||||
nif->read(mEmittanceColor);
|
||||
|
|
|
@ -295,15 +295,15 @@ namespace Nif
|
|||
{
|
||||
BSShaderTextureSetPtr mTextureSet;
|
||||
osg::Vec3f mEmissive;
|
||||
float mEmissiveMult;
|
||||
float mEmissiveMult{ 1.f };
|
||||
std::string mRootMaterial;
|
||||
uint32_t mClamp;
|
||||
float mAlpha;
|
||||
uint32_t mClamp{ 3 };
|
||||
float mAlpha{ 1.f };
|
||||
float mRefractionStrength;
|
||||
float mGlossiness{ 80.f };
|
||||
float mSmoothness{ 1.f };
|
||||
osg::Vec3f mSpecular;
|
||||
float mSpecStrength;
|
||||
float mSpecStrength{ 1.f };
|
||||
std::array<float, 2> mLightingEffects;
|
||||
float mSubsurfaceRolloff;
|
||||
float mRimlightPower;
|
||||
|
|
|
@ -77,6 +77,7 @@ namespace Nif
|
|||
RC_BSBound,
|
||||
RC_BSBoneLODExtraData,
|
||||
RC_BSClothExtraData,
|
||||
RC_BSCollisionQueryProxyExtraData,
|
||||
RC_BSConnectPointChildren,
|
||||
RC_BSConnectPointParents,
|
||||
RC_BSDecalPlacementVectorExtraData,
|
||||
|
|
Loading…
Reference in a new issue