void nMeshGroup::RenderShaderSkinning(int meshGroupIdx, U2BonePalette& bonePalette) { static const int maxBonePaletteSize = 72; static D3DXMATRIX boneMatArray[maxBonePaletteSize]; int paletteSize = bonePalette.GetNumJoints(); U2ASSERT(paletteSize <= maxBonePaletteSize); int paletteIdx; for(paletteIdx = 0; paletteIdx < paletteSize; ++paletteIdx) { const U2Bone& bone = m_pSkinMod->GetSkeleton()->GetJoint( bonePalette.GetJointIdx(paletteIdx)); boneMatArray[paletteIdx] = bone.GetSKinMat44(); } U2SceneMgr *pSceneMgr = U2SceneMgr::Instance(); U2ASSERT(pSceneMgr); U2Dx9Renderer *pRenderer = U2Dx9Renderer::GetRenderer(); U2ASSERT(pRenderer); U2D3DXEffectShader *pCurrShader = pRenderer->GetCurrEffectShader(); U2ASSERT(pCurrShader); if(pCurrShader->IsParamUsed(U2FxShaderState::JointPalette)) { pCurrShader->SetMatrixArray(U2FxShaderState::JointPalette, boneMatArray, paletteSize); } pRenderer->SetVertexRange(GetFirstVertex(), GetNumVertices()); pRenderer->SetIndexRange(GetFirstIndex(), GetNumIndices()); pRenderer->DrawIndexedPrimitive(D3DPT_TRIANGLELIST); }
bool nMeshGroup::Render(U2SceneMgr* pSceneMgr, U2RenderContext* pCxt) { IsRendererOK2; if(m_pSkinMod) pCxt->pUserData = m_pSkinMod; for(unsigned int i=0; i < GetNumControllers(); ++i) { GetController(i)->Update(0.f, pCxt); } if(m_pSkinMod) { // Set D3D VB /IB //for(uint32 i=0; i < GetEffectCnt(); ++i) //{ // U2Dx9FxShaderEffect* pEffect = // DynamicCast<U2Dx9FxShaderEffect>(GetEffect(i)); // if(pEffect) // { // pRenderer->SetupMesh(GetMesh()); // } //} int numFragments = m_pSkinMod->GetNumFragments(); int fragIdx; for(fragIdx = 0; fragIdx < numFragments; ++fragIdx) { U2SkinModifier::Fragment& fragment = *m_pSkinMod->GetFragment(fragIdx); RenderShaderSkinning(fragment.GetMeshGroupIdx(), fragment.GetBonePalette()); } } else { //// Set D3D VB /IB //for(uint32 i=0; i < GetEffectCnt(); ++i) //{ // U2Dx9FxShaderEffect* pEffect = // DynamicCast<U2Dx9FxShaderEffect>(GetEffect(i)); // if(pEffect) // { // pRenderer->SetupMesh(GetMesh()); // } //} pRenderer->SetVertexRange(GetFirstVertex(), GetNumVertices()); pRenderer->SetIndexRange(GetFirstIndex(), GetNumIndices()); pRenderer->DrawIndexedPrimitive(m_spModelData->GetPrimitiveType()); } return true; }
int GetFirstIndex(int arr[],int length,int k,int start,int end) { if (start > end) { return -1; } int middle = start + (end - start) / 2; if (arr[middle] == k) { if ((middle == 0) || (arr[middle - 1] != k) ) { return middle; } else { end = middle - 1; } } else if (arr[middle] > k) { end = middle - 1; } else { start = middle + 1; } return GetFirstIndex(arr, length, k, start, end); }
JBoolean JTableData::ColsRemoved::AdjustIndex ( JIndex* index ) const { return JAdjustIndexAfterRemove(GetFirstIndex(), GetCount(), index); }
void JTableData::ColsInserted::AdjustIndex ( JIndex* index ) const { JAdjustIndexAfterInsert(GetFirstIndex(), GetCount(), index); }
void JXFileHistoryMenu::RemoveNonexistentFiles() { JString fullName; const JSize count = GetItemCount(); const JIndex firstIndex = GetFirstIndex(); for (JIndex i=count; i>=firstIndex; i--) { fullName = GetFile(i); if (!JFileExists(fullName)) { RemoveItem(i); } } }
void JXPathHistoryMenu::RemoveInvalidPaths() { JString fullName; const JSize count = GetItemCount(); const JIndex firstIndex = GetFirstIndex(); for (JIndex i=count; i>=firstIndex; i--) { const JString& dirName = JXTextMenu::GetItemText(i); if (!JConvertToAbsolutePath(dirName, itsBasePath, &fullName)) { RemoveItem(i); } } }
int GetNumberDigits(int arr[],int length,int k) { assert(arr); if (length <= 0) { return 0; } int start= GetFirstIndex(arr, length, k, 0, length - 1); int end = GetLastIndex(arr, length, k, 0, length - 1); int number = 0; if (start != -1 && end != -1) { number = end - start + 1; } return number; }
void JXPathHistoryMenu::UpdateMenu() { if (GetFirstIndex() == 1) { JMountPointList list(JPtrArrayT::kDeleteAll); time_t t; if (JGetUserMountPointList(&list, &t)) { const JSize count = list.GetElementCount(); SetFirstIndex(count+1); for (JIndex i=count; i>=1; i--) { const JMountPoint mp = list.GetElement(i); PrependItem(*(mp.path)); if (i == count) { ShowSeparatorAfter(1); } if (mp.type == kJHardDisk) { SetItemImage(1, jx_hard_disk_small); } else if (mp.type == kJZipDisk) { SetItemImage(1, jx_zip_disk_small); } else if (mp.type == kJFloppyDisk) { SetItemImage(1, jx_floppy_disk_small); } else if (mp.type == kJCDROM) { SetItemImage(1, jx_cdrom_disk_small); } } } } RemoveInvalidPaths(); JXStringHistoryMenu::UpdateMenu(); }