diff options
Diffstat (limited to 'third_party/rust/uniffi-example-sprites/src/lib.rs')
-rw-r--r-- | third_party/rust/uniffi-example-sprites/src/lib.rs | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/third_party/rust/uniffi-example-sprites/src/lib.rs b/third_party/rust/uniffi-example-sprites/src/lib.rs deleted file mode 100644 index d3cc11e408..0000000000 --- a/third_party/rust/uniffi-example-sprites/src/lib.rs +++ /dev/null @@ -1,65 +0,0 @@ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -use std::sync::RwLock; - -// A point in two-dimensional space. -#[derive(Debug, Clone)] -pub struct Point { - x: f64, - y: f64, -} - -// A magnitude and direction in two-dimensional space. -// For simplicity we represent this as a point relative to the origin. -#[derive(Debug, Clone)] -pub struct Vector { - dx: f64, - dy: f64, -} - -// Move from the given Point, according to the given Vector. -pub fn translate(p: &Point, v: Vector) -> Point { - Point { - x: p.x + v.dx, - y: p.y + v.dy, - } -} - -// An entity in our imaginary world, which occupies a position in space -// and which can move about over time. -#[derive(Debug)] -pub struct Sprite { - // We must use interior mutability for managing mutable state, hence the `RwLock`. - current_position: RwLock<Point>, -} - -impl Sprite { - fn new(initial_position: Option<Point>) -> Sprite { - Sprite { - current_position: RwLock::new(initial_position.unwrap_or(Point { x: 0.0, y: 0.0 })), - } - } - - fn new_relative_to(reference: Point, direction: Vector) -> Sprite { - Sprite { - current_position: RwLock::new(translate(&reference, direction)), - } - } - - fn get_position(&self) -> Point { - self.current_position.read().unwrap().clone() - } - - fn move_to(&self, position: Point) { - *self.current_position.write().unwrap() = position; - } - - fn move_by(&self, direction: Vector) { - let mut current_position = self.current_position.write().unwrap(); - *current_position = translate(¤t_position, direction) - } -} - -uniffi::include_scaffolding!("sprites"); |