// vytvori skinedmesh slozeny z vybranych dilu zdrojoveho meshe // source <- animated mesh bez zavolani metody finalize() // parts <- ukazatel na pole èástí // partsCount <- poèet èástí (velikost pole) ISkinnedMesh * makeMeshFromParts(WowKlient::Core::GameState * gState, IAnimatedMesh * source, int partsCount, int * parts) { ISkinnedMesh * skinned = (ISkinnedMesh *)source; ISkinnedMesh * clone = gState->irrDevice->getSceneManager()->createSkinnedMesh(); for (int i = 0; i < partsCount; i++) { SSkinMeshBuffer * buf = clone->addMeshBuffer(); buf->recalculateBoundingBox(); buf->setDirty(); for (u32 j = 0; j < ((SSkinMeshBuffer*)source->getMeshBuffer(parts[i]))->getVertexCount(); j++) { S3DVertex * v = new S3DVertex(*((SSkinMeshBuffer*)source->getMeshBuffer(parts[i]))->getVertex(j)); buf->Vertices_Standard.push_back(*v); } for (u32 j = 0; j < ((SSkinMeshBuffer*)source->getMeshBuffer(parts[i]))->getIndexCount(); j++) { buf->Indices.push_back(u16(((SSkinMeshBuffer*)source->getMeshBuffer(parts[i]))->getIndices()[j])); } buf->Material = ((SSkinMeshBuffer*)source->getMeshBuffer(parts[i]))->getMaterial(); } parseJointParents(clone, skinned->getAllJoints()[0], 0); for (u32 i = 0; i < skinned->getJointCount(); i++) { ISkinnedMesh::SJoint * joint; joint = clone->getAllJoints()[clone->getJointNumber(skinned->getAllJoints()[i]->Name.c_str())]; for (u32 j = 0; j < skinned->getAllJoints()[i]->Weights.size(); j++) { s32 buffer = validPart(skinned->getAllJoints()[i]->Weights[j].buffer_id, partsCount, parts); if (buffer >= 0) { ISkinnedMesh::SWeight * w = clone->addWeight(joint); w->buffer_id = buffer; w->strength = skinned->getAllJoints()[i]->Weights[j].strength; w->vertex_id = skinned->getAllJoints()[i]->Weights[j].vertex_id; } } } clone->finalize(); return clone; }
//------------------------------------------------------------------ bool ofUTF8::isValid(ofUTF8String txt) { try { ofUTF8String::iterator end_it = utf8::find_invalid(txt.begin(), txt.end()); if(end_it != txt.end()) { ofUTF8String validPart(txt.begin(),end_it); ofLog(OF_LOG_ERROR,"ofUTF8::isValid - detected invalid UTF8 - valid part: " + validPart); return false; } else { return true; } } catch(const utf8::exception& utfcpp_ex) { string err = utfcpp_ex.what(); ofLog(OF_LOG_ERROR, "ofUTF8::isValid : " + err); return false; } }