Implement LockedWrapper.GetAnimationQueues
This commit is contained in:
@@ -3,6 +3,8 @@
|
||||
#include "DebugPrint.h"
|
||||
#include "lpx-drvutil.hpp"
|
||||
|
||||
using namespace CommonTypes;
|
||||
|
||||
void FLockedWrapper::InitWrapper() {
|
||||
if (Lockable.Wrapper.play_initialize != nullptr) {
|
||||
// Already initialized.
|
||||
@@ -38,9 +40,37 @@ int64 FLockedWrapper::GetActor() {
|
||||
return Lockable.Wrapper.get_actor_id(Get());
|
||||
}
|
||||
|
||||
FLockedWrapper::IdView FLockedWrapper::GetNear(int64 id, double rx, double ry, double rz) {
|
||||
IdView FLockedWrapper::GetNear(int64 id, double rx, double ry, double rz) {
|
||||
uint32 size;
|
||||
int64* data;
|
||||
Lockable.Wrapper.get_tangibles_near(Get(), id, rx, ry, rz, &size, &data);
|
||||
return IdView(data, size);
|
||||
}
|
||||
|
||||
StringViewVec FLockedWrapper::GetAnimationQueues(IdView ids) {
|
||||
// How many animation queues are we fetching?
|
||||
int num = ids.Num();
|
||||
|
||||
// Enlarge the static buffers if necessary.
|
||||
// Add a little extra space so we don't have to enlarge
|
||||
// the buffers every time we get a new tangible.
|
||||
if (num > Lockable.AQLenBuffer.Num()) {
|
||||
Lockable.AQLenBuffer.SetNum(num + 1000);
|
||||
Lockable.AQStrBuffer.SetNum(num + 1000);
|
||||
}
|
||||
|
||||
// Get pointers to the static buffers.
|
||||
uint32* LenBuf = Lockable.AQLenBuffer.GetData();
|
||||
const char** StrBuf = Lockable.AQStrBuffer.GetData();
|
||||
|
||||
// Get the animation queues into the static buffers.
|
||||
Lockable.Wrapper.get_animation_queues(Get(), num, ids.GetData(), LenBuf, StrBuf);
|
||||
|
||||
// Transfer data from static buffers into an array of string_view
|
||||
StringViewVec result;
|
||||
result.SetNum(num);
|
||||
for (int i = 0; i < num; i++) {
|
||||
result[i] = std::string_view(StrBuf[i], LenBuf[i]);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
Reference in New Issue
Block a user