Files
bullet3/Extras/FCollada/FColladaTest/FCTestExportImport/FCTEIVisualScene.cpp
2006-05-25 19:18:29 +00:00

96 lines
3.9 KiB
C++

/*
Copyright (C) 2006 Feeling Software Inc.
Available only to licensees.
Distribution of this file or its content is strictly prohibited.
*/
#include "StdAfx.h"
#include "FCDocument/FCDSceneNode.h"
#include "FCDocument/FCDTransform.h"
#include "FCTestExportImport.h"
static const float sampleMatrix[16] = { 0.0f, 2.0f, 0.4f, 2.0f, 7.0f, 0.2f, 991.0f, 2.5f, 11.0f, 25.0f, 1.55f, 0.02f, 0.001f, 12.0f, 1.02e-3f };
namespace FCTestExportImport
{
void FillVisualScene(FCDSceneNode* scene)
{
FCDSceneNode* child = scene->AddChildNode();
FCDTRotation* rotation = (FCDTRotation*) child->AddTransform(FCDTransform::ROTATION);
rotation->SetAxis(FMVector3::ZAxis);
rotation->SetAngle(45.0f);
FCDTTranslation* translation = (FCDTTranslation*) child->AddTransform(FCDTransform::TRANSLATION);
translation->SetTranslation(0.0f, 4.0f, 6.0f);
FCDTScale* scale = (FCDTScale*) child->AddTransform(FCDTransform::SCALE);
scale->SetScale(FMVector3(3.0f, 0.5f, 2.0f));
FCDTMatrix* matrix = (FCDTMatrix*) child->AddTransform(FCDTransform::MATRIX);
matrix->SetTransform(FMMatrix44(sampleMatrix));
FCDTLookAt* lookAt = (FCDTLookAt*) child->AddTransform(FCDTransform::LOOKAT);
lookAt->SetPosition(1.0f, 2.0f, 3.0f);
lookAt->SetTarget(5.0f, 6.0f, 9.0f);
lookAt->SetUp(12.0f, 0.3f, 0.4f);
FCDTSkew* skew = (FCDTSkew*) child->AddTransform(FCDTransform::SKEW);
skew->SetAroundAxis(FMVector3::ZAxis);
skew->SetRotateAxis(FMVector3::XAxis);
skew->SetAngle(60.0f);
}
void CheckVisualScene(FCDSceneNode* imported)
{
// NOTE: the transforms must be in the same order as the exported order.
PassIf(imported->GetChildrenCount() == 1);
PassIf(imported->GetParent() == NULL);
FCDSceneNode* child = imported->GetChild(0);
FailIf(child == NULL);
PassIf(child->GetParent() == imported);
PassIf(child->GetTransformCount() == 6);
FCDTransform* transform = child->GetTransform(0);
FailIf(transform == NULL);
FailIf(transform->GetParent() != child);
PassIf(transform->GetType() == FCDTransform::ROTATION);
FCDTRotation* rotation = (FCDTRotation*) transform;
PassIf(IsEquivalent(rotation->GetAxis(), FMVector3::ZAxis));
PassIf(IsEquivalent(rotation->GetAngle(), 45.0f));
transform = child->GetTransform(1);
FailIf(transform == NULL);
FailIf(transform->GetParent() != child);
PassIf(transform->GetType() == FCDTransform::TRANSLATION);
FCDTTranslation* translation = (FCDTTranslation*) transform;
PassIf(IsEquivalent(translation->GetTranslation(), FMVector3(0.0f, 4.0f, 6.0f)));
transform = child->GetTransform(2);
FailIf(transform == NULL);
FailIf(transform->GetParent() != child);
PassIf(transform->GetType() == FCDTransform::SCALE);
FCDTScale* scale = (FCDTScale*) transform;
PassIf(IsEquivalent(scale->GetScale(), FMVector3(3.0f, 0.5f, 2.0f)));
transform = child->GetTransform(3);
FailIf(transform == NULL);
FailIf(transform->GetParent() != child);
PassIf(transform->GetType() == FCDTransform::MATRIX);
FCDTMatrix* mx = (FCDTMatrix*) transform;
PassIf(IsEquivalent(mx->GetTransform(), FMMatrix44(sampleMatrix)));
transform = child->GetTransform(4);
FailIf(transform == NULL);
FailIf(transform->GetParent() != child);
PassIf(transform->GetType() == FCDTransform::LOOKAT);
FCDTLookAt* lookAt = (FCDTLookAt*) transform;
PassIf(IsEquivalent(lookAt->GetPosition(), FMVector3(1.0f, 2.0f, 3.0f)));
PassIf(IsEquivalent(lookAt->GetTarget(), FMVector3(5.0f, 6.0f, 9.0f)));
PassIf(IsEquivalent(lookAt->GetUp(), FMVector3(12.0f, 0.3f, 0.4f)));
transform = child->GetTransform(5);
FailIf(transform == NULL);
FailIf(transform->GetParent() != child);
PassIf(transform->GetType() == FCDTransform::SKEW);
FCDTSkew* skew = (FCDTSkew*) transform;
PassIf(IsEquivalent(skew->GetAroundAxis(), FMVector3::ZAxis));
PassIf(IsEquivalent(skew->GetRotateAxis(), FMVector3::XAxis));
PassIf(IsEquivalent(skew->GetAngle(), 60.0f));
}
};