Esempio n. 1
0
        void SpaceInitialSpawn(SaveGame sg)
        {
            var sys = Game.GameData.GetSystem(System);

            Game.RequestWorld(sys, (world) =>
            {
                World = world;
                rpcClient.SpawnPlayer(System, world.TotalTime, Position, Orientation);
                world.SpawnPlayer(this, Position, Orientation);
                msnRuntime?.EnteredSpace();
            });
        }
Esempio n. 2
0
        void Launch()
        {
            var b   = game.GameData.GetBase(Base);
            var sys = game.GameData.GetSystem(b.System);

            game.RequestWorld(sys, (world) =>
            {
                this.World = world;
                var obj    = sys.Objects.FirstOrDefault((o) =>
                {
                    return(o.Dock != null &&
                           o.Dock.Kind == DockKinds.Base &&
                           o.Dock.Target.Equals(Base, StringComparison.OrdinalIgnoreCase));
                });
                System      = b.System;
                Orientation = Quaternion.Identity;
                Position    = Vector3.Zero;
                if (obj == null)
                {
                    FLLog.Error("Base", "Can't find object in " + sys + " docking to " + b);
                }
                else
                {
                    Position    = obj.Position;
                    Orientation = (obj.Rotation ?? Matrix4x4.Identity).ExtractRotation();
                    Position    = Vector3.Transform(new Vector3(0, 0, 500), Orientation) + obj.Position; //TODO: This is bad
                }
                Client.SendPacket(new SpawnPlayerPacket()
                {
                    System      = System,
                    Position    = Position,
                    Orientation = Orientation,
                    Ship        = Character.EncodeLoadout()
                }, PacketDeliveryMethod.ReliableOrdered);
                world.SpawnPlayer(this, Position, Orientation);
                msnRuntime?.EnteredSpace();
            });
        }