Esempio n. 1
0
static void
handle_drop(GtkWidget *widget, GdkDragContext *context, gint x, gint y,
            GtkSelectionData *data, guint info, guint time)
{
  gboolean success = FALSE;

  if (gtk_selection_data_get_length (data) >= 0 &&
      gtk_selection_data_get_format (data) == 8)
    {
      ObjectList_t *list = get_shapes();
      Object_t *obj;

      x = get_real_coord(x);
      y = get_real_coord(y);
      obj = object_list_find(list, x, y);
      if (obj && !obj->locked)
        {
          command_list_add(edit_object_command_new(obj));
          object_set_url(obj, (const gchar *) gtk_selection_data_get_data (data));
          object_emit_update_signal(obj);
          success = TRUE;
        }
    }
  gtk_drag_finish(context, success, FALSE, time);
}
		BC_PHYSICSIMP_DLL
		void bc_platform_rigid_actor< g_api_physx >::set_notify_flag(bc_shape_notify_flag p_flag, bool p_value) noexcept
		{
			auto l_buffer_size = get_shape_count();
			auto* l_buffer = static_cast< bc_shape* >
				(
					bcAlloc(sizeof(bc_shape*) * l_buffer_size, core::bc_alloc_type::frame)
					);

			get_shapes(l_buffer, l_buffer_size);

			for (bcUINT32 i = 0; i < l_buffer_size; ++i)
			{
				l_buffer[i].set_notify_flag(p_flag, p_value);
			}

			bcFree(l_buffer);
		}
		BC_PHYSICSIMP_DLL
		void bc_platform_rigid_actor< g_api_physx >::set_collision_group(bc_collision_filter p_filter) noexcept
		{
			auto l_buffer_size = get_shape_count();
			auto* l_buffer = static_cast< bc_shape* >
			(
				bcAlloc(sizeof(bc_shape*) * l_buffer_size, core::bc_alloc_type::frame)
			);

			get_shapes(l_buffer, l_buffer_size);

			for (bcUINT32 i = 0; i < l_buffer_size; ++i)
			{
				l_buffer[i].set_collision_group(p_filter);
			}

			bcFree(l_buffer);
		}