//===================================================================
//
// ExportXS.h
// ExportXS.cpp
//
// OvOC̃f[^ANZXTv
//
//===================================================================

Tv
@OGNX|[gvOCȂǂKeynotẽf[^
@ANZXTvłB
@FXƎdlɂ͔Y݂܂AvOCňx
@e|NX쐬ÃNXoRŃf[^擾`
@Ă܂B
@@
@Ǝ̃Aj[VtH[}bg쐬ꍇA
@3D\tgɗ炴𓾂܂B
@܂AƎ̃GNX|[gvOCۂɂ
@SDKǉɂȂ̎Ԃ܂B
@KeynotełMetasequoiãvOC쐬oł
@rIeՂɃf[^쐬o鎖ړIƂĂ܂B
@{Iȃf[^^֐MetasequoiaƋ߂̂ɂĂ܂̂
@ZԂł̏K\łB

ӓ_
@SpublicɂĂ܂A
@f[^ւ̃ANZX͊֐oRł̎擾݂̗̂pɂĉB
@Iɂ͓OłȂ̊Ȏõf[^ANZX
@\ɂ邩m܂񂪁A󖢒łB
@Keynote 0.0.3.2ɂă[Vf[^ɊւĂ͊OvOC
@@f[^Mo悤ɂ܂BTvXVĂ܂B
@
@Metasequoiał͖ʂƂUVێĂ܂A
@_ƂUVׂɁAKeynoteŒ_𕪗Ă܂B
@IWiMQOƒ_قȂꍇ܂AȓłB
@Ȍ擾ꍇɂ͕`pMQObject璸_A
@ʍ\擾AʒuXSMesh擾ĉB
@Keynoteł͐|SSĔjׁAIWiMQObject
@쐬ꂽMQObjectł͒_indexz񂪈قȂꍇ܂B

Tv̉
int ExportXS::CheckVersion(MQDocument doc)

@ΉĂȂo[W̏ꍇɂ͕̐
@߂܂BΉ\̏ꍇɂKeynote
@ێĂtH[}bg̃o[WԂ܂B
@
CXSDocument* ExportXS::CreateXSDocument(MQDocument doc)

@XSDocument(=CXSDocument*)擾B
@{IɑSẴf[^͂ANZX܂B
@
BOOL ExportXS::DeleteXSDocument(MQDocument doc)

@̃e|NX폜܂B
@폜Keynoteōs܂̂ŁAO
@̂폜Ă͂܂B
@
int ExportXS::FrameMove(MQDocument doc, int framenum)

@Jgt[ړ܂B
@Ԃl݂͌̃t[łB
@framenumɃ}CiX̒lw肷邱Ƃ
@Jgt[ړɃJgt[̎擾o܂B
@
int ExportXS::SetAnimationSet(MQDocument doc, int index)

@Keynoteł̓t[0AnimationSeto͂܂B
@indexɂXSAnimationSet::GetIndexŎ擾index
@w肵ĉB

BOOL ExportXS::IsActive(MQDocument doc)
@KeynotẽEBhẼANeBuԂ`FbN܂B
@f[^̏󋵂Ɋւ炸AEBhE̕\\Ԃ݂̂`FbN܂B

BOOL ExportXS::SendXSAnimation(MQDocument doc, const char* data)
@OvOCKeynoteɃ[Vf[^]܂B
@]f[^tH[}bgKeynotẽNbv{[hƓ`łB
@ƂĂKeynoteŃy[XgۂƓlɂȂ܂B
@܂Jgt[Ƀf[^]܂̂ŁAKvɉ
@t[ړɎ{ĉB
@݂Ȃ{[AbV̓XLbv܂CreateXSDocument
@Keynotef[^`FbNɎ{̂młB
@quNbv{[h̃tH[}bgvQ
@
float ExportXS::GetFPS(void)
@KeynoteێĂFPS擾܂BKeynote1000int^
@l߂鎖ɒӂĉB
@
\

typedef struct XSVertex
@wb_Q
@
typedef struct XSFace
@wb_Q
@
typedef struct XSWeight
@
@indexnumKeynoteŎgpĂ܂B
@O͎g܂B
@XSMeshNX̒̃EFCg͒_Ƒ΂ɂȂĂ܂B
@i܂蒸_ƃEFCg͏ɓłj
@ȉɒ_̃EFCgƊ֘A{[̎擾̃R[hL܂B
@
@int vert_index;	//_̃CfbNX
@XSMesh xsm;
@
@XSWeight wgt = xsm->GetWeight(vert_index);
@XSBone bone0,bone1;
@float w0,w1;
@
@//ref͂̒_ɉe^{[̐
@switch(wgt.ref) 
@{
@case 0; //XLjOȂ
@	break;
@case 1; //100%̃XLjO
@	bone0 = xs->GetBone(wgt.refbone[0]);
@	w0 = wgt.weight[0]; //ł1{[̉eȂ̂w01.0ɂȂ
@	break;
@case 2; //uh
@	bone0 = xs->GetBone(wgt.refbone[0]);
@	bone1 = xs->GetBone(wgt.refbone[1]);
@	w0 = wgt.weight[0]; //EFCg擾
@	w1 = wgt.weight[1]; //EFCg擾
@	break;
@}
typedef struct XSVectorKey
@num̓t[̃CfbNX
@wb_Q
@
typedef struct XSQuaternionKey
@wb_Q
@
typedef struct XSMeshState
@visible̓Aj[VXSMesh̉ԂłB
@͏̗\B
@
typedef struct XSSceneAttribute
@Scene[hŏ񂾕ێ܂B
@
typedef struct XSPluginMsg
@KeynoteOvOCɃANZXۂ
@gpĂ\̂łAʏgp܂B

NX

class CXSDocument
@f[^ANZX̐eB
@
class CXSMesh
@bVNXB
@m_MQObjKeynotegpĂ`pIuWFNgłB
@MetasequoiảʏŔfĂ{[ό`̌ʂ
@擾\łB
@
class CXSBone
@{[NXB
@m_attrɂ̓}eÃovt@C܂B
@MetasequoiaŃovgp鎖͂܂Ǝv܂̂
@{[ɓƎf[^ꍇɂ̓ovɕLڂA
@擾ĂB
@m_pivot[3]ɂ̓{[̌ɂȂOp|S̒_ʒuĂ܂B
@m_pivot[0]=n_Am_pivot[1]=I_Am_pivot[2]Ac̒_B
@m_matrixɂ̓{[̏]񂪓Ă܂B
@m_typeɂ̓{[̑Ă܂B
@݂͕{[̍ۂ1܂B
@pParentɂ̓{[̐eւ̃|C^܂B
@m_cur_matrixɂ݂͌̃{[̎p܂B
@͉]ƈړ܂MatrixłB
@݂̎pXVɂSetAnimationSetAFrameMove
@Keynote̎pXVKv܂B
@
class CXSMaterial
@MetasequoiaƂقړłB
@A{[쐬p̃}eA͖OA
@IWiƃf[^قȂꍇ܂B
@[]LRwȂǂ̈
@
class CXSAnimationSet
@Aj[VɃANZX{NXłB
@m_nInterpolateɂ͕ԃ^Cv܂B
@
class CXSAnimationKey
@KeynoteMatrixł͂ȂAVectorQuaternion
@Aj[V𐧌䂵Ă܂B
@̃L[񂪓܂B
@L[̐̓{[̐ƓłB
@
class CXSAnimationState
@bV̏ύXɑ΂p[^܂B
@LȂ̂XSMeshStatevisiblê݂łB
@XSMeshState̐̓bV̐ƓłB
@
Nbv{[h̃tH[}bg

eLXg`̒PȃtH[}bgłB
ɐ͕svm܂񂪁Aȉ̗lɒ`Ă܂B

ӓ_
Ef[^\ɉsKvł
E啶A͋ʂ܂
Es͖܂

Ewb_
@"xsc 0002"
@K{łB݂̃o[W0002łBȊO͔j܂B

E{[
@"bn %s"
@%sɃ{[w肵܂Bubnv̓{[̗łB

E{[̈ړ
@"v %f %f %f"
@ubnvŌꂽ{[ɑ΂ē삵܂B
@x,y,z̏ŁȀȗ͏o܂B
@ړ\ł{[́A[g{[͕{[݂̂łB
@
E{[̉]
@"q %f %f %f %f"
@ubnvŌꂽ{[ɑ΂ē삵܂B
@x,y,z,w̏ŁȀȗ͏o܂B
@]̓{[̏pɈˑ܂B
@
EbV
@"ms %s"
@%sɃbVw肵܂Bumsv̓bV̗łB

EbV̕\
@"sh %d"
@umsvŌꂽbVɑ΂ē삵܂B
@%dɕ\Ԃw肵܂B0Ŕ\A1ŕ\łB
@
EbVFloatl
@"f %f"
@umsvŌꂽbVɑ΂ē삵܂B
@Keynoteł̓GgIuWFNgɑ΂ē삵܂B
@-1.0f`1.0f̒lɃNv܂B
@
E{[]
@"noiv %d"
@ʏ0łBKeynoteł̓[Vp
@ˑȂ悤Ƀ{[̉]͐e{[̍L^Ă܂B
@{[̃[J]L^\tg̃f[^ȍ~
@̒l1w肷Ɛe̎pl܂B


As_΂₢킹B
