diff options
author | Erwin Coumans <blender@erwincoumans.com> | 2007-01-07 07:39:39 +0300 |
---|---|---|
committer | Erwin Coumans <blender@erwincoumans.com> | 2007-01-07 07:39:39 +0300 |
commit | 4a70681ce21d254f3bf7033380ec33732be2825d (patch) | |
tree | b8941422557cc09eca7bde70ffed04d90e9e2b77 /source/gameengine/Ketsji | |
parent | cf4d6278972046914764367f9b1b747dac012b00 (diff) |
patch by Charlie, related to recent changes of multi-uv/lightmap generation. This fix makes it possible to use lightmaps in the game engine.
Diffstat (limited to 'source/gameengine/Ketsji')
-rw-r--r-- | source/gameengine/Ketsji/BL_Material.cpp | 16 | ||||
-rw-r--r-- | source/gameengine/Ketsji/BL_Material.h | 10 | ||||
-rw-r--r-- | source/gameengine/Ketsji/KX_BlenderMaterial.cpp | 10 |
3 files changed, 33 insertions, 3 deletions
diff --git a/source/gameengine/Ketsji/BL_Material.cpp b/source/gameengine/Ketsji/BL_Material.cpp index 63ba0924b1c..a8d80ef6224 100644 --- a/source/gameengine/Ketsji/BL_Material.cpp +++ b/source/gameengine/Ketsji/BL_Material.cpp @@ -59,7 +59,10 @@ BL_Material::BL_Material() int i; for(i=0; i<4; i++) + { uv[i] = MT_Point2(0.f,1.f); + uv2[i] = MT_Point2(0.f, 1.f); + } for(i=0; i<MAXTEX; i++) // :( { @@ -114,6 +117,19 @@ void BL_Material::GetConversionUV(MT_Point2 *nuv){ *nuv++ = uv[2]; *nuv = uv[3]; } +void BL_Material::SetConversionUV2(MT_Point2 *nuv) { + uv2[0] = *nuv++; + uv2[1] = *nuv++; + uv2[2] = *nuv++; + uv2[3] = *nuv; +} + +void BL_Material::GetConversionUV2(MT_Point2 *nuv){ + *nuv++ = uv2[0]; + *nuv++ = uv2[1]; + *nuv++ = uv2[2]; + *nuv = uv2[3]; +} void BL_Material::SetSharedMaterial(bool v) diff --git a/source/gameengine/Ketsji/BL_Material.h b/source/gameengine/Ketsji/BL_Material.h index 2656f0d688a..8be91316237 100644 --- a/source/gameengine/Ketsji/BL_Material.h +++ b/source/gameengine/Ketsji/BL_Material.h @@ -31,6 +31,7 @@ public: float offsets[3]; int projplane[3]; STR_String objconame; + STR_String uvCoName; }; // base material struct @@ -79,13 +80,17 @@ public: unsigned int rgb[4]; MT_Point2 uv[4]; - + MT_Point2 uv2[4]; + void SetConversionRGB(unsigned int *rgb); void GetConversionRGB(unsigned int *rgb); void SetConversionUV(MT_Point2 *uv); void GetConversionUV(MT_Point2 *uv); + void SetConversionUV2(MT_Point2 *uv); + void GetConversionUV2(MT_Point2 *uv); + void SetSharedMaterial(bool v); bool IsShared(); void SetUsers(int num); @@ -148,7 +153,8 @@ enum BL_MappingFlag USEORCO =16, USEUV =32, USETANG =64, - DISABLE =128 + DISABLE =128, + USECUSTOMUV=256 }; // BL_Material::BL_Mapping::projplane diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp index b505c9ec8dc..d8c2f2fd40c 100644 --- a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp +++ b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp @@ -437,7 +437,15 @@ void KX_BlenderMaterial::ActivateTexGen(RAS_IRasterizer *ras) const for(int i=0; i<mMaterial->num_enabled; i++) { int mode = mMaterial->mapping[i].mapping; - + + if (mode &USECUSTOMUV) + { + STR_String str = mMaterial->mapping[i].uvCoName; + if (!str.IsEmpty()) + ras->SetTexCoords(RAS_IRasterizer::RAS_TEXCO_UV2, i); + continue; + } + if( mode &(USEREFL|USEOBJ)) ras->SetTexCoords(RAS_IRasterizer::RAS_TEXCO_GEN, i); else if(mode &USEORCO) |