public AnimTreeWithChannelsDataHierarchy Build()
        {
            var resultTree = (Assets.Scripts.Utils.Tree <AnimTreeChannelsHierarchyNode, string>)result;

            resultTree = Assets.Scripts.Utils.Tree <AnimTreeChannelsHierarchyNode, string> .BuildTreeWithProperNodesPuttingOrder(
                resultTree,
                nodesToBuildResultFrom);

            result = (AnimTreeWithChannelsDataHierarchy)resultTree;
            var absoluteSpatialGameChannelsHierarchyContextSimulator = new AbsoluteSpatialGameChannelsHierarchyContextSimulator();

            absoluteSpatialGameChannelsHierarchyContextSimulator.SimulateInSceneAndFillWithAbsoluteOffsets(result);
            return(result);
        }
示例#2
0
        public IEnumerable <RaymapAnimationClipModelFacadeAccessor> IterateAnimationClips()
        {
            animationExportInterface.ResetAnimationState();
            while (animationExportInterface.AreAnimationClipsLeft())
            {
                RaymapAnimationClipModelFacadeAccessor raymapAnimationClipModelFacadeAccessor =
                    new RaymapAnimationClipModelFacadeAccessor(animationExportInterface.GetCurrentAnimationClipName());
                while (animationExportInterface.AreAnimationFramesLeft())
                {
                    AnimTreeWithChannelsDataHierarchy animTreeWithChannelsDataHierarchy =
                        animationExportInterface.DeriveAnimTreeWithChannelsDataHierarchyForGivenFrame(
                            animationExportInterface.GetCurrentFrameNumberForExport());
                    RaymapAnimationKeyframeModelFacadeAccessor raymapAnimationKeyframeModelFacadeAccessor =
                        new RaymapAnimationKeyframeModelFacadeAccessor(animTreeWithChannelsDataHierarchy,
                                                                       animationExportInterface.GetCurrentFrameNumberForExport());
                    raymapAnimationClipModelFacadeAccessor.AddKeyframe(raymapAnimationKeyframeModelFacadeAccessor,
                                                                       raymapAnimationKeyframeModelFacadeAccessor.FrameNumber);
                    animationExportInterface.NextKeyframe();
                }
                yield return(raymapAnimationClipModelFacadeAccessor);

                animationExportInterface.NextAnimationClip();
            }
        }
示例#3
0
        public void SimulateInSceneAndFillWithAbsoluteOffsets(
            AnimTreeWithChannelsDataHierarchy animTreeWithChannelsDataHierarchy)
        {
            Dictionary <string, GameObject> gameObjectsHierarchyRepresentation = new Dictionary <string, GameObject>();

            foreach (var channel in animTreeWithChannelsDataHierarchy.IterateChannels())
            {
                gameObjectsHierarchyRepresentation.Add(channel.Name, CreateChannelInSceneRepresentation(channel));
            }

            foreach (var parentChildPair in animTreeWithChannelsDataHierarchy.IterateParentChildPairs())
            {
                if (parentChildPair.Parent != null)
                {
                    ParentChildTo(gameObjectsHierarchyRepresentation[parentChildPair.Child.Name],
                                  gameObjectsHierarchyRepresentation[parentChildPair.Parent.Name]);
                }
            }

            foreach (var channel in animTreeWithChannelsDataHierarchy.IterateChannels())
            {
                SetChannelTransform(gameObjectsHierarchyRepresentation[channel.Name], channel);
            }

            foreach (var channel in animTreeWithChannelsDataHierarchy.IterateChannels())
            {
                FillChannelModelWithAbsoluteOffsets(channel, gameObjectsHierarchyRepresentation[channel.Name]);
            }

            foreach (var channel in animTreeWithChannelsDataHierarchy.IterateChannels())
            {
                DestroyChannelRepresentation(gameObjectsHierarchyRepresentation[channel.Name]);
            }

            gameObjectsHierarchyRepresentation.Clear();
        }
 public RaymapAnimationKeyframeModelFacadeAccessor(AnimTreeWithChannelsDataHierarchy animTreeWithChannelsDataHierarchy,
                                                   int FrameNumber)
 {
     this.animTreeWithChannelsDataHierarchy = animTreeWithChannelsDataHierarchy;
     this.FrameNumber = FrameNumber;
 }
        public static AnimationFrameModel Convert(AnimTreeWithChannelsDataHierarchy hierarchy)
        {
            AnimationFrameModel result = new AnimationFrameModel();

            result.AddNode(
                null,
                hierarchy.GetRoot().Name,
                new AnimationFrameModelNode(
                    hierarchy.GetRoot().Name,
                    hierarchy.GetRoot().IsKeyframe,
                    new Vector3d(
                        hierarchy.GetRoot().Position.x,
                        hierarchy.GetRoot().Position.y,
                        hierarchy.GetRoot().Position.z),
                    new Vector3d(
                        hierarchy.GetRoot().LocalPosition.x,
                        hierarchy.GetRoot().LocalPosition.y,
                        hierarchy.GetRoot().LocalPosition.z),
                    new Quaternion(
                        hierarchy.GetRoot().Rotation.w,
                        hierarchy.GetRoot().Rotation.x,
                        hierarchy.GetRoot().Rotation.y,
                        hierarchy.GetRoot().Rotation.z),
                    new Quaternion(
                        hierarchy.GetRoot().LocalRotation.w,
                        hierarchy.GetRoot().LocalRotation.x,
                        hierarchy.GetRoot().LocalRotation.y,
                        hierarchy.GetRoot().LocalRotation.z),
                    new Vector3d(
                        hierarchy.GetRoot().Scale.x,
                        hierarchy.GetRoot().Scale.y,
                        hierarchy.GetRoot().Scale.z),
                    new Vector3d(
                        hierarchy.GetRoot().LocalScale.x,
                        hierarchy.GetRoot().LocalScale.y,
                        hierarchy.GetRoot().LocalScale.z),
                    true)
                );

            foreach (var childParentPair in hierarchy.IterateParentChildPairs())
            {
                result.AddNode(
                    childParentPair.Parent.Name,
                    childParentPair.Child.Name,
                    new AnimationFrameModelNode(
                        childParentPair.Child.Name,
                        childParentPair.Child.IsKeyframe,
                        new Vector3d(
                            childParentPair.Child.Position.x,
                            childParentPair.Child.Position.y,
                            childParentPair.Child.Position.z),
                        new Vector3d(
                            childParentPair.Child.LocalPosition.x,
                            childParentPair.Child.LocalPosition.y,
                            childParentPair.Child.LocalPosition.z),
                        new Quaternion(
                            childParentPair.Child.Rotation.w,
                            childParentPair.Child.Rotation.x,
                            childParentPair.Child.Rotation.y,
                            childParentPair.Child.Rotation.z),
                        new Quaternion(
                            childParentPair.Child.LocalRotation.w,
                            childParentPair.Child.LocalRotation.x,
                            childParentPair.Child.LocalRotation.y,
                            childParentPair.Child.LocalRotation.z),
                        new Vector3d(
                            childParentPair.Child.Scale.x,
                            childParentPair.Child.Scale.y,
                            childParentPair.Child.Scale.z),
                        new Vector3d(
                            childParentPair.Child.LocalScale.x,
                            childParentPair.Child.LocalScale.y,
                            childParentPair.Child.LocalScale.z),
                        true));
            }

            return(result);
        }