コード例 #1
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var root        = JObject.Load(reader);
            var leafs       = GetLeafs(root);
            var genericType = objectType.GenericTypeArguments[0];
            var lambdas     = leafs.Select(x => GetLambda(x, genericType, serializer)).ToList();

            var           uptaderType   = typeof(PartialUpdate <>);
            var           makeme        = uptaderType.MakeGenericType(genericType);
            object        o             = Activator.CreateInstance(makeme);
            PartialUpdate partialUpdate = o as PartialUpdate;

            if (partialUpdate == null)
            {
                return(null);
            }
            partialUpdate.Updates = lambdas;
            return(partialUpdate);
        }
コード例 #2
0
        public IActionResult Patch([FromBody] PartialUpdate <Post> partialUpdate)
        {
            var post = new Post
            {
                Author = new Author
                {
                    ContactInfo = new ContactInfo()
                }
            };

            try
            {
                partialUpdate.Apply(post);
                return(Ok());
            }
            catch (NullEntityPatchException npe)
            {
                return(BadRequest(npe.Message));
            }
        }
コード例 #3
0
ファイル: NetworkPlayer.cs プロジェクト: FallenAvatar/PIN
        public void Respawn( )
        {
            var p = Test.DataUtils.GetZone(448).POIs["watchtower"];

            CharacterEntity.Position = p;

            var forcedMove = new ForcedMovement {
                Type         = 1,
                Unk1         = 0,
                Position     = p,
                AimDirection = CharacterEntity.AimDirection,
                Velocity     = Vector3.Zero,
                GameTime     = AssignedShard.CurrentTime,
                KeyFrame     = AssignedShard.CurrentShortTime
            };

            NetChans[ChannelType.ReliableGss].SendGSSClass(forcedMove, CharacterEntity.EntityID);

            var respawnMsg = new Respawned {
                LastUpdateTime = AssignedShard.CurrentTime - 2,
                Unk1           = 0x0100
            };

            NetChans[ChannelType.ReliableGss].SendGSSClass(respawnMsg, CharacterEntity.EntityID);

            var upd = new PartialUpdate();

            upd.Add(new MovementView {
                LastUpdateTime = AssignedShard.CurrentTime,
                Position       = CharacterEntity.Position,
                Rotation       = CharacterEntity.Rotation,
                AimDirection   = CharacterEntity.AimDirection,
                Velocity       = CharacterEntity.Velocity,
                State          = (ushort)CharacterEntity.MovementState,
                Unk1           = 0,
                Jets           = (ushort)CharacterEntity.CharData.JumpJetEnergy,
                AirGroundTimer = 0x3a7f,
                JumpTimer      = 0x3cdb,
                Unk2           = 0,
            });

            upd.Add(new CharacterState {
                State          = 3,
                LastUpdateTime = AssignedShard.CurrentTime - 1,
            });

            upd.Add(new Unknown1 {
            });

            upd.Add(new Unknown2 {
                Unk1           = 0x0100,
                Unk2           = 0x0100,
                LastUpdateTime = AssignedShard.CurrentTime,
            });

            NetChans[ChannelType.ReliableGss].SendGSSClass(upd, CharacterEntity.EntityID, Enums.GSS.Controllers.Character_BaseController);

            upd = new PartialUpdate();

            upd.Add(new Unknown3 {
                Unk1           = 0,
                LastUpdateTime = AssignedShard.CurrentTime,
            });

            upd.Add(new CharacterState {
                State          = 6,
                LastUpdateTime = AssignedShard.CurrentTime,
            });

            upd.Add(new CurrentHealth {
                Value = CharacterEntity.CharData.MaxHealth,
            });

            upd.Add(new Unknown4 {
                Unk1 = 0
            });

            upd.Add(new Unknown1 {
            });

            NetChans[ChannelType.ReliableGss].SendGSSClass(upd, CharacterEntity.EntityID, Enums.GSS.Controllers.Character_BaseController);

            upd = new PartialUpdate();

            upd.Add(new Unknown5 {
                LastUpdateTime = AssignedShard.CurrentTime,
            });

            NetChans[ChannelType.ReliableGss].SendGSSClass(upd, CharacterEntity.EntityID, Enums.GSS.Controllers.Character_BaseController);
        }