Skip to content

Commit

Permalink
Set FlatScene's AttrDataBlock object back after evaluating the scene.
Browse files Browse the repository at this point in the history
Also adds the ability to create a FlatScene without any data, which is
needed so we can create FlatScene then pass it to a function as reference
to be filled (as we will do in Maya).

Issue #114
  • Loading branch information
david-cattermole committed Jan 2, 2022
1 parent b0cbf88 commit d90a916
Show file tree
Hide file tree
Showing 6 changed files with 52 additions and 6 deletions.
2 changes: 2 additions & 0 deletions src/mmscenegraph/cppbind/include/mmscenegraph/_cxxbridge.h
Original file line number Diff line number Diff line change
Expand Up @@ -1165,6 +1165,8 @@ MMSCENEGRAPH_API_EXPORT ::rust::Box<::mmscenegraph::ShimSceneGraph> shim_create_

MMSCENEGRAPH_API_EXPORT ::rust::Box<::mmscenegraph::ShimFlatScene> shim_bake_scene_graph(const ::rust::Box<::mmscenegraph::ShimSceneGraph> &sg, const ::rust::Box<::mmscenegraph::ShimEvaluationObjects> &eval_objects) noexcept;

MMSCENEGRAPH_API_EXPORT ::rust::Box<::mmscenegraph::ShimFlatScene> shim_create_flat_scene_box() noexcept;

MMSCENEGRAPH_API_EXPORT ::rust::Box<::mmscenegraph::ShimEvaluationObjects> shim_create_evaluation_objects_box() noexcept;

