@@ -132,6 +132,8 @@ namespace Ogre {
132
132
, mTextureLoadFailed (false )
133
133
, mRecalcTexMatrix (false )
134
134
, mTextureCoordSetIndex (0 )
135
+ , mProjectiveTexturingFrustum (0 )
136
+ , mTexCoordCalcMethod (TEXCALC_NONE)
135
137
, mFramePtrs (1 )
136
138
, mSampler (TextureManager::getSingletonPtr() ? TextureManager::getSingleton().getDefaultSampler() : DUMMY_SAMPLER)
137
139
, mParent (parent)
@@ -673,13 +675,25 @@ namespace Ogre {
673
675
{
674
676
if (enable)
675
677
{
676
- TextureEffect eff = {ET_ENVIRONMENT_MAP};
677
- eff.subtype = envMapType;
678
- addEffect (eff);
678
+ switch (envMapType)
679
+ {
680
+ case ENV_CURVED:
681
+ mTexCoordCalcMethod = TEXCALC_ENVIRONMENT_MAP;
682
+ break ;
683
+ case ENV_PLANAR:
684
+ mTexCoordCalcMethod = TEXCALC_ENVIRONMENT_MAP_PLANAR;
685
+ break ;
686
+ case ENV_REFLECTION:
687
+ mTexCoordCalcMethod = TEXCALC_ENVIRONMENT_MAP_REFLECTION;
688
+ break ;
689
+ case ENV_NORMAL:
690
+ mTexCoordCalcMethod = TEXCALC_ENVIRONMENT_MAP_NORMAL;
691
+ break ;
692
+ }
679
693
}
680
694
else
681
695
{
682
- removeEffect (ET_ENVIRONMENT_MAP) ;
696
+ mTexCoordCalcMethod = TEXCALC_NONE ;
683
697
}
684
698
}
685
699
// -----------------------------------------------------------------------
@@ -1160,25 +1174,19 @@ namespace Ogre {
1160
1174
{
1161
1175
if (enable)
1162
1176
{
1163
- TextureEffect eff = {ET_PROJECTIVE_TEXTURE};
1164
- eff.frustum = projectionSettings;
1165
- addEffect (eff);
1177
+ mProjectiveTexturingFrustum = projectionSettings;
1178
+ mTexCoordCalcMethod = TEXCALC_PROJECTIVE_TEXTURE;
1166
1179
}
1167
1180
else
1168
1181
{
1169
- removeEffect (ET_PROJECTIVE_TEXTURE);
1182
+ mProjectiveTexturingFrustum = 0 ;
1183
+ mTexCoordCalcMethod = TEXCALC_NONE;
1170
1184
}
1171
1185
1172
1186
}
1173
1187
const Frustum* TextureUnitState::getProjectiveTexturingFrustum () const
1174
1188
{
1175
- EffectMap::const_iterator i = mEffects .find (ET_PROJECTIVE_TEXTURE);
1176
- if (i != mEffects .end ())
1177
- {
1178
- return i->second .frustum ;
1179
- }
1180
-
1181
- return 0 ;
1189
+ return mProjectiveTexturingFrustum ;
1182
1190
}
1183
1191
// -----------------------------------------------------------------------
1184
1192
void TextureUnitState::setName (const String& name)
@@ -1218,28 +1226,5 @@ namespace Ogre {
1218
1226
return mSampler ;
1219
1227
}
1220
1228
1221
- TexCoordCalcMethod TextureUnitState::_deriveTexCoordCalcMethod () const
1222
- {
1223
- TexCoordCalcMethod texCoordCalcMethod = TEXCALC_NONE;
1224
- for (const auto & effi : mEffects )
1225
- {
1226
- switch (effi.second .type )
1227
- {
1228
- case ET_ENVIRONMENT_MAP:
1229
- texCoordCalcMethod = (TexCoordCalcMethod)effi.second .subtype ;
1230
- break ;
1231
- case ET_UVSCROLL:
1232
- case ET_USCROLL:
1233
- case ET_VSCROLL:
1234
- case ET_ROTATE:
1235
- case ET_TRANSFORM:
1236
- break ;
1237
- case ET_PROJECTIVE_TEXTURE:
1238
- texCoordCalcMethod = TEXCALC_PROJECTIVE_TEXTURE;
1239
- break ;
1240
- }
1241
- }
1242
-
1243
- return texCoordCalcMethod;
1244
- }
1245
- }
1229
+ TexCoordCalcMethod TextureUnitState::_deriveTexCoordCalcMethod () const { return mTexCoordCalcMethod ; }
1230
+ } // namespace Ogre
0 commit comments