代码拉取完成,页面将自动刷新
package pathfinder
/*
#cgo windows LDFLAGS: -L${SRCDIR} -lPathLibwin -lm -lstdc++
#cgo linux LDFLAGS: -L${SRCDIR} -lPathLibLinux -lm -lstdc++
#cgo darwin LDFLAGS: -L${SRCDIR} -lPathLibMac -lm -lstdc++
#include "BridgeCpp.h"
#include <stdio.h>
#include <stdlib.h>
*/
import "C"
import (
"unsafe"
"gitee.com/night-tc/gobige/logger"
"gitee.com/night-tc/gobige/msgdef/protomsg"
)
type Cgo_ObsNavMesh C.ObsNavMesh
type Cgo_ObsPathFinder C.ObsPathFinder
//-----------------------------------------------------------------------------
func newObsNavMesh(filename, key string) (navmesh *Cgo_ObsNavMesh) {
defer func() {
logger.Debugf(logger.LogKey_Lib, "newObsNavMesh(%s,%s) %p", filename, key, navmesh)
}()
return (*Cgo_ObsNavMesh)(C.NewObsNavMesh(C.CString(filename), C.CString(key)))
}
func newObsPathFinder(mesh *Cgo_ObsNavMesh) *Cgo_ObsPathFinder {
logger.Debugf(logger.LogKey_Lib, "newObsPathFinder(%p)", mesh)
return (*Cgo_ObsPathFinder)(C.NewObsPathFinder((*C.ObsNavMesh)(mesh)))
}
func (finder *Cgo_ObsPathFinder) FreeObsPath() {
logger.Debugf(logger.LogKey_Lib, "FreeObsPath(%p)", finder)
C.FreeObsPath((*C.ObsPathFinder)(finder))
}
// AddCyinderTO 增加动态阻挡
func (mesh *Cgo_ObsNavMesh) ObsAddCylinder(tag string, spos *protomsg.Vector3, radius float32, height float32) {
C.ObsAddCylinder((*C.ObsNavMesh)(mesh), C.CString(tag), C.float(spos.X), C.float(spos.Y), C.float(spos.Z), C.float(radius), C.float(height))
}
// AddObbBox 增加OBB动态阻挡Box
func (mesh *Cgo_ObsNavMesh) ObsAddObbBox(tag string, centPos, halfPos *protomsg.Vector3, rotaY float32) {
C.ObsAddObbBox((*C.ObsNavMesh)(mesh), C.CString(tag), C.float(centPos.X), C.float(centPos.Y), C.float(centPos.Z),
C.float(halfPos.X), C.float(halfPos.Y), C.float(halfPos.Z), C.float(rotaY))
}
func (mesh *Cgo_ObsNavMesh) ObsAddAabbBox(tag string, minPos, maxPos *protomsg.Vector3) {
C.ObsAddAabbBox((*C.ObsNavMesh)(mesh), C.CString(tag), C.float(minPos.X), C.float(minPos.Y), C.float(minPos.Z),
C.float(maxPos.X), C.float(maxPos.Y), C.float(maxPos.Z))
}
// RemoveTOByTag 删除动态阻挡
func (mesh *Cgo_ObsNavMesh) ObsRemoveTOByTag(tag string) {
C.ObsRemoveTOByTag((*C.ObsNavMesh)(mesh), C.CString(tag))
}
func (mesh *Cgo_ObsNavMesh) ObsRemoveAllTO() {
C.ObsRemoveAllTO((*C.ObsNavMesh)(mesh))
}
// UpdateTO 更新临时阻挡信息
func (mesh *Cgo_ObsNavMesh) ObsUpdateTO() {
C.ObsUpdate((*C.ObsNavMesh)(mesh))
}
// 查找路径
func (finder *Cgo_ObsPathFinder) FindNavPath(spos *protomsg.Vector3, epos *protomsg.Vector3, count *int32) *C.float {
return C.ObsFindPath((*C.ObsPathFinder)(finder), C.float(spos.X), C.float(spos.Y), C.float(spos.Z), C.float(epos.X), C.float(epos.Y), C.float(epos.Z), (*C.int)(unsafe.Pointer(count)))
}
// 获取导航附近的点
func (finder *Cgo_ObsPathFinder) CalcNavNear(spos *protomsg.Vector3, count *int32) *C.float {
return C.ObsCalcNear((*C.ObsPathFinder)(finder), C.float(spos.X), C.float(spos.Y), C.float(spos.Z), (*C.int)(unsafe.Pointer(count)))
}
// CalcRaycast 射线检测
func (finder *Cgo_ObsPathFinder) CalcRaycast(spos *protomsg.Vector3, epos *protomsg.Vector3, count *int32) *C.float {
return C.ObsCalcRaycast((*C.ObsPathFinder)(finder), C.float(spos.X), C.float(spos.Y), C.float(spos.Z), C.float(epos.X), C.float(epos.Y), C.float(epos.Z), (*C.int)(unsafe.Pointer(count)))
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。