aboutsummaryrefslogtreecommitdiffstats
path: root/support/magicleap/Servo2D/code/inc/Servo2D.h
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2018-10-29 10:00:32 -0400
committerGitHub <noreply@github.com>2018-10-29 10:00:32 -0400
commit0ec0f705b66f1d527e24ddd5f99bd29e402a6bb0 (patch)
treefec6a477145188b9dda3713c8ff8992a2f60b030 /support/magicleap/Servo2D/code/inc/Servo2D.h
parente580250d5d99060b0ee8d88e3ff66b6d9ec24050 (diff)
parentdab8f4a97fe8c122d24281ea7c62ccb3c7bba621 (diff)
downloadservo-0ec0f705b66f1d527e24ddd5f99bd29e402a6bb0.tar.gz
servo-0ec0f705b66f1d527e24ddd5f99bd29e402a6bb0.zip
Auto merge of #21985 - asajeffrey:magicleap, r=jdm
Support building for Magic Leap. <!-- Please describe your changes on the following line: --> This PR gets Servo to build for Magic Leap, and provides a dummy Servo2D app. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes do not require tests because it's a port to a new architecture <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21985) <!-- Reviewable:end -->
Diffstat (limited to 'support/magicleap/Servo2D/code/inc/Servo2D.h')
-rw-r--r--support/magicleap/Servo2D/code/inc/Servo2D.h96
1 files changed, 96 insertions, 0 deletions
diff --git a/support/magicleap/Servo2D/code/inc/Servo2D.h b/support/magicleap/Servo2D/code/inc/Servo2D.h
new file mode 100644
index 00000000000..866f2e09e6c
--- /dev/null
+++ b/support/magicleap/Servo2D/code/inc/Servo2D.h
@@ -0,0 +1,96 @@
+/* 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/. */
+
+#include <lumin/LandscapeApp.h>
+#include <lumin/Prism.h>
+#include <lumin/event/ServerEvent.h>
+#include <lumin/resource/PlanarResource.h>
+#include <SceneDescriptor.h>
+
+typedef void* ServoInstance;
+
+/**
+ * Servo2D Landscape Application
+ */
+class Servo2D : public lumin::LandscapeApp {
+public:
+ /**
+ * Constructs the Landscape Application.
+ */
+ Servo2D();
+
+ /**
+ * Destroys the Landscape Application.
+ */
+ virtual ~Servo2D();
+
+ /**
+ * Disallows the copy constructor.
+ */
+ Servo2D(const Servo2D&) = delete;
+
+ /**
+ * Disallows the move constructor.
+ */
+ Servo2D(Servo2D&&) = delete;
+
+ /**
+ * Disallows the copy assignment operator.
+ */
+ Servo2D& operator=(const Servo2D&) = delete;
+
+ /**
+ * Disallows the move assignment operator.
+ */
+ Servo2D& operator=(Servo2D&&) = delete;
+
+protected:
+ /**
+ * Initializes the Landscape Application.
+ * @return - 0 on success, error code on failure.
+ */
+ int init() override;
+
+ /**
+ * Deinitializes the Landscape Application.
+ * @return - 0 on success, error code on failure.
+ */
+ int deInit() override;
+
+ /**
+ * Returns the size of the Prism, default = +/- (1.0f, 1.0f, 1.0f) meters.
+ * Used in createPrism().
+ */
+ const glm::vec3 getInitialPrismExtents() const;
+
+ /**
+ * Creates the prism, updates the private variable prism_ with the created prism.
+ */
+ int createInitialPrism();
+
+ /**
+ * Initializes and creates the scene of all scenes marked as initially instanced
+ */
+ void instanceInitialScenes();
+
+ /**
+ * Initializes and creates the scene of the scene and instances it into the prism
+ */
+ lumin::Node* instanceScene(const SceneDescriptor & sceneToInit);
+
+ /**
+ * Run application login
+ */
+ virtual bool updateLoop(float fDelta) override;
+
+ /**
+ * Handle events from the server
+ */
+ virtual bool eventListener(lumin::ServerEvent* event) override;
+
+private:
+ lumin::Prism* prism_ = nullptr; // represents the bounded space where the App renders.
+ lumin::PlanarResource* plane_ = nullptr; // the plane we're rendering into
+ ServoInstance servo_ = nullptr; // the servo instance we're embedding
+};