[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19615] trunk/blender/source: BGE Text
Campbell Barton
ideasman42 at gmail.com
Thu Apr 9 11:50:20 CEST 2009
Revision: 19615
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19615
Author: campbellbarton
Date: 2009-04-09 11:50:17 +0200 (Thu, 09 Apr 2009)
Log Message:
-----------
BGE Text
- multi-line strings for bitmap text
- keyboard sensor now logs return and pad enter as "\n"
BGE std::vector use in Value.cpp and RAS_MaterialBucket.cpp
The size of a new list is known before making them, reduce re-allocs, though probably not a noticeable speedup.
Modified Paths:
--------------
trunk/blender/source/blender/gpu/intern/gpu_draw.c
trunk/blender/source/gameengine/Expressions/Value.cpp
trunk/blender/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
trunk/blender/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
Modified: trunk/blender/source/blender/gpu/intern/gpu_draw.c
===================================================================
--- trunk/blender/source/blender/gpu/intern/gpu_draw.c 2009-04-09 07:26:49 UTC (rev 19614)
+++ trunk/blender/source/blender/gpu/intern/gpu_draw.c 2009-04-09 09:50:17 UTC (rev 19615)
@@ -84,6 +84,15 @@
int characters, index, character;
float centerx, centery, sizex, sizey, transx, transy, movex, movey, advance;
+ /* multiline */
+ float line_start= 0.0f, line_height;
+ if (v4)
+ line_height= MAX4(v1[1], v2[1], v3[1], v4[2]) - MIN4(v1[1], v2[1], v3[1], v4[2]);
+ else
+ line_height= MAX3(v1[1], v2[1], v3[1]) - MIN3(v1[1], v2[1], v3[1]);
+ line_height *= 1.2; /* could be an option? */
+ /* end multiline */
+
characters = textlen;
ima = (Image*)tface->tpage;
@@ -97,12 +106,19 @@
glColor3f(1.0f, 1.0f, 1.0f);
glPushMatrix();
+
for (index = 0; index < characters; index++) {
float uv[4][2];
// lets calculate offset stuff
character = textstr[index];
+ if (character=='\n') {
+ glTranslatef(line_start, -line_height, 0.0);
+ line_start = 0.0f;
+ continue;
+ }
+
// space starts at offset 1
// character = character - ' ' + 1;
matrixGlyph((ImBuf *)ima->ibufs.first, character, & centerx, ¢ery,
@@ -143,6 +159,7 @@
glEnd();
glTranslatef(advance, 0.0, 0.0);
+ line_start -= advance; /* so we can go back to the start of the line */
}
glPopMatrix();
}
Modified: trunk/blender/source/gameengine/Expressions/Value.cpp
===================================================================
--- trunk/blender/source/gameengine/Expressions/Value.cpp 2009-04-09 07:26:49 UTC (rev 19614)
+++ trunk/blender/source/gameengine/Expressions/Value.cpp 2009-04-09 09:50:17 UTC (rev 19615)
@@ -436,6 +436,8 @@
{
vector<STR_String> result;
if(!m_pNamedPropertyArray) return result;
+ result.reserve(m_pNamedPropertyArray->size());
+
std::map<STR_String,CValue*>::iterator it;
for (it= m_pNamedPropertyArray->begin(); (it != m_pNamedPropertyArray->end()); it++)
{
Modified: trunk/blender/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
===================================================================
--- trunk/blender/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp 2009-04-09 07:26:49 UTC (rev 19614)
+++ trunk/blender/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp 2009-04-09 09:50:17 UTC (rev 19615)
@@ -376,7 +376,8 @@
|| ((keyIndex >= SCA_IInputDevice::KX_AKEY)
&& (keyIndex <= SCA_IInputDevice::KX_ZKEY))
|| (keyIndex == SCA_IInputDevice::KX_SPACEKEY)
-/* || (keyIndex == KX_RETKEY) */
+ || (keyIndex == SCA_IInputDevice::KX_RETKEY)
+ || (keyIndex == SCA_IInputDevice::KX_PADENTER)
|| (keyIndex == SCA_IInputDevice::KX_PADASTERKEY)
|| (keyIndex == SCA_IInputDevice::KX_TABKEY)
|| ((keyIndex >= SCA_IInputDevice::KX_COMMAKEY)
@@ -386,7 +387,7 @@
|| ((keyIndex >= SCA_IInputDevice::KX_PAD2)
&& (keyIndex <= SCA_IInputDevice::KX_PADPLUSKEY))
|| (keyIndex == SCA_IInputDevice::KX_DELKEY)
- || (keyIndex == SCA_IInputDevice::KX_BACKSPACEKEY)
+ || (keyIndex == SCA_IInputDevice::KX_BACKSPACEKEY)
)
{
return true;
@@ -423,8 +424,10 @@
if (keyIndex == SCA_IInputDevice::KX_SPACEKEY) {
return ' ';
}
+ if (keyIndex == SCA_IInputDevice::KX_RETKEY || keyIndex == SCA_IInputDevice::KX_PADENTER) {
+ return '\n';
+ }
-/* || (keyIndex == SCA_IInputDevice::KX_RETKEY) */
if (keyIndex == SCA_IInputDevice::KX_PADASTERKEY) {
return '*';
Modified: trunk/blender/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp 2009-04-09 07:26:49 UTC (rev 19614)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp 2009-04-09 09:50:17 UTC (rev 19615)
@@ -330,6 +330,9 @@
for(begin(mit); !end(mit); next(mit))
for(i=mit.startvertex; i<mit.endvertex; i++)
mit.vertex[i].Transform(transform, ntransform);
+
+ /* We know we'll need a list at least this big, reserve in advance */
+ target->m_displayArrays.reserve(target->m_displayArrays.size() + m_displayArrays.size());
for(it=m_displayArrays.begin(); it!=m_displayArrays.end(); it++) {
target->m_displayArrays.push_back(*it);
More information about the Bf-blender-cvs
mailing list