add 'static' entity body-type
This commit is contained in:
parent
d6696b54cb
commit
2b7b68f3c2
@ -39,6 +39,7 @@ Example:
|
||||
|
||||
Determines how the physics engine will work with it.
|
||||
|
||||
- *static* - static body. No physics calculation, no velocity.
|
||||
- *dynamic* - default type. The physics engine calculates movement and collisions.
|
||||
- *kinematic* - only movement is calculated, without collisions.
|
||||
|
||||
|
||||
@ -1,12 +1,5 @@
|
||||
# Entities and components
|
||||
|
||||
## Types notation used below
|
||||
|
||||
- vec3 - 3D vector (array of three numbers)
|
||||
- mat4 - 4x4 matrix (array of 16 numbers)
|
||||
|
||||
Type annotations are added for documentation purposes and are not part of the Lua syntax.
|
||||
|
||||
## Entity
|
||||
|
||||
The entity object is available in components as a global variable **entity**.
|
||||
@ -107,7 +100,7 @@ body:is_crouching() -> bool
|
||||
-- Enables/disables the "crouching" state
|
||||
body:set_crouching(enabled: bool)
|
||||
|
||||
-- Returns the type of physical body (dynamic/kinematic)
|
||||
-- Returns the type of physical body (static/dynamic/kinematic)
|
||||
body:get_body_type() -> str
|
||||
-- Sets the physical body type
|
||||
body:set_body_type(type: str)
|
||||
|
||||
@ -39,6 +39,7 @@
|
||||
|
||||
Определяет то, как с ним будет работать физический движок.
|
||||
|
||||
- *static* (статический) - физический движок не воздействует на тело.
|
||||
- *dynamic* (динамический) - тип по-умолчанию. Физический движок просчитывает движение и столкновения.
|
||||
- *kinematic* (кинематический) - просчитывается только движение, без столкновений.
|
||||
|
||||
|
||||
@ -1,13 +1,5 @@
|
||||
# Сущности и компоненты
|
||||
|
||||
## Обозначения типов, используемые далее
|
||||
|
||||
- vec3 - 3D вектор (массив из трех чисел)
|
||||
- mat4 - матрица 4x4 (массив из 16 чисел)
|
||||
|
||||
Аннотации типов добавлены в целях документации и не являются частью синтаксиса
|
||||
Lua.
|
||||
|
||||
## Сущность
|
||||
|
||||
Объект сущности доступен в компонентах как глобальная переменная **entity**.
|
||||
|
||||
@ -411,7 +411,7 @@ void Entities::updatePhysics(float delta) {
|
||||
auto view = registry.view<EntityId, Transform, Rigidbody>();
|
||||
auto physics = level->physics.get();
|
||||
for (auto [entity, eid, transform, rigidbody] : view.each()) {
|
||||
if (!rigidbody.enabled) {
|
||||
if (!rigidbody.enabled || rigidbody.hitbox.type == BodyType::STATIC) {
|
||||
continue;
|
||||
}
|
||||
auto& hitbox = rigidbody.hitbox;
|
||||
|
||||
@ -7,6 +7,8 @@ std::optional<BodyType> BodyType_from(std::string_view str) {
|
||||
return BodyType::KINEMATIC;
|
||||
} else if (str == "dynamic") {
|
||||
return BodyType::DYNAMIC;
|
||||
} else if (str == "static") {
|
||||
return BodyType::STATIC;
|
||||
}
|
||||
return std::nullopt;
|
||||
}
|
||||
@ -15,6 +17,7 @@ std::string to_string(BodyType type) {
|
||||
switch (type) {
|
||||
case BodyType::KINEMATIC: return "kinematic";
|
||||
case BodyType::DYNAMIC: return "dynamic";
|
||||
case BodyType::STATIC: return "static";
|
||||
default: return "unknown";
|
||||
}
|
||||
}
|
||||
|
||||
@ -39,7 +39,7 @@ struct Sensor {
|
||||
};
|
||||
|
||||
enum class BodyType {
|
||||
KINEMATIC, DYNAMIC
|
||||
STATIC, KINEMATIC, DYNAMIC
|
||||
};
|
||||
|
||||
std::optional<BodyType> BodyType_from(std::string_view str);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user