Exemple #1
0
    private void LaunchAbilityPosition()
    {
        Vector3    spawnPos      = Vector3.zero;
        GameObject projectileObj = null;

        switch (m_ability.AbilityBase.SkillShotType)
        {
        case ESkillShotType.FrontSkill:
            spawnPos = m_attacker.GetTransformPosition(m_ability.AbilityBase.LaunchPos).transform.position;
            break;

        case ESkillShotType.FloorSkill:
            if (m_ability.AbilityBase.LaunchPos == EEntityTransform.Floor)
            {
                spawnPos = Utils.Vector2ToVector3(m_targetPos);
            }
            else
            {
                spawnPos = m_attacker.GetTransformPosition(m_ability.AbilityBase.LaunchPos).transform.position;
            }
            break;

        default:
            break;
        }
        projectileObj = SpawnManager.instance.InstantiatePool(m_ability.AbilityBase.ProjectileIdentifier, spawnPos, m_attacker.GetTransformPosition(m_ability.AbilityBase.LaunchPos).transform.rotation);
        AbilityComponent projectile = projectileObj.GetComponent <AbilityComponent>();

        projectile.Initialize(m_attacker, Utils.Vector2ToVector3(m_targetPos), m_ability, m_attacker.EntityAbilities.ServerAbilityHit);
        int projectileInstanceID = projectile.gameObject.GetInstanceID();

        projectile.ServerInstanceId = m_ability.AbilityBase.ProjectileIdentifier + "_" + projectileInstanceID;
        m_attacker.EntityAbilities.CacheActiveAbility(projectile);
        m_attacker.EntityAbilities.RpcSpawnPositionProjectile(m_attacker.transform.rotation, m_ability.AbilityBase.ProjectileIdentifier, projectile.ServerInstanceId, projectile.Ability.AbilityBase.Identifier, Utils.Vector2ToVector3(m_targetPos), NetworkTime.Instance.ServerStep());
    }
    public void RpcSpawnImpactParticle(string prefabName, int transformPos)
    {
        EntityTransform entityTransform = m_mobaEntity.GetTransformPosition((EEntityTransform)transformPos);
        GameObject      particle        = SpawnManager.instance.InstantiatePool(prefabName, entityTransform.transform.position, entityTransform.transform.rotation);

        particle.transform.SetParent(entityTransform.transform);
    }
Exemple #3
0
 public void Initialize(MobaEntity attacker, MobaEntity target, Ability ability, OnProjectileExpended expendedCallback = null)
 {
     m_expended           = false;
     m_attacker           = attacker;
     m_target             = target;
     m_targetTransform    = target.GetTransformPosition(EEntityTransform.Center);
     m_ability            = ability;
     onProjectileExpended = expendedCallback;
     m_targetTeam         = m_attacker.GetAbilityTargetTeam(m_ability.AbilityBase.Allegiance);
     OnStart();
 }
    public Particle ClientSpawnParticle(MobaEntity entity, string particlePrefab, EEntityTransform position)
    {
        EntityTransform entityTransform      = entity.GetTransformPosition(position);
        GameObject      sideEffectObj        = SpawnManager.instance.InstantiatePool(particlePrefab, entityTransform.transform.position, entityTransform.transform.rotation);
        int             projectileInstanceID = sideEffectObj.GetInstanceID();
        Particle        prefab = sideEffectObj.GetComponent <Particle>();

        prefab.Initialize(particlePrefab + "_" + projectileInstanceID, entity);
        m_particles.Add(prefab.ServerInstanceId, prefab);
        return(prefab);
    }
Exemple #5
0
    public override void Run()
    {
        m_attacker.transform.rotation = m_entityRotation;
        AbilityBase abilityBase = AbilityManager.instance.GetAbilityBase(m_abilityIdentifier);
        Ability     ability     = m_attacker.EntityAbilities.GetAbility(abilityBase.AttackType);

        EntityTransform  launchPos        = m_attacker.GetTransformPosition(abilityBase.LaunchPos);
        GameObject       projectileObj    = SpawnManager.instance.InstantiatePool(m_projectileIdentifier + "Client", launchPos.transform.position, launchPos.transform.rotation);
        AbilityComponent abilityComponent = projectileObj.GetComponent <AbilityComponent>();

        abilityComponent.ServerInstanceId = m_instanceId;
        abilityComponent.Initialize(m_attacker, m_targetPos, ability);
        m_attacker.EntityAbilities.CacheActiveAbility(abilityComponent);
    }
