py.rs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. use std::sync::{Arc, Mutex};
  2. use crate::{
  3. error::Result,
  4. plugin::{
  5. Category, Plugin, PluginEvent, PluginInstance, PluginInstancePtr, PluginMetadata, SemVer,
  6. SubCategory,
  7. },
  8. scene::SceneGraphPtr,
  9. };
  10. pub struct PythonPlugin {
  11. scene_graph: SceneGraphPtr,
  12. }
  13. impl PythonPlugin {
  14. pub fn new(scene_graph: SceneGraphPtr, sourcecode: String) -> Self {
  15. Self { scene_graph }
  16. }
  17. }
  18. impl Plugin for PythonPlugin {
  19. fn metadata(&self) -> PluginMetadata {
  20. PluginMetadata {
  21. name: "myplugin".to_string(),
  22. title: "My Plugin - Very Good A++".to_string(),
  23. desc: "This is the best plugin ever made. You should use it.".to_string(),
  24. author: "Tyler Durden".to_string(),
  25. version: SemVer {
  26. major: 0,
  27. minor: 0,
  28. patch: 1,
  29. pre: "alpha".to_string(),
  30. build: "".to_string(),
  31. },
  32. cat: Category::Null,
  33. subcat: SubCategory::Null,
  34. }
  35. }
  36. fn start(&self) -> Result<PluginInstancePtr> {
  37. let mut inst = PythonPluginInstance { scene_graph: self.scene_graph.clone() };
  38. Ok(Arc::new(Mutex::new(Box::new(inst))))
  39. }
  40. }
  41. struct PythonPluginInstance {
  42. scene_graph: SceneGraphPtr,
  43. }
  44. impl PluginInstance for PythonPluginInstance {
  45. fn update(&mut self, event: PluginEvent) -> Result<()> {
  46. Ok(())
  47. }
  48. }