private void OnCreateRemotableActor(ref CreateRemotableActor p)
        {
            int index = p.Index;

            Player         player;
            RemotableActor remotableActor = new RemotableActor {
                Index       = index,
                EventType   = p.EventType,
                EventParams = p.EventParams,
                Pos         = p.Pos
            };

            lock (sync) {
                if (!players.TryGetValue(p.SenderConnection, out player))
                {
                    return;
                }

                if (player.Index != (index & 0xff))
                {
                    return;
                }

                remotableActor.Owner = player;

                remotableActors[index] = remotableActor;

                remotableActor.AABB = new AABB(remotableActor.Pos.Xy, 30, 30);
                collisions.AddProxy(remotableActor);
            }

            Send(new CreateRemoteObject {
                Index       = remotableActor.Index,
                EventType   = remotableActor.EventType,
                EventParams = remotableActor.EventParams,
                Pos         = remotableActor.Pos,
            }, 13, playerConnections, NetDeliveryMethod.ReliableUnordered, PacketChannels.Main);
        }
Example #2
0
        public override void AddActor(ActorBase actor)
        {
            base.AddActor(actor);

            IRemotableActor remotableActor = actor as IRemotableActor;

            if (remotableActor == null)
            {
                return;
            }

            int actorIndex = localPlayerIndex | (lastRemotableActorIndex << 8);

            remotableActor.Index             = actorIndex;
            localRemotableActors[actorIndex] = remotableActor;

            CreateRemotableActor p = new CreateRemotableActor();

            remotableActor.OnCreateRemotableActor(ref p);
            p.Index = actorIndex;
            net.Send(p, 13, NetDeliveryMethod.ReliableUnordered, PacketChannels.Main);

            lastRemotableActorIndex++;
        }
Example #3
0
 public void OnCreateRemotableActor(ref CreateRemotableActor p)
 {
     p.EventType   = EventType.WeaponBlaster;
     p.EventParams = new ushort[] { upgrades };
     p.Pos         = Transform.Pos;
 }
Example #4
0
 public void OnCreateRemotableActor(ref CreateRemotableActor p)
 {
     p.EventType = EventType.WeaponTNT;
     p.Pos       = Transform.Pos;
 }