Add weapons
This commit is contained in:
@@ -141,6 +141,31 @@ void entityFollowPath(ecs_iter_t *it) {
|
||||
}
|
||||
}
|
||||
|
||||
static void entityUpdateArm(ecs_entity_t armEntity, Position pos, Velocity vel,
|
||||
Rotation rot, Orientation orient) {
|
||||
if (!armEntity) return;
|
||||
const Arm arm = *ecs_get(ECS, armEntity, Arm);
|
||||
|
||||
Vector2 v = {arm.extended, 0.0f};
|
||||
v = Vector2Rotate(v, orient + arm.offset);
|
||||
v = Vector2Add(v, pos);
|
||||
ecs_set_ptr(ECS, armEntity, Position, &v);
|
||||
}
|
||||
void entityUpdateArms(ecs_iter_t *it) {
|
||||
Position *position = ecs_field(it, Position, 1);
|
||||
Velocity *velocity = ecs_field(it, Velocity, 2);
|
||||
Rotation *rotation = ecs_field(it, Rotation, 3);
|
||||
Orientation *orientation = ecs_field(it, Orientation, 4);
|
||||
Arms *arms = ecs_field(it, Arms, 5);
|
||||
|
||||
for (i32 i = 0; i < it->count; i++) {
|
||||
entityUpdateArm(arms[i].primary, position[i], velocity[i],
|
||||
rotation[i], orientation[i]);
|
||||
entityUpdateArm(arms[i].secondary, position[i], velocity[i],
|
||||
rotation[i], orientation[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void renderColliders(ecs_iter_t *it) {
|
||||
Position *pos = ecs_field(it, Position, 1);
|
||||
Size *size = ecs_field(it, Size, 2);
|
||||
@@ -152,19 +177,27 @@ void renderColliders(ecs_iter_t *it) {
|
||||
}
|
||||
}
|
||||
|
||||
void renderRotationDirection(ecs_iter_t *it) {
|
||||
void renderOrientationDirection(ecs_iter_t *it) {
|
||||
Position *pos = ecs_field(it, Position, 1);
|
||||
Rotation *rot = ecs_field(it, Rotation, 2);
|
||||
Orientation *orientation = ecs_field(it, Orientation, 2);
|
||||
|
||||
for (i32 i = 0; i < it->count; i++) {
|
||||
Vector2 v = {10.0f, 0.0f};
|
||||
v = Vector2Rotate(v, rot[i]);
|
||||
Vector2 v = {6.0f, 0.0f};
|
||||
v = Vector2Rotate(v, orientation[i]);
|
||||
v = Vector2Add(v, pos[i]);
|
||||
DrawCircle(v.x, v.y, 1.0f, RED);
|
||||
DrawLine(pos->x, pos->y, v.x, v.y, RED);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void renderArmPosition(ecs_iter_t *it) {
|
||||
Position *pos = ecs_field(it, Position, 1);
|
||||
Arm *arm = ecs_field(it, Arm, 2);
|
||||
|
||||
for (i32 i = 0; i < it->count; i++) {
|
||||
DrawCircle(pos[i].x, pos[i].y, 1.5f, ORANGE);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void renderDebugPath(ecs_iter_t *it) {
|
||||
Path *path = ecs_field(it, Path, 1);
|
||||
|
||||
Reference in New Issue
Block a user