diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2018-10-29 10:00:32 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-29 10:00:32 -0400 |
commit | 0ec0f705b66f1d527e24ddd5f99bd29e402a6bb0 (patch) | |
tree | fec6a477145188b9dda3713c8ff8992a2f60b030 /support/magicleap/Servo2D/code/inc/Servo2D.h | |
parent | e580250d5d99060b0ee8d88e3ff66b6d9ec24050 (diff) | |
parent | dab8f4a97fe8c122d24281ea7c62ccb3c7bba621 (diff) | |
download | servo-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.h | 96 |
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 +}; |