/// <summary> /// Constructs a new animation player. /// </summary> public AnimationPlayer(SkinningData skinningData) { if (skinningData == null) throw new ArgumentNullException("skinningData"); skinningDataValue = skinningData; boneTransforms = new Matrix[skinningData.BindPose.Count]; worldTransforms = new Matrix[skinningData.BindPose.Count]; skinTransforms = new Matrix[skinningData.BindPose.Count]; // Construct the event dictionaries for each clip foreach (string clipName in skinningData.AnimationClips.Keys) { registeredEvents[clipName] = new Dictionary<string, EventCallback>(); } }
//Animated model constructor public LoadModel(Model Model, Vector3 Position, Vector3 Rotation, Vector3 Scale, GraphicsDevice GraphicsDevice, ContentManager Content, LightsAndShadows.Light light) { this.baseWorld = Matrix.CreateScale(Scale) * Matrix.CreateRotationX(Rotation.X) *Matrix.CreateRotationY(Rotation.Y)* Matrix.CreateRotationZ(Rotation.Z)* Matrix.CreateTranslation(Position); shadowCasters = new List<ShadowCasterObject>(); //Console.WriteLine(Position); this.Model = Model; this.graphicsDevice = GraphicsDevice; this.content = Content; this.Position = Position; this.playerTarget = Vector3.Zero; this.Rotation = Rotation; this.Scale = Scale; this.light = light; modelTransforms = new Matrix[Model.Bones.Count]; Model.CopyAbsoluteBoneTransformsTo(modelTransforms); SkinningData skinningData = Model.Tag as SkinningData; if (skinningData == null) throw new InvalidOperationException ("This model does not contain a SkinningData tag."); this.skinningData = Model.Tag as SkinningData; Player = new AnimationPlayer(skinningData); buildBoundingSphereAnimated(); foreach (ModelMesh mesh in Model.Meshes) { if (!mesh.Name.Contains("Bounding")) foreach (ModelMeshPart meshpart in mesh.MeshParts) { ShadowCasterObject shad = new ShadowCasterObject( //meshpart.VertexDeclaration, meshpart.VertexBuffer, meshpart.VertexOffset, //meshpart.VertexStride, meshpart.IndexBuffer, //meshpart.BaseVertex, meshpart.NumVertices, meshpart.StartIndex, meshpart.PrimitiveCount, modelTransforms[mesh.ParentBone.Index] * Matrix.CreateTranslation(Position)); this.shadowCasters.Add(shad); } } }
//Animated model constructor public LoadModel(Model Model, Vector3 Position, Vector3 Rotation, Vector3 Scale, GraphicsDevice GraphicsDevice, ContentManager Content) { this.baseWorld = Matrix.CreateScale(Scale) * Matrix.CreateFromYawPitchRoll( Rotation.Y, Rotation.X, Rotation.Z) * Matrix.CreateTranslation(Position); Console.WriteLine(Position); this.Model = Model; this.graphicsDevice = GraphicsDevice; this.content = Content; this.Position = Position; this.playerTarget = Vector3.Zero; this.Rotation = Rotation; this.Scale = Scale; modelTransforms = new Matrix[Model.Bones.Count]; Model.CopyAbsoluteBoneTransformsTo(modelTransforms); SkinningData skinningData = Model.Tag as SkinningData; if (skinningData == null) throw new InvalidOperationException ("This model does not contain a SkinningData tag."); this.skinningData = Model.Tag as SkinningData; Player = new AnimationPlayer(skinningData); buildBoundingSphereAnimated(); }