コード例 #1
0
    private void BuildGame()
    {
        for (int i = 0; i < Gamepad.all.Count; i++)
        {
            GameObject clone = Instantiate(player, playersStartingPos[i], Quaternion.identity);
            PlayerKit  ipg   = clone.GetComponent <PlayerKit>();

            ipg.SetGamePad(Gamepad.all[i], playersRotation[i]);
            players.Add(Gamepad.all[i], clone);
            goPlayerList.Add(clone);

            ipg.primaryFireSprite = playerPrimaryFire[i];
            ipg.SetPrimaryFirePool(primaryFirePools[i]);

            Skinner       knife   = clone.GetComponent <Skinner>();
            List <Sprite> sprites = new List <Sprite> {
                playerSkins[i], playerShield[i]
            };
            knife.Init(sprites);

            clone.SetActive(false);
        }

        gr.SetPlayers(players);
    }
コード例 #2
0
 // must call after GetSkins() //
 public ref Skinner[] GetSkinners()
 {
     skinners = XMLHelper.Load <Skinner>(path);
     if (skinners.Length == 0)
     {
         skinners = new Skinner[prices.Length];
         for (int i = 0; i < prices.Length; i++)
         {
             skinners[i] = new Skinner(i, prices[i], false, false);
         }
         skinners[0].unlock = true;
         skinners[0].equip  = true;
     }
     return(ref skinners);
 }
コード例 #3
0
 /// <summary>
 /// <see cref="ISceneRenderer.Update"/>
 /// </summary>
 public void Update(double delta)
 {
     Skinner.Update();
 }
コード例 #4
0
        /// <summary>
        /// Draw a mesh using either its given material or a transparent "ghost" material.
        /// </summary>
        /// <param name="node">Current node</param>
        /// <param name="animated">Specifies whether animations should be played</param>
        /// <param name="showGhost">Indicates whether to substitute the mesh' material with a
        /// "ghost" surrogate material that allows looking through the geometry.</param>
        /// <param name="index">Mesh index in the scene</param>
        /// <param name="mesh">Mesh instance</param>
        /// <param name="flags"> </param>
        /// <returns></returns>
        protected override bool InternDrawMesh(Node node, bool animated, bool showGhost, int index, Mesh mesh, RenderFlags flags)
        {
            if (showGhost)
            {
                Owner.MaterialMapper.ApplyGhostMaterial(mesh, Owner.Raw.Materials[mesh.MaterialIndex],
                                                        flags.HasFlag(RenderFlags.Shaded), flags.HasFlag(RenderFlags.ForceTwoSidedLighting));
            }
            else
            {
                Owner.MaterialMapper.ApplyMaterial(mesh, Owner.Raw.Materials[mesh.MaterialIndex],
                                                   flags.HasFlag(RenderFlags.Textured),
                                                   flags.HasFlag(RenderFlags.Shaded), flags.HasFlag(RenderFlags.ForceTwoSidedLighting));
            }

            if (GraphicsSettings.Default.BackFaceCulling)
            {
                GL.FrontFace(FrontFaceDirection.Ccw);
                GL.CullFace(CullFaceMode.Back);
                GL.Enable(EnableCap.CullFace);
            }
            else
            {
                GL.Disable(EnableCap.CullFace);
            }

            var hasColors    = mesh.HasVertexColors(0);
            var hasTexCoords = mesh.HasTextureCoords(0);

            var skinning = mesh.HasBones && animated;

            foreach (var face in mesh.Faces)
            {
                BeginMode faceMode;
                switch (face.IndexCount)
                {
                case 1:
                    faceMode = BeginMode.Points;
                    break;

                case 2:
                    faceMode = BeginMode.Lines;
                    break;

                case 3:
                    faceMode = BeginMode.Triangles;
                    break;

                default:
                    faceMode = BeginMode.Polygon;
                    break;
                }

                GL.Begin(faceMode);
                for (var i = 0; i < face.IndexCount; i++)
                {
                    var indice = face.Indices[i];
                    if (hasColors)
                    {
                        var vertColor = AssimpToOpenTk.FromColor(mesh.VertexColorChannels[0][indice]);
                        GL.Color4(vertColor);
                    }
                    if (mesh.HasNormals)
                    {
                        Vector3 normal;
                        if (skinning)
                        {
                            Skinner.GetTransformedVertexNormal(node, mesh, (uint)indice, out normal);
                        }
                        else
                        {
                            normal = AssimpToOpenTk.FromVector(mesh.Normals[indice]);
                        }

                        GL.Normal3(normal);
                    }
                    if (hasTexCoords)
                    {
                        var uvw = AssimpToOpenTk.FromVector(mesh.TextureCoordinateChannels[0][indice]);
                        GL.TexCoord2(uvw.X, 1 - uvw.Y);
                    }

                    Vector3 pos;
                    if (skinning)
                    {
                        Skinner.GetTransformedVertexPosition(node, mesh, (uint)indice, out pos);
                    }
                    else
                    {
                        pos = AssimpToOpenTk.FromVector(mesh.Vertices[indice]);
                    }
                    GL.Vertex3(pos);
                }
                GL.End();
            }
            GL.Disable(EnableCap.CullFace);
            return(skinning);
        }