MMSCENEGRAPH_API_EXPORT void foo(::std::uint32_t number) noexcept;
Expand Down
5 changes: 4 additions & 1 deletion src/mmscenegraph/cppbind/include/mmscenegraph/flatscene.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ namespace mmscenegraph {
class FlatScene {
public:

MMSCENEGRAPH_API_EXPORT
FlatScene() noexcept;

MMSCENEGRAPH_API_EXPORT
FlatScene(rust::Box<ShimFlatScene> flat_scene) noexcept;

Expand Down Expand Up @@ -64,7 +67,7 @@ class FlatScene {
MMSCENEGRAPH_API_EXPORT
void
evaluate(
AttrDataBlock &attrdb,
AttrDataBlock &attrDataBlock,
std::vector<FrameValue> &frames
) noexcept;

Expand Down
6 changes: 6 additions & 0 deletions src/mmscenegraph/cppbind/src/_cxxbridge.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1282,6 +1282,8 @@ ::std::size_t mmscenegraph$cxxbridge1$ShimFlatScene$num_deviations(const ::mmsce
void mmscenegraph$cxxbridge1$ShimFlatScene$evaluate(::mmscenegraph::ShimFlatScene &self, const ::rust::Box<::mmscenegraph::ShimAttrDataBlock> &attrdb, ::rust::Slice<const ::std::uint32_t> frame_list) noexcept;

::mmscenegraph::ShimFlatScene *mmscenegraph$cxxbridge1$shim_bake_scene_graph(const ::rust::Box<::mmscenegraph::ShimSceneGraph> &sg, const ::rust::Box<::mmscenegraph::ShimEvaluationObjects> &eval_objects) noexcept;

::mmscenegraph::ShimFlatScene *mmscenegraph$cxxbridge1$shim_create_flat_scene_box() noexcept;
::std::size_t mmscenegraph$cxxbridge1$ShimEvaluationObjects$operator$sizeof() noexcept;
::std::size_t mmscenegraph$cxxbridge1$ShimEvaluationObjects$operator$alignof() noexcept;

Expand Down Expand Up @@ -1681,6 +1683,10 @@ MMSCENEGRAPH_API_EXPORT ::rust::Box<::mmscenegraph::ShimFlatScene> shim_bake_sce
return ::rust::Box<::mmscenegraph::ShimFlatScene>::from_raw(mmscenegraph$cxxbridge1$shim_bake_scene_graph(sg, eval_objects));
}

MMSCENEGRAPH_API_EXPORT ::rust::Box<::mmscenegraph::ShimFlatScene> shim_create_flat_scene_box() noexcept {
return ::rust::Box<::mmscenegraph::ShimFlatScene>::from_raw(mmscenegraph$cxxbridge1$shim_create_flat_scene_box());
}

::std::size_t ShimEvaluationObjects::layout::size() noexcept {
return mmscenegraph$cxxbridge1$ShimEvaluationObjects$operator$sizeof();
}
Expand Down
3 changes: 3 additions & 0 deletions src/mmscenegraph/cppbind/src/cxxbridge.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ use crate::attrdatablock::shim_create_attr_data_block_box;
use crate::attrdatablock::ShimAttrDataBlock;
use crate::evaluationobjects::shim_create_evaluation_objects_box;
use crate::evaluationobjects::ShimEvaluationObjects;
use crate::flatscene::shim_create_flat_scene_box;
use crate::flatscene::ShimFlatScene;
use crate::scenebake::shim_bake_scene_graph;
use crate::scenegraph::shim_create_scene_graph_box;
Expand Down Expand Up @@ -309,6 +310,8 @@ pub mod ffi {
sg: &Box<ShimSceneGraph>,
eval_objects: &Box<ShimEvaluationObjects>,
) -> Box<ShimFlatScene>;

fn shim_create_flat_scene_box() -> Box<ShimFlatScene>;
}

extern "Rust" {
Expand Down
8 changes: 5 additions & 3 deletions src/mmscenegraph/cppbind/src/flatscene.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,14 @@ FlatScene::num_deviations() const noexcept {

void
FlatScene::evaluate(
AttrDataBlock &attrdb,
AttrDataBlock &attrDataBlock,
std::vector<FrameValue> &frames
) noexcept {
auto attrdb_inner = attrdb.get_inner();
auto attrDataBlock_inner = attrDataBlock.get_inner();
rust::Slice<const FrameValue> frames_slice{frames.data(), frames.size()};
return inner_->evaluate(attrdb_inner, frames_slice);
inner_->evaluate(attrDataBlock_inner, frames_slice);

attrDataBlock.set_inner(attrDataBlock_inner);
}

} // namespace mmscenegraph
34 changes: 32 additions & 2 deletions src/mmscenegraph/cppbind/src/flatscene.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,37 @@ impl ShimFlatScene {
attrdb: &ShimAttrDataBlock,
frame_list: &[CoreFrameValue],
) {
let attrdb = attrdb.get_inner();
self.inner.evaluate(attrdb, frame_list)
self.inner.evaluate(attrdb.get_inner(), frame_list)
}
}

pub fn shim_create_flat_scene_box() -> Box<ShimFlatScene> {
println!("shim_create_flat_scene_box()");
let bnd_ids = Vec::new();
let cam_ids = Vec::new();
let mkr_ids = Vec::new();
let mkr_cam_indices = Vec::new();
let mkr_bnd_indices = Vec::new();
let tfm_attr_list = Vec::new();
let rotate_order_list = Vec::new();
let cam_attr_list = Vec::new();
let mkr_attr_list = Vec::new();
let tfm_node_ids = Vec::new();
let tfm_node_indices = Vec::new();
let tfm_node_parent_indices = Vec::new();
let core_flat_scene = CoreFlatScene::new(
bnd_ids,
cam_ids,
mkr_ids,
mkr_cam_indices,
mkr_bnd_indices,
tfm_attr_list,
rotate_order_list,
cam_attr_list,
mkr_attr_list,
tfm_node_ids,
tfm_node_indices,
tfm_node_parent_indices,
);
Box::new(ShimFlatScene::new(core_flat_scene))
}

0 comments on commit d90a916

Please sign in to comment.