95 lines
5.1 KiB
C++
95 lines
5.1 KiB
C++
/***********************************************************************************************************************
|
|
*
|
|
* Copyright (c) 2010 - 2025 by Tech Soft 3D, Inc.
|
|
* The information contained herein is confidential and proprietary to Tech Soft 3D, Inc., and considered a trade secret
|
|
* as defined under civil and criminal statutes. Tech Soft 3D shall pursue its civil and criminal remedies in the event
|
|
* of unauthorized use or misappropriation of its trade secrets. Use of this information by anyone other than authorized
|
|
* employees of Tech Soft 3D, Inc. is granted only under a written non-disclosure agreement, expressly prescribing the
|
|
* scope and manner of such use.
|
|
*
|
|
***********************************************************************************************************************/
|
|
|
|
#include <A3DSDKIncludes.h>
|
|
#include "PRC2XML.h"
|
|
|
|
|
|
|
|
//######################################################################################################################
|
|
A3DStatus traverseTextureApplication(const A3DGraphTextureApplicationData& sData, _TiXmlElement* setting)
|
|
{
|
|
A3DStatus iRet = A3D_SUCCESS;
|
|
_TiXmlElement *textureapplication = new _TiXmlElement("A3DGraphTextureApplicationData");
|
|
|
|
textureapplication->SetAttribute("m_uiMaterialIndex", (int) sData.m_uiMaterialIndex);
|
|
textureapplication->SetAttribute("m_uiTextureDefinitionIndex", (int) sData.m_uiTextureDefinitionIndex);
|
|
textureapplication->SetAttribute("m_iUVCoordinatesIndex", (int) sData.m_iUVCoordinatesIndex);
|
|
textureapplication->SetAttribute("m_uiNextTextureApplicationIndex", (int) sData.m_uiNextTextureApplicationIndex);
|
|
setting->LinkEndChild(textureapplication);
|
|
|
|
return iRet;
|
|
}
|
|
|
|
//######################################################################################################################
|
|
static A3DStatus stTraverseTextureTransformation(const A3DGraphTextureTransformationData& sData, _TiXmlElement* setting)
|
|
{
|
|
A3DStatus iRet = A3D_SUCCESS;
|
|
_TiXmlElement *texturetransformation = new _TiXmlElement("A3DGraphTextureTransformationData");
|
|
|
|
texturetransformation->SetAttribute("m_bTextureFlipS", (int) sData.m_bTextureFlipS);
|
|
texturetransformation->SetAttribute("m_bTextureFlipT", (int) sData.m_bTextureFlipT);
|
|
traverseDoubles("m_dMatrix",16,(A3DDouble*)(&(sData.m_dMatrix)),texturetransformation);
|
|
texturetransformation->SetAttribute("m_bIs2D", (int) sData.m_bIs2D);
|
|
setting->LinkEndChild(texturetransformation);
|
|
|
|
return iRet;
|
|
}
|
|
|
|
//######################################################################################################################
|
|
A3DStatus traverseTextureDefinition(const A3DGraphTextureDefinitionData& sData, _TiXmlElement* setting)
|
|
{
|
|
A3DStatus iRet = A3D_SUCCESS;
|
|
_TiXmlElement *texturedefinition = new _TiXmlElement("A3DGraphTextureDefinitionData");
|
|
|
|
texturedefinition->SetAttribute("m_uiPictureIndex", (int) sData.m_uiPictureIndex);
|
|
texturedefinition->SetAttribute("m_ucTextureDimension", (int) sData.m_ucTextureDimension);
|
|
texturedefinition->SetAttribute("m_eMappingType", (int) sData.m_eMappingType);
|
|
texturedefinition->SetAttribute("m_eMappingOperator", (int) sData.m_eMappingOperator);
|
|
|
|
traverseCartesianTransformation(sData.m_pOperatorTransfo, texturedefinition);
|
|
|
|
texturedefinition->SetAttribute("m_uiMappingAttributes", (int) sData.m_uiMappingAttributes);
|
|
traverseDoubles("m_pdMappingAttributesIntensity", sData.m_uiMappingAttributesIntensitySize,
|
|
sData.m_pdMappingAttributesIntensity, texturedefinition);
|
|
traverseUChars("m_pucMappingAttributesComponents", sData.m_uiMappingAttributesComponentsSize,
|
|
sData.m_pucMappingAttributesComponents, texturedefinition);
|
|
texturedefinition->SetAttribute("m_eTextureFunction", (int) sData.m_eTextureFunction);
|
|
texturedefinition->SetAttribute("m_dRed", (int) sData.m_dRed);
|
|
texturedefinition->SetAttribute("m_dGreen", (int) sData.m_dGreen);
|
|
texturedefinition->SetAttribute("m_dBlue", (int) sData.m_dBlue);
|
|
texturedefinition->SetAttribute("m_dAlpha", (int) sData.m_dAlpha);
|
|
texturedefinition->SetAttribute("m_eBlend_src_RGB", (int) sData.m_eBlend_src_RGB);
|
|
texturedefinition->SetAttribute("m_eBlend_dst_RGB", (int) sData.m_eBlend_dst_RGB);
|
|
texturedefinition->SetAttribute("m_eBlend_src_Alpha", (int) sData.m_eBlend_src_Alpha);
|
|
texturedefinition->SetAttribute("m_eBlend_dst_Alpha", (int) sData.m_eBlend_dst_Alpha);
|
|
texturedefinition->SetAttribute("m_ucTextureApplyingMode", (int) sData.m_ucTextureApplyingMode);
|
|
texturedefinition->SetAttribute("m_eTextureAlphaTest", (int) sData.m_eTextureAlphaTest);
|
|
texturedefinition->SetAttribute("m_dAlphaTestReference", (int) sData.m_dAlphaTestReference);
|
|
texturedefinition->SetAttribute("m_eTextureWrappingModeS", (int) sData.m_eTextureWrappingModeS);
|
|
texturedefinition->SetAttribute("m_eTextureWrappingModeT", (int) sData.m_eTextureWrappingModeT);
|
|
|
|
if(sData.m_pTextureTransfo != NULL)
|
|
{
|
|
A3DGraphTextureTransformationData sTransfoData;
|
|
A3D_INITIALIZE_DATA(A3DGraphTextureTransformationData, sTransfoData);
|
|
iRet = A3DGraphTextureTransformationGet(sData.m_pTextureTransfo,&sTransfoData);
|
|
if(iRet == A3D_SUCCESS)
|
|
{
|
|
stTraverseTextureTransformation(sTransfoData,texturedefinition);
|
|
A3DGraphTextureTransformationGet(NULL,&sTransfoData);
|
|
}
|
|
}
|
|
setting->LinkEndChild(texturedefinition);
|
|
|
|
return iRet;
|
|
}
|