You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
3.2 KiB
78 lines
3.2 KiB
using System.Collections.Generic;
|
|
using Entitas;
|
|
using UnityEngine;
|
|
|
|
namespace CoreGame.Render
|
|
{
|
|
public class SurroundBulletSys : IExecuteSystem
|
|
{
|
|
private readonly CombatContext m_Context;
|
|
private readonly IGroup<CombatEntity> m_SurroundBulletGroup;
|
|
private readonly List<CombatEntity> m_CacheEntities = new List<CombatEntity>();
|
|
|
|
public SurroundBulletSys(CombatContext context)
|
|
{
|
|
m_Context = context;
|
|
m_SurroundBulletGroup = context.GetGroup(CombatMatcher.SurroundBullet);
|
|
}
|
|
|
|
public void Execute(float deltaTime)
|
|
{
|
|
// m_SurroundBulletGroup.GetEntities(m_CacheEntities);
|
|
// for (var i = 0; i < m_CacheEntities.Count; i++)
|
|
// {
|
|
// var bulletEnt = m_CacheEntities[i];
|
|
// if (bulletEnt.bullet.hasInvalidated)
|
|
// continue;
|
|
// var trans = bulletEnt.transformProxy;
|
|
// var surroundBullet = bulletEnt.surroundBullet;
|
|
// var handleEnt = ((CombatEntity)m_Context.GetEntity(surroundBullet.handleEid));
|
|
// if (handleEnt.IsValid() == false)
|
|
// {
|
|
// var bc = bulletEnt.bullet;
|
|
// if (bc.isTriggerHitSkillOnEnd || bc.endAbilityId != 0)
|
|
// {
|
|
// BulletSrv.InvalidateBullet(bulletEnt);
|
|
// if (bc.isTriggerHitSkillOnEnd)
|
|
// {
|
|
// BulletSrv.BulletSkillCast(bulletEnt, 0, trans.position, bc.abilityId);
|
|
// }
|
|
//
|
|
// if (bc.endAbilityId != 0)
|
|
// {
|
|
// BulletSrv.BulletSkillCast(bulletEnt, 0, trans.position, bc.endAbilityId);
|
|
// }
|
|
// }
|
|
// else
|
|
// {
|
|
// BulletSrv.DestroyBullet(bulletEnt);
|
|
// }
|
|
// continue;
|
|
// }
|
|
// var handleTransPos = handleEnt.transformProxy.position;
|
|
// var dir = Vector2.right;
|
|
// var angleRadians = Mathf.Deg2Rad * surroundBullet.angle;
|
|
// var x = dir.x * Mathf.Cos(angleRadians) - dir.y * Mathf.Sin(angleRadians);
|
|
// var y = dir.x * Mathf.Sin(angleRadians) + dir.y * Mathf.Cos(angleRadians);
|
|
// dir.x = x;
|
|
// dir.y = y;
|
|
//
|
|
// var targetPos = handleTransPos + dir * surroundBullet.distance;
|
|
//
|
|
// surroundBullet.angle += -bulletEnt.bullet.speed * deltaTime;
|
|
// switch (surroundBullet.angle)
|
|
// {
|
|
// case > 360f:
|
|
// surroundBullet.angle -= 360f;
|
|
// break;
|
|
// case < -360f:
|
|
// surroundBullet.angle += 360f;
|
|
// break;
|
|
// }
|
|
//
|
|
// trans.SetDirection(targetPos - trans.position);
|
|
// trans.SetPosition(targetPos);
|
|
// }
|
|
}
|
|
}
|
|
}
|