void SCA_KeyboardSensor::AddToTargetProp(int keyIndex) { if (IsPrintable(keyIndex)) { CValue* tprop = GetParent()->GetProperty(m_targetprop); if (tprop) { /* overwrite the old property */ if (IsDelete(keyIndex)) { /* strip one char, if possible */ STR_String newprop = tprop->GetText(); int oldlength = newprop.Length(); if (oldlength >= 1 ) { int newlength=oldlength; BLI_str_cursor_step_prev_utf8(newprop, newprop.Length(), &newlength); newprop.SetLength(newlength); CStringValue * newstringprop = new CStringValue(newprop, m_targetprop); GetParent()->SetProperty(m_targetprop, newstringprop); newstringprop->Release(); } } else { /* append */ char pchar = ToCharacter(keyIndex, IsShifted()); STR_String newprop = tprop->GetText() + pchar; CStringValue * newstringprop = new CStringValue(newprop, m_targetprop); GetParent()->SetProperty(m_targetprop, newstringprop); newstringprop->Release(); } } else { if (!IsDelete(keyIndex)) { /* Make a new property. Deletes can be ignored. */ char pchar = ToCharacter(keyIndex, IsShifted()); STR_String newprop = pchar; CStringValue * newstringprop = new CStringValue(newprop, m_targetprop); GetParent()->SetProperty(m_targetprop, newstringprop); newstringprop->Release(); } } } }
void SCA_KeyboardSensor::AddToTargetProp(int keyIndex, int unicode) { if (IsPrintable(keyIndex)) { CValue* tprop = GetParent()->GetProperty(m_targetprop); if (IsDelete(keyIndex)) { /* Make a new property. Deletes can be ignored. */ if (tprop) { /* overwrite the old property */ /* strip one char, if possible */ STR_String newprop = tprop->GetText(); int oldlength = newprop.Length(); if (oldlength >= 1 ) { int newlength=oldlength; BLI_str_cursor_step_prev_utf8(newprop, newprop.Length(), &newlength); newprop.SetLength(newlength); CStringValue * newstringprop = new CStringValue(newprop, m_targetprop); GetParent()->SetProperty(m_targetprop, newstringprop); newstringprop->Release(); } } } else { char utf8_buf[7]; size_t utf8_len; utf8_len = BLI_str_utf8_from_unicode(unicode, utf8_buf); utf8_buf[utf8_len] = '\0'; STR_String newprop = tprop ? (tprop->GetText() + utf8_buf) : utf8_buf; CStringValue * newstringprop = new CStringValue(newprop, m_targetprop); GetParent()->SetProperty(m_targetprop, newstringprop); newstringprop->Release(); } } }
char* GHOST_GetTitle(GHOST_WindowHandle windowhandle) { GHOST_IWindow* window = (GHOST_IWindow*) windowhandle; STR_String title; window->getTitle(title); char *ctitle = (char*) malloc(title.Length() + 1); if (ctitle == NULL) return NULL; strcpy(ctitle, title.Ptr()); return ctitle; }
static std::vector<STR_String> split_string(STR_String str) { std::vector<STR_String> text = std::vector<STR_String>(); /* Split the string upon new lines */ int begin=0, end=0; while (end < str.Length()) { if (str.GetAt(end) == '\n') { text.push_back(str.Mid(begin, end-begin)); begin = end+1; } end++; } //Now grab the last line text.push_back(str.Mid(begin, end-begin)); return text; }
std::vector<STR_String> STR_String::Explode(char c) const { STR_String lcv = *this; std::vector<STR_String> uc; while (lcv.Length()) { int pos = lcv.Find(c); if (pos < 0) { uc.push_back(lcv); lcv.Clear(); } else { uc.push_back(lcv.Left(pos)); lcv = lcv.Mid(pos + 1); } } //uc. -= STR_String(""); return uc; }
void GPC_RenderTools::RenderText( int mode, RAS_IPolyMaterial* polymat, float v1[3], float v2[3], float v3[3], float v4[3], int glattrib) { STR_String mytext = ((CValue*)m_clientobject)->GetPropertyText("Text"); const unsigned int flag = polymat->GetFlag(); struct MTFace* tface = 0; unsigned int *col = 0; if(flag & RAS_BLENDERMAT) { KX_BlenderMaterial *bl_mat = static_cast<KX_BlenderMaterial*>(polymat); tface = bl_mat->GetMTFace(); col = bl_mat->GetMCol(); } else { KX_PolygonMaterial* blenderpoly = static_cast<KX_PolygonMaterial*>(polymat); tface = blenderpoly->GetMTFace(); col = blenderpoly->GetMCol(); } GPU_render_text(tface, mode, mytext, mytext.Length(), col, v1, v2, v3, v4, glattrib); }
void BL_ConvertControllers( struct Object* blenderobject, class KX_GameObject* gameobj, SCA_LogicManager* logicmgr, int activeLayerBitInfo, bool isInActiveLayer, KX_BlenderSceneConverter* converter ) { int uniqueint=0; int count = 0; int executePriority=0; bController* bcontr = (bController*)blenderobject->controllers.first; while (bcontr) { bcontr = bcontr->next; count++; } gameobj->ReserveController(count); bcontr = (bController*)blenderobject->controllers.first; while (bcontr) { SCA_IController* gamecontroller = NULL; switch(bcontr->type) { case CONT_LOGIC_AND: { gamecontroller = new SCA_ANDController(gameobj); break; } case CONT_LOGIC_OR: { gamecontroller = new SCA_ORController(gameobj); break; } case CONT_LOGIC_NAND: { gamecontroller = new SCA_NANDController(gameobj); break; } case CONT_LOGIC_NOR: { gamecontroller = new SCA_NORController(gameobj); break; } case CONT_LOGIC_XOR: { gamecontroller = new SCA_XORController(gameobj); break; } case CONT_LOGIC_XNOR: { gamecontroller = new SCA_XNORController(gameobj); break; } case CONT_EXPRESSION: { bExpressionCont* bexpcont = (bExpressionCont*) bcontr->data; STR_String expressiontext = STR_String(bexpcont->str); if (expressiontext.Length() > 0) { gamecontroller = new SCA_ExpressionController(gameobj,expressiontext); } break; } case CONT_PYTHON: { bPythonCont* pycont = (bPythonCont*) bcontr->data; SCA_PythonController* pyctrl = new SCA_PythonController(gameobj, pycont->mode); gamecontroller = pyctrl; #ifdef WITH_PYTHON pyctrl->SetNamespace(converter->GetPyNamespace()); if(pycont->mode==SCA_PythonController::SCA_PYEXEC_SCRIPT) { if (pycont->text) { char *buf; // this is some blender specific code buf= txt_to_buf(pycont->text); if (buf) { pyctrl->SetScriptText(STR_String(buf)); pyctrl->SetScriptName(pycont->text->id.name+2); MEM_freeN(buf); } } } else { /* let the controller print any warnings here when importing */ pyctrl->SetScriptText(STR_String(pycont->module)); pyctrl->SetScriptName(pycont->module); /* will be something like module.func so using it as the name is OK */ if(pycont->flag & CONT_PY_DEBUG) { printf("\nDebuging \"%s\", module for object %s\n\texpect worse performance.\n", pycont->module, blenderobject->id.name+2); pyctrl->SetDebug(true); } } #endif // WITH_PYTHON break; } default: { } } if (gamecontroller) { LinkControllerToActuators(gamecontroller,bcontr,logicmgr,converter); gamecontroller->SetExecutePriority(executePriority++); gamecontroller->SetBookmark((bcontr->flag & CONT_PRIO) != 0); gamecontroller->SetState(bcontr->state_mask); STR_String uniquename = bcontr->name; uniquename += "#CONTR#"; uniqueint++; CIntValue* uniqueval = new CIntValue(uniqueint); uniquename += uniqueval->GetText(); uniqueval->Release(); //unique name was never implemented for sensors and actuators, only for controllers //and it's producing difference in the keys for the lists: obj.controllers/sensors/actuators //at some point it should either be implemented globally (and saved as a separate var) or removed. //gamecontroller->SetName(uniquename); gamecontroller->SetName(bcontr->name); gameobj->AddController(gamecontroller); converter->RegisterGameController(gamecontroller, bcontr); #ifdef WITH_PYTHON if (bcontr->type==CONT_PYTHON) { SCA_PythonController *pyctrl= static_cast<SCA_PythonController*>(gamecontroller); /* not strictly needed but gives syntax errors early on and * gives more predictable performance for larger scripts */ if(pyctrl->m_mode==SCA_PythonController::SCA_PYEXEC_SCRIPT) pyctrl->Compile(); else { /* We cant do this because importing runs the script which could end up accessing * internal BGE functions, this is unstable while we're converting the scene. * This is a pitty because its useful to see errors at startup but cant help it */ // pyctrl->Import(); } } #endif // WITH_PYTHON //done with gamecontroller gamecontroller->Release(); } bcontr = bcontr->next; } }