public static void RLCreateEffect(this EcsWorld world, Vector2 position, EffectPreset effectPreset) { var go = VExt.LayoutSpriteObject(ObjData.r_PrefabSprite, position, ObjData.t_GameObjectsOther, SortingLayer.Effect.ToString(), effectPreset.spriteSingle); var e = world.NewEntityWithGameObject(go); e.Set <EffectComponent>().Duration = effectPreset.duration; }
void IEcsRunSystem.Run() { foreach (var i in _attackingEntities) { ref var e = ref _attackingEntities.Entities[i]; var c1 = _attackingEntities.Get1[i]; var c2 = _attackingEntities.Get2[i]; var c3 = _attackingEntities.Get3[i]; if (!c1.Run) { c1.Run = true; var c = e.Set <ActionAnimationComponent>(); c.Animation = AnimatorField.AnimationAttack; } if (c1.Run && !c1.OnAttack && c2.GO.AnimatorActionTime > attackTime) { c1.OnAttack = true; if (c1.PrimaryOrSecondaryWeapon) { _world.RLCreateEffect(c1.TargetPosition, c3.PrimaryWeapon.HitEffect); _world.RLApplyDamage(c1.Target, e, c3.PrimaryWeapon.Damage); if (c3.PrimaryWeapon.SpellPreset != null) { _world.RLApplySpell(c1.Target, e, c3.PrimaryWeapon.SpellPreset); } } else { var go = VExt.LayoutSpriteObject( ObjData.r_PrefabPhysicsSprite, c2.GO.Rigidbody.position, ObjData.t_GameObjectsOther, SortingLayer.Effect.ToString(), c3.SecondaryWeapon.ProjectileSprite); _world.NewEntityWith(out GameObjectComponent goComponent, out ProjectileComponent projectileComponent); goComponent.Transform = go.transform; goComponent.GO = go.GetComponent <PrefabComponentsShortcut>(); projectileComponent.StartPosition = c2.GO.Rigidbody.position; projectileComponent.GoalPosition = c1.TargetPosition; projectileComponent.Caster = e; projectileComponent.Target = c1.Target; projectileComponent.Weapon = c3.SecondaryWeapon; } } if (c1.Run && c1.OnAttack && !c2.GO.AnimatorActionRun) { e.Unset <ActionAttackComponent>(); } }
void CreateTileOverlay(Vector2 target) { if (!CheckObstacleCollision(target)) { var go = VExt.LayoutSpriteObject( ObjData.r_PrefabSprite, target.x, target.y, "tileOverlay", ObjData.t_GameObjectsOther, SortingLayer.TileOverlay.ToString(), ObjData.p_Overlay.spriteSingle); _world.NewEntityWith(out GameObjectComponent goComponent, out TargetTileComponent targetTile); goComponent.Transform = go.transform; goComponent.GO = go.GetComponent <PrefabComponentsShortcut>(); SetupTargetTile(target, ref goComponent, ref targetTile); } }