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); }
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); }
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); }
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); }
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; } }
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); } }