Exemple #6
0
    public virtual void ApplyEffect(Ability ability, MobaEntity attacker, MobaEntity reciever)
    {
        m_ability      = ability;
        m_attacker     = attacker;
        m_reciever     = reciever;
        m_endTime      = Time.time + m_duration;
        m_intervalTime = m_duration / (float)m_ticks;

        if (!string.IsNullOrEmpty(m_prefab))
        {
            EntityTransform entityTransform = reciever.GetTransformPosition(m_effectPos);
            m_prefabGameobject = reciever.EntityAbilities.SpawnSideEffectPrefab(this, entityTransform);
            m_prefabGameobject.transform.SetParent(entityTransform.transform);
        }
    }
    private void RpcSpawnParticle(string entityInstanceId, string particlePrefab, string serverInstanceId, int position)
    {
        MobaEntity entity = GameManager.instance.GetMobaEntity(entityInstanceId);

        if (entity == null)
        {
            Debug.LogError("Entity not found");
            return;
        }
        EntityTransform entityTransform = entity.GetTransformPosition((EEntityTransform)position);
        GameObject      sideEffectObj   = SpawnManager.instance.InstantiatePool(particlePrefab, entityTransform.transform.position, entityTransform.transform.rotation);
        Particle        prefab          = sideEffectObj.GetComponent <Particle>();

        prefab.Initialize(serverInstanceId, entity);
        m_particles.Add(prefab.ServerInstanceId, prefab);
    }
Exemple #8
0
    private void LaunchAbilityTarget()
    {
        switch (m_ability.AbilityBase.Processor)
        {
        case AbilityProcessorType.DamageImpact:
            foreach (MobaEntity entity in m_targets)
            {
                new DamageProcess(m_attacker, entity, m_ability);
                if (m_ability.AbilityBase.ImpactParticleIdentifier != "")
                {
                    EntityTransform impactTarget = entity.GetTransformPosition(m_ability.AbilityBase.LaunchPos);
                    SpawnManager.instance.InstantiatePool(m_ability.AbilityBase.ImpactParticleIdentifier, impactTarget.transform.position, impactTarget.transform.rotation);
                    entity.EntityAbilities.RpcSpawnImpactParticle(m_ability.AbilityBase.ImpactParticleIdentifier, (int)EEntityTransform.Center);
                }
            }
            break;

        case AbilityProcessorType.LaunchAbility:
            foreach (MobaEntity targetEntity in m_targets)
            {
                EntityTransform  spawnPos      = m_attacker.GetTransformPosition(m_ability.AbilityBase.LaunchPos);
                GameObject       projectileObj = SpawnManager.instance.InstantiatePool(m_ability.AbilityBase.ProjectileIdentifier, spawnPos.transform.position, spawnPos.transform.rotation);
                AbilityComponent projectile    = projectileObj.GetComponent <AbilityComponent>();
                projectile.Initialize(m_attacker, targetEntity, m_ability, m_attacker.EntityAbilities.ServerAbilityHit);
                int projectileInstanceID = projectile.gameObject.GetInstanceID();
                projectile.ServerInstanceId = m_ability.AbilityBase.ProjectileIdentifier + "_" + projectileInstanceID;
                m_attacker.EntityAbilities.CacheActiveAbility(projectile);
                m_attacker.EntityAbilities.RpcSpawnTargetProjectile(m_attacker.transform.rotation, m_ability.AbilityBase.ProjectileIdentifier, projectile.ServerInstanceId, projectile.Ability.AbilityBase.Identifier, targetEntity.InstanceId, NetworkTime.Instance.ServerStep());
            }
            break;

        case AbilityProcessorType.CastSideEffectsOnly:
            foreach (MobaEntity targetEntity in m_targets)
            {
                targetEntity.EntityAbilities.ApplyAbilityEffects(m_ability, m_attacker);
            }
            break;

        default:
            break;
        }
    }
Exemple #9
0
 public void Initialize(MobaEntity entity)
 {
     if (m_entity == null)
     {
         m_entity = entity;
         if (!string.IsNullOrEmpty(entity.EntityData.m_canvasPrefab))
         {
             GameObject      canvasObj       = SpawnManager.instance.InstantiatePool(entity.EntityData.m_canvasPrefab, Vector3.zero, Quaternion.identity);
             EntityTransform canvasTrasnform = m_entity.GetTransformPosition(EEntityTransform.Head);
             canvasObj.transform.SetParent(canvasTrasnform.transform);
             canvasObj.transform.localPosition = Vector3.zero;
             m_characterCanvas = canvasObj.GetComponent <CharacterCanvas>();
             m_characterCanvas.Initialize(m_entity);
         }
     }
     else
     {
         m_characterCanvas.Initialize(m_entity);
     }
 }