Properly link flecs library
This commit is contained in:
48
engine/libs/flecs/examples/plecs/reflection.flecs
Normal file
48
engine/libs/flecs/examples/plecs/reflection.flecs
Normal file
@@ -0,0 +1,48 @@
|
||||
// To see what the result of parsing this file looks like, copy the code and
|
||||
// paste it into the editor at https://flecs.dev/explorer
|
||||
//
|
||||
// To load this file yourself, call ecs_plecs_from_file("reflection.flecs");
|
||||
|
||||
// It is possible to set component values in a plecs file as long as the
|
||||
// component is described with reflection data. Since we don't have a component
|
||||
// yet, we'll first have to create one.
|
||||
|
||||
// Plecs does not have dedicated syntax for describing types, but since the
|
||||
// reflection addon (flecs.meta) uses regular entities and components to store
|
||||
// reflection data, we can use existing plecs syntax to create a type.
|
||||
|
||||
// First we'll add flecs.meta to the list of namespaces to search. This is not
|
||||
// strictly necessary, but lets us write Struct instead of flecs.meta.Struct
|
||||
using flecs.meta
|
||||
|
||||
// We can now create a struct like this. "Struct Position" is the shorthand
|
||||
// declaration syntax for "Position :- Struct", and has as benefit that we can
|
||||
// open a scope after the statement
|
||||
Struct Position {
|
||||
// Add two child entities with the Member component
|
||||
x :- Member{type: f32}
|
||||
y :- Member{type: f32}
|
||||
}
|
||||
|
||||
// Plecs has a feature which makes it possible to specify a default type for a
|
||||
// scope. The Struct component has Member as default type. This means we can
|
||||
// also create a type like this, which is a bit shorter:
|
||||
Struct Mass {
|
||||
value :- {f32} // 'type' can be ommitted since it's the first member
|
||||
}
|
||||
|
||||
// Similarly we can also define an enumeration type. The default scope type for
|
||||
// Enum is Constant, which ensures amongst others that the child entities will
|
||||
// be assigned with an incremenenting constant value automatically.
|
||||
Enum Color {
|
||||
Red
|
||||
Green
|
||||
Blue
|
||||
}
|
||||
|
||||
// We can now create an entity that uses the types
|
||||
my_entity {
|
||||
- Position {x: 10, y: 20}
|
||||
- Mass {100} // Member names are optional
|
||||
- Color {Green} // Green will be automatically looked up in the Color scope
|
||||
}
|
||||
Reference in New Issue
Block a user