support relative setPosition, add hardware keyboard listener + control, log FPS

This commit is contained in:
Nick Fisher
2024-02-03 11:55:44 +08:00
parent 0d9cf8a9ff
commit 63a52025dd
11 changed files with 238 additions and 26 deletions

View File

@@ -38,7 +38,7 @@ namespace polyvox
void transformToUnitCube(EntityId e);
inline void updateTransform(EntityId e);
void setScale(EntityId e, float scale);
void setPosition(EntityId e, float x, float y, float z);
void setPosition(EntityId e, float x, float y, float z, bool relative);
void setRotation(EntityId e, float rads, float x, float y, float z);
const utils::Entity *getCameraEntities(EntityId e);
size_t getCameraEntityCount(EntityId e);

View File

@@ -200,11 +200,15 @@ namespace polyvox
void loadTextureFromPath(string path);
void savePng(void* data, size_t size, int frameNumber);
time_point_t _startTime = std::chrono::high_resolution_clock::now();
time_point_t _recordingStartTime = std::chrono::high_resolution_clock::now();
time_point_t _fpsCounterStartTime = std::chrono::high_resolution_clock::now();
bool _recording = false;
std::string _recordingOutputDirectory = std::string("/tmp");
std::mutex _recordingMutex;
double _cumulativeAnimationUpdateTime = 0;
int _frameCount = 0;
int _skippedFrames = 0;
};
struct FrameCallbackData {

View File

@@ -146,7 +146,7 @@ extern "C"
FLUTTER_PLUGIN_EXPORT void clear_assets(const void *const viewer);
FLUTTER_PLUGIN_EXPORT bool set_material_color(void *assetManager, EntityId asset, const char *meshName, int materialIndex, const float r, const float g, const float b, const float a);
FLUTTER_PLUGIN_EXPORT void transform_to_unit_cube(void *assetManager, EntityId asset);
FLUTTER_PLUGIN_EXPORT void set_position(void *assetManager, EntityId asset, float x, float y, float z);
FLUTTER_PLUGIN_EXPORT void set_position(void *assetManager, EntityId asset, float x, float y, float z, bool relative);
FLUTTER_PLUGIN_EXPORT void set_rotation(void *assetManager, EntityId asset, float rads, float x, float y, float z);
FLUTTER_PLUGIN_EXPORT void set_scale(void *assetManager, EntityId asset, float scale);
@@ -183,6 +183,7 @@ extern "C"
FLUTTER_PLUGIN_EXPORT void set_recording_output_directory(void *const viewer, const char* outputDirectory);
FLUTTER_PLUGIN_EXPORT void ios_dummy();
FLUTTER_PLUGIN_EXPORT void flutter_filament_free(void *ptr);
#ifdef __cplusplus
}
#endif