Example #1
0
        private void OnCreateRemoteObject(ref CreateRemoteObject p)
        {
            int index = p.Index;

            if ((index & 0xff) == localPlayerIndex)
            {
                return;
            }

            if (remoteActors.ContainsKey(index))
            {
                return;
            }

            EventType eventType = p.EventType;

            ushort[] eventParams = p.EventParams;
            Vector3  pos         = p.Pos;

            Root.DispatchToMainThread(delegate {
                ActorBase actor = EventSpawner.SpawnEvent(ActorInstantiationFlags.None, eventType, pos, eventParams);
                IRemotableActor remotableActor = actor as IRemotableActor;
                if (remotableActor == null)
                {
                    return;
                }

                remoteActors[index] = remotableActor;

                AddObject(actor);
            });
        }
Example #2
0
        public override void RemoveActor(ActorBase actor)
        {
            base.RemoveActor(actor);

            IRemotableActor remotableActor = actor as IRemotableActor;

            if (remotableActor == null)
            {
                return;
            }

            int actorIndex = remotableActor.Index;

            if (!localRemotableActors.Remove(actorIndex))
            {
                return;
            }

            DestroyRemotableActor p = new DestroyRemotableActor();

            p.Index = actorIndex;
            net.Send(p, 5, NetDeliveryMethod.ReliableUnordered, PacketChannels.Main);
        }
Example #3
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++;
        }