Yume Project 3.0
Touhou-inspired Danmaku game made in C only
Chargement...
Recherche...
Aucune correspondance
Référence du fichier collision_entity.h

fonctions de détection des collisions des entités Plus de détails...

#include "ecs/pool.h"
#include "player.h"
#include <raylib.h>

Aller au code source de ce fichier.

Macros

#define MAX_COLLISIONS   100000

Fonctions

bool Entity_is_hit (Pool *p, Entity entity, flagList *flags)
 Vérifie si une entité est touchée par au moins une autre entitée.
bool Entity_find_hitters (Pool *p, Entity entity, flagList *flags, Entity foundCollisions[], int *nbCollisions)
 Vérifie si une entité est touchée par d'autres entitées et les liste dans un tableau.
bool Damage_entity_by_enemy_projectile (Pool *p, Entity entity)
 Verifie si l'entité est touchée par un projectile ennemi, et lui inflige des dégâts.
bool Damage_player_by_enemy_projectile (GameContext *ctx, Entity player)
 Verifie si l'entité (utilisé surtout pour le joueur) est touchée par un projectile ennemi, et lui inflige des dégâts.
bool collision_circle_add_scaled_with_sprite (Pool *p, Entity entity)
 Crée automatiquement une hitbox circulaire d'une taille basée sur le sprite d'une entité
bool CheckCircleRotatedRect (Vector2 cPos, float radius, Vector2 rPos, float w, float h, float angle)
 Vérifie si un cercle et un rectangle sont en collision.
static bool Entity_is_hit_by_rectangle (Pool *p, Entity entity, flagList *laserFlags, Entity foundCollisions[], int *nbcollisions)
static bool Entity_is_hit_by_circle (Pool *p, Entity entity, flagList *BulletFlags, Entity foundCollisions[], int *nbcollisions)

Description détaillée

fonctions de détection des collisions des entités

Documentation des macros

◆ MAX_COLLISIONS

#define MAX_COLLISIONS   100000

Documentation des fonctions

◆ CheckCircleRotatedRect()

bool CheckCircleRotatedRect ( Vector2 cPos,
float radius,
Vector2 rPos,
float w,
float h,
float angle )
extern

Vérifie si un cercle et un rectangle sont en collision.

Paramètres
cPoscoordonnées 2D du cercle
radiusrayon du cercle
rPoscoordonnées 2D du coin du rectangle
wlargeur du rectangle
hlongueur du rectangle
angleangle de rotation du rectangle
Renvoie
true si les deux figures sont en collision, false sinon

◆ collision_circle_add_scaled_with_sprite()

bool collision_circle_add_scaled_with_sprite ( Pool * p,
Entity entity )
extern

Crée automatiquement une hitbox circulaire d'une taille basée sur le sprite d'une entité

Paramètres
ppool courante (toutes les données de l'ECS)
entityl'entité cible
Renvoie
true, si l'ajout a marché, faux sinon

◆ Damage_entity_by_enemy_projectile()

bool Damage_entity_by_enemy_projectile ( Pool * p,
Entity entity )
extern

Verifie si l'entité est touchée par un projectile ennemi, et lui inflige des dégâts.

Note
les projectiles ennemis sont identifiés par le flag FLAG_PROJECTILE_ENEMY
Paramètres
ppool courante (toutes les données de l'ECS)
entityl'entité dont on cherche à savoir si on doit lui infliger des dégâts
Renvoie
true si l'entité a subit des dégâts, false sinon

◆ Damage_player_by_enemy_projectile()

bool Damage_player_by_enemy_projectile ( GameContext * ctx,
Entity player )
extern

Verifie si l'entité (utilisé surtout pour le joueur) est touchée par un projectile ennemi, et lui inflige des dégâts.

Paramètres
ctxGameContext courant (toutes les données du jeu)
playerL'ID de l'entité testé (le joueur)
Renvoie
true si le joueur a subit des dégats, faux sinon
A faire

changer ctx par pool, pas besoin de tout le contexte

changer pour trouver le joueur automatiquement

◆ Entity_find_hitters()

bool Entity_find_hitters ( Pool * p,
Entity entity,
flagList * flags,
Entity foundCollisions[],
int * nbCollisions )
extern

Vérifie si une entité est touchée par d'autres entitées et les liste dans un tableau.

Vérifie si des cercles ou rectangles de collision ayant les flags de la flagList passée en paramètre touche une entité spécifiée, puis les ajoute à un tableau.

Paramètres
ppool courante (toutes les données de l'ECS)
entityl'entité dont on cherche à savoir si elle est en collision
flagsles entités en collision avec l'entité que l'on étudie doivent disposer de ces flags, sinon elles sont ignorées
foundCollisionsUn tableau d'ID, vide au départ, qui sera rempli avec toutes les entitées en collisions avec l'entité étudiée et remplissant le critère des flags
nbCollisionsUn pointeur qui prendra la valeur du nombre de collisions valides trouvées
Renvoie
true si l'entité est touchée avec les flags spécifiés, false sinon

◆ Entity_is_hit()

bool Entity_is_hit ( Pool * p,
Entity entity,
flagList * flags )
extern

Vérifie si une entité est touchée par au moins une autre entitée.

Vérifie si un cercle ou rectangle de collision ayant les flags de la flagList passée en paramètre touche une entité spécifiée

Paramètres
ppool courante (toutes les données de l'ECS)
entityl'entité dont on cherche à savoir si elle est en collision
flagsles entités en collision avec l'entitée que l'on étudie doivent disposer de ces flags, sinon elles sont ignorées
Renvoie
true si l'entité est touchée avec les flags spécifiés, false sinon

◆ Entity_is_hit_by_circle()

bool Entity_is_hit_by_circle ( Pool * p,
Entity entity,
flagList * BulletFlags,
Entity foundCollisions[],
int * nbcollisions )
static

◆ Entity_is_hit_by_rectangle()

bool Entity_is_hit_by_rectangle ( Pool * p,
Entity entity,
flagList * laserFlags,
Entity foundCollisions[],
int * nbcollisions )
static