73 lines
3.2 KiB
C#
73 lines
3.2 KiB
C#
// ***********************************************************************
|
|
// Copyright (c) 2017 Unity Technologies. All rights reserved.
|
|
//
|
|
// Licensed under the ##LICENSENAME##.
|
|
// See LICENSE.md file in the project root for full license information.
|
|
// ***********************************************************************
|
|
|
|
using NUnit.Framework;
|
|
using System.Collections;
|
|
using Autodesk.Fbx;
|
|
|
|
namespace Autodesk.Fbx.UnitTests
|
|
{
|
|
internal class FbxAnimCurveNodeTest : Base<FbxAnimCurveNode>
|
|
{
|
|
|
|
[Test]
|
|
public void TestBasics()
|
|
{
|
|
var scene = FbxScene.Create(Manager, "scene");
|
|
var node = FbxNode.Create(scene, "node");
|
|
|
|
/* Test all we can test with a non-composite curve node, namely one that points to
|
|
a lcl translation. */
|
|
var animNode = FbxAnimCurveNode.CreateTypedCurveNode(node.LclTranslation, scene);
|
|
Assert.IsFalse(animNode.IsComposite());
|
|
Assert.AreEqual(3, animNode.GetChannelsCount());
|
|
Assert.AreEqual(0, animNode.GetChannelIndex(Globals.FBXSDK_CURVENODE_COMPONENT_X));
|
|
Assert.AreEqual(Globals.FBXSDK_CURVENODE_COMPONENT_Y, animNode.GetChannelName(1));
|
|
|
|
var xcurve = animNode.CreateCurve(animNode.GetName(), Globals.FBXSDK_CURVENODE_COMPONENT_X);
|
|
Assert.IsNotNull(xcurve);
|
|
var xcurve2 = animNode.CreateCurve(animNode.GetName());
|
|
Assert.IsNotNull(xcurve2);
|
|
var ycurve = animNode.CreateCurve(animNode.GetName(), 1);
|
|
Assert.IsNotNull(ycurve);
|
|
|
|
animNode.SetChannelValue(Globals.FBXSDK_CURVENODE_COMPONENT_Z, 6);
|
|
Assert.AreEqual(6, animNode.GetChannelValue(Globals.FBXSDK_CURVENODE_COMPONENT_Z, 0));
|
|
Assert.AreEqual(6, animNode.GetChannelValue(2, 0));
|
|
animNode.SetChannelValue(2, 0);
|
|
|
|
Assert.AreEqual(2, animNode.GetCurveCount(0));
|
|
Assert.AreEqual(1, animNode.GetCurveCount(1, animNode.GetName()));
|
|
|
|
Assert.AreEqual(xcurve, animNode.GetCurve(0));
|
|
Assert.AreEqual(xcurve2, animNode.GetCurve(0,1));
|
|
Assert.AreEqual(xcurve2, animNode.GetCurve(0, 1, animNode.GetName()));
|
|
Assert.IsNull(animNode.GetCurve(1,1));
|
|
|
|
var key = xcurve.KeyAdd(FbxTime.FromSecondDouble(0));
|
|
xcurve.KeySet(key, FbxTime.FromSecondDouble(0), 5);
|
|
key = xcurve.KeyAdd(FbxTime.FromSecondDouble(1));
|
|
xcurve.KeySet(key, FbxTime.FromSecondDouble(1), -5);
|
|
|
|
Assert.IsTrue(animNode.IsAnimated());
|
|
/* TODO: build a composite anim node and test this for real. */
|
|
Assert.IsTrue(animNode.IsAnimated(true));
|
|
|
|
var timespan = new FbxTimeSpan();
|
|
Assert.IsTrue(animNode.GetAnimationInterval(timespan));
|
|
Assert.AreEqual(FbxTime.FromSecondDouble(0), timespan.GetStart());
|
|
Assert.AreEqual(FbxTime.FromSecondDouble(1), timespan.GetStop());
|
|
|
|
/* Get a property that isn't a Double3; add a channel for it. */
|
|
var boolNode = FbxAnimCurveNode.CreateTypedCurveNode(node.VisibilityInheritance, scene);
|
|
Assert.IsFalse(boolNode.IsComposite());
|
|
Assert.IsFalse(boolNode.IsAnimated());
|
|
Assert.IsTrue(boolNode.AddChannel("vis", 1));
|
|
}
|
|
}
|
|
}
|