FSO.Vitaboy.Skeleton.GetBone C# (CSharp) Method

GetBone() public method

Gets a bone from this Skeleton instance.
public GetBone ( string name ) : Bone
name string The name of a bone.
return Bone
        public Bone GetBone(string name)
        {
            return Bones.FirstOrDefault(x => x.Name == name);
        }

Usage Example

Ejemplo n.º 1
0
        public void DrawHeadObject(GraphicsDevice device, Effect effect)
        {
            //0: high reflective
            //1: light reflective
            //2: outline
            if (effect.Techniques[1] == effect.CurrentTechnique)
            {
                return;
            }
            var headObj = HeadObject;

            if (headObj == null)
            {
                return;
            }
            var oldTech = effect.CurrentTechnique;

            effect.CurrentTechnique = effect.Techniques[6];
            device.RasterizerState  = RasterizerState.CullClockwise;

            var trans = Matrix.Invert(effect.Parameters["View"].GetValueMatrix()).Translation;

            effect.Parameters["HOCameraPosition"].SetValue(trans);
            effect.Parameters["World"].SetValue(Matrix.CreateScale(1.33f) * Matrix.CreateRotationY(HeadObjectRotation) * Matrix.CreateTranslation(Skeleton.GetBone("HEAD").AbsoluteMatrix.Translation + new Vector3(0, 3.25f, 0)) * effect.Parameters["World"].GetValueMatrix());

            for (int i = 0; i < headObj.Geoms.Count; i++)
            {
                var multi = 0.5f / (headObj.Geoms.Count - 1);
                var geom  = headObj.Geoms[i];
                foreach (var item in geom)
                {
                    effect.Parameters["MeshTex"].SetValue(item.Key);
                    effect.Parameters["HOToonSpecThresh"].SetValue(0.5f);
                    effect.Parameters["HOToonSpecColor"].SetValue(new Vector3(multi * ((headObj.Geoms.Count - 1) - i)));

                    effect.CurrentTechnique.Passes[0].Apply();
                    //if (i != 1) device.RasterizerState = RasterizerState.CullClockwise;
                    device.SetVertexBuffer(item.Value.Verts);
                    device.Indices = item.Value.Indices;
                    device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, item.Value.PrimCount);
                    //if (i != 1) device.RasterizerState = RasterizerState.CullCounterClockwise;
                }
            }
            device.RasterizerState  = RasterizerState.CullCounterClockwise;
            effect.CurrentTechnique = oldTech;
        }