# Bevy Outline ## High Level * ECS at its core (but only where needed) * Simple api backed by flexible systems * ex: PBR renderer built on a render graph system * Flexbox ui * simple, standard, good implementations exist * 100% rust (except for the few cases where this is impossible) * Batteries included * 2d/3d rendering, ui, physics, networking, etc * Editor: also a "game" * dogfood components * Fast app compile times (< 5 seconds) ## Dependencies * Legion ecs * wgfx-rs * nalgebra * nphysics/ncollide ## Outline * Core * Shared * Types * enum PropertyValue * DATATYPE_WRAPPERS_HERE * Analog: godot's Variant * struct Property * Description: Dynamic data * Ex: exported to editor, uniforms in shaders * Tags: ```HashSet``` * struct Texture * Components * Parent * Children ```Vec``` * Properties * ```HashMap``` * Mesh * Armature * Material * Systems * UpdateArmatureTransforms * SyncPropertiesToMaterialUniforms * 3d * Components * Transform * GlobalTransform * PhysicsBody * CollisionShape * RigidBody * Systems * CalculateGlobalTransform * Dep: Child, GlobalTransform, Transform * UpdateCollisions/NCollide * Dep: CollisionShape, PhysicsBody, GlobalTransform * UpdateRigidBodies/NCollide * Dep: PhysicsBody, RigidBody, GlobalTransform * 2d * Components * Transform2d * GlobalTransform2d * Element * PhysicsBody2d * CollisionShape2d * RigidBody2d * Systems * CalculateGlobalTransform2d * Dep: Child, GlobalTransform2d, Transform2d * UpdateCollisions2d/NCollide * Dep: CollisionShape2d, PhysicsBody2d, GlobalTransform2d * UpdateRigidBodies2d/NCollide * Dep: PhysicsBody2d, RigidBody2d, GlobalTransform2d