Пример #1
0
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);
}
Пример #2
0
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;
}
Пример #3
0
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);
			}
		}
}
Пример #7
0
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);
			}
		}
}
Пример #8
0
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;
}
Пример #9
0
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();
}