示例#1
0
        void ProcessNextCutscene()
        {
            var ct       = toPlay.Dequeue();
            int position = 0;
            int i        = 0;

            foreach (var npc in ct.Chars)
            {
                var obj = new GameObject()
                {
                    Nickname = npc.Actor
                };
                var costumeName = Game.GameData.GetCostumeForNPC(npc.Npc);
                Game.GameData.GetCostume(costumeName, out var body, out var head, out var lh, out var rh);
                var skel = new DfmSkeletonManager(body, head, lh, rh);
                obj.RenderComponent = new CharacterRenderer(skel);
                var anmComponent = new AnimationComponent(obj, Game.GameData.GetCharacterAnimations());
                obj.AnimationComponent = anmComponent;
                obj.Components.Add(anmComponent);
                string spot = npc.Spot;
                if (string.IsNullOrEmpty(spot))
                {
                    spot = ct.Reserves[0].Spot[position++];
                }
                var pos = scene.GetObject(spot).Translate;
                obj.SetLocalTransform(Matrix4x4.CreateTranslation(pos));
                var thnObj = new ThnObject();
                thnObj.Name      = npc.Actor;
                thnObj.Rotate    = Matrix4x4.Identity;
                thnObj.Translate = pos;
                thnObj.Object    = obj;
                scene.AddObject(thnObj);
                scene.FidgetScript(new ThnScript(session.Game.GameData.ResolveDataPath(npc.Fidget)));
                if (i == 0)
                {
                    hotspots.Add(new RTCHotspot()
                    {
                        ini = ct, obj = thnObj, npc = npc.Npc
                    });
                }
                i++;
            }
        }