Пример #1
0
//-------------------------------------------------------------------------------------------------
void sdRenderHelper::DisableZTest(NiAVObject* pkAVObject)
{
	NIASSERT(pkAVObject);

	NiProperty* pkProperty = pkAVObject->GetProperty(NiZBufferProperty::GetType());
	if (pkProperty)
	{
		NiZBufferProperty* pkZBufferProperty = (NiZBufferProperty*)(pkProperty);
		NIASSERT(pkZBufferProperty);

		pkZBufferProperty->SetZBufferTest(false);
		pkZBufferProperty->SetZBufferWrite(true);
	}

	if (pkAVObject->IsNode())
	{
		NiNode* pkNode = (NiNode*)pkAVObject;
		NIASSERT(pkNode);

		for (uint ui = 0; ui < pkNode->GetArrayCount(); ++ui)
		{
			NiAVObject* pkChild = pkNode->GetAt(ui);
			if (pkChild)
				DisableZTest(pkChild);
		}
	}
}
Пример #2
0
//---------------------------------------------------------------------------
NiCamera* NIF_Files::FindCamera(NiAVObject* pkObject)
{
    // This function recursively walks the scenegraph until a camera
    // is found.

	if (NiIsKindOf(NiCamera, pkObject))
    {
        return (NiCamera*) pkObject;
    }
    else if (NiIsKindOf(NiNode, pkObject))
    {
        // NiNodes are the primary structural objects in Gamebryo. They 
        // group other Gamebryo scene objects together under a common parent
        // and coordinate system. NiNodes can have as many children as 
        // necessary, but those children are not guaranteed to be contiguous.

        NiNode* pkNode = (NiNode*) pkObject;
        for (unsigned int ui = 0; ui < pkNode->GetArrayCount(); ui++)
        {
            NiCamera* pkFoundCamera = FindCamera(pkNode->GetAt(ui));
            if (pkFoundCamera)
                return pkFoundCamera;
        }
    }

    return NULL;
}
Пример #3
0
//-------------------------------------------------------------------------------------------------
uint sdPhysXSceneMgr::CookObject(sdPhysXMemoryWriteStream& kStream, NiAVObject* spAVObject, float fScale, bool bFlipNormal)
{
	uint uiSizeByBytes = 0;
	if (NiIsKindOf(NiMesh, spAVObject))
	{
		NiMesh* spMesh = (NiMesh*)spAVObject;
		uiSizeByBytes += CookMesh(kStream, spMesh, fScale, bFlipNormal);
	}
	else if (spAVObject->IsNode())
	{
		NiNode* spNode = (NiNode*)spAVObject;
		for (uint ui = 0; ui < spNode->GetArrayCount(); ++ui)
		{
			NiAVObject* spChildAVObject = spNode->GetAt(ui);
			if (spChildAVObject)
				uiSizeByBytes += CookObject(kStream, spChildAVObject, fScale, bFlipNormal);
		}
	}
	return uiSizeByBytes;
}