public override GameObject CastSpell(GameObject owner, GameObject target = null, Vector3?spawn_pos = null, Quaternion?spawn_rot = null) { if (m_Prefab && owner) { Debug.Log("Target = " + target); Quaternion rot = Quaternion.identity; Vector2 speed = new Vector2(0, 0); GameObject obj = SpellUtilities.InstantiateSpell(m_Prefab, owner, target, this, (Vector3)spawn_pos, rot, spell_velocity: speed, tick_delay: m_TickDelay, tag: "SpellUninteractive"); var sprite = obj.GetComponent <SpriteRenderer>(); if (sprite) { sprite.enabled = false; } foreach (var behavior in m_StartBehaviors) { behavior.m_StartBehavior.OnStartEvent(obj, behavior); } return(obj); } return(null); }
public override void SpellTriggerEnter(Collider2D target, GameObject src) { Debug.Log("TriggerEnter"); GameObject target_obj = target.gameObject; SpellPrefabManager s_manager = src.GetComponent <SpellPrefabManager>(); //if (!m_EnemyOnly) // SpellUtilities.CastSpellOnCollide(target.gameObject, s_manager, m_SpellToCast, GameplayStatics.GetTriggerContactPoint(target.gameObject, src), SpellUtilities.invalid2); //else if (target.gameObject.CompareTag("Enemy")) // SpellUtilities.CastSpellOnCollide(target.gameObject, s_manager, m_SpellToCast, GameplayStatics.GetTriggerContactPoint(target.gameObject, src)); if (m_Damage > 0.0f) { SpellUtilities.DamageOnCollide(target.gameObject, s_manager, m_Damage, SpellUtilities.invalid2); } //if (target_obj != s_manager.GetOwner() && !GameplayStatics.ObjHasTag(target_obj, SpellUtilities.invalid2)) //{ // GameObject.Destroy(src); //} foreach (var behaviour in m_CollBehaviours) { if (behaviour.m_HitBehavior != null) { Debug.Log("Herererererer"); behaviour.m_HitBehavior.OnTriggerHitEvent(target, src, behaviour); } } }
public override void OnCollisionHitEvent(Collision2D collision, GameObject src, OnCollisionData data) { GameObject target_obj = collision.gameObject; SpellPrefabManager s_manager = src.GetComponent <SpellPrefabManager>(); SpellUtilities.DamageOnCollide( collision.gameObject, s_manager, data.m_ApplyDamage.m_Damage, data.m_ApplyDamage.m_ValidHitActors, data.m_ApplyDamage.m_DamageType); }
public override void SpellTriggerTick(Collider2D target, GameObject src) { List <GameObject> ignore = new List <GameObject>(); GameObject owner = src.GetComponent <SpellPrefabManager>().GetOwner(); if (owner) { ignore.Add(owner); } SpellUtilities.PullTargetToSrc(target.gameObject, src, m_PullStrength, ignore, SpellUtilities.invalid); }
public override void SpellCollisionEnter(Collision2D target, GameObject src) { Debug.Log("CollisionEnter"); GameObject target_obj = target.gameObject; SpellPrefabManager s_manager = src.GetComponent <SpellPrefabManager>(); SpellUtilities.CastSpellOnCollide(target.gameObject, s_manager, m_SpellToCast, spawn_pos: GameplayStatics.GetTriggerContactPoint(target.gameObject, src), SpellUtilities.invalid); if (target_obj != s_manager.GetOwner() && !GameplayStatics.ObjHasTag(target_obj, SpellUtilities.invalid)) { GameObject.Destroy(src); } }
public override GameObject CastSpell(GameObject owner, GameObject target = null, Vector3?spawn_pos = null, Quaternion?spawn_rot = null) { if (m_Prefab && owner) { Vector3 dir = target == null ? ((Quaternion)spawn_rot * Vector3.right).normalized : (target.transform.position - owner.transform.position).normalized; Quaternion rot = GameplayStatics.GetRotationFromDir(dir); Vector2 speed = new Vector2(m_ProjectileSpeed * dir.x, m_ProjectileSpeed * dir.y); GameObject obj = SpellUtilities.InstantiateSpell(m_Prefab, owner, target, this, (Vector3)spawn_pos, rot, spell_velocity: speed, tag: "SpellUninteractive"); return(obj); } return(null); }
public override GameObject CastSpell(GameObject owner, GameObject target = null, Vector3?spawn_pos = null, Quaternion?spawn_rot = null) { if (m_Prefab && owner) { Vector3 dir = target == null ? ((Quaternion)spawn_rot * Vector3.right).normalized : (target.transform.position - owner.transform.position).normalized; Quaternion rot = GameplayStatics.GetRotationFromDir(dir); Vector2 speed = new Vector2(0, 0); GameObject obj = SpellUtilities.InstantiateSpell(m_Prefab, owner, target, this, (Vector3)spawn_pos, Quaternion.identity, spell_velocity: speed, tick_delay: m_TickDealay, tag: "SpellUninteractive"); var sprite = obj.GetComponent <SpriteRenderer>(); if (sprite) { sprite.enabled = false; } var manager = obj.GetComponent <SpellPrefabManager>(); if (m_TickBehaviors.Count > 0 && m_TickBehaviors[0] != null) { manager.m_TickDelay = m_TickBehaviors[0].m_Delay; } foreach (var behaviour in m_TickBehaviors) { if (behaviour.m_SCData.m_RemoveOnModified) { UnityAction <float, GameplayStatics.DamageType> action = (dmg, type) => Destroy(obj); manager.GetOwner().GetComponent <StatusComponent>().AddOnTakeDamage((dmg, type) => { action(dmg, type); // status.RemoveOnTakeDamage(action); }); } } //obj.GetComponent<SpellPrefabManager>().SetFollowerOwner(FollowWho.Player); //var status = obj.GetComponent<SpellPrefabManager>().GetOwner().GetComponent<StatusComponent>(); //UnityAction<float, GameplayStatics.DamageType> action = (dmg, type) => Destroy(obj); //status.AddOnTakeDamage( (dmg, type) => { // action(dmg, type); // status.RemoveOnTakeDamage(action); //}); return(obj); } return(null); }
public override void OnCollisionHitEvent(Collision2D collision, GameObject src, OnCollisionData data) { var m_SpellToCast = data.m_CastSpellOnHitData.m_Spell; if (!m_SpellToCast) { return; } var invalids = data.m_CastSpellOnHitData.m_invalid; SpellPrefabManager s_manager = src.GetComponent <SpellPrefabManager>(); if (!data.m_CastSpellOnHitData.m_EnemyOnly) { SpellUtilities.CastSpellOnCollide(collision.gameObject, s_manager, m_SpellToCast, GameplayStatics.GetTriggerContactPoint(collision.gameObject, src), invalids); } else if (collision.gameObject.CompareTag("Enemy")) { SpellUtilities.CastSpellOnCollide(collision.gameObject, s_manager, m_SpellToCast, GameplayStatics.GetTriggerContactPoint(collision.gameObject, src)); } }
public override void SpellTriggerEnter(Collider2D target, GameObject src) { GameObject target_obj = target.gameObject; SpellPrefabManager s_manager = src.GetComponent <SpellPrefabManager>(); if (m_OnHitEffect) { SpellUtilities.SpawnEffectOnCollide(target_obj, s_manager, m_OnHitEffect, SpellUtilities.invalid2); } SpellUtilities.DamageOnCollide(target_obj, s_manager, m_Damage, SpellUtilities.invalid2); if (target_obj != s_manager.GetOwner() && !GameplayStatics.ObjHasTag(target_obj, SpellUtilities.invalid2)) { GameObject.Destroy(src); } // SpellUtilities.DestroyOnCollide(target_obj, s_manager, SpellUtilities.invalid2, true); //if (target_obj != s_manager.GetOwner() && !GameplayStatics.ObjHasTag(target_obj, SpellUtilities.invalid)) // GameObject.Destroy(src); }
public override GameObject CastSpell(GameObject owner, GameObject target = null, Vector3?spawn_pos = null, Quaternion?spawn_rot = null) { if (m_Prefab && owner) { Debug.Log("Target = " + target); Quaternion rot = Quaternion.identity; Vector2 speed = new Vector2(0, 0); GameObject obj = SpellUtilities.InstantiateSpell(m_Prefab, owner, target, this, (Vector3)spawn_pos, rot, spell_velocity: speed, tick_delay: m_TickDealay, tag: "SpellUninteractive"); var sprite = obj.GetComponent <SpriteRenderer>(); if (sprite) { sprite.enabled = false; } obj.GetComponent <SpellPrefabManager>().SetFollowerOwner(FollowWho.Target); return(obj); } return(null); }
public override GameObject CastSpell(GameObject owner, GameObject target = null, Vector3?spawn_pos = null, Quaternion?spawn_rot = null) { if (m_Prefab && owner) { Vector3 dir = target == null ? ((Quaternion)spawn_rot * Vector3.right).normalized : (target.transform.position - owner.transform.position).normalized; Quaternion rot = GameplayStatics.GetRotationFromDir(dir); Vector2 speed = new Vector2(0, 0); GameObject obj = SpellUtilities.InstantiateSpell(m_Prefab, owner, target, this, (Vector3)spawn_pos, rot, spell_velocity: speed, tag: "SpellUninteractive"); GameObject obj2 = SpellUtilities.InstantiateSpell(m_Prefab, owner, target, this, (Vector3)spawn_pos, rot, spell_velocity: speed, tag: "SpellUninteractive"); obj2.GetComponent <SpellPrefabManager>().m_Toggle = true; obj.GetComponent <SpellPrefabManager>().m_TargetInitialPos = target == null?v3_to_v2(owner.transform.position + 8 *dir) : v3_to_v2(target.transform.position); obj2.GetComponent <SpellPrefabManager>().m_TargetInitialPos = target == null?v3_to_v2(owner.transform.position + 8 *dir) : v3_to_v2(target.transform.position); AudioSource.PlayClipAtPoint(m_SpellSound, owner.transform.position); return(obj); } return(null); }
public override GameObject CastSpell(GameObject owner, GameObject target = null, Vector3?spawn_pos = null, Quaternion?spawn_rot = null) { if (m_Prefab && owner) { Debug.Log("Target = " + target); Quaternion rot = Quaternion.identity; Vector2 speed = new Vector2(0, 0); GameObject obj = SpellUtilities.InstantiateSpell(m_Prefab, owner, target, this, (Vector3)spawn_pos, rot, spell_velocity: speed, tick_delay: 0.0f, tag: "SpellUninteractive"); var sprite = obj.GetComponent <SpriteRenderer>(); if (sprite) { sprite.enabled = false; } foreach (var behavior in m_StartBehaviors) { if (behavior != null) { behavior.m_StartBehavior.OnStartEvent(obj, behavior); } } //var manager = obj.GetComponent<SpellPrefabManager>(); //manager.SetFollowerOwner(FollowWho.Player); //manager.GetOwner().GetComponent<EffectManagerComponent>().AddToSpeedMult(m_SpeedMult); //obj.GetComponent<SpellPrefabManager>().AddOnDestruction( () => { // obj.GetComponent<SpellPrefabManager>().GetOwner().layer = LayerMask.NameToLayer("Player"); // manager.GetOwner().GetComponent<EffectManagerComponent>().AddToSpeedMult(-m_SpeedMult); //}); return(obj); } return(null); }
public override void OnTick(GameObject obj) { SpellUtilities.UpdateSpellTTL(obj, this); }