Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- BSFixedString nodeName(" (00000D67)[1]/ (00000D64) [100%]");
- NiAVObject * targetNode = thisObj->loadedState->node->GetObjectByName(&nodeName.data/*&targetPart->partName.data*/);
- if(targetNode) {
- NiTriBasedGeom * geometry = targetNode->GetAsNiTriBasedGeom();
- if(geometry) {
- BSLightingShaderProperty * shaderProperty = (BSLightingShaderProperty *)geometry->m_spEffectState;
- if(shaderProperty->GetRTTI() == NiRTTI_BSLightingShaderProperty) {
- BSMaskedShaderMaterial * material = (BSMaskedShaderMaterial *)shaderProperty->material;
- // Hack to swap shader type and hope it updates...Spoiler: It doesn't
- if(material->GetShaderType() != BSMaskedShaderMaterial::kShaderType_FaceTint) {
- DumpClass(material, sizeof(BSMaskedShaderMaterial)/4);
- BSMaskedShaderMaterial * newMaterial = BSMaskedShaderMaterial::CreateFromLightingShader(material);
- shaderProperty->material = newMaterial;
- material = newMaterial;
- }
- static NiRenderTarget * maskTarget = NULL;
- if(!maskTarget) {
- NiRenderTarget * newTarget = CALL_MEMBER_FN(NiRenderManager::GetSingleton(), CreateRenderTarget)(NiDX9Renderer::GetSingleton(), 32, 0, 0);
- if(maskTarget != newTarget) {
- if(maskTarget) {
- NiRenderTarget * targetMask = maskTarget;
- if(!InterlockedDecrement(&maskTarget->m_uiRefCount))
- targetMask->DeleteThis();
- }
- maskTarget = newTarget;
- if(newTarget)
- InterlockedIncrement(&newTarget->m_uiRefCount);
- }
- }
- tArray<TintMask*> * masks = CALL_MEMBER_FN(player, GetTintList)();
- if(masks && maskTarget) {
- if(ApplyMasksToRenderTarget(masks, &maskTarget)) {
- NiRenderedTexture * materialTexture = material->renderedTexture;
- NiRenderedTexture * renderedTexture = maskTarget->renderedTexture;
- if(materialTexture != renderedTexture) {
- if(materialTexture) {
- if(!InterlockedDecrement(&materialTexture->m_uiRefCount))
- materialTexture->DeleteThis();
- }
- material->renderedTexture = renderedTexture;
- if(renderedTexture)
- InterlockedIncrement(&renderedTexture->m_uiRefCount);
- }
- }
- }
- DumpClass(material, sizeof(BSMaskedShaderMaterial)/4);
- DumpClass(maskTarget, sizeof(NiRenderTarget)/4);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement