Items shadows
unknown
c_cpp
a year ago
2.4 kB
43
Indexable
// This should be placed inside the render loop for entities.
if (en->is_item) {
Matrix4 shadow_xform = xform;
float t = os_get_elapsed_seconds();
float sin_value = (0.3 * sin(t*5.0)) + 0.7;
float sin_value_2 = (0.1 * sin(t*5.0)) + 0.9;
xform = m4_translate(xform, v3(0, 4.0 * sin_value, 0));
Vector2 shadow_size = v2_mulf(v2(sprite_width, sprite_width/3), sin_value_2);
shadow_xform = m4_translate(shadow_xform, v3(sprite_width/2 - shadow_size.x / 2, -3, 0));
draw_circle_xform(shadow_xform, shadow_size, v4(0, 0, 0, 1 - (sin_value / 3)));
}
// HERE IS THE WHOLE CODE SNIPPET WHICH I USE
// I USE THE ENTITY MOVEMENT ("MAGNET") WHICH I ADDED IN ANOTHER POST OF MINE
// WHICH IS WHY I HAVE "is_being_picked_up" (ITS NOT NEEDED)
// :render
for (int i = 0; i < MAX_ENTITY_COUNT; i++) {
Entity* en = &world->entities[i];
if (en->is_valid) {
switch (en->arch) {
default:
{
Sprite* sprite = get_sprite(en->sprite_id);
float sprite_width = sprite->image->width;
Matrix4 xform = m4_scalar(1.0);
xform = m4_translate(xform, v3(0, tile_width * 0.5, 0));
xform = m4_translate(xform, v3(en->pos.x, en->pos.y, 0));
xform = m4_translate(xform, v3(sprite_width * -0.5, 0.0, 0));
// LOOK HERE
if (en->is_item && !(en->is_being_picked_up)) {
Matrix4 shadow_xform = xform;
float t = os_get_elapsed_seconds();
float sin_value = (0.3 * sin(t*5.0)) + 0.7;
float sin_value_2 = (0.1 * sin(t*5.0)) + 0.9;
xform = m4_translate(xform, v3(0, 4.0 * sin_value, 0));
Vector2 shadow_size = v2_mulf(v2(sprite_width, sprite_width/3), sin_value_2);
shadow_xform = m4_translate(shadow_xform, v3(sprite_width/2 - shadow_size.x / 2, -3, 0));
draw_circle_xform(shadow_xform, shadow_size, v4(0, 0, 0, 1 - (sin_value / 3)));
}
// END
Vector4 col = COLOR_WHITE;
if (world_frame.selected_entity == en) {
col = v4(1.0, 0, 0, 0.5);
}
draw_image_xform(sprite->image, xform, get_sprite_size(sprite), col);
// draw_text(font, sprint(get_temporary_allocator(), STR("%f %f"), en->pos.x, en->pos.y), font_height, en->pos, v2(0.1, 0.1), COLOR_RED);
break;
}
}
}
}Editor is loading...
Leave a Comment