Exemplo n.º 1
0
        protected override void OnEventFired(object source, EntityCreationFinishedEventArgs args)
        {
            GameObject entity = GameObjectMappable.RetrieveEntity(args.EntityGuid);

            //Adding a test/demo collider to allow for a clicking volume.
            BoxCollider collider = entity.AddComponent <BoxCollider>();

            collider.isTrigger = true;
            entity.AddComponent <OnMouseClickedComponent>().OnMouseClicked += (sender, eventArgs) =>
            {
                if (eventArgs.Type == MouseButtonClickEventArgs.MouseType.Left)
                {
                    //Check if they are selectable
                    if (!EntityDataFieldMappable.RetrieveEntity(args.EntityGuid).HasBaseObjectFieldFlag(BaseObjectFieldFlags.UNIT_FLAG_NOT_SELECTABLE))
                    {
                        SendService.SendMessage(new ClientInteractNetworkedObjectRequestPayload(args.EntityGuid, ClientInteractNetworkedObjectRequestPayload.InteractType.Selection));

                        //Client side prediction of player target
                        LocalPlayerDetails.EntityData.SetFieldValue(EntityObjectField.UNIT_FIELD_TARGET, args.EntityGuid);
                    }
                }
                else
                {
                    //Check if the entity is interactable before sending a packet.
                    if (EntityDataFieldMappable.RetrieveEntity(args.EntityGuid).HasBaseObjectFieldFlag(BaseObjectFieldFlags.UNIT_FLAG_INTERACTABLE))
                    {
                        SendService.SendMessage(new ClientInteractNetworkedObjectRequestPayload(args.EntityGuid, ClientInteractNetworkedObjectRequestPayload.InteractType.Interaction));
                    }
                }
            };
        }
Exemplo n.º 2
0
        protected override void OnEntityCreationFinished(EntityCreationFinishedEventArgs args)
        {
            //If they have a floating name root we should try to set the name.
            EntityGameObjectDirectory directory = ObjectDirectoryMappable.RetrieveEntity(args.EntityGuid);
            GameObject nameRoot = directory.GetGameObject(EntityGameObjectDirectory.Type.NameRoot);

            IUIText text = nameRoot.GetComponent <IUIText>();

            if (text == null)
            {
                return;
            }

            if (NameQueryable.Exists(args.EntityGuid))
            {
                text.Text = NameQueryable.Retrieve(args.EntityGuid);
            }
            else
            {
                UnityAsyncHelper.UnityMainThreadContext.PostAsync(async() =>
                {
                    string name = await NameQueryable.RetrieveAsync(args.EntityGuid);

                    //Maybe it got deleted before query was done.
                    if (nameRoot == null)
                    {
                        return;
                    }

                    text.Text = NameQueryable.Retrieve(args.EntityGuid);
                });
            }
        }
Exemplo n.º 3
0
        protected sealed override void OnEventFired(object source, EntityCreationFinishedEventArgs args)
        {
            if (args.EntityGuid.EntityType != EntityType.Player)
            {
                return;
            }

            OnEntityCreationFinished(args);
        }
Exemplo n.º 4
0
        protected override void OnEntityCreationFinished(EntityCreationFinishedEventArgs args)
        {
            IEntityDataFieldContainer entityData          = EntityDataMappable.RetrieveEntity(args.EntityGuid);
            GameObjectTemplateModel   objectTemplateModel = GameObjectTemplateMappable.RetrieveEntity(args.EntityGuid);

            //We should generally consider this field static. I cannot even IMAGINE how we'd handle a change to this field on either
            //client or server.
            entityData.SetFieldValue(GameObjectField.GAMEOBJECT_TYPE_ID, (int)objectTemplateModel.ObjectType);
        }
Exemplo n.º 5
0
        protected override void OnEntityCreationFinished(EntityCreationFinishedEventArgs args)
        {
            //Obviously, we only fire the event if the spawned entity is the local player.
            if (IsSpawningEntityLocalPlayer(args.EntityGuid))
            {
                OnLocalPlayerSpawned?.Invoke(this, new LocalPlayerSpawnedEventArgs(args.EntityGuid));

                //Also, once we've encountered the local player spawn we can actually unsubscribe from this event
                Unsubscribe();
            }
        }
Exemplo n.º 6
0
        protected override void OnEntityCreationFinished(EntityCreationFinishedEventArgs args)
        {
            IMovementData             movementData       = MovementDataMappable.RetrieveEntity(args.EntityGuid);
            IEntityDataFieldContainer dataFieldContainer = EntityDataMappable.RetrieveEntity(args.EntityGuid);

            EntityCreationData data = new EntityCreationData(args.EntityGuid, movementData, EntityDataUpdateFactory.Create(new EntityFieldUpdateCreationContext(dataFieldContainer, dataFieldContainer.DataSetIndicationArray)));

            var senderContext = new GenericSingleTargetMessageContext <PlayerSelfSpawnEventPayload>(args.EntityGuid, new PlayerSelfSpawnEventPayload(data));

            Sender.Send(senderContext);
        }
Exemplo n.º 7
0
        protected override void OnEntityCreationFinished(EntityCreationFinishedEventArgs args)
        {
            IEntityDataFieldContainer data = EntityDataContainer.RetrieveEntity(args.EntityGuid);

            UnityAsyncHelper.UnityMainThreadContext.PostAsync(async() =>
            {
                var characterAppearance = await CharacterService.GetCharacterAppearance(args.EntityGuid.EntityId);

                //Even if the character has logged off we're just setting an unused data container so it's ok.
                if (characterAppearance.isSuccessful)
                {
                    data.SetFieldValue(BaseObjectField.UNIT_FIELD_DISPLAYID, characterAppearance.Result.AvatarModelId);
                }
            });
        }
Exemplo n.º 8
0
        protected override void OnEntityCreationFinished(EntityCreationFinishedEventArgs args)
        {
            IEntityDataFieldContainer dataContainer = EntityDataMappable.RetrieveEntity(args.EntityGuid);

            switch (dataContainer.GetEnumFieldValue <GameObjectType>(GameObjectField.GAMEOBJECT_TYPE_ID))
            {
            //Visual doesn't have behaviours
            case GameObjectType.Visual:
                return;

            default:
                CreateBehaviourComponent(args.EntityGuid);
                break;
            }
        }
Exemplo n.º 9
0
 protected override void OnEntityCreationFinished(EntityCreationFinishedEventArgs args)
 {
     //TODO: left over from bad desigh.
 }
Exemplo n.º 10
0
 protected override void OnEntityCreationFinished(EntityCreationFinishedEventArgs args)
 {
 }
Exemplo n.º 11
0
 protected override void OnEventFired(object source, EntityCreationFinishedEventArgs args)
 {
     WorldActor.Tell(new CreateEntityActorMessage(args.EntityGuid));
 }
Exemplo n.º 12
0
 protected override void OnEntityCreationFinished(EntityCreationFinishedEventArgs args)
 {
     //Right now it's just default.
     PlayerPersistenceConfigMappable.AddObject(args.EntityGuid, new EntitySaveableConfiguration());
 }