public void Update(ICamera camera, TimeSpan delta, TimeSpan totalTime) { if (MaterialAnim != null) { MaterialAnim.Update((float)totalTime.TotalSeconds); } foreach (var part in Parts.Values) { part.Update(camera, delta, totalTime); } }
public void Update(ICamera camera, TimeSpan delta, TimeSpan totalTime) { if (ready) { if (MaterialAnim != null) { MaterialAnim.Update((float)totalTime.TotalSeconds); } //Levels[0].Update(camera, delta); for (int i = 0; i < Levels.Length; i++) { Levels[i].Update(camera, delta); } } }
public MaterialAnimCollection(IntermediateNode node) { foreach (var n in node) { if (n is IntermediateNode) { var anm = new MaterialAnim(n as IntermediateNode); Anims.Add(n.Name, anm); updateList.Add(anm); } else { throw new Exception("Invalid node in MaterialAnim " + node.Name); } } }
public void DrawBuffer(CommandBuffer buffer, Matrix4 world, ref Lighting light, MaterialAnimCollection mc, Material overrideMat = null) { if (ready) { if (needsOptimize) { Optimize(); } if (optimized != null) { for (int i = 0; i < optimized.Optimized.Length; i++) { var m = optimized.Optimized[i].Material; if (m == null) { m = vMeshLibrary.FindMaterial(0); } MaterialAnim ma = null; if (mc != null) { mc.Anims.TryGetValue(m.Name, out ma); } buffer.AddCommand( m.Render, ma, world, light, Mesh.VertexBuffer, PrimitiveTypes.TriangleList, optimized.Optimized[i].VertexOffset, optimized.Optimized[i].StartIndex, optimized.Optimized[i].PrimitiveCount, SortLayers.OBJECT, 0 ); } for (int i = 0; i < optimized.NormalDraw.Length; i++) { Mesh.Meshes[optimized.NormalDraw[i]].DrawBuffer(buffer, Mesh, Mesh.VertexOffset, StartVertex, Mesh.IndexOffset, world, ref light, mc, overrideMat); } } else { Mesh.DrawBuffer(buffer, StartMesh, endMesh, StartVertex, world, ref light, Center, mc, overrideMat); } } }