internal SkinnedModelContent(ModelContent model, SkinnedModelBoneContentCollection skeleton,
     AnimationClipContentDictionary animationClips)
 {
     this.model = model;
     this.skeleton = skeleton;
     this.animationClips = animationClips;
 }
Example #2
0
 internal SkinnedModelContent(SkinnedModelMeshContentCollection meshes, SkinnedModelBoneContentCollection skeleton,
     AnimationClipContentDictionary animationClips)
 {
     this.meshes = meshes;
     this.skeleton = skeleton;
     this.animationClips = animationClips;
 }
        public override SkinnedModelContent Process(NodeContent input, ContentProcessorContext context)
        {
            if (input == null)
            {
                throw new ArgumentNullException("input");
            }

            BoneContent rootBone = MeshHelper.FindSkeleton(input);

            ValidateModel(input, rootBone, context);

            // Transform scene according to user defined rotation and scale
            TransformScene(input);

            // Processes model's meshes
            ProcessMeshes(input, context);

            // Processes model's skeleton
            SkinnedModelBoneContentCollection skinnedModelBoneCollection =
                ProcessBones(rootBone, context);

            // Processes model's animations
            AnimationClipContentDictionary animationClipDictionary =
                ProcessAnimations(input, rootBone.Animations, skinnedModelBoneCollection, context);

            OpaqueDataDictionary processorParameters = new OpaqueDataDictionary();

            processorParameters["DefaultEffect"] = MaterialProcessorDefaultEffect.SkinnedEffect;

            // Uses the default model processor
            ModelContent modelContent =
                context.Convert <NodeContent, ModelContent>(input, "ModelProcessor", processorParameters);

            // Return a new skinned model
            return(new SkinnedModelContent(modelContent, skinnedModelBoneCollection,
                                           animationClipDictionary));
        }