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); }
// 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); }
/// <summary> /// <see cref="ISceneRenderer.Update"/> /// </summary> public void Update(double delta) { Skinner.Update(); }
/// <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); }