Doc comments
This commit is contained in:
parent
d6280343d5
commit
13697a6104
2 changed files with 55 additions and 0 deletions
|
|
@ -1,26 +1,46 @@
|
|||
use bevy::prelude::*;
|
||||
|
||||
/// Un trait est la définition abstraite d'un comportement.
|
||||
/// Tout ce qui implémente ce trait possède les méthodes mass, pos, add_mass.
|
||||
pub trait Body {
|
||||
/// Quelle est la masse en kg du corps ?
|
||||
fn mass(&self) -> f32;
|
||||
/// Quelle est la position (x, y) du corps ?
|
||||
fn pos(&self) -> Vec2;
|
||||
/// Ajouter de la masse dans le corps.
|
||||
fn add_mass(&mut self, mass: f32);
|
||||
}
|
||||
|
||||
/// Nœud de l'arbre, étant soit une feuille soit une branche.
|
||||
/// Sur chaque branche pousse des branches et des feuilles.
|
||||
/// Rien ne pousse sur une feuille.
|
||||
/// Un nœud représente une portion rectangulaire de l'univers, contenant tous les objets qui sont dans ce rectangle.
|
||||
pub enum Node<L> {
|
||||
/// Branche
|
||||
Branch {
|
||||
/// 4 nœuds contenus par cette branche, séparant son espace en 4 cadrants de même taille
|
||||
nodes: Box<[Node<L>; 4]>,
|
||||
/// Position du centre du rectangle
|
||||
center: Vec2,
|
||||
/// Masse cumulée de tous les objets dans le nœud
|
||||
mass: f32,
|
||||
/// Centre de masse d'ensemble des objets contenus
|
||||
center_of_mass: Vec2,
|
||||
/// Largeur de notre rectangle
|
||||
width: f32,
|
||||
},
|
||||
/// Feuille
|
||||
Leaf {
|
||||
/// Contient soit un corps Some(body) soit rien None
|
||||
body: Option<L>,
|
||||
/// Position de la feuille (pas celle du corps, qui peut être à des endroits différents dans la feuille)
|
||||
pos: (Vec2, Vec2),
|
||||
},
|
||||
}
|
||||
|
||||
/// Ajoutons des fonctions aux nœuds
|
||||
impl<L: Body> Node<L> {
|
||||
/// Création d'un nouveau nœud
|
||||
pub fn new(pos: (Vec2, Vec2)) -> Self {
|
||||
Node::Leaf { body: None, pos }
|
||||
// let center = (pos.1 - pos.0) / 2.0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue