πŸ“¦

Overview of the Entity module in JarEngine.


πŸ”Ή Overview

Entity is a JarEngine module responsible for ECS entity and components.

It provides:

  • Audios components
  • Graphics components
  • Others components
  • Physics components
  • Transforms components
  • Entity

πŸ”Ή Contents

Class Description
β€’>JEEntity<β€’πŸ“Ž Entity (component holder)
Component Description
β€’>JEMusicComponent<β€’πŸ“Ž Music (resource)
β€’>JESoundComponent<β€’πŸ“Ž Sound (resource)
β€’>JEFontComponent<β€’πŸ“Ž Font (resource)
β€’>JETextComponent<β€’πŸ“Ž Text (string)
β€’>JETextureComponent<β€’πŸ“Ž Texture (resource)
β€’>JEColorComponent<β€’πŸ“Ž Color (JEColor)
β€’>JEOutlineComponent<β€’πŸ“Ž Outline (JEColor and size)
β€’>JEVisibilityComponent<β€’πŸ“Ž Visibility (JEBool)
β€’>JELayerComponent<β€’πŸ“Ž Layer (integer)
β€’>JEFlipComponent<β€’πŸ“Ž Flip (tuple: JEBool, JEBool)
β€’>JEGroupComponent<β€’πŸ“Ž Group (JEInternOwnership)
β€’>JEAccelerationComponent<β€’πŸ“Ž Acceleration (JEVector2D)
β€’>JEMassComponent<β€’πŸ“Ž Mass (floating point)
β€’>JEPositionComponent<β€’πŸ“Ž Position (JEVector2D)
β€’>JEVelocityComponent<β€’πŸ“Ž Velocity (JEVector2D)
β€’>JESizeComponent<β€’πŸ“Ž Size (JEVector2D)
β€’>JERotationComponent<β€’πŸ“Ž Rotation (integer)

πŸ”Ή Usage

from jarengine import Entity

# Create an entity
player = Entity.JEEntity(name="Player")

# Add components to define its properties
Entity.Transforms.JEPositionComponent(
    player,
    (100, 200)
)

Entity.Transforms.JEVelocityComponent(
    player,
    (5, 0)
)

Entity.Transforms.JESizeComponent(
    player,
    (20, 20)
)

Entity.Graphics.JEColorComponent(
    player,
    (255, 255, 255, 255)
)

# Components automatically add related helpers to the entity
player.set_position((150, 180))
player.set_velocity((10, 0))

print(player.get_position())
print(player.get_velocity())

An entity has been created as a white rectangle of 20 by 20.


πŸ”Ή Notes

Things to know when using this module:

  • Entity alone doesn’t do anything, components are required.
  • Components such as group makes the entity a holder of other entity.
  • ECS has been optimized by me (and IA) for faster computation, but it is still a layer on top of PyGame, and in Python. So it may be slower than any other engine.