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
path: root/source
diff options
context:
space:
mode:
authorDalai Felinto <dfelinto@gmail.com>2011-01-05 00:27:44 +0300
committerDalai Felinto <dfelinto@gmail.com>2011-01-05 00:27:44 +0300
commit95dcf11a8865f4b3da98066175b88e5810d0fec6 (patch)
tree56ccf881208cdba613e62e0b7b49aa383d0c4492 /source
parentb9cda80cbb1ce0c304b675c2a170afdef64185b8 (diff)
BGE: Font Object support to animated (object) colors
implemented the support for animated colors and a workaround for non animated colors. To be cleaned if/when this bug is fixed: [#25487] BGE: Object Color only works when it has a keyed frame * also increased the size of the text. Now it supports 280 (or 140 unicode) chars.
Diffstat (limited to 'source')
-rw-r--r--source/gameengine/Ketsji/KX_FontObject.cpp14
-rw-r--r--source/gameengine/Ketsji/KX_FontObject.h2
2 files changed, 13 insertions, 3 deletions
diff --git a/source/gameengine/Ketsji/KX_FontObject.cpp b/source/gameengine/Ketsji/KX_FontObject.cpp
index 37314e80dc6..54f2d05fb28 100644
--- a/source/gameengine/Ketsji/KX_FontObject.cpp
+++ b/source/gameengine/Ketsji/KX_FontObject.cpp
@@ -30,6 +30,7 @@
#include "DNA_curve_types.h"
#include "KX_Scene.h"
#include "KX_PythonInit.h"
+#include "BLI_math.h"
extern "C" {
#include "BLF_api.h"
@@ -45,7 +46,6 @@ KX_FontObject::KX_FontObject( void* sgReplicationInfo,
m_object(ob),
m_dpi(72),
m_resolution(1.f),
- m_color(ob->col), /* initial color - non-animatable */
m_rendertools(rendertools)
{
Curve *text = static_cast<Curve *> (ob->data);
@@ -64,6 +64,12 @@ KX_FontObject::KX_FontObject( void* sgReplicationInfo,
m_fontid = BLF_load(filepath);
if (m_fontid == -1)
m_fontid = BLF_load("default");
+
+ /* initialize the color with the object color and store it in the KX_Object class
+ This is a workaround waiting for the fix:
+ [#25487] BGE: Object Color only works when it has a keyed frame */
+ copy_v4_v4(m_color, (const float*) ob->col);
+ this->SetObjectColor((const MT_Vector4&) m_color);
}
KX_FontObject::~KX_FontObject()
@@ -89,12 +95,16 @@ void KX_FontObject::DrawText()
/* only draws the text if visible */
if(this->GetVisible() == 0) return;
+ /* update the animated color */
+ this->GetObjectColor().getValue(m_color);
+
/* XXX 2DO - handle multiple lines */
/* HARDCODED MULTIPLICATION FACTOR - this will affect the render resolution directly */
float RES = BGE_FONT_RES * m_resolution;
float size = m_fsize * m_object->size[0] * RES;
float aspect = 1.f / (m_object->size[0] * RES);
+
m_rendertools->RenderText3D(m_fontid, m_text, int(size), m_dpi, m_color, this->GetOpenGLMatrix(), aspect);
}
@@ -137,7 +147,7 @@ PyMethodDef KX_FontObject::Methods[] = {
};
PyAttributeDef KX_FontObject::Attributes[] = {
- KX_PYATTRIBUTE_STRING_RW("text", 0, 140, false, KX_FontObject, m_text),
+ KX_PYATTRIBUTE_STRING_RW("text", 0, 280, false, KX_FontObject, m_text), //arbitrary limit. 280 = 140 unicode chars in unicode
KX_PYATTRIBUTE_FLOAT_RW("size", 0.0001f, 10000.0f, KX_FontObject, m_fsize),
KX_PYATTRIBUTE_FLOAT_RW("resolution", 0.0001f, 10000.0f, KX_FontObject, m_resolution),
/* KX_PYATTRIBUTE_INT_RW("dpi", 0, 10000, false, KX_FontObject, m_dpi), */// no real need for expose this I think
diff --git a/source/gameengine/Ketsji/KX_FontObject.h b/source/gameengine/Ketsji/KX_FontObject.h
index 21fe1f0e9ea..a4f9692da57 100644
--- a/source/gameengine/Ketsji/KX_FontObject.h
+++ b/source/gameengine/Ketsji/KX_FontObject.h
@@ -60,7 +60,7 @@ protected:
int m_dpi;
float m_fsize;
float m_resolution;
- float* m_color;
+ float m_color[4];
class RAS_IRenderTools* m_rendertools; //needed for drawing routine