abstract class Scar::Object

Overview

Base class for OOP based Entities

An object has the same methods as a system: #init, #update and #render, so all the behaviour and data can be in the same place. You can still add components like with a normal entity though.

You do not need to implement the #render method to draw something, you can also just use regular drawable components or include Scar::Drawable (see Drawable documentation).

Direct Known Subclasses

Defined in:

scar/object.cr

Instance Method Summary

Instance methods inherited from class Scar::Entity

<<(c : Component)
<<(*cs : Component)
<<
, [](comp_type : T.class) : T forall T [], []?(comp_type : T.class) : T | Nil forall T []?, alive? : Bool alive?, components : Array(Scar::Component) components, components=(components : Array(Scar::Component)) components=, destroy destroy, has?(c : Component.class) : Bool
has?(cs : Array(Component.class)) : Bool
has?(*cs : Component.class) : Bool
has?
, id : String id, z : Int32 z, z=(z : Int32) z=

Constructor methods inherited from class Scar::Entity

new(id : String, components : Array(Component), *, position : Vec | Nil = nil, scale : Vec | Nil = nil, rotation : Float32 | Nil = nil, z : Int32 = 0)
new(id : String, *comps : Component, position : Vec | Nil = nil, scale : Vec | Nil = nil, rotation : Float32 | Nil = nil, z : Int32 = 0)
new(id : String, *, position : Vec | Nil = nil, scale : Vec | Nil = nil, rotation : Float32 | Nil = nil, z : Int32 = 0)
new

Instance Method Detail

def init(app : App, space : Space) #

For initialization (called once when this object is added to a space)


[View source]
def initialized : Bool #

[View source]
def initialized=(initialized : Bool) #

[View source]
def render(app : App, space : Space, dt) #

For drawing logic (called on every frame after #update)


[View source]
def update(app : App, space : Space, dt) #

For update logic (called on every frame)


[View source]