コード例 #1
0
ファイル: CmpFile.cs プロジェクト: Giperion/Librelancer
 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);
     }
 }
コード例 #2
0
 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);
         }
     }
 }
コード例 #3
0
 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);
         }
     }
 }
コード例 #4
0
ファイル: VMeshRef.cs プロジェクト: youndoldman/Librelancer
 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);
         }
     }
 }