Ejemplo n.º 1
0
 protected IEnumerable <CGameCtnGhost> ExtractGhosts(CGameCtnMediaClip clip)
 {
     foreach (var track in clip.Tracks)
     {
         foreach (var block in track.Blocks)
         {
             if (block is CGameCtnMediaBlockGhost ghostBlock)
             {
                 yield return(ghostBlock.GhostModel);
             }
         }
     }
 }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            var fileName = args.FirstOrDefault();

            if (fileName == null)
            {
                return;
            }

            Log.OnLogEvent += Log_OnLogEvent;

            var node = GameBox.ParseNode(fileName);

            if (node is CGameCtnGhost ghost)
            {
                var clip = new CGameCtnMediaClip();
                clip.CreateChunk <CGameCtnMediaClip.Chunk0307900D>();

                var track = new CGameCtnMediaTrack()
                {
                    Name = ghost.GhostNickname
                };
                track.CreateChunk <CGameCtnMediaTrack.Chunk03078001>();
                track.CreateChunk <CGameCtnMediaTrack.Chunk03078005>();

                clip.Tracks.Add(track);

                var ghostBlock = new CGameCtnMediaBlockGhost()
                {
                    GhostModel = ghost,
                    Keys       = new List <CGameCtnMediaBlockGhost.Key>
                    {
                        new CGameCtnMediaBlockGhost.Key(),
                        new CGameCtnMediaBlockGhost.Key()
                        {
                            Time = ghost.RaceTime.GetValueOrDefault(TimeSpan.FromSeconds(3))
                        }
                    }
                };

                var chunk002 = ghostBlock.CreateChunk <CGameCtnMediaBlockGhost.Chunk030E5002>();
                chunk002.Version = 3;

                track.Blocks.Add(ghostBlock);

                clip.Save(Path.GetFileNameWithoutExtension(Path.GetFileNameWithoutExtension(node.GBX.FileName)) + ".Clip.Gbx");
            }
        }
Ejemplo n.º 3
0
 public ClipTrigger(CGameCtnMediaClip clip, Trigger trigger)
 {
     Clip    = clip;
     Trigger = trigger;
 }