Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErwin Coumans <blender@erwincoumans.com>2007-01-07 07:39:39 +0300
committerErwin Coumans <blender@erwincoumans.com>2007-01-07 07:39:39 +0300
commit4a70681ce21d254f3bf7033380ec33732be2825d (patch)
treeb8941422557cc09eca7bde70ffed04d90e9e2b77 /source/gameengine/Ketsji
parentcf4d6278972046914764367f9b1b747dac012b00 (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.cpp16
-rw-r--r--source/gameengine/Ketsji/BL_Material.h10
-rw-r--r--source/gameengine/Ketsji/KX_BlenderMaterial.cpp10
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)