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.
|
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.
|
- *dynamic* - default type. The physics engine calculates movement and collisions.
|
||||||
- *kinematic* - only movement is calculated, without collisions.
|
- *kinematic* - only movement is calculated, without collisions.
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,5 @@
|
|||||||
# Entities and components
|
# 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
|
## Entity
|
||||||
|
|
||||||
The entity object is available in components as a global variable **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
|
-- Enables/disables the "crouching" state
|
||||||
body:set_crouching(enabled: bool)
|
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
|
body:get_body_type() -> str
|
||||||
-- Sets the physical body type
|
-- Sets the physical body type
|
||||||
body:set_body_type(type: str)
|
body:set_body_type(type: str)
|
||||||
|
|||||||
@ -39,6 +39,7 @@
|
|||||||
|
|
||||||
Определяет то, как с ним будет работать физический движок.
|
Определяет то, как с ним будет работать физический движок.
|
||||||
|
|
||||||
|
- *static* (статический) - физический движок не воздействует на тело.
|
||||||
- *dynamic* (динамический) - тип по-умолчанию. Физический движок просчитывает движение и столкновения.
|
- *dynamic* (динамический) - тип по-умолчанию. Физический движок просчитывает движение и столкновения.
|
||||||
- *kinematic* (кинематический) - просчитывается только движение, без столкновений.
|
- *kinematic* (кинематический) - просчитывается только движение, без столкновений.
|
||||||
|
|
||||||
|
|||||||
@ -1,13 +1,5 @@
|
|||||||
# Сущности и компоненты
|
# Сущности и компоненты
|
||||||
|
|
||||||
## Обозначения типов, используемые далее
|
|
||||||
|
|
||||||
- vec3 - 3D вектор (массив из трех чисел)
|
|
||||||
- mat4 - матрица 4x4 (массив из 16 чисел)
|
|
||||||
|
|
||||||
Аннотации типов добавлены в целях документации и не являются частью синтаксиса
|
|
||||||
Lua.
|
|
||||||
|
|
||||||
## Сущность
|
## Сущность
|
||||||
|
|
||||||
Объект сущности доступен в компонентах как глобальная переменная **entity**.
|
Объект сущности доступен в компонентах как глобальная переменная **entity**.
|
||||||
|
|||||||
@ -411,7 +411,7 @@ void Entities::updatePhysics(float delta) {
|
|||||||
auto view = registry.view<EntityId, Transform, Rigidbody>();
|
auto view = registry.view<EntityId, Transform, Rigidbody>();
|
||||||
auto physics = level->physics.get();
|
auto physics = level->physics.get();
|
||||||
for (auto [entity, eid, transform, rigidbody] : view.each()) {
|
for (auto [entity, eid, transform, rigidbody] : view.each()) {
|
||||||
if (!rigidbody.enabled) {
|
if (!rigidbody.enabled || rigidbody.hitbox.type == BodyType::STATIC) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
auto& hitbox = rigidbody.hitbox;
|
auto& hitbox = rigidbody.hitbox;
|
||||||
|
|||||||
@ -7,6 +7,8 @@ std::optional<BodyType> BodyType_from(std::string_view str) {
|
|||||||
return BodyType::KINEMATIC;
|
return BodyType::KINEMATIC;
|
||||||
} else if (str == "dynamic") {
|
} else if (str == "dynamic") {
|
||||||
return BodyType::DYNAMIC;
|
return BodyType::DYNAMIC;
|
||||||
|
} else if (str == "static") {
|
||||||
|
return BodyType::STATIC;
|
||||||
}
|
}
|
||||||
return std::nullopt;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
@ -15,6 +17,7 @@ std::string to_string(BodyType type) {
|
|||||||
switch (type) {
|
switch (type) {
|
||||||
case BodyType::KINEMATIC: return "kinematic";
|
case BodyType::KINEMATIC: return "kinematic";
|
||||||
case BodyType::DYNAMIC: return "dynamic";
|
case BodyType::DYNAMIC: return "dynamic";
|
||||||
|
case BodyType::STATIC: return "static";
|
||||||
default: return "unknown";
|
default: return "unknown";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,7 +39,7 @@ struct Sensor {
|
|||||||
};
|
};
|
||||||
|
|
||||||
enum class BodyType {
|
enum class BodyType {
|
||||||
KINEMATIC, DYNAMIC
|
STATIC, KINEMATIC, DYNAMIC
|
||||||
};
|
};
|
||||||
|
|
||||||
std::optional<BodyType> BodyType_from(std::string_view str);
|
std::optional<BodyType> BodyType_from(std::string_view str);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user