You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

103 lines
2.6 KiB

#ifndef VOXEL_DISTANCE_API_H
#define VOXEL_DISTANCE_API_H
#include <cstdint>
#include "CommonStructs.hpp"
#ifdef __cplusplus
extern "C" {
#endif
// ========== 平台相关的导出宏 ==========
#ifdef _WIN32
#if defined(VOXEL_DISTANCE_EXPORTS) || defined(BUSBAR_PLANNER_EXPORTS)
// 编译动态库时导出
#define VOXEL_API __declspec(dllexport)
#elif defined(BUSBAR_ROUTER_STATIC) || !defined(VOXEL_DLL) // 新增:默认走静态分支
// 编译可执行文件/静态库,无导入导出
#define VOXEL_API
#else
// 使用动态库时导入(保留)
#define VOXEL_API __declspec(dllimport)
#endif
#else
#define VOXEL_API
#endif
// ========== 纯 C 接口 ==========
/**
* ()
*/
VOXEL_API int CalculateFlightDistance(
const int* component_A_coords,
int component_A_count,
const int* component_B_coords,
int component_B_count,
int xsize,
int ysize,
int zsize,
const uint16_t* voxel_types,
double threshold,
const IniInPutStruct* inputDataA,
size_t inputCountA,
const IniInPutStruct* inputDataB,
size_t inputCountB,
const IniInPutStruct* pInputDataGlobal,
size_t inputDataGlobalSize,
float offset_x,
float offset_y,
float offset_z,
float rangeXMin,
float rangeXMax,
float rangeYMin,
float rangeYMax,
float rangeZMin,
float rangeZMax,
double* out_distance,
int* out_start_x,
int* out_start_y,
int* out_start_z,
int* out_end_x,
int* out_end_y,
int* out_end_z,
float* out_path_coords,
int* out_path_count,
float voxel_size
);
/**
* ()
*/
VOXEL_API int CalculateCreepDistance(
const int* component_A_coords,
int component_A_count,
const int* component_B_coords,
int component_B_count,
int xsize,
int ysize,
int zsize,
const bool* obstacles,
double threshold,
double* out_distance,
int* out_start_x,
int* out_start_y,
int* out_start_z,
int* out_end_x,
int* out_end_y,
int* out_end_z,
float* out_path_coords,
int* out_path_count
);
/**
*
*/
VOXEL_API const char* VoxelGetLastError(void);
#ifdef __cplusplus
}
#endif
#endif // VOXEL_DISTANCE_API_H