mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
Auto merge of #29774 - michaelgrigoryan25:issue#29773, r=jdm
Remove MagicLeap support <!-- Please describe your changes on the following line: --> Discussed in more detail in #29773. --- <!-- 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 fix #29773 (GitHub issue number if applicable) <!-- 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. -->
This commit is contained in:
commit
0377a1853a
65 changed files with 31 additions and 7665 deletions
23
Cargo.lock
generated
23
Cargo.lock
generated
|
@ -3296,20 +3296,6 @@ version = "0.2.6"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb"
|
||||
|
||||
[[package]]
|
||||
name = "libmlservo"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"libservo",
|
||||
"log",
|
||||
"servo-egl",
|
||||
"simpleservo",
|
||||
"smallvec",
|
||||
"webxr",
|
||||
"webxr-api",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libservo"
|
||||
version = "0.0.1"
|
||||
|
@ -5382,15 +5368,6 @@ dependencies = [
|
|||
"time-point",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "servo-egl"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "21069a884c33fe6ee596975e1f3849ed88c4ec857fbaf11d33672d8ebe051217"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "servo-gst-plugin"
|
||||
version = "0.0.1"
|
||||
|
|
|
@ -5,7 +5,6 @@ members = [
|
|||
"ports/gstplugin",
|
||||
"ports/libsimpleservo/capi/",
|
||||
"ports/libsimpleservo/jniapi/",
|
||||
"ports/libmlservo/",
|
||||
"tests/unit/*",
|
||||
]
|
||||
exclude = [".cargo"]
|
||||
|
|
|
@ -34,8 +34,6 @@ mac-rel-css2: []
|
|||
android-nightly: []
|
||||
windows-msvc-nightly: []
|
||||
mac-nightly: []
|
||||
magicleap-nightly: []
|
||||
magicleap: []
|
||||
linux-nightly: []
|
||||
linux-rel-wpt: []
|
||||
linux-rel-css: []
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
[package]
|
||||
name = "libmlservo"
|
||||
version = "0.0.1"
|
||||
authors = ["The Servo Project Developers"]
|
||||
license = "MPL-2.0"
|
||||
edition = "2018"
|
||||
publish = false
|
||||
|
||||
[lib]
|
||||
name = "mlservo"
|
||||
crate-type = ["staticlib"]
|
||||
test = false
|
||||
bench = false
|
||||
|
||||
[features]
|
||||
egl = ["simpleservo/egl"]
|
||||
layout-2013 = ["simpleservo/layout-2013"]
|
||||
layout-2020 = ["simpleservo/layout-2020"]
|
||||
|
||||
[dependencies]
|
||||
libc = { workspace = true }
|
||||
libservo = { path = "../../components/servo", features = ["no_static_freetype"] }
|
||||
log = { workspace = true }
|
||||
servo-egl = "0.2"
|
||||
simpleservo = { path = "../libsimpleservo/api", features = ["no_static_freetype"] }
|
||||
smallvec = { workspace = true }
|
||||
webxr = { git = "https://github.com/servo/webxr", features = ["ipc", "magicleap"] }
|
||||
webxr-api = { git = "https://github.com/servo/webxr", features = ["ipc"] }
|
|
@ -1,571 +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 https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use egl::egl::EGLContext;
|
||||
use egl::egl::EGLDisplay;
|
||||
use egl::egl::EGLSurface;
|
||||
use egl::egl::MakeCurrent;
|
||||
use egl::egl::SwapBuffers;
|
||||
use libc::{dup2, pipe, read};
|
||||
use log::info;
|
||||
use log::warn;
|
||||
use rust_webvr::api::MagicLeapVRService;
|
||||
use servo::euclid::Scale;
|
||||
use servo::keyboard_types::Key;
|
||||
use servo::servo_url::ServoUrl;
|
||||
use servo::webrender_api::units::{DeviceIntRect, DevicePixel, DevicePoint, LayoutPixel};
|
||||
use simpleservo::{self, deinit, gl_glue, MouseButton, ServoGlue, SERVO};
|
||||
use simpleservo::{
|
||||
Coordinates, EventLoopWaker, HostTrait, InitOptions, InputMethodType, PromptResult,
|
||||
VRInitOptions,
|
||||
};
|
||||
use smallvec::SmallVec;
|
||||
use std::cell::Cell;
|
||||
use std::ffi::CStr;
|
||||
use std::ffi::CString;
|
||||
use std::io::Write;
|
||||
use std::os::raw::c_char;
|
||||
use std::os::raw::c_int;
|
||||
use std::os::raw::c_void;
|
||||
use std::rc::Rc;
|
||||
use std::thread;
|
||||
use std::time::Duration;
|
||||
use std::time::Instant;
|
||||
use webxr::magicleap::MagicLeapDiscovery;
|
||||
|
||||
#[repr(u32)]
|
||||
pub enum MLLogLevel {
|
||||
Fatal = 0,
|
||||
Error = 1,
|
||||
Warning = 2,
|
||||
Info = 3,
|
||||
Debug = 4,
|
||||
Verbose = 5,
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
#[allow(non_camel_case_types)]
|
||||
pub enum MLKeyType {
|
||||
kNone,
|
||||
kCharacter,
|
||||
kBackspace,
|
||||
kShift,
|
||||
kSpeechToText,
|
||||
kPageEmoji,
|
||||
kPageLowerLetters,
|
||||
kPageNumericSymbols,
|
||||
kCancel,
|
||||
kSubmit,
|
||||
kPrevious,
|
||||
kNext,
|
||||
kClear,
|
||||
kClose,
|
||||
kEnter,
|
||||
kCustom1,
|
||||
kCustom2,
|
||||
kCustom3,
|
||||
kCustom4,
|
||||
kCustom5,
|
||||
}
|
||||
|
||||
#[repr(transparent)]
|
||||
#[derive(Clone, Copy)]
|
||||
pub struct MLLogger(Option<extern "C" fn(MLLogLevel, *const c_char)>);
|
||||
|
||||
#[repr(transparent)]
|
||||
pub struct MLHistoryUpdate(Option<extern "C" fn(MLApp, bool, bool)>);
|
||||
|
||||
#[repr(transparent)]
|
||||
pub struct MLURLUpdate(Option<extern "C" fn(MLApp, *const c_char)>);
|
||||
|
||||
#[repr(transparent)]
|
||||
pub struct MLKeyboard(Option<extern "C" fn(MLApp, bool)>);
|
||||
|
||||
#[repr(transparent)]
|
||||
#[derive(Clone, Copy)]
|
||||
pub struct MLApp(*mut c_void);
|
||||
|
||||
const LOG_LEVEL: log::LevelFilter = log::LevelFilter::Info;
|
||||
|
||||
fn call<F, T>(f: F) -> Result<T, &'static str>
|
||||
where
|
||||
F: FnOnce(&mut ServoGlue) -> Result<T, &'static str>,
|
||||
{
|
||||
SERVO.with(|s| match s.borrow_mut().as_mut() {
|
||||
Some(ref mut s) => (f)(s),
|
||||
None => Err("Servo is not available in this thread"),
|
||||
})
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn init_servo(
|
||||
ctxt: EGLContext,
|
||||
surf: EGLSurface,
|
||||
disp: EGLDisplay,
|
||||
landscape: bool,
|
||||
app: MLApp,
|
||||
logger: MLLogger,
|
||||
history_update: MLHistoryUpdate,
|
||||
url_update: MLURLUpdate,
|
||||
keyboard: MLKeyboard,
|
||||
url: *const c_char,
|
||||
default_args: *const c_char,
|
||||
width: u32,
|
||||
height: u32,
|
||||
hidpi: f32,
|
||||
) -> *mut ServoInstance {
|
||||
redirect_stdout_to_log(logger);
|
||||
let _ = log::set_boxed_logger(Box::new(logger));
|
||||
log::set_max_level(LOG_LEVEL);
|
||||
|
||||
let gl = gl_glue::egl::init().expect("EGL initialization failure");
|
||||
|
||||
let coordinates = Coordinates::new(
|
||||
0,
|
||||
0,
|
||||
width as i32,
|
||||
height as i32,
|
||||
width as i32,
|
||||
height as i32,
|
||||
);
|
||||
|
||||
let mut url = CStr::from_ptr(url).to_str().unwrap_or("about:blank");
|
||||
|
||||
// If the URL has a space in it, then treat everything before the space as arguments
|
||||
let args = if let Some(i) = url.rfind(' ') {
|
||||
let (front, back) = url.split_at(i);
|
||||
url = back;
|
||||
front.split(' ').map(|s| s.to_owned()).collect()
|
||||
} else if !default_args.is_null() {
|
||||
CStr::from_ptr(default_args)
|
||||
.to_str()
|
||||
.unwrap_or("")
|
||||
.split(' ')
|
||||
.map(|s| s.to_owned())
|
||||
.collect()
|
||||
} else {
|
||||
Vec::new()
|
||||
};
|
||||
|
||||
info!("got args: {:?}", args);
|
||||
|
||||
let vr_init = if !landscape {
|
||||
let name = String::from("Magic Leap VR Display");
|
||||
let (service, heartbeat) = MagicLeapVRService::new(name, ctxt, gl.gl_wrapper.clone())
|
||||
.expect("Failed to create VR service");
|
||||
let service = Box::new(service);
|
||||
let heartbeat = Box::new(heartbeat);
|
||||
VRInitOptions::VRService(service, heartbeat)
|
||||
} else {
|
||||
VRInitOptions::None
|
||||
};
|
||||
|
||||
let xr_discovery: Option<Box<dyn webxr_api::Discovery>> = if !landscape {
|
||||
let discovery = MagicLeapDiscovery::new(ctxt, gl.gl_wrapper.clone());
|
||||
Some(Box::new(discovery))
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
let opts = InitOptions {
|
||||
args,
|
||||
density: hidpi,
|
||||
xr_discovery,
|
||||
coordinates,
|
||||
gl_context_pointer: Some(ctxt),
|
||||
native_display_pointer: Some(disp),
|
||||
..Default::default()
|
||||
};
|
||||
let wakeup = Box::new(EventLoopWakerInstance);
|
||||
let shut_down_complete = Rc::new(Cell::new(false));
|
||||
let callbacks = Box::new(HostCallbacks {
|
||||
app,
|
||||
ctxt,
|
||||
surf,
|
||||
disp,
|
||||
landscape,
|
||||
shut_down_complete: shut_down_complete.clone(),
|
||||
history_update,
|
||||
url_update,
|
||||
keyboard,
|
||||
});
|
||||
info!("Starting servo");
|
||||
simpleservo::init(opts, gl.gl_wrapper, wakeup, callbacks).expect("error initializing Servo");
|
||||
|
||||
let result = Box::new(ServoInstance {
|
||||
scroll_state: ScrollState::TriggerUp,
|
||||
scroll_scale: Scale::new(SCROLL_SCALE / hidpi),
|
||||
shut_down_complete,
|
||||
});
|
||||
Box::into_raw(result)
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn heartbeat_servo(_servo: *mut ServoInstance) {
|
||||
let _ = call(|s| s.perform_updates());
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn keyboard_servo(
|
||||
_servo: *mut ServoInstance,
|
||||
key_code: char,
|
||||
key_type: MLKeyType,
|
||||
) {
|
||||
let key = match key_type {
|
||||
MLKeyType::kCharacter => Key::Character([key_code].iter().collect()),
|
||||
MLKeyType::kBackspace => Key::Backspace,
|
||||
MLKeyType::kEnter => Key::Enter,
|
||||
_ => return,
|
||||
};
|
||||
// TODO: can the ML1 generate separate press and release events?
|
||||
let key2 = key.clone();
|
||||
let _ = call(move |s| s.key_down(key2));
|
||||
let _ = call(move |s| s.key_up(key));
|
||||
}
|
||||
|
||||
// Some magic numbers.
|
||||
|
||||
// How far does the cursor have to move for it to count as a drag rather than a click?
|
||||
// (In device pixels squared, to avoid taking a sqrt when calculating move distance.)
|
||||
const DRAG_CUTOFF_SQUARED: f32 = 900.0;
|
||||
|
||||
// How much should we scale scrolling by?
|
||||
const SCROLL_SCALE: f32 = 3.0;
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn move_servo(servo: *mut ServoInstance, x: f32, y: f32) {
|
||||
// Servo's cursor was moved
|
||||
if let Some(servo) = servo.as_mut() {
|
||||
let point = DevicePoint::new(x, y);
|
||||
match servo.scroll_state {
|
||||
ScrollState::TriggerUp => {
|
||||
servo.scroll_state = ScrollState::TriggerUp;
|
||||
let _ = call(|s| s.mouse_move(x, y));
|
||||
},
|
||||
ScrollState::TriggerDown(start)
|
||||
if (start - point).square_length() < DRAG_CUTOFF_SQUARED =>
|
||||
{
|
||||
return;
|
||||
},
|
||||
ScrollState::TriggerDown(start) => {
|
||||
servo.scroll_state = ScrollState::TriggerDragging(start, point);
|
||||
let _ = call(|s| s.mouse_move(x, y));
|
||||
let delta = (point - start) * servo.scroll_scale;
|
||||
let start = start.to_i32();
|
||||
let _ = call(|s| s.scroll_start(delta.x, delta.y, start.x, start.y));
|
||||
},
|
||||
ScrollState::TriggerDragging(start, prev) => {
|
||||
servo.scroll_state = ScrollState::TriggerDragging(start, point);
|
||||
let _ = call(|s| s.mouse_move(x, y));
|
||||
let delta = (point - prev) * servo.scroll_scale;
|
||||
let start = start.to_i32();
|
||||
let _ = call(|s| s.scroll(delta.x, delta.y, start.x, start.y));
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn trigger_servo(servo: *mut ServoInstance, x: f32, y: f32, down: bool) {
|
||||
// Servo was triggered
|
||||
if let Some(servo) = servo.as_mut() {
|
||||
let point = DevicePoint::new(x, y);
|
||||
match servo.scroll_state {
|
||||
ScrollState::TriggerUp if down => {
|
||||
servo.scroll_state = ScrollState::TriggerDown(point);
|
||||
let _ = call(|s| s.mouse_down(x, y, MouseButton::Left));
|
||||
},
|
||||
ScrollState::TriggerDown(start) if !down => {
|
||||
servo.scroll_state = ScrollState::TriggerUp;
|
||||
let _ = call(|s| s.mouse_up(start.x, start.y, MouseButton::Left));
|
||||
let _ = call(|s| s.click(start.x as f32, start.y as f32));
|
||||
let _ = call(|s| s.mouse_move(start.x, start.y));
|
||||
},
|
||||
ScrollState::TriggerDragging(start, prev) if !down => {
|
||||
servo.scroll_state = ScrollState::TriggerUp;
|
||||
let delta = (point - prev) * servo.scroll_scale;
|
||||
let start = start.to_i32();
|
||||
let _ = call(|s| s.scroll_end(delta.x, delta.y, start.x, start.y));
|
||||
let _ = call(|s| s.mouse_up(x, y, MouseButton::Left));
|
||||
},
|
||||
_ => return,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn traverse_servo(_servo: *mut ServoInstance, delta: i32) {
|
||||
// Traverse the session history
|
||||
if delta == 0 {
|
||||
let _ = call(|s| s.reload());
|
||||
} else if delta < 0 {
|
||||
let _ = call(|s| s.go_back());
|
||||
} else {
|
||||
let _ = call(|s| s.go_forward());
|
||||
}
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn navigate_servo(_servo: *mut ServoInstance, text: *const c_char) {
|
||||
let text = CStr::from_ptr(text)
|
||||
.to_str()
|
||||
.expect("Failed to convert text to UTF-8");
|
||||
let url = ServoUrl::parse(text).unwrap_or_else(|_| {
|
||||
let mut search = ServoUrl::parse("https://duckduckgo.com")
|
||||
.expect("Failed to parse search URL")
|
||||
.into_url();
|
||||
search.query_pairs_mut().append_pair("q", text);
|
||||
ServoUrl::from_url(search)
|
||||
});
|
||||
let _ = call(|s| s.load_uri(url.as_str()));
|
||||
}
|
||||
|
||||
// Some magic numbers for shutdown
|
||||
const SHUTDOWN_DURATION: Duration = Duration::from_secs(10);
|
||||
const SHUTDOWN_POLL_INTERVAL: Duration = Duration::from_millis(100);
|
||||
|
||||
#[no_mangle]
|
||||
pub unsafe extern "C" fn discard_servo(servo: *mut ServoInstance) {
|
||||
if let Some(servo) = servo.as_mut() {
|
||||
let servo = Box::from_raw(servo);
|
||||
let finish = Instant::now() + SHUTDOWN_DURATION;
|
||||
let _ = call(|s| s.request_shutdown());
|
||||
while !servo.shut_down_complete.get() {
|
||||
let _ = call(|s| s.perform_updates());
|
||||
if Instant::now() > finish {
|
||||
warn!("Incomplete shutdown.");
|
||||
}
|
||||
thread::sleep(SHUTDOWN_POLL_INTERVAL);
|
||||
}
|
||||
deinit();
|
||||
}
|
||||
}
|
||||
|
||||
struct HostCallbacks {
|
||||
ctxt: EGLContext,
|
||||
surf: EGLSurface,
|
||||
disp: EGLDisplay,
|
||||
landscape: bool,
|
||||
shut_down_complete: Rc<Cell<bool>>,
|
||||
history_update: MLHistoryUpdate,
|
||||
url_update: MLURLUpdate,
|
||||
app: MLApp,
|
||||
keyboard: MLKeyboard,
|
||||
}
|
||||
|
||||
impl HostTrait for HostCallbacks {
|
||||
fn flush(&self) {
|
||||
// Immersive and landscape apps have different requirements for who calls SwapBuffers.
|
||||
if self.landscape {
|
||||
SwapBuffers(self.disp, self.surf);
|
||||
}
|
||||
}
|
||||
|
||||
fn make_current(&self) {
|
||||
MakeCurrent(self.disp, self.surf, self.surf, self.ctxt);
|
||||
}
|
||||
|
||||
fn prompt_alert(&self, message: String, _trusted: bool) {
|
||||
warn!("Prompt Alert: {}", message);
|
||||
}
|
||||
|
||||
fn prompt_ok_cancel(&self, message: String, _trusted: bool) -> PromptResult {
|
||||
warn!("Prompt not implemented. Cancelled. {}", message);
|
||||
PromptResult::Secondary
|
||||
}
|
||||
|
||||
fn prompt_yes_no(&self, message: String, _trusted: bool) -> PromptResult {
|
||||
warn!("Prompt not implemented. Cancelled. {}", message);
|
||||
PromptResult::Secondary
|
||||
}
|
||||
|
||||
fn prompt_input(&self, message: String, default: String, _trusted: bool) -> Option<String> {
|
||||
warn!("Input prompt not implemented. {}", message);
|
||||
Some(default)
|
||||
}
|
||||
|
||||
fn on_load_started(&self) {}
|
||||
fn on_load_ended(&self) {}
|
||||
fn on_title_changed(&self, _title: String) {}
|
||||
fn on_allow_navigation(&self, _url: String) -> bool {
|
||||
true
|
||||
}
|
||||
fn on_url_changed(&self, url: String) {
|
||||
if let Ok(cstr) = CString::new(url.as_str()) {
|
||||
if let Some(url_update) = self.url_update.0 {
|
||||
url_update(self.app, cstr.as_ptr());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn on_history_changed(&self, can_go_back: bool, can_go_forward: bool) {
|
||||
if let Some(history_update) = self.history_update.0 {
|
||||
history_update(self.app, can_go_back, can_go_forward);
|
||||
}
|
||||
}
|
||||
|
||||
fn on_animating_changed(&self, _animating: bool) {}
|
||||
|
||||
fn on_shutdown_complete(&self) {
|
||||
self.shut_down_complete.set(true);
|
||||
}
|
||||
|
||||
fn on_ime_show(
|
||||
&self,
|
||||
_input_type: InputMethodType,
|
||||
_text: Option<(String, i32)>,
|
||||
_multiline: bool,
|
||||
_bounds: DeviceIntRect,
|
||||
) {
|
||||
if let Some(keyboard) = self.keyboard.0 {
|
||||
keyboard(self.app, true)
|
||||
}
|
||||
}
|
||||
|
||||
fn on_ime_hide(&self) {
|
||||
if let Some(keyboard) = self.keyboard.0 {
|
||||
keyboard(self.app, false)
|
||||
}
|
||||
}
|
||||
|
||||
fn get_clipboard_contents(&self) -> Option<String> {
|
||||
None
|
||||
}
|
||||
|
||||
fn set_clipboard_contents(&self, _contents: String) {}
|
||||
|
||||
fn on_devtools_started(&self, port: Result<u16, ()>) {
|
||||
match port {
|
||||
Ok(p) => info!("Devtools Server running on port {}", p),
|
||||
Err(()) => error!("Error running Devtools server"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub struct ServoInstance {
|
||||
scroll_state: ScrollState,
|
||||
scroll_scale: Scale<f32, DevicePixel, LayoutPixel>,
|
||||
shut_down_complete: Rc<Cell<bool>>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy)]
|
||||
enum ScrollState {
|
||||
TriggerUp,
|
||||
TriggerDown(DevicePoint),
|
||||
TriggerDragging(DevicePoint, DevicePoint),
|
||||
}
|
||||
|
||||
struct EventLoopWakerInstance;
|
||||
|
||||
impl EventLoopWaker for EventLoopWakerInstance {
|
||||
fn clone_box(&self) -> Box<dyn EventLoopWaker> {
|
||||
Box::new(EventLoopWakerInstance)
|
||||
}
|
||||
|
||||
fn wake(&self) {}
|
||||
}
|
||||
|
||||
impl log::Log for MLLogger {
|
||||
fn enabled(&self, metadata: &log::Metadata) -> bool {
|
||||
metadata.level() <= LOG_LEVEL
|
||||
}
|
||||
|
||||
fn log(&self, record: &log::Record) {
|
||||
if let Some(log) = self.0 {
|
||||
let lvl = match record.level() {
|
||||
log::Level::Error => MLLogLevel::Error,
|
||||
log::Level::Warn => MLLogLevel::Warning,
|
||||
log::Level::Info => MLLogLevel::Info,
|
||||
log::Level::Debug => MLLogLevel::Debug,
|
||||
log::Level::Trace => MLLogLevel::Verbose,
|
||||
};
|
||||
let mut msg = SmallVec::<[u8; 128]>::new();
|
||||
write!(msg, "{}\0", record.args()).unwrap();
|
||||
log(lvl, &msg[0] as *const _ as *const _);
|
||||
}
|
||||
}
|
||||
|
||||
fn flush(&self) {}
|
||||
}
|
||||
|
||||
fn redirect_stdout_to_log(logger: MLLogger) {
|
||||
let log = match logger.0 {
|
||||
None => return,
|
||||
Some(log) => log,
|
||||
};
|
||||
|
||||
// The first step is to redirect stdout and stderr to the logs.
|
||||
// We redirect stdout and stderr to a custom descriptor.
|
||||
let mut pfd: [c_int; 2] = [0, 0];
|
||||
unsafe {
|
||||
pipe(pfd.as_mut_ptr());
|
||||
dup2(pfd[1], 1);
|
||||
dup2(pfd[1], 2);
|
||||
}
|
||||
|
||||
let descriptor = pfd[0];
|
||||
|
||||
// Then we spawn a thread whose only job is to read from the other side of the
|
||||
// pipe and redirect to the logs.
|
||||
let _detached = thread::spawn(move || {
|
||||
const BUF_LENGTH: usize = 512;
|
||||
let mut buf = vec![b'\0' as c_char; BUF_LENGTH];
|
||||
|
||||
// Always keep at least one null terminator
|
||||
const BUF_AVAILABLE: usize = BUF_LENGTH - 1;
|
||||
let buf = &mut buf[..BUF_AVAILABLE];
|
||||
|
||||
let mut cursor = 0_usize;
|
||||
|
||||
loop {
|
||||
let result = {
|
||||
let read_into = &mut buf[cursor..];
|
||||
unsafe {
|
||||
read(
|
||||
descriptor,
|
||||
read_into.as_mut_ptr() as *mut _,
|
||||
read_into.len(),
|
||||
)
|
||||
}
|
||||
};
|
||||
|
||||
let end = if result == 0 {
|
||||
return;
|
||||
} else if result < 0 {
|
||||
log(
|
||||
MLLogLevel::Error,
|
||||
b"error in log thread; closing\0".as_ptr() as *const _,
|
||||
);
|
||||
return;
|
||||
} else {
|
||||
result as usize + cursor
|
||||
};
|
||||
|
||||
// Only modify the portion of the buffer that contains real data.
|
||||
let buf = &mut buf[0..end];
|
||||
|
||||
if let Some(last_newline_pos) = buf.iter().rposition(|&c| c == b'\n' as c_char) {
|
||||
buf[last_newline_pos] = b'\0' as c_char;
|
||||
log(MLLogLevel::Info, buf.as_ptr());
|
||||
if last_newline_pos < buf.len() - 1 {
|
||||
let pos_after_newline = last_newline_pos + 1;
|
||||
let len_not_logged_yet = buf[pos_after_newline..].len();
|
||||
for j in 0..len_not_logged_yet as usize {
|
||||
buf[j] = buf[pos_after_newline + j];
|
||||
}
|
||||
cursor = len_not_logged_yet;
|
||||
} else {
|
||||
cursor = 0;
|
||||
}
|
||||
} else if end == BUF_AVAILABLE {
|
||||
// No newline found but the buffer is full, flush it anyway.
|
||||
// `buf.as_ptr()` is null-terminated by BUF_LENGTH being 1 less than BUF_AVAILABLE.
|
||||
log(MLLogLevel::Info, buf.as_ptr());
|
||||
cursor = 0;
|
||||
} else {
|
||||
cursor = end;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
|
@ -70,7 +70,7 @@ class MachCommands(CommandBase):
|
|||
@CommandBase.build_like_command_arguments
|
||||
def build(self, release=False, dev=False, jobs=None, params=None, media_stack=None,
|
||||
no_package=False, verbose=False, very_verbose=False,
|
||||
target=None, android=False, magicleap=False, libsimpleservo=False,
|
||||
target=None, android=False, libsimpleservo=False,
|
||||
features=None, uwp=False, win_arm64=False, **kwargs):
|
||||
# Force the UWP-enabled target if the convenience UWP flags are passed.
|
||||
if uwp and not target:
|
||||
|
@ -82,7 +82,7 @@ class MachCommands(CommandBase):
|
|||
opts = params or []
|
||||
features = features or []
|
||||
|
||||
target, android = self.pick_target_triple(target, android, magicleap)
|
||||
target, android = self.pick_target_triple(target, android)
|
||||
|
||||
# Infer UWP build if only provided a target.
|
||||
if not uwp:
|
||||
|
@ -96,9 +96,7 @@ class MachCommands(CommandBase):
|
|||
if android:
|
||||
target_path = path.join(target_path, "android")
|
||||
base_path = path.join(target_path, target)
|
||||
elif magicleap:
|
||||
target_path = path.join(target_path, "magicleap")
|
||||
base_path = path.join(target_path, target)
|
||||
|
||||
release_path = path.join(base_path, "release", "servo")
|
||||
dev_path = path.join(base_path, "debug", "servo")
|
||||
|
||||
|
@ -422,121 +420,6 @@ class MachCommands(CommandBase):
|
|||
expr = "s#libdir=.*#libdir=%s#g" % gst_lib_path
|
||||
subprocess.call(["perl", "-i", "-pe", expr, pc])
|
||||
|
||||
if magicleap:
|
||||
if platform.system() not in ["Darwin"]:
|
||||
raise Exception("Magic Leap builds are only supported on macOS. "
|
||||
"If you only wish to test if your code builds, "
|
||||
"run ./mach build -p libmlservo.")
|
||||
|
||||
ml_sdk = env.get("MAGICLEAP_SDK")
|
||||
if not ml_sdk:
|
||||
raise Exception("Magic Leap builds need the MAGICLEAP_SDK environment variable")
|
||||
if not os.path.exists(ml_sdk):
|
||||
raise Exception("Path specified by MAGICLEAP_SDK does not exist.")
|
||||
|
||||
ml_support = path.join(self.get_top_dir(), "support", "magicleap")
|
||||
|
||||
# We pretend to be an Android build
|
||||
env.setdefault("ANDROID_VERSION", "21")
|
||||
env.setdefault("ANDROID_NDK", env["MAGICLEAP_SDK"])
|
||||
env.setdefault("ANDROID_NDK_VERSION", "16.0.0")
|
||||
env.setdefault("ANDROID_PLATFORM_DIR", path.join(env["MAGICLEAP_SDK"], "lumin"))
|
||||
env.setdefault("ANDROID_TOOLCHAIN_DIR", path.join(env["MAGICLEAP_SDK"], "tools", "toolchains"))
|
||||
env.setdefault("ANDROID_CLANG", path.join(env["ANDROID_TOOLCHAIN_DIR"], "bin", "clang"))
|
||||
|
||||
# A random collection of search paths
|
||||
env.setdefault("STLPORT_LIBS", " ".join([
|
||||
"-L" + path.join(env["MAGICLEAP_SDK"], "lumin", "stl", "libc++-lumin", "lib"),
|
||||
"-lc++"
|
||||
]))
|
||||
env.setdefault("STLPORT_CPPFLAGS", " ".join([
|
||||
"-I" + path.join(env["MAGICLEAP_SDK"], "lumin", "stl", "libc++-lumin", "include")
|
||||
]))
|
||||
env.setdefault("CPPFLAGS", " ".join([
|
||||
"--no-standard-includes",
|
||||
"--sysroot=" + env["ANDROID_PLATFORM_DIR"],
|
||||
"-I" + path.join(env["ANDROID_PLATFORM_DIR"], "usr", "include"),
|
||||
"-isystem" + path.join(env["ANDROID_TOOLCHAIN_DIR"], "lib64", "clang", "3.8", "include"),
|
||||
]))
|
||||
env.setdefault("CFLAGS", " ".join([
|
||||
env["CPPFLAGS"],
|
||||
"-L" + path.join(env["ANDROID_TOOLCHAIN_DIR"], "lib", "gcc", target, "4.9.x"),
|
||||
]))
|
||||
env.setdefault("CXXFLAGS", " ".join([
|
||||
# Sigh, Angle gets confused if there's another EGL around
|
||||
"-I./gfx/angle/checkout/include",
|
||||
env["STLPORT_CPPFLAGS"],
|
||||
env["CFLAGS"]
|
||||
]))
|
||||
|
||||
# The toolchain commands
|
||||
env.setdefault("AR", path.join(env["ANDROID_TOOLCHAIN_DIR"], "bin", "aarch64-linux-android-ar"))
|
||||
env.setdefault("AS", path.join(env["ANDROID_TOOLCHAIN_DIR"], "bin", "aarch64-linux-android-clang"))
|
||||
env.setdefault("CC", path.join(env["ANDROID_TOOLCHAIN_DIR"], "bin", "aarch64-linux-android-clang"))
|
||||
env.setdefault("CPP", path.join(env["ANDROID_TOOLCHAIN_DIR"], "bin", "aarch64-linux-android-clang -E"))
|
||||
env.setdefault("CXX", path.join(env["ANDROID_TOOLCHAIN_DIR"], "bin", "aarch64-linux-android-clang++"))
|
||||
env.setdefault("LD", path.join(env["ANDROID_TOOLCHAIN_DIR"], "bin", "aarch64-linux-android-ld"))
|
||||
env.setdefault("OBJCOPY", path.join(env["ANDROID_TOOLCHAIN_DIR"], "bin", "aarch64-linux-android-objcopy"))
|
||||
env.setdefault("OBJDUMP", path.join(env["ANDROID_TOOLCHAIN_DIR"], "bin", "aarch64-linux-android-objdump"))
|
||||
env.setdefault("RANLIB", path.join(env["ANDROID_TOOLCHAIN_DIR"], "bin", "aarch64-linux-android-ranlib"))
|
||||
env.setdefault("STRIP", path.join(env["ANDROID_TOOLCHAIN_DIR"], "bin", "aarch64-linux-android-strip"))
|
||||
|
||||
# Undo all of that when compiling build tools for the host
|
||||
env.setdefault("HOST_CFLAGS", "")
|
||||
env.setdefault("HOST_CXXFLAGS", "")
|
||||
env.setdefault("HOST_CC", "/usr/local/opt/llvm/bin/clang")
|
||||
env.setdefault("HOST_CXX", "/usr/local/opt/llvm/bin/clang++")
|
||||
env.setdefault("HOST_LD", "ld")
|
||||
|
||||
# Some random build configurations
|
||||
env.setdefault("HARFBUZZ_SYS_NO_PKG_CONFIG", "1")
|
||||
env.setdefault("PKG_CONFIG_ALLOW_CROSS", "1")
|
||||
env.setdefault("CMAKE_TOOLCHAIN_FILE", path.join(ml_support, "toolchain.cmake"))
|
||||
env.setdefault("_LIBCPP_INLINE_VISIBILITY", "__attribute__((__always_inline__))")
|
||||
|
||||
# The Open SSL configuration
|
||||
env.setdefault("OPENSSL_DIR", path.join(target_path, target, "native", "openssl"))
|
||||
env.setdefault("OPENSSL_VERSION", "1.1.1d")
|
||||
env.setdefault("OPENSSL_STATIC", "1")
|
||||
|
||||
# GStreamer configuration
|
||||
env.setdefault("GSTREAMER_DIR", path.join(target_path, target, "native", "gstreamer-1.16.0"))
|
||||
env.setdefault("GSTREAMER_URL", "https://servo-deps-2.s3.amazonaws.com/gstreamer/gstreamer-magicleap-1.16.0-20190823-104505.tgz")
|
||||
env.setdefault("PKG_CONFIG_PATH", path.join(env["GSTREAMER_DIR"], "system", "lib64", "pkgconfig"))
|
||||
|
||||
# Override the linker set in .cargo/config
|
||||
env.setdefault("CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER", path.join(ml_support, "fake-ld.sh"))
|
||||
|
||||
# Only build libmlservo
|
||||
opts += ["--package", "libmlservo"]
|
||||
|
||||
# Download and build OpenSSL if necessary
|
||||
status = call(path.join(ml_support, "openssl.sh"), env=env, verbose=verbose)
|
||||
if status:
|
||||
return status
|
||||
|
||||
# Download prebuilt Gstreamer if necessary
|
||||
if not os.path.exists(path.join(env["GSTREAMER_DIR"], "system")):
|
||||
if not os.path.exists(env["GSTREAMER_DIR"] + ".tgz"):
|
||||
check_call([
|
||||
'curl',
|
||||
'-L',
|
||||
'-f',
|
||||
'-o', env["GSTREAMER_DIR"] + ".tgz",
|
||||
env["GSTREAMER_URL"],
|
||||
])
|
||||
check_call([
|
||||
'mkdir',
|
||||
'-p',
|
||||
env["GSTREAMER_DIR"],
|
||||
])
|
||||
check_call([
|
||||
'tar',
|
||||
'xzf',
|
||||
env["GSTREAMER_DIR"] + ".tgz",
|
||||
'-C', env["GSTREAMER_DIR"],
|
||||
])
|
||||
|
||||
# https://internals.rust-lang.org/t/exploring-crate-graph-build-times-with-cargo-build-ztimings/10975
|
||||
# Prepend so that e.g. `-Ztimings` (which means `-Ztimings=info,html`)
|
||||
# given on the command line can override it
|
||||
|
@ -553,7 +436,7 @@ class MachCommands(CommandBase):
|
|||
|
||||
status = self.run_cargo_build_like_command(
|
||||
"build", opts, env=env, verbose=verbose,
|
||||
target=target, android=android, magicleap=magicleap, libsimpleservo=libsimpleservo, uwp=uwp,
|
||||
target=target, android=android, libsimpleservo=libsimpleservo, uwp=uwp,
|
||||
features=features, **kwargs
|
||||
)
|
||||
|
||||
|
|
|
@ -356,17 +356,14 @@ class CommandBase(object):
|
|||
build_type = "release" if release else "debug"
|
||||
return path.join(base_path, build_type, apk_name)
|
||||
|
||||
def get_binary_path(self, release, dev, target=None, android=False, magicleap=False, simpleservo=False):
|
||||
def get_binary_path(self, release, dev, target=None, android=False, simpleservo=False):
|
||||
# TODO(autrilla): this function could still use work - it shouldn't
|
||||
# handle quitting, or printing. It should return the path, or an error.
|
||||
base_path = self.get_target_dir()
|
||||
|
||||
binary_name = "servo" + BIN_SUFFIX
|
||||
|
||||
if magicleap:
|
||||
base_path = path.join(base_path, "magicleap", "aarch64-linux-android")
|
||||
binary_name = "libmlservo.a"
|
||||
elif android:
|
||||
if android:
|
||||
base_path = path.join(base_path, "android", self.config["android"]["target"])
|
||||
simpleservo = True
|
||||
elif target:
|
||||
|
@ -823,12 +820,6 @@ install them, let us know by filing a bug!")
|
|||
action='store_true',
|
||||
help='Build for Android',
|
||||
),
|
||||
CommandArgument(
|
||||
'--magicleap',
|
||||
default=None,
|
||||
action='store_true',
|
||||
help='Build for Magic Leap',
|
||||
),
|
||||
CommandArgument(
|
||||
'--libsimpleservo',
|
||||
default=None,
|
||||
|
@ -868,16 +859,14 @@ install them, let us know by filing a bug!")
|
|||
decorated_function = decorator(decorated_function)
|
||||
return decorated_function
|
||||
|
||||
def pick_target_triple(self, target, android, magicleap):
|
||||
def pick_target_triple(self, target, android):
|
||||
if android is None:
|
||||
android = self.config["build"]["android"]
|
||||
if target and android:
|
||||
assert self.handle_android_target(target)
|
||||
if android and not target:
|
||||
target = self.config["android"]["target"]
|
||||
if magicleap and not target:
|
||||
target = "aarch64-linux-android"
|
||||
if target and not android and not magicleap:
|
||||
if target and not android:
|
||||
android = self.handle_android_target(target)
|
||||
return target, android
|
||||
|
||||
|
@ -900,14 +889,14 @@ install them, let us know by filing a bug!")
|
|||
def run_cargo_build_like_command(
|
||||
self, command, cargo_args,
|
||||
env=None, verbose=False,
|
||||
target=None, android=False, magicleap=False, libsimpleservo=False,
|
||||
target=None, android=False, libsimpleservo=False,
|
||||
features=None, debug_mozjs=False, with_debug_assertions=False,
|
||||
with_frame_pointer=False, without_wgl=False,
|
||||
with_layout_2020=False, with_layout_2013=False,
|
||||
uwp=False, media_stack=None,
|
||||
):
|
||||
env = env or self.build_env()
|
||||
target, android = self.pick_target_triple(target, android, magicleap)
|
||||
target, android = self.pick_target_triple(target, android)
|
||||
|
||||
args = []
|
||||
if "--manifest-path" not in cargo_args:
|
||||
|
@ -932,8 +921,9 @@ install them, let us know by filing a bug!")
|
|||
if "-p" not in cargo_args: # We're building specific package, that may not have features
|
||||
if self.config["build"]["debug-mozjs"] or debug_mozjs:
|
||||
features.append("debugmozjs")
|
||||
if not magicleap:
|
||||
features.append("native-bluetooth")
|
||||
|
||||
features.append("native-bluetooth")
|
||||
|
||||
if uwp:
|
||||
features.append("no-wgl")
|
||||
features.append("uwp")
|
||||
|
|
|
@ -36,13 +36,13 @@ class MachCommands(CommandBase):
|
|||
help="Command-line arguments to be passed through to cargo check")
|
||||
@CommandBase.build_like_command_arguments
|
||||
def check(self, params, features=[], media_stack=None, target=None,
|
||||
android=False, magicleap=False, **kwargs):
|
||||
android=False, **kwargs):
|
||||
if not params:
|
||||
params = []
|
||||
|
||||
features = features or []
|
||||
|
||||
target, android = self.pick_target_triple(target, android, magicleap)
|
||||
target, android = self.pick_target_triple(target, android)
|
||||
|
||||
features += self.pick_media_stack(media_stack, target)
|
||||
|
||||
|
@ -130,13 +130,13 @@ class MachCommands(CommandBase):
|
|||
help="Command-line arguments to be passed through to cargo-fix")
|
||||
@CommandBase.build_like_command_arguments
|
||||
def cargo_fix(self, params, features=[], media_stack=None, target=None,
|
||||
android=False, magicleap=False, **kwargs):
|
||||
android=False, **kwargs):
|
||||
if not params:
|
||||
params = []
|
||||
|
||||
features = features or []
|
||||
|
||||
target, android = self.pick_target_triple(target, android, magicleap)
|
||||
target, android = self.pick_target_triple(target, android)
|
||||
|
||||
features += self.pick_media_stack(media_stack, target)
|
||||
|
||||
|
@ -154,13 +154,13 @@ class MachCommands(CommandBase):
|
|||
help="Command-line arguments to be passed through to cargo-clippy")
|
||||
@CommandBase.build_like_command_arguments
|
||||
def cargo_clippy(self, params, features=[], media_stack=None, target=None,
|
||||
android=False, magicleap=False, **kwargs):
|
||||
android=False, **kwargs):
|
||||
if not params:
|
||||
params = []
|
||||
|
||||
features = features or []
|
||||
|
||||
target, android = self.pick_target_triple(target, android, magicleap)
|
||||
target, android = self.pick_target_triple(target, android)
|
||||
|
||||
features += self.pick_media_stack(media_stack, target)
|
||||
|
||||
|
|
|
@ -18,7 +18,6 @@ import io
|
|||
import json
|
||||
import os
|
||||
import os.path as path
|
||||
import platform
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
|
@ -65,9 +64,6 @@ PACKAGES = {
|
|||
'macbrew': [
|
||||
'target/release/brew/servo.tar.gz',
|
||||
],
|
||||
'magicleap': [
|
||||
'target/magicleap/aarch64-linux-android/release/Servo.mpk',
|
||||
],
|
||||
'maven': [
|
||||
'target/android/gradle/servoview/maven/org/mozilla/servoview/servoview-armv7/',
|
||||
'target/android/gradle/servoview/maven/org/mozilla/servoview/servoview-x86/',
|
||||
|
@ -129,10 +125,6 @@ class PackageCommands(CommandBase):
|
|||
default=None,
|
||||
action='store_true',
|
||||
help='Package Android')
|
||||
@CommandArgument('--magicleap',
|
||||
default=None,
|
||||
action='store_true',
|
||||
help='Package Magic Leap')
|
||||
@CommandArgument('--target', '-t',
|
||||
default=None,
|
||||
help='Package for given target platform')
|
||||
|
@ -148,7 +140,7 @@ class PackageCommands(CommandBase):
|
|||
action='append',
|
||||
help='Create an APPX package')
|
||||
@CommandArgument('--ms-app-store', default=None, action='store_true')
|
||||
def package(self, release=False, dev=False, android=None, magicleap=None, debug=False,
|
||||
def package(self, release=False, dev=False, android=None, debug=False,
|
||||
debugger=None, target=None, flavor=None, maven=False, uwp=None, ms_app_store=False):
|
||||
if android is None:
|
||||
android = self.config["build"]["android"]
|
||||
|
@ -159,14 +151,10 @@ class PackageCommands(CommandBase):
|
|||
android = self.handle_android_target(target)
|
||||
else:
|
||||
target = self.config["android"]["target"]
|
||||
if target and magicleap:
|
||||
print("Please specify either --target or --magicleap.")
|
||||
sys.exit(1)
|
||||
if magicleap:
|
||||
target = "aarch64-linux-android"
|
||||
|
||||
env = self.build_env(target=target)
|
||||
binary_path = self.get_binary_path(
|
||||
release, dev, target=target, android=android, magicleap=magicleap,
|
||||
release, dev, target=target, android=android,
|
||||
simpleservo=uwp is not None
|
||||
)
|
||||
dir_to_root = self.get_top_dir()
|
||||
|
@ -174,40 +162,6 @@ class PackageCommands(CommandBase):
|
|||
if uwp:
|
||||
vs_info = self.vs_dirs()
|
||||
build_uwp(uwp, dev, vs_info['msbuild'], ms_app_store)
|
||||
elif magicleap:
|
||||
if platform.system() not in ["Darwin"]:
|
||||
raise Exception("Magic Leap builds are only supported on macOS.")
|
||||
if not env.get("MAGICLEAP_SDK"):
|
||||
raise Exception("Magic Leap builds need the MAGICLEAP_SDK environment variable")
|
||||
if not env.get("MLCERT"):
|
||||
raise Exception("Magic Leap builds need the MLCERT environment variable")
|
||||
# GStreamer configuration
|
||||
env.setdefault("GSTREAMER_DIR", path.join(
|
||||
self.get_target_dir(), "magicleap", target, "native", "gstreamer-1.16.0"
|
||||
))
|
||||
|
||||
mabu = path.join(env.get("MAGICLEAP_SDK"), "mabu")
|
||||
packages = [
|
||||
"./support/magicleap/Servo.package",
|
||||
]
|
||||
if dev:
|
||||
build_type = "lumin_debug"
|
||||
else:
|
||||
build_type = "lumin_release"
|
||||
for package in packages:
|
||||
argv = [
|
||||
mabu,
|
||||
"-o", target_dir,
|
||||
"-t", build_type,
|
||||
"-r",
|
||||
"GSTREAMER_DIR=" + env["GSTREAMER_DIR"],
|
||||
package
|
||||
]
|
||||
try:
|
||||
subprocess.check_call(argv, env=env)
|
||||
except subprocess.CalledProcessError as e:
|
||||
print("Packaging Magic Leap exited with return value %d" % e.returncode)
|
||||
return e.returncode
|
||||
elif android:
|
||||
android_target = self.config["android"]["target"]
|
||||
if "aarch64" in android_target:
|
||||
|
@ -448,10 +402,6 @@ class PackageCommands(CommandBase):
|
|||
@CommandArgument('--android',
|
||||
action='store_true',
|
||||
help='Install on Android')
|
||||
@CommandArgument('--magicleap',
|
||||
default=None,
|
||||
action='store_true',
|
||||
help='Install on Magic Leap')
|
||||
@CommandArgument('--emulator',
|
||||
action='store_true',
|
||||
help='For Android, install to the only emulated device')
|
||||
|
@ -461,44 +411,29 @@ class PackageCommands(CommandBase):
|
|||
@CommandArgument('--target', '-t',
|
||||
default=None,
|
||||
help='Install the given target platform')
|
||||
def install(self, release=False, dev=False, android=False, magicleap=False, emulator=False, usb=False, target=None):
|
||||
def install(self, release=False, dev=False, android=False, emulator=False, usb=False, target=None):
|
||||
if target and android:
|
||||
print("Please specify either --target or --android.")
|
||||
sys.exit(1)
|
||||
if not android:
|
||||
android = self.handle_android_target(target)
|
||||
if target and magicleap:
|
||||
print("Please specify either --target or --magicleap.")
|
||||
sys.exit(1)
|
||||
if magicleap:
|
||||
target = "aarch64-linux-android"
|
||||
|
||||
env = self.build_env(target=target)
|
||||
try:
|
||||
binary_path = self.get_binary_path(release, dev, android=android, magicleap=magicleap)
|
||||
binary_path = self.get_binary_path(release, dev, android=android)
|
||||
except BuildNotFound:
|
||||
print("Servo build not found. Building servo...")
|
||||
result = Registrar.dispatch(
|
||||
"build", context=self.context, release=release, dev=dev, android=android, magicleap=magicleap,
|
||||
"build", context=self.context, release=release, dev=dev, android=android,
|
||||
)
|
||||
if result:
|
||||
return result
|
||||
try:
|
||||
binary_path = self.get_binary_path(release, dev, android=android, magicleap=magicleap)
|
||||
binary_path = self.get_binary_path(release, dev, android=android)
|
||||
except BuildNotFound:
|
||||
print("Rebuilding Servo did not solve the missing build problem.")
|
||||
return 1
|
||||
|
||||
if magicleap:
|
||||
if not env.get("MAGICLEAP_SDK"):
|
||||
raise Exception("Magic Leap installs need the MAGICLEAP_SDK environment variable")
|
||||
mldb = path.join(env.get("MAGICLEAP_SDK"), "tools", "mldb", "mldb")
|
||||
pkg_path = path.join(path.dirname(binary_path), "Servo.mpk")
|
||||
exec_command = [
|
||||
mldb,
|
||||
"install", "-u",
|
||||
pkg_path,
|
||||
]
|
||||
elif android:
|
||||
if android:
|
||||
pkg_path = self.get_apk_path(release)
|
||||
exec_command = [self.android_adb_path(env)]
|
||||
if emulator and usb:
|
||||
|
@ -516,7 +451,7 @@ class PackageCommands(CommandBase):
|
|||
if not path.exists(pkg_path):
|
||||
print("Servo package not found. Packaging servo...")
|
||||
result = Registrar.dispatch(
|
||||
"package", context=self.context, release=release, dev=dev, android=android, magicleap=magicleap,
|
||||
"package", context=self.context, release=release, dev=dev, android=android,
|
||||
)
|
||||
if result != 0:
|
||||
return result
|
||||
|
|
|
@ -241,7 +241,7 @@ class PostBuildCommands(CommandBase):
|
|||
'params', nargs='...',
|
||||
help="Command-line arguments to be passed through to cargo doc")
|
||||
@CommandBase.build_like_command_arguments
|
||||
def doc(self, params, features, target=None, android=False, magicleap=False,
|
||||
def doc(self, params, features, target=None, android=False,
|
||||
media_stack=None, **kwargs):
|
||||
self.ensure_bootstrapped(rustup_components=["rust-docs"])
|
||||
rustc_path = check_output(
|
||||
|
@ -272,7 +272,7 @@ class PostBuildCommands(CommandBase):
|
|||
|
||||
features = features or []
|
||||
|
||||
target, android = self.pick_target_triple(target, android, magicleap)
|
||||
target, android = self.pick_target_triple(target, android)
|
||||
|
||||
features += self.pick_media_stack(media_stack, target)
|
||||
|
||||
|
|
|
@ -117,10 +117,6 @@ directories = [
|
|||
"./support/android/apk",
|
||||
"./support/hololens",
|
||||
"./support/linux/gstreamer",
|
||||
"./support/magicleap/Servo2D/.vscode",
|
||||
"./support/magicleap/Servo2D/code/inc.gen",
|
||||
"./support/magicleap/Servo2D/code/src.gen",
|
||||
"./support/magicleap/Servo2D/pipeline",
|
||||
"./tests/wpt/harness",
|
||||
"./tests/wpt/web-platform-tests",
|
||||
"./tests/wpt/mozilla/tests/mozilla/referrer-policy",
|
||||
|
|
3
support/magicleap/.gitignore
vendored
3
support/magicleap/.gitignore
vendored
|
@ -1,3 +0,0 @@
|
|||
.out
|
||||
*.log
|
||||
*.lock
|
|
@ -1,132 +0,0 @@
|
|||
# Servo for Magic Leap
|
||||
|
||||
## Build requirements
|
||||
|
||||
Currently, we only support building Servo for the Magic Leap on macOS.
|
||||
|
||||
Install the Magic Leap Lumin and Lumin Runtime SDKs.
|
||||
|
||||
Get a signing key for the magic leap app.
|
||||
|
||||
Optionally, install Visual Studio Code and the Magic Leap plugin.
|
||||
|
||||
## Building the mlservo library
|
||||
|
||||
Build the mlservo library:
|
||||
```
|
||||
MAGICLEAP_SDK=*directory* ./mach build -d --magicleap
|
||||
```
|
||||
This builds a static library `target/magicleap/aarch64-linux-android/debug/libmlservo.a`.
|
||||
|
||||
## Building the Servo2D application
|
||||
|
||||
From inside the `support/magicleap/Servo2D` directory:
|
||||
```
|
||||
mabu Servo2D.package -t device -s *signing key*
|
||||
```
|
||||
This builds the application `.out/Servo2D/Servo2D.mpk`.
|
||||
|
||||
Alternatively, in Visual Studio code, open the `support/magicleap/Servo2D` directory,
|
||||
and use the `Terminal/Run Build Task...` menu option to build the
|
||||
Servo2D application.
|
||||
|
||||
## Debugging gstreamer
|
||||
|
||||
By default, Servo links against release builds of gstreamer, even for debug builds,
|
||||
so if you want to use gdb on gstreamer, you've got some work to do...
|
||||
|
||||
First off, you'll need to build the gstreamer libraries with debug symbols.
|
||||
To do this, edit `support/magicleap/gstreamer/mlsdk.txt.in` and add `'-g', '-O0`,` to
|
||||
`c_args` and `cpp_args`:
|
||||
|
||||
```
|
||||
[properties]
|
||||
c_args = [
|
||||
'-g', '-O0',
|
||||
'--sysroot=@MAGICLEAP_SDK@/lumin/usr',
|
||||
'-I@MAGICLEAP_SDK@/include',
|
||||
'-I@MAGICLEAP_SDK@/staging/include',
|
||||
'-I@INSTALL_DIR@/system/include',
|
||||
]
|
||||
cpp_args = [
|
||||
'-g', '-O0',
|
||||
'--sysroot=@MAGICLEAP_SDK@/lumin/usr',
|
||||
'-I@MAGICLEAP_SDK@/include',
|
||||
'-I@MAGICLEAP_SDK@/staging/include',
|
||||
'-I@INSTALL_DIR@/system/include',
|
||||
]
|
||||
```
|
||||
then build the libraries with `./gstreamer.sh` from inside `support/magicleap/gstreamer`.
|
||||
|
||||
The libraries will be built in `_install/system`, and should be moved over to
|
||||
where `mach` expects them to be:
|
||||
|
||||
```
|
||||
rm -r target/magicleap/aarch64-linux-android/native/gstreamer-1.16.0/system
|
||||
cp -r support/magicleap/gstreamer/_install/system target/magicleap/aarch64-linux-android/native/gstreamer-1.16.0/
|
||||
```
|
||||
You can now build, package and install as normal:
|
||||
```
|
||||
./mach build -d --magicleap
|
||||
./mach package -d --magicleap
|
||||
$MAGICLEAP_SDK/tools/mldb/mldb install -u target/magicleap/aarch64-linux-android/debug/Servo.mpk
|
||||
```
|
||||
to launch gdb on the application:
|
||||
```
|
||||
$MAGICLEAP_SDK/debug --package com.mozilla.servo support/magicleap/Servo2D/.out/debug_lumin_clang-3.8_aarch64/Servo2D
|
||||
```
|
||||
Using the debug libraries in gdb is slightly tricky because you need to set everything up
|
||||
in the right order, setting `solib-search-path` should happen before doing any dynamic loading,
|
||||
but setting `sysroot` after dynamic loading has started. The easiest thing to do is to place a
|
||||
breakpoint somewhere in Servo after gstreamer has started loading, for example:
|
||||
|
||||
|
||||
```
|
||||
(gdb) set solib-search-path /Users/ajeffrey/MagicLeap/mlsdk/v0.22.0/lumin/usr/lib:/Users/ajeffrey/github/asajeffrey/servo/target/magicleap/aarch64-linux-android/native/gstreamer-1.16.0/system/lib64/
|
||||
warning: Unable to find dynamic linker breakpoint function.
|
||||
GDB will be unable to debug shared library initializers
|
||||
and track explicitly loaded dynamic code.
|
||||
|
||||
(gdb) rbreak RenderAndroid::new
|
||||
Breakpoint 1 at 0xaaaac59953a4
|
||||
struct Option<servo_media_gstreamer_render_android::RenderAndroid> servo_media_gstreamer_render_android::RenderAndroid::new::he5ddafe679ae0dff(struct Box<PlayerGLContext>);
|
||||
Breakpoint 2 at 0xaaaac423f184: file /Users/ajeffrey/github/asajeffrey/media/backends/gstreamer/render-android/lib.rs, line 81.
|
||||
static struct Option<gstreamer_gl::auto::gl_display::GLDisplay> servo_media_gstreamer_render_android::RenderAndroid::new::_$u7b$$u7b$closure$u7d$$u7d$::h53b9e99990e38d92(struct closure, struct GLDisplayEGL);
|
||||
|
||||
(gdb) c
|
||||
|
||||
...
|
||||
Thread 2 "ScriptThread Pi" hit Breakpoint 1, 0x0000aaaac59953a4 in servo_media_gstreamer_render_android::RenderAndroid::new::he5ddafe679ae0dff
|
||||
(app_gl_context=...)
|
||||
(gdb) set sysroot /Users/ajeffrey/MagicLeap/mlsdk/v0.22.0/lumin
|
||||
warning: .dynamic section for "/Users/ajeffrey/MagicLeap/mlsdk/v0.22.0/lumin/usr/lib/libc.so" is not at the expected address (wrong library or version mismatch?)
|
||||
warning: .dynamic section for "/Users/ajeffrey/MagicLeap/mlsdk/v0.22.0/lumin/usr/lib/liblog.so" is not at the expected address (wrong library or version mismatch?)
|
||||
warning: .dynamic section for "/Users/ajeffrey/MagicLeap/mlsdk/v0.22.0/lumin/usr/lib/libz.so" is not at the expected address (wrong library or version mismatch?)
|
||||
warning: .dynamic section for "/Users/ajeffrey/MagicLeap/mlsdk/v0.22.0/lumin/usr/lib/libEGL.so" is not at the expected address (wrong library or version mismatch?)
|
||||
warning: .dynamic section for "/Users/ajeffrey/MagicLeap/mlsdk/v0.22.0/lumin/usr/lib/libGLESv2.so" is not at the expected address (wrong library or version mismatch?)
|
||||
warning: .dynamic section for "/Users/ajeffrey/MagicLeap/mlsdk/v0.22.0/lumin/usr/lib/libGLESv3.so" is not at the expected address (wrong library or version mismatch?)
|
||||
warning: .dynamic section for "/Users/ajeffrey/MagicLeap/mlsdk/v0.22.0/lumin/usr/lib/libm.so" is not at the expected address (wrong library or version mismatch?)
|
||||
warning: .dynamic section for "/Users/ajeffrey/MagicLeap/mlsdk/v0.22.0/lumin/usr/lib/libvulkan.so" is not at the expected address (wrong library or version mismatch?)
|
||||
warning: .dynamic section for "/Users/ajeffrey/MagicLeap/mlsdk/v0.22.0/lumin/usr/lib/libstdc++.so" is not at the expected address (wrong library or version mismatch?)
|
||||
warning: .dynamic section for "/Users/ajeffrey/MagicLeap/mlsdk/v0.22.0/lumin/usr/lib/libGLESv1_CM.so" is not at the expected address (wrong library or version mismatch?)
|
||||
warning: Could not load shared library symbols for 191 libraries, e.g. /system/bin/linker64.
|
||||
Use the "info sharedlibrary" command to see the complete listing.
|
||||
Do you need "set solib-search-path" or "set sysroot"?
|
||||
Reading symbols from /Users/ajeffrey/MagicLeap/mlsdk/v0.22.0/lumin/usr/lib/libc.so...done.
|
||||
Reading symbols from /Users/ajeffrey/github/asajeffrey/servo/target/magicleap/aarch64-linux-android/native/gstreamer-1.16.0/system/lib64/libglib-2.0.so...done.
|
||||
Reading symbols from /Users/ajeffrey/github/asajeffrey/servo/target/magicleap/aarch64-linux-android/native/gstreamer-1.16.0/system/lib64/libgobject-2.0.so...done.
|
||||
Reading symbols from /Users/ajeffrey/github/asajeffrey/servo/target/magicleap/aarch64-linux-android/native/gstreamer-1.16.0/system/lib64/libgstreamer-1.0.so...done.
|
||||
Reading symbols from /Users/ajeffrey/github/asajeffrey/servo/target/magicleap/aarch64-linux-android/native/gstreamer-1.16.0/system/lib64/libgstapp-1.0.so...done.
|
||||
Reading symbols from /Users/ajeffrey/github/asajeffrey/servo/target/magicleap/aarch64-linux-android/native/gstreamer-1.16.0/system/lib64/libgstaudio-1.0.so...done.
|
||||
Reading symbols from /Users/ajeffrey/github/asajeffrey/servo/target/magicleap/aarch64-linux-android/native/gstreamer-1.16.0/system/lib64/libgstbase-1.0.so...done.
|
||||
Reading symbols from /Users/ajeffrey/github/asajeffrey/servo/target/magicleap/aarch64-linux-android/native/gstreamer-1.16.0/system/lib64/libgstgl-1.0.so...done.
|
||||
Reading symbols from /Users/ajeffrey/github/asajeffrey/servo/target/magicleap/aarch64-linux-android/native/gstreamer-1.16.0/system/lib64/libgstplayer-1.0.so...done.
|
||||
Reading symbols from /Users/ajeffrey/github/asajeffrey/servo/target/magicleap/aarch64-linux-android/native/gstreamer-1.16.0/system/lib64/libgstsdp-1.0.so...done.
|
||||
Reading symbols from /Users/ajeffrey/github/asajeffrey/servo/target/magicleap/aarch64-linux-android/native/gstreamer-1.16.0/system/lib64/libgstvideo-1.0.so...done.
|
||||
Reading symbols from /Users/ajeffrey/github/asajeffrey/servo/target/magicleap/aarch64-linux-android/native/gstreamer-1.16.0/system/lib64/libgstwebrtc-1.0.so...done.
|
||||
...
|
||||
|
||||
(gdb) break gst_gl_context_activate
|
||||
Breakpoint 3 at 0x40003ba0bb98: file ../gst-build/subprojects/gst-plugins-base/gst-libs/gst/gl/gstglcontext.c, line 746.
|
||||
```
|
||||
At this point, setting breakpoints and step-debugging should work as expected.
|
|
@ -1,7 +0,0 @@
|
|||
REFS = \
|
||||
Servo2D/Servo2D \
|
||||
Servo3D/Servo3D
|
||||
|
||||
# Servo SEGVs if we don't set the debuggable flag in the mpk's taildata
|
||||
# https://github.com/servo/servo/issues/22188
|
||||
OPTIONS=package/debuggable/on
|
14
support/magicleap/Servo2D/.gitignore
vendored
14
support/magicleap/Servo2D/.gitignore
vendored
|
@ -1,14 +0,0 @@
|
|||
.DS_Store
|
||||
*.log
|
||||
*.json.dirty
|
||||
*.json.lock
|
||||
*.pyc
|
||||
*.sln
|
||||
*.vcxproj*
|
||||
*.previous
|
||||
*.draft
|
||||
|
||||
pipeline/cache/intermediate/
|
||||
.out/
|
||||
.vscode/
|
||||
.vs/
|
65
support/magicleap/Servo2D/.vscode/launch.json
vendored
65
support/magicleap/Servo2D/.vscode/launch.json
vendored
|
@ -1,65 +0,0 @@
|
|||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Host OS Debug",
|
||||
"request": "launch",
|
||||
"type": "cppdbg",
|
||||
"stopAtEntry": true,
|
||||
"externalConsole": false,
|
||||
"logging": {
|
||||
"engineLogging": false,
|
||||
"trace": false
|
||||
},
|
||||
"windows": {
|
||||
"type": "cppvsdbg",
|
||||
"cwd": "${workspaceFolder}/.out/${config:lumin_package_name}",
|
||||
"environment": [{"name": "PATH", "value": "${config:lumin_sdk}/VirtualDevice/bin;${config:lumin_sdk}/VirtualDevice/lib;${config:lumin_sdk}/lib/win64;${env.PATH}"}],
|
||||
"program": "${workspaceFolder}/.out/debug_win_${config:lumin_host_toolchain}/${config:lumin_exe_name}.exe"
|
||||
},
|
||||
"osx": {
|
||||
"type": "cppdbg",
|
||||
"MIMode": "lldb",
|
||||
"cwd": "${workspaceFolder}/.out/${config:lumin_package_name}",
|
||||
"environment": [{"name": "DYLD_LIBRARY_PATH", "value": "${config:lumin_sdk}/VirtualDevice/bin:${config:lumin_sdk}/VirtualDevice/lib:${config:lumin_sdk}/lib/osx:${env.DYLD_LIBRARY_PATH}"}],
|
||||
"program": "${workspaceFolder}/.out/debug_osx_${config:lumin_host_toolchain}/${config:lumin_exe_name}"
|
||||
},
|
||||
"linux": {
|
||||
"type": "cppdbg",
|
||||
"MIMode": "lldb",
|
||||
"cwd": "${workspaceFolder}/.out/${config:lumin_package_name}",
|
||||
"environment": [{"name": "LD_LIBRARY_PATH", "value": "${config:lumin_sdk}/VirtualDevice/bin:${config:lumin_sdk}/VirtualDevice/lib:${config:lumin_sdk}/lib/linux64:${env.LD_LIBRARY_PATH}"}],
|
||||
"program": "${workspaceFolder}/.out/debug_linux_${config:lumin_host_toolchain}/${config:lumin_exe_name}"
|
||||
},
|
||||
"preLaunchTask": "Build (Host OS Debug)"
|
||||
},
|
||||
{
|
||||
"name": "Lumin OS Debug",
|
||||
"request": "launch",
|
||||
"type": "cppdbg",
|
||||
"stopAtEntry": true,
|
||||
"externalConsole": false,
|
||||
"logging": {
|
||||
"engineLogging": false,
|
||||
"trace": false
|
||||
},
|
||||
"cwd": "${workspaceFolder}/.out/${config:lumin_package_name}",
|
||||
"targetArchitecture": "arm64",
|
||||
"MIMode": "gdb",
|
||||
"miDebuggerPath": "${config:lumin_sdk}/tools/toolchains/bin/gdb",
|
||||
"windows": {
|
||||
"miDebuggerPath": "${config:lumin_sdk}/tools/toolchains/bin/gdb.exe",
|
||||
},
|
||||
"miDebuggerServerAddress": "localhost:7777",
|
||||
"program": "${workspaceFolder}/.out/debug_lumin_${config:lumin_device_toolchain}/${config:lumin_exe_name}",
|
||||
"customLaunchSetupCommands": [
|
||||
{"text": "-file-exec-and-symbols \"${workspaceFolder}/.out/debug_lumin_${config:lumin_device_toolchain}/${config:lumin_exe_name}\""},
|
||||
{"text": "source ${workspaceFolder}/.out/debug_lumin_${config:lumin_device_toolchain}/${config:lumin_exe_name}.gdbinit"},
|
||||
{"text": "-enable-pretty-printing"},
|
||||
{"text": "continue", "ignoreFailures": true},
|
||||
{"text": "continue", "ignoreFailures": true}
|
||||
],
|
||||
"preLaunchTask": "Lumin: Setup for remote debugging",
|
||||
}
|
||||
]
|
||||
}
|
23
support/magicleap/Servo2D/.vscode/settings.json
vendored
23
support/magicleap/Servo2D/.vscode/settings.json
vendored
|
@ -1,23 +0,0 @@
|
|||
{
|
||||
"lumin_mabu_file": "Servo2D.package",
|
||||
"lumin_package_name": "Servo2D",
|
||||
"lumin_exe_name": "Servo2D",
|
||||
"C_Cpp.default.includePath": [
|
||||
"${workspaceFolder}/code/**",
|
||||
"${config.lumin_sdk}/lumin/usr/include/",
|
||||
"${config.lumin_sdk}/lumin/stl/libc++-lumin/include",
|
||||
"${config.lumin_sdk}/include/runtime/app",
|
||||
"${config.lumin_sdk}/include/runtime/core",
|
||||
"${config.lumin_sdk}/include/runtime/external",
|
||||
"${config.lumin_sdk}/include/runtime/intergen",
|
||||
"${config.lumin_sdk}/include/runtime/loader",
|
||||
"${config.lumin_sdk}/include/runtime/uikit",
|
||||
"${config.lumin_sdk}/include/runtime/util",
|
||||
"${config.lumin_sdk}/include/"
|
||||
],
|
||||
"C_Cpp.default.defines": [
|
||||
"ANDROID"
|
||||
],
|
||||
"C_Cpp.default.cppStandard": "c++11",
|
||||
"debug.allowBreakpointsEverywhere": true
|
||||
}
|
223
support/magicleap/Servo2D/.vscode/tasks.json
vendored
223
support/magicleap/Servo2D/.vscode/tasks.json
vendored
|
@ -1,223 +0,0 @@
|
|||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Build (Lumin OS Debug)",
|
||||
"type": "shell",
|
||||
"command": "${config:lumin_sdk}/mabu",
|
||||
"windows": {
|
||||
"command": "${config:lumin_sdk}/mabu.cmd",
|
||||
},
|
||||
"args": [
|
||||
"${workspaceFolder}/${config:lumin_mabu_file}",
|
||||
"-t",
|
||||
"device_debug",
|
||||
"-s",
|
||||
"${config:lumin_cert}"
|
||||
],
|
||||
"group": "build",
|
||||
"problemMatcher": [
|
||||
"$msCompile",
|
||||
"$gcc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "Clean (Lumin OS Debug)",
|
||||
"type": "shell",
|
||||
"command": "${config:lumin_sdk}/mabu",
|
||||
"windows": {
|
||||
"command": "${config:lumin_sdk}/mabu.cmd",
|
||||
},
|
||||
"args": [
|
||||
"${workspaceFolder}/${config:lumin_mabu_file}",
|
||||
"-t",
|
||||
"device_debug",
|
||||
"-c"
|
||||
],
|
||||
"group": "build",
|
||||
"problemMatcher": [
|
||||
"$msCompile",
|
||||
"$gcc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "Run (Lumin OS Debug)",
|
||||
"type": "shell",
|
||||
"command": "${config:lumin_sdk}/mabu",
|
||||
"windows": {
|
||||
"command": "${config:lumin_sdk}/mabu.cmd",
|
||||
},
|
||||
"args": [
|
||||
"${workspaceFolder}/${config:lumin_mabu_file}",
|
||||
"-t",
|
||||
"device_debug",
|
||||
"-s",
|
||||
"${config:lumin_cert}",
|
||||
"--invoke"
|
||||
],
|
||||
"problemMatcher": [
|
||||
"$msCompile",
|
||||
"$gcc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "Build (Lumin OS Release)",
|
||||
"type": "shell",
|
||||
"command": "${config:lumin_sdk}/mabu",
|
||||
"windows": {
|
||||
"command": "${config:lumin_sdk}/mabu.cmd",
|
||||
},
|
||||
"args": [
|
||||
"${workspaceFolder}/${config:lumin_mabu_file}",
|
||||
"-t",
|
||||
"device_release",
|
||||
"-s",
|
||||
"${config:lumin_cert}"
|
||||
],
|
||||
"group": "build",
|
||||
"problemMatcher": [
|
||||
"$msCompile",
|
||||
"$gcc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "Clean (Lumin OS Release)",
|
||||
"type": "shell",
|
||||
"command": "${config:lumin_sdk}/mabu",
|
||||
"windows": {
|
||||
"command": "${config:lumin_sdk}/mabu.cmd",
|
||||
},
|
||||
"args": [
|
||||
"${workspaceFolder}/${config:lumin_mabu_file}",
|
||||
"-t",
|
||||
"device_release",
|
||||
"-c"
|
||||
],
|
||||
"group": "build",
|
||||
"problemMatcher": [
|
||||
"$msCompile",
|
||||
"$gcc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "Run (Lumin OS Release)",
|
||||
"type": "shell",
|
||||
"command": "${config:lumin_sdk}/mabu",
|
||||
"windows": {
|
||||
"command": "${config:lumin_sdk}/mabu.cmd",
|
||||
},
|
||||
"args": [
|
||||
"${workspaceFolder}/${config:lumin_mabu_file}",
|
||||
"-t",
|
||||
"device_release",
|
||||
"-s",
|
||||
"${config:lumin_cert}",
|
||||
"--invoke"
|
||||
],
|
||||
"problemMatcher": [
|
||||
"$msCompile",
|
||||
"$gcc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "Build (Host OS Debug)",
|
||||
"type": "shell",
|
||||
"command": "${config:lumin_sdk}/mabu",
|
||||
"windows": {
|
||||
"command": "${config:lumin_sdk}/mabu.cmd",
|
||||
"options": {
|
||||
"env": {
|
||||
"VisualStudioVersion": "15.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"args": [
|
||||
"${workspaceFolder}/${config:lumin_mabu_file}",
|
||||
"-t",
|
||||
"host_debug"
|
||||
],
|
||||
"group": "build",
|
||||
"problemMatcher": [
|
||||
"$msCompile",
|
||||
"$gcc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "Clean (Host OS Debug)",
|
||||
"type": "shell",
|
||||
"command": "${config:lumin_sdk}/mabu",
|
||||
"windows": {
|
||||
"command": "${config:lumin_sdk}/mabu.cmd",
|
||||
},
|
||||
"args": [
|
||||
"${workspaceFolder}/${config:lumin_mabu_file}",
|
||||
"-t",
|
||||
"host_debug",
|
||||
"-c"
|
||||
],
|
||||
"group": "build",
|
||||
"problemMatcher": [
|
||||
"$msCompile",
|
||||
"$gcc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "Run (Host OS Debug)",
|
||||
"type": "shell",
|
||||
"command": "${config:lumin_sdk}/mabu",
|
||||
"windows": {
|
||||
"command": "${config:lumin_sdk}/mabu.cmd",
|
||||
"options": {
|
||||
"env": {
|
||||
"VisualStudioVersion": "15.0",
|
||||
"PATH": "${config:lumin_sdk}/VirtualDevice/bin;${config:lumin_sdk}/VirtualDevice/lib;${config:lumin_sdk}/lib/win64;${env.PATH}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"osx": {
|
||||
"options": {
|
||||
"env": {
|
||||
"ML_LIBRARY_PATH": "${config:lumin_sdk}/VirtualDevice/bin:${config:lumin_sdk}/VirtualDevice/lib:${config:lumin_sdk}/lib/osx"
|
||||
}
|
||||
}
|
||||
},
|
||||
"linux": {
|
||||
"options": {
|
||||
"env": {
|
||||
"LD_LIBRARY_PATH": "${config:lumin_sdk}/VirtualDevice/bin:${config:lumin_sdk}/VirtualDevice/lib:${config:lumin_sdk}/lib/linux64:${env.LD_LIBRARY_PATH}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"args": [
|
||||
"${workspaceFolder}/${config:lumin_mabu_file}",
|
||||
"-t",
|
||||
"host_debug",
|
||||
"--invoke"
|
||||
],
|
||||
"problemMatcher": [
|
||||
"$msCompile",
|
||||
"$gcc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "Lumin: Setup for remote debugging",
|
||||
"type": "shell",
|
||||
"command": "${config:lumin_sdk}/debug",
|
||||
"windows": {
|
||||
"command": "${config:lumin_sdk}/debug.cmd",
|
||||
},
|
||||
"args": [
|
||||
"--setup-only",
|
||||
"-v",
|
||||
"--sopaths",
|
||||
"${workspaceFolder}/.out/debug_lumin_${config:lumin_device_toolchain}/",
|
||||
"--deploy-mpk",
|
||||
"${workspaceFolder}/.out/${config:lumin_package_name}/${config:lumin_exe_name}.mpk",
|
||||
"${workspaceFolder}/.out/debug_lumin_${config:lumin_device_toolchain}/${config:lumin_exe_name}"
|
||||
],
|
||||
"dependsOn": [
|
||||
"Build (Lumin OS Debug)"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
File diff suppressed because it is too large
Load diff
|
@ -1,18 +0,0 @@
|
|||
{
|
||||
"global" : {},
|
||||
"materials" :
|
||||
[
|
||||
{
|
||||
"albedo" : "Icon/Model/Model_UFO_Albedo.png",
|
||||
"blendmode" : "opaque",
|
||||
"name" : "com_magicleap_iconcreation_Model_UFO_Mat",
|
||||
"shaderName" : "UnlitTextured"
|
||||
},
|
||||
{
|
||||
"albedo" : "Icon/Model/Model_UFO_Albedo_Ring.png",
|
||||
"blendmode" : "opaque",
|
||||
"name" : "com_magicleap_iconcreation_Model_UFO_Ring_Mat",
|
||||
"shaderName" : "UnlitTextured"
|
||||
}
|
||||
]
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 733 B |
Binary file not shown.
Before Width: | Height: | Size: 177 B |
|
@ -1,509 +0,0 @@
|
|||
; FBX 7.5.0 project file
|
||||
; Copyright (C) 1997-2015 Autodesk Inc. and/or its licensors.
|
||||
; All rights reserved.
|
||||
; ----------------------------------------------------
|
||||
|
||||
FBXHeaderExtension: {
|
||||
FBXHeaderVersion: 1003
|
||||
FBXVersion: 7500
|
||||
CreationTimeStamp: {
|
||||
Version: 1000
|
||||
Year: 2018
|
||||
Month: 8
|
||||
Day: 7
|
||||
Hour: 10
|
||||
Minute: 25
|
||||
Second: 45
|
||||
Millisecond: 127
|
||||
}
|
||||
Creator: "FBX SDK/FBX Plugins version 2017.0.1"
|
||||
SceneInfo: "SceneInfo::GlobalInfo", "UserData" {
|
||||
Type: "UserData"
|
||||
Version: 100
|
||||
MetaData: {
|
||||
Version: 100
|
||||
Title: ""
|
||||
Subject: ""
|
||||
Author: ""
|
||||
Keywords: ""
|
||||
Revision: ""
|
||||
Comment: ""
|
||||
}
|
||||
Properties70: {
|
||||
P: "DocumentUrl", "KString", "Url", "", "E:\Perforce\rkameny_ladw4021_LearningResources_main\users\rkameny\IconCreationDoc\Icon\Portal\InsidePortal_SkySphere.fbx"
|
||||
P: "SrcDocumentUrl", "KString", "Url", "", "E:\Perforce\rkameny_ladw4021_LearningResources_main\users\rkameny\IconCreationDoc\Icon\Portal\InsidePortal_SkySphere.fbx"
|
||||
P: "Original", "Compound", "", ""
|
||||
P: "Original|ApplicationVendor", "KString", "", "", "Autodesk"
|
||||
P: "Original|ApplicationName", "KString", "", "", "Maya"
|
||||
P: "Original|ApplicationVersion", "KString", "", "", "2017"
|
||||
P: "Original|DateTime_GMT", "DateTime", "", "", "07/08/2018 17:25:45.124"
|
||||
P: "Original|FileName", "KString", "", "", "E:\Perforce\rkameny_ladw4021_LearningResources_main\users\rkameny\IconCreationDoc\Icon\Portal\InsidePortal_SkySphere.fbx"
|
||||
P: "LastSaved", "Compound", "", ""
|
||||
P: "LastSaved|ApplicationVendor", "KString", "", "", "Autodesk"
|
||||
P: "LastSaved|ApplicationName", "KString", "", "", "Maya"
|
||||
P: "LastSaved|ApplicationVersion", "KString", "", "", "2017"
|
||||
P: "LastSaved|DateTime_GMT", "DateTime", "", "", "07/08/2018 17:25:45.124"
|
||||
P: "Original|ApplicationActiveProject", "KString", "", "", "E:\Perforce\rkameny_ladw4021_LearningResources_main\users\rkameny\IconCreationDoc\Icon"
|
||||
P: "Original|ApplicationNativeFile", "KString", "", "", "E:\Perforce\rkameny_ladw4021_LearningResources_main\users\rkameny\IconCreationDoc\Source\IconCreationSource.ma"
|
||||
}
|
||||
}
|
||||
}
|
||||
GlobalSettings: {
|
||||
Version: 1000
|
||||
Properties70: {
|
||||
P: "UpAxis", "int", "Integer", "",1
|
||||
P: "UpAxisSign", "int", "Integer", "",1
|
||||
P: "FrontAxis", "int", "Integer", "",2
|
||||
P: "FrontAxisSign", "int", "Integer", "",1
|
||||
P: "CoordAxis", "int", "Integer", "",0
|
||||
P: "CoordAxisSign", "int", "Integer", "",1
|
||||
P: "OriginalUpAxis", "int", "Integer", "",1
|
||||
P: "OriginalUpAxisSign", "int", "Integer", "",1
|
||||
P: "UnitScaleFactor", "double", "Number", "",1
|
||||
P: "OriginalUnitScaleFactor", "double", "Number", "",1
|
||||
P: "AmbientColor", "ColorRGB", "Color", "",0,0,0
|
||||
P: "DefaultCamera", "KString", "", "", "Producer Perspective"
|
||||
P: "TimeMode", "enum", "", "",3
|
||||
P: "TimeProtocol", "enum", "", "",2
|
||||
P: "SnapOnFrameMode", "enum", "", "",0
|
||||
P: "TimeSpanStart", "KTime", "Time", "",0
|
||||
P: "TimeSpanStop", "KTime", "Time", "",769769300000
|
||||
P: "CustomFrameRate", "double", "Number", "",-1
|
||||
P: "TimeMarker", "Compound", "", ""
|
||||
P: "CurrentTimeMarker", "int", "Integer", "",-1
|
||||
}
|
||||
}
|
||||
|
||||
; Documents Description
|
||||
;------------------------------------------------------------------
|
||||
|
||||
Documents: {
|
||||
Count: 1
|
||||
Document: 2704469740208, "", "Scene" {
|
||||
Properties70: {
|
||||
P: "SourceObject", "object", "", ""
|
||||
P: "ActiveAnimStackName", "KString", "", "", "Take 001"
|
||||
}
|
||||
RootNode: 0
|
||||
}
|
||||
}
|
||||
|
||||
; Document References
|
||||
;------------------------------------------------------------------
|
||||
|
||||
References: {
|
||||
}
|
||||
|
||||
; Object definitions
|
||||
;------------------------------------------------------------------
|
||||
|
||||
Definitions: {
|
||||
Version: 100
|
||||
Count: 8
|
||||
ObjectType: "GlobalSettings" {
|
||||
Count: 1
|
||||
}
|
||||
ObjectType: "AnimationStack" {
|
||||
Count: 1
|
||||
PropertyTemplate: "FbxAnimStack" {
|
||||
Properties70: {
|
||||
P: "Description", "KString", "", "", ""
|
||||
P: "LocalStart", "KTime", "Time", "",0
|
||||
P: "LocalStop", "KTime", "Time", "",0
|
||||
P: "ReferenceStart", "KTime", "Time", "",0
|
||||
P: "ReferenceStop", "KTime", "Time", "",0
|
||||
}
|
||||
}
|
||||
}
|
||||
ObjectType: "AnimationLayer" {
|
||||
Count: 1
|
||||
PropertyTemplate: "FbxAnimLayer" {
|
||||
Properties70: {
|
||||
P: "Weight", "Number", "", "A",100
|
||||
P: "Mute", "bool", "", "",0
|
||||
P: "Solo", "bool", "", "",0
|
||||
P: "Lock", "bool", "", "",0
|
||||
P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8
|
||||
P: "BlendMode", "enum", "", "",0
|
||||
P: "RotationAccumulationMode", "enum", "", "",0
|
||||
P: "ScaleAccumulationMode", "enum", "", "",0
|
||||
P: "BlendModeBypass", "ULongLong", "", "",0
|
||||
}
|
||||
}
|
||||
}
|
||||
ObjectType: "NodeAttribute" {
|
||||
Count: 1
|
||||
PropertyTemplate: "FbxNull" {
|
||||
Properties70: {
|
||||
P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8
|
||||
P: "Size", "double", "Number", "",100
|
||||
P: "Look", "enum", "", "",1
|
||||
}
|
||||
}
|
||||
}
|
||||
ObjectType: "Model" {
|
||||
Count: 2
|
||||
PropertyTemplate: "FbxNode" {
|
||||
Properties70: {
|
||||
P: "QuaternionInterpolate", "enum", "", "",0
|
||||
P: "RotationOffset", "Vector3D", "Vector", "",0,0,0
|
||||
P: "RotationPivot", "Vector3D", "Vector", "",0,0,0
|
||||
P: "ScalingOffset", "Vector3D", "Vector", "",0,0,0
|
||||
P: "ScalingPivot", "Vector3D", "Vector", "",0,0,0
|
||||
P: "TranslationActive", "bool", "", "",0
|
||||
P: "TranslationMin", "Vector3D", "Vector", "",0,0,0
|
||||
P: "TranslationMax", "Vector3D", "Vector", "",0,0,0
|
||||
P: "TranslationMinX", "bool", "", "",0
|
||||
P: "TranslationMinY", "bool", "", "",0
|
||||
P: "TranslationMinZ", "bool", "", "",0
|
||||
P: "TranslationMaxX", "bool", "", "",0
|
||||
P: "TranslationMaxY", "bool", "", "",0
|
||||
P: "TranslationMaxZ", "bool", "", "",0
|
||||
P: "RotationOrder", "enum", "", "",0
|
||||
P: "RotationSpaceForLimitOnly", "bool", "", "",0
|
||||
P: "RotationStiffnessX", "double", "Number", "",0
|
||||
P: "RotationStiffnessY", "double", "Number", "",0
|
||||
P: "RotationStiffnessZ", "double", "Number", "",0
|
||||
P: "AxisLen", "double", "Number", "",10
|
||||
P: "PreRotation", "Vector3D", "Vector", "",0,0,0
|
||||
P: "PostRotation", "Vector3D", "Vector", "",0,0,0
|
||||
P: "RotationActive", "bool", "", "",0
|
||||
P: "RotationMin", "Vector3D", "Vector", "",0,0,0
|
||||
P: "RotationMax", "Vector3D", "Vector", "",0,0,0
|
||||
P: "RotationMinX", "bool", "", "",0
|
||||
P: "RotationMinY", "bool", "", "",0
|
||||
P: "RotationMinZ", "bool", "", "",0
|
||||
P: "RotationMaxX", "bool", "", "",0
|
||||
P: "RotationMaxY", "bool", "", "",0
|
||||
P: "RotationMaxZ", "bool", "", "",0
|
||||
P: "InheritType", "enum", "", "",0
|
||||
P: "ScalingActive", "bool", "", "",0
|
||||
P: "ScalingMin", "Vector3D", "Vector", "",0,0,0
|
||||
P: "ScalingMax", "Vector3D", "Vector", "",1,1,1
|
||||
P: "ScalingMinX", "bool", "", "",0
|
||||
P: "ScalingMinY", "bool", "", "",0
|
||||
P: "ScalingMinZ", "bool", "", "",0
|
||||
P: "ScalingMaxX", "bool", "", "",0
|
||||
P: "ScalingMaxY", "bool", "", "",0
|
||||
P: "ScalingMaxZ", "bool", "", "",0
|
||||
P: "GeometricTranslation", "Vector3D", "Vector", "",0,0,0
|
||||
P: "GeometricRotation", "Vector3D", "Vector", "",0,0,0
|
||||
P: "GeometricScaling", "Vector3D", "Vector", "",1,1,1
|
||||
P: "MinDampRangeX", "double", "Number", "",0
|
||||
P: "MinDampRangeY", "double", "Number", "",0
|
||||
P: "MinDampRangeZ", "double", "Number", "",0
|
||||
P: "MaxDampRangeX", "double", "Number", "",0
|
||||
P: "MaxDampRangeY", "double", "Number", "",0
|
||||
P: "MaxDampRangeZ", "double", "Number", "",0
|
||||
P: "MinDampStrengthX", "double", "Number", "",0
|
||||
P: "MinDampStrengthY", "double", "Number", "",0
|
||||
P: "MinDampStrengthZ", "double", "Number", "",0
|
||||
P: "MaxDampStrengthX", "double", "Number", "",0
|
||||
P: "MaxDampStrengthY", "double", "Number", "",0
|
||||
P: "MaxDampStrengthZ", "double", "Number", "",0
|
||||
P: "PreferedAngleX", "double", "Number", "",0
|
||||
P: "PreferedAngleY", "double", "Number", "",0
|
||||
P: "PreferedAngleZ", "double", "Number", "",0
|
||||
P: "LookAtProperty", "object", "", ""
|
||||
P: "UpVectorProperty", "object", "", ""
|
||||
P: "Show", "bool", "", "",1
|
||||
P: "NegativePercentShapeSupport", "bool", "", "",1
|
||||
P: "DefaultAttributeIndex", "int", "Integer", "",-1
|
||||
P: "Freeze", "bool", "", "",0
|
||||
P: "LODBox", "bool", "", "",0
|
||||
P: "Lcl Translation", "Lcl Translation", "", "A",0,0,0
|
||||
P: "Lcl Rotation", "Lcl Rotation", "", "A",0,0,0
|
||||
P: "Lcl Scaling", "Lcl Scaling", "", "A",1,1,1
|
||||
P: "Visibility", "Visibility", "", "A",1
|
||||
P: "Visibility Inheritance", "Visibility Inheritance", "", "",1
|
||||
}
|
||||
}
|
||||
}
|
||||
ObjectType: "Geometry" {
|
||||
Count: 1
|
||||
PropertyTemplate: "FbxMesh" {
|
||||
Properties70: {
|
||||
P: "Color", "ColorRGB", "Color", "",0.8,0.8,0.8
|
||||
P: "BBoxMin", "Vector3D", "Vector", "",0,0,0
|
||||
P: "BBoxMax", "Vector3D", "Vector", "",0,0,0
|
||||
P: "Primary Visibility", "bool", "", "",1
|
||||
P: "Casts Shadows", "bool", "", "",1
|
||||
P: "Receive Shadows", "bool", "", "",1
|
||||
}
|
||||
}
|
||||
}
|
||||
ObjectType: "Material" {
|
||||
Count: 1
|
||||
PropertyTemplate: "FbxSurfaceLambert" {
|
||||
Properties70: {
|
||||
P: "ShadingModel", "KString", "", "", "Lambert"
|
||||
P: "MultiLayer", "bool", "", "",0
|
||||
P: "EmissiveColor", "Color", "", "A",0,0,0
|
||||
P: "EmissiveFactor", "Number", "", "A",1
|
||||
P: "AmbientColor", "Color", "", "A",0.2,0.2,0.2
|
||||
P: "AmbientFactor", "Number", "", "A",1
|
||||
P: "DiffuseColor", "Color", "", "A",0.8,0.8,0.8
|
||||
P: "DiffuseFactor", "Number", "", "A",1
|
||||
P: "Bump", "Vector3D", "Vector", "",0,0,0
|
||||
P: "NormalMap", "Vector3D", "Vector", "",0,0,0
|
||||
P: "BumpFactor", "double", "Number", "",1
|
||||
P: "TransparentColor", "Color", "", "A",0,0,0
|
||||
P: "TransparencyFactor", "Number", "", "A",0
|
||||
P: "DisplacementColor", "ColorRGB", "Color", "",0,0,0
|
||||
P: "DisplacementFactor", "double", "Number", "",1
|
||||
P: "VectorDisplacementColor", "ColorRGB", "Color", "",0,0,0
|
||||
P: "VectorDisplacementFactor", "double", "Number", "",1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
; Object properties
|
||||
;------------------------------------------------------------------
|
||||
|
||||
Objects: {
|
||||
NodeAttribute: 2704123178976, "NodeAttribute::", "Null" {
|
||||
Properties70: {
|
||||
P: "Look", "enum", "", "",0
|
||||
}
|
||||
TypeFlags: "Null"
|
||||
}
|
||||
Geometry: 2704463014528, "Geometry::", "Mesh" {
|
||||
Vertices: *699 {
|
||||
a: -5.35143089294434,-1.73878526687622,-4.91317892074585,-4.5521993637085,-3.30736613273621,-4.91317892074585,-3.30736613273621,-4.5521993637085,-4.91317892074585,-1.73878538608551,-5.35143089294434,-4.91317892074585,-6.89087613552297e-016,-5.62682723999023,-4.91317844390869,1.73878526687622,-5.35143041610718,-4.91317892074585,3.30736589431763,-4.55219841003418,-4.91317892074585,4.55219841003418,-3.30736565589905,-4.91317892074585,5.35142993927002,-1.73878490924835,-4.91317892074585,5.62682628631592,-3.4454375383659e-016,-4.91317892074585,-5.62682628631592,3.4454372736681e-016,-4.91317892074585,1.22380304336548,-3.7664783000946,-0.807293295860291,8.75037713399252e-008,-3.96030974388123,-0.807293295860291,-1.22380316257477,-3.76647853851318,-0.807293295860291,-2.32781219482422,-3.20395803451538,-0.807293295860291,-3.20395851135254,-2.32781195640564,-0.807293295860291,-3.7664794921875,-1.22380328178406,-0.807293295860291,-3.96030831336975,-2.61297721237952e-008,-0.807293295860291,3.96030831336975,2.61297721237952e-008,-0.807293295860291,3.76647734642029,-1.22380256652832,-0.807293355464935,3.20395731925964,-2.32781100273132,-0.807293295860291,2.32781147956848,-3.20395731925964,-0.807293295860291,-2.69589638710022,-0.283350437879562,-0.0497899726033211,-2.65151000022888,-0.563596129417419,-0.0497899726033211,-2.57807278633118,-0.837666988372803,-0.0497899726033211,-2.47638964653015,-1.10256004333496,-0.0497899726033211,-2.34757471084595,-1.35537326335907,-0.0497899726033211,-2.19303941726685,-1.59333682060242,-0.0497899726033211,-2.01447677612305,-1.81384336948395,-0.0497899726033211,-1.81384289264679,-2.01447701454163,-0.0497899726033211,-1.59333622455597,-2.19303941726685,-0.0497899726033211,-1.3553729057312,-2.34757471084595,-0.0497899726033211,-1.10255944728851,-2.47638964653015,-0.0497899726033211,-0.83766633272171,-2.57807230949402,-0.0497899726033211,-0.563595473766327,-2.65150928497314,-0.0497899726033211,-0.283349812030792,-2.69589591026306,-0.0497899726033211,2.62556000052427e-007,-2.7107458114624,-0.0497899726033211,
|
||||
0.283350348472595,-2.69589591026306,-0.0497899726033211,0.56359601020813,-2.65150928497314,-0.0497899726033211,0.837666690349579,-2.57807207107544,-0.0497899726033211,1.10255980491638,-2.47638916969299,-0.0497899726033211,1.35537302494049,-2.34757447242737,-0.0497899726033211,1.59333646297455,-2.19303894042969,-0.0497899726033211,1.81384289264679,-2.01447606086731,-0.0497899726033211,2.01447653770447,-1.81384241580963,-0.0497899726033211,2.19303894042969,-1.59333598613739,-0.0497899726033211,2.34757423400879,-1.35537254810333,-0.0497899726033211,2.47638893127441,-1.10255932807922,-0.0497899726033211,2.57807183265686,-0.837666213512421,-0.0497899726033211,2.65150880813599,-0.563595473766327,-0.0497899726033211,2.69589519500732,-0.283349901437759,-0.0497899726033211,2.71074438095093,5.04915433907627e-008,-0.0497899726033211,-2.71074438095093,-5.04915433907627e-008,-0.0497899726033211,-5.19850921630859,3.18316966811636e-016,-7.06647109985352,-3.97876667976379,2.43629333761676e-016,-8.89194488525391,-2.15329313278198,1.31851332326422e-016,-10.111686706543,0,1.74559444029893e-022,-10.5400037765503,2.15329313278198,-1.31851027923956e-016,-10.111686706543,3.97876667976379,-2.43629095533659e-016,-8.89194488525391,5.19850921630859,-3.18316834462738e-016,-7.06647109985352,-4.9440770149231,-1.73878467082977,-6.96107864379883,-3.78403377532959,-1.73878467082977,-8.69720840454102,-2.04790568351746,-1.73878467082977,-9.857253074646,-2.71124531536771e-006,-1.73878467082977,-10.2646074295044,2.04790091514587,-1.73878467082977,-9.85725498199463,3.78403043746948,-1.73878467082977,-8.69721221923828,4.94407510757446,-1.73878467082977,-6.96108341217041,-4.20568323135376,-3.30736517906189,-6.6552267074585,-3.21889138221741,-3.30736517906189,-8.13206672668457,-1.74205279350281,-3.30736517906189,-9.11886024475098,-2.30632304010214e-006,-3.30736517906189,-9.46537590026855,1.74204862117767,-3.30736517906189,-9.11886119842529,3.21888828277588,-3.30736517906189,-8.13206958770752,4.20568180084229,-3.30736517906189,-6.65523052215576,-3.05560779571533,-4.55219793319702,-6.17885065078735,
|
||||
-2.33866143226624,-4.55219793319702,-7.25183725357056,-1.26567542552948,-4.55219793319702,-7.96878433227539,-1.67564178354951e-006,-4.55219793319702,-8.22054290771484,1.26567232608795,-4.55219793319702,-7.96878623962402,2.33865928649902,-4.55219793319702,-7.25183963775635,3.05560636520386,-4.55219793319702,-6.1788535118103,-1.60642802715302,-5.3514289855957,-5.57858180999756,-1.22950708866119,-5.3514289855957,-6.14268398284912,-0.665404975414276,-5.3514289855957,-6.51960563659668,-8.80937022884609e-007,-5.3514289855957,-6.65196323394775,0.665403366088867,-5.3514289855957,-6.519606590271,1.22950601577759,-5.3514289855957,-6.1426854133606,1.60642743110657,-5.3514289855957,-5.57858324050903,2.92670965194702,-3.98583483695984,-2.04461860656738,1.61354744434357,-4.76330423355103,-2.27592206001282,-0.0035657889675349,-4.80604267120361,-1.87313485145569,-1.62191653251648,-4.76058578491211,-2.27592206001282,-2.93405866622925,-3.98015213012695,-2.0447781085968,-4.12382078170776,-2.93948411941528,-2.27592206001282,-4.99741506576538,-1.59343123435974,-2.71363711357117,-5.24892139434814,0.00546819809824228,-2.71363711357117,5.24892139434814,-0.00546819809824228,-2.71363711357117,4.99403381347656,-1.60383152961731,-2.71363735198975,4.11864757537842,-2.94660258293152,-2.2759222984314,-3.29006695747375,-4.40524339675903,-3.57523918151855,3.28488397598267,-4.40900468826294,-3.57523918151855,-1.60642802715302,-5.3514289855957,-4.24777507781982,-1.22950708866119,-5.3514289855957,-3.68367314338684,-0.665404975414276,-5.3514289855957,-3.3067512512207,-0.00218318775296211,-5.35642385482788,-3.17353224754334,0.665403366088867,-5.3514289855957,-3.30675029754639,1.22950601577759,-5.3514289855957,-3.68367147445679,1.60642743110657,-5.3514289855957,-4.24777364730835,5.35143089294434,1.73878526687622,-4.91317892074585,4.5521993637085,3.30736613273621,-4.91317892074585,3.30736613273621,4.5521993637085,-4.91317892074585,1.73878538608551,5.35143089294434,-4.91317892074585,0,5.62682723999023,-4.91317844390869,-1.73878526687622,5.35143041610718,-4.91317892074585,
|
||||
-3.30736589431763,4.55219841003418,-4.91317892074585,-4.55219841003418,3.30736565589905,-4.91317892074585,-5.35142993927002,1.73878490924835,-4.91317892074585,-1.22380304336548,3.7664783000946,-0.807293295860291,-8.75037713399252e-008,3.96030974388123,-0.807293295860291,1.22380316257477,3.76647853851318,-0.807293295860291,2.32781219482422,3.20395803451538,-0.807293295860291,3.20395851135254,2.32781195640564,-0.807293295860291,3.7664794921875,1.22380328178406,-0.807293295860291,-3.76647734642029,1.22380256652832,-0.807293355464935,-3.20395731925964,2.32781100273132,-0.807293295860291,-2.32781147956848,3.20395731925964,-0.807293295860291,2.69589638710022,0.283350437879562,-0.0497899726033211,2.65151000022888,0.563596129417419,-0.0497899726033211,2.57807278633118,0.837666988372803,-0.0497899726033211,2.47638964653015,1.10256004333496,-0.0497899726033211,2.34757471084595,1.35537326335907,-0.0497899726033211,2.19303941726685,1.59333682060242,-0.0497899726033211,2.01447677612305,1.81384336948395,-0.0497899726033211,1.81384289264679,2.01447701454163,-0.0497899726033211,1.59333622455597,2.19303941726685,-0.0497899726033211,1.3553729057312,2.34757471084595,-0.0497899726033211,1.10255944728851,2.47638964653015,-0.0497899726033211,0.83766633272171,2.57807230949402,-0.0497899726033211,0.563595473766327,2.65150928497314,-0.0497899726033211,0.283349812030792,2.69589591026306,-0.0497899726033211,-2.62556000052427e-007,2.7107458114624,-0.0497899726033211,-0.283350348472595,2.69589591026306,-0.0497899726033211,-0.56359601020813,2.65150928497314,-0.0497899726033211,-0.837666690349579,2.57807207107544,-0.0497899726033211,-1.10255980491638,2.47638916969299,-0.0497899726033211,-1.35537302494049,2.34757447242737,-0.0497899726033211,-1.59333646297455,2.19303894042969,-0.0497899726033211,-1.81384289264679,2.01447606086731,-0.0497899726033211,-2.01447653770447,1.81384241580963,-0.0497899726033211,-2.19303894042969,1.59333598613739,-0.0497899726033211,-2.34757423400879,1.35537254810333,-0.0497899726033211,-2.47638893127441,1.10255932807922,-0.0497899726033211,
|
||||
-2.57807183265686,0.837666213512421,-0.0497899726033211,-2.65150880813599,0.563595473766327,-0.0497899726033211,-2.69589519500732,0.283349901437759,-0.0497899726033211,4.9440770149231,1.73878467082977,-6.96107864379883,3.78403377532959,1.73878467082977,-8.69720840454102,2.04790568351746,1.73878467082977,-9.857253074646,2.71124531536771e-006,1.73878467082977,-10.2646074295044,-2.04790091514587,1.73878467082977,-9.85725498199463,-3.78403043746948,1.73878467082977,-8.69721221923828,-4.94407510757446,1.73878467082977,-6.96108341217041,4.20568323135376,3.30736517906189,-6.6552267074585,3.21889138221741,3.30736517906189,-8.13206672668457,1.74205279350281,3.30736517906189,-9.11886024475098,2.30632304010214e-006,3.30736517906189,-9.46537590026855,-1.74204862117767,3.30736517906189,-9.11886119842529,-3.21888828277588,3.30736517906189,-8.13206958770752,-4.20568180084229,3.30736517906189,-6.65523052215576,3.05560779571533,4.55219793319702,-6.17885065078735,2.33866143226624,4.55219793319702,-7.25183725357056,1.26567542552948,4.55219793319702,-7.96878433227539,1.67564178354951e-006,4.55219793319702,-8.22054290771484,-1.26567232608795,4.55219793319702,-7.96878623962402,-2.33865928649902,4.55219793319702,-7.25183963775635,-3.05560636520386,4.55219793319702,-6.1788535118103,1.60642802715302,5.3514289855957,-5.57858180999756,1.22950708866119,5.3514289855957,-6.14268398284912,0.665404975414276,5.3514289855957,-6.51960563659668,8.80937022884609e-007,5.3514289855957,-6.65196323394775,-0.665403366088867,5.3514289855957,-6.519606590271,-1.22950601577759,5.3514289855957,-6.1426854133606,-1.60642743110657,5.3514289855957,-5.57858324050903,-2.92670965194702,3.98583483695984,-2.04461860656738,-1.61354744434357,4.76330423355103,-2.27592206001282,0.00356245832517743,4.80595016479492,-1.87316596508026,1.62191653251648,4.76058578491211,-2.27592206001282,2.93405866622925,3.98015213012695,-2.0447781085968,4.12382078170776,2.93948411941528,-2.27592206001282,4.99741506576538,1.59343123435974,-2.71363711357117,-4.99403381347656,1.60383152961731,-2.71363735198975,
|
||||
-4.11864757537842,2.94660258293152,-2.2759222984314,3.29006695747375,4.40524339675903,-3.57523918151855,-3.28488397598267,4.40900468826294,-3.57523918151855,1.60642802715302,5.3514289855957,-4.24777507781982,1.22950708866119,5.3514289855957,-3.68367314338684,0.665404975414276,5.3514289855957,-3.3067512512207,0.00218318775296211,5.35642385482788,-3.17353224754334,-0.665403366088867,5.3514289855957,-3.30675029754639,-1.22950601577759,5.3514289855957,-3.68367147445679,-1.60642743110657,5.3514289855957,-4.24777364730835,0.928569316864014,5.5201358795166,-4.91563320159912,-0.910226345062256,5.52417755126953,-4.91563320159912,0.856685400009155,5.52029371261597,-5.27197027206421,0.652837693691254,5.52074193954468,-5.57205820083618,0.350059509277344,5.52140712738037,-5.76941299438477,-0.00358746666461229,5.52218437194824,-5.83484983444214,-0.353498309850693,5.52295351028442,-5.76039266586304,-0.647256135940552,5.52359867095947,-5.55930233001709,-0.842084586620331,5.5240273475647,-5.2629508972168,0.856685400009155,5.52029371261597,-4.55929660797119,0.652837693691254,5.52074193954468,-4.25920915603638,0.350059509277344,5.52140712738037,-4.06185388565063,-0.00241244467906654,5.52218198776245,-3.97895669937134,-0.353498309850693,5.52295351028442,-4.07087373733521,-0.647256135940552,5.52359867095947,-4.27196455001831,-0.842084586620331,5.5240273475647,-4.5683159828186,-0.894373059272766,-5.52668285369873,-4.91568517684937,0.884923696517944,-5.52881193161011,-4.91568565368652,-0.825655937194824,-5.5267653465271,-5.25850820541382,-0.630417704582214,-5.52699899673462,-5.54809617996216,-0.339424014091492,-5.52734708786011,-5.73994064331055,0.00199406640604138,-5.52775526046753,-5.80527544021606,0.341444969177246,-5.52816152572632,-5.73519277572632,0.627689063549042,-5.52850389480591,-5.54138040542603,0.818173170089722,-5.52873182296753,-5.25375747680664,-0.825655937194824,-5.5267653465271,-4.57286167144775,-0.630417704582214,-5.52699899673462,-4.28327369689941,-0.339424014091492,-5.52734708786011,-4.09142971038818,0.000856920785736293,-5.52775430679321,-4.00920629501343,
|
||||
0.341444969177246,-5.52816152572632,-4.09617805480957,0.627689063549042,-5.52850389480591,-4.28998994827271,0.818173170089722,-5.52873182296753,-4.57761287689209
|
||||
}
|
||||
PolygonVertexIndex: *964 {
|
||||
a: 1,0,94,-94,99,1,-94,2,99,-4,100,5,-108,98,100,-89,8,7,98,-98,9,8,97,-97,0,10,95,-95,15,93,94,-17,14,92,93,-16,13,91,92,-15,12,90,91,-14,11,89,90,-13,21,88,89,-12,20,98,88,-22,19,97,98,-21,18,96,97,-20,16,94,95,-18,25,15,-17,25,26,-16,26,27,-16,28,14,-16,28,29,-15,29,30,-15,31,13,-15,31,32,-14,32,33,-14,34,12,-14,34,35,-13,35,36,-13,36,37,-13,37,38,-12,38,39,-12,39,40,-12,40,41,-22,41,42,-22,42,43,-22,43,44,-21,44,45,-21,45,46,-21,46,47,-20,47,48,-20,48,49,-20,49,50,-19,50,51,-19,22,16,-18,22,23,-17,23,24,-17,53,60,61,-55,54,61,62,-56,55,62,63,-57,56,63,64,-58,57,64,65,-59,58,65,66,-60,59,66,8,-10,10,0,60,-54,60,67,68,-62,61,68,69,-63,62,69,70,-64,63,70,71,-65,64,71,72,-66,65,72,73,-67,66,73,7,-9,0,1,67,-61,67,74,75,-69,68,75,76,-70,69,76,77,-71,70,77,78,-72,71,78,79,-73,72,79,80,-74,73,80,6,-8,1,2,74,-68,74,81,82,-76,75,82,83,-77,76,83,84,-78,77,84,85,-79,78,85,86,-80,79,86,87,-81,80,87,5,-7,2,3,81,-75,81,219,220,-83,82,220,221,-84,83,221,222,-85,84,222,223,-86,85,223,224,-87,86,224,225,-88,87,225,218,-6,3,217,219,-82,37,11,-13,40,21,-12,43,20,-22,46,19,-21,49,18,-20,33,34,-14,30,31,-15,27,28,-16,24,25,-17,52,22,-18,99,91,-103,105,104,-90,100,89,-89,99,92,-92,101,102,227,-227,102,103,228,-228,103,104,229,-229,104,105,230,-230,105,106,231,-231,106,107,232,-232,107,5,218,-233,3,101,226,-218,100,107,-107,89,106,-106,103,91,-105,99,102,-102,99,101,-4,102,91,-104,5,100,-7,89,100,-107,109,108,189,-189,192,188,-188,110,192,-112,193,113,-201,115,114,-194,116,115,191,-191,95,10,116,-191,108,9,96,-190,121,188,189,-123,120,187,188,-122,119,186,187,-121,118,185,186,-120,117,184,185,-119,125,183,184,-118,124,191,183,-126,123,190,191,-125,17,95,190,-124,122,189,96,-19,129,121,-123,129,130,-122,130,131,-122,132,120,-122,132,133,-121,133,134,-121,135,119,-121,135,136,-120,136,137,-120,138,118,-120,138,139,-119,139,140,-119,140,141,-119,141,142,-118,142,143,-118,143,144,-118,144,145,-126,145,146,-126,146,147,-126,147,148,-125,148,149,-125,149,150,-125,150,151,-124,151,152,-124,152,153,-124,153,154,-18,154,52,-18,
|
||||
126,122,-19,126,127,-123,127,128,-123,59,155,156,-59,58,156,157,-58,57,157,158,-57,56,158,159,-56,55,159,160,-55,54,160,161,-54,53,161,116,-11,9,108,155,-60,155,162,163,-157,156,163,164,-158,157,164,165,-159,158,165,166,-160,159,166,167,-161,160,167,168,-162,161,168,115,-117,108,109,162,-156,162,169,170,-164,163,170,171,-165,164,171,172,-166,165,172,173,-167,166,173,174,-168,167,174,175,-169,168,175,114,-116,109,110,169,-163,169,176,177,-171,170,177,178,-172,171,178,179,-173,172,179,180,-174,173,180,181,-175,174,181,182,-176,175,182,113,-115,110,111,176,-170,176,203,204,-178,177,204,205,-179,178,205,206,-180,179,206,207,-181,180,207,208,-182,181,208,209,-183,182,209,202,-114,111,201,203,-177,141,117,-119,144,125,-118,147,124,-126,150,123,-125,153,17,-124,137,138,-120,134,135,-121,131,132,-122,128,129,-123,51,126,-19,192,186,-196,198,197,-185,193,184,-184,192,187,-187,194,195,211,-211,195,196,212,-212,196,197,213,-213,197,198,214,-214,198,199,215,-215,199,200,216,-216,200,113,202,-217,111,194,210,-202,193,200,-200,184,199,-199,197,186,-186,192,195,-195,192,194,-112,195,186,-197,113,193,-115,184,193,-200,104,91,-91,89,104,-91,184,197,-186,196,186,-198,204,203,-113,205,204,-113,206,205,-113,207,206,-113,208,207,-113,209,208,-113,202,209,-113,203,201,-113,210,211,-113,211,212,-113,212,213,-113,213,214,-113,214,215,-113,215,216,-113,216,202,-113,201,210,-113,220,219,-5,221,220,-5,222,221,-5,223,222,-5,224,223,-5,225,224,-5,218,225,-5,219,217,-5,226,227,-5,227,228,-5,228,229,-5,229,230,-5,230,231,-5,231,232,-5,232,218,-5,217,226,-5,191,193,-184,192,109,-189,192,110,-110,115,193,-192,99,93,-93,99,2,-2,7,6,-101,7,100,-99
|
||||
}
|
||||
Edges: *512 {
|
||||
a: 0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,23,24,25,26,28,30,31,32,33,35,36,37,39,40,41,43,44,45,47,48,49,51,52,55,56,59,60,63,66,67,68,70,71,72,74,75,77,79,80,81,83,84,86,88,89,90,92,93,95,97,98,99,101,102,104,105,107,108,109,110,111,113,114,116,117,118,119,120,122,123,125,126,127,128,129,131,132,134,135,136,137,138,140,141,143,144,145,146,147,149,151,152,153,155,156,158,159,160,161,163,164,165,167,168,169,171,172,173,175,176,177,179,180,181,183,185,187,189,190,191,192,195,196,199,200,203,204,207,208,211,212,215,219,222,223,224,227,228,231,232,235,236,239,240,243,244,247,248,250,251,254,255,256,259,260,263,264,267,268,271,272,275,276,279,280,283,286,287,288,291,292,295,296,299,300,303,304,307,308,311,312,314,315,333,336,339,342,345,347,348,349,350,351,352,353,354,357,360,361,362,363,364,365,366,368,369,370,373,374,376,377,378,380,381,382,386,388,390,394,395,398,399,403,411,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,437,439,440,442,444,446,447,448,451,452,453,455,456,457,459,460,461,463,464,465,467,468,469,471,472,475,479,483,484,486,487,488,490,491,493,495,496,497,499,500,502,504,505,506,508,509,511,513,514,515,517,518,520,521,523,524,525,526,527,529,530,532,533,534,535,536,538,539,541,542,543,544,545,547,548,550,551,552,553,554,556,557,559,560,561,562,565,567,568,569,571,572,574,575,576,579,580,583,584,587,588,591,592,595,596,599,603,606,607,608,611,612,615,616,619,620,623,624,627,628,631,635,638,639,640,643,644,647,648,651,652,655,656,659,660,663,666,667,670,671,672,675,676,679,680,683,684,687,688,691,692,695,696,699,702,703,704,707,708,711,712,715,716,719,720,723,724,727,728,730,731,749,752,755,758,761,764,765,766,767,768,769,770,772,776,777,778,779,780,781,782,784,785,786,789,790,792,793,794,796,797,798,802,804,806,810,811,814,816,819,824,834,845,846,849,852,855,858,861,864,866,869,870,872,875,878,881,884,893,894,897,900,903,906,909,912,914,917,918,920,923,926,929,932,940,943,960
|
||||
}
|
||||
GeometryVersion: 124
|
||||
LayerElementNormal: 0 {
|
||||
Version: 102
|
||||
Name: ""
|
||||
MappingInformationType: "ByVertice"
|
||||
ReferenceInformationType: "Direct"
|
||||
Normals: *699 {
|
||||
a: 0.95243501663208,0.303122699260712,-0.0313705801963806,0.841986954212189,0.539152681827545,-0.0192899145185947,0.611387372016907,0.78987991809845,0.0479054041206837,0.404336869716644,0.914360523223877,0.021363815292716,0.00130752159748226,0.999999046325684,-0.000158225040649995,-0.404073119163513,0.914474487304688,0.0214754436165094,-0.611517906188965,0.789777934551239,0.0479217208921909,-0.84181946516037,0.539409220218658,-0.0194287523627281,-0.95235151052475,0.30338442325592,-0.0313728004693985,-0.999758958816528,0.000134578163851984,-0.0219496376812458,0.999758958816528,-0.000134570902446285,-0.0219496320933104,-0.232987999916077,0.723920226097107,-0.649350345134735,-0.000733268272597343,0.762745440006256,-0.646698296070099,0.231588378548622,0.724367797374725,-0.649351894855499,0.442203164100647,0.613134026527405,-0.654616594314575,0.607602477073669,0.444047600030899,-0.658514022827148,0.713218510150909,0.233256831765175,-0.660991966724396,0.749643862247467,0.000726659200154245,-0.661840915679932,-0.749643921852112,-0.000726662285160273,-0.661840856075287,-0.713671088218689,0.23187318444252,-0.660990297794342,-0.608466506004334,0.442868173122406,-0.658510565757751,-0.44339781999588,0.612275898456573,-0.654611587524414,0.524224758148193,0.0704993680119514,-0.848656594753265,0.515698432922363,0.104740209877491,-0.850343763828278,0.493025243282318,0.160193875432014,-0.85513973236084,0.476780921220779,0.229044452309608,-0.848656833171844,0.458091706037521,0.258973300457001,-0.850343823432922,0.419392228126526,0.304706364870071,-0.855139672756195,0.382667005062103,0.365167766809464,-0.8486567735672,0.355643749237061,0.387856811285019,-0.850343763828278,0.304706335067749,0.419392436742783,-0.85513973236084,0.251095026731491,0.465545654296875,-0.848656833171844,0.218383371829987,0.478773474693298,-0.850343763828278,0.160193398594856,0.49302551150322,-0.85513961315155,0.0949439257383347,0.520352959632874,-0.8486567735672,0.0597460009157658,0.522825062274933,-0.850343525409698,-2.78458545110993e-009,0.518397629261017,-0.855139493942261,
|
||||
-0.0705009028315544,0.524224460124969,-0.848656594753265,-0.104740262031555,0.515698671340942,-0.850343585014343,-0.16019369661808,0.493025273084641,-0.85513961315155,-0.229044675827026,0.476781219244003,-0.84865665435791,-0.258973598480225,0.458092153072357,-0.850343465805054,-0.304706871509552,0.419392496347427,-0.855139493942261,-0.365167915821075,0.382667154073715,-0.848656535148621,-0.387856602668762,0.35564449429512,-0.850343525409698,-0.419392645359039,0.304706454277039,-0.855139493942261,-0.465546041727066,0.251094847917557,-0.848656535148621,-0.478773981332779,0.218383371829987,-0.850343525409698,-0.493025720119476,0.160193458199501,-0.855139434337616,-0.520353138446808,0.0949438512325287,-0.848656535148621,-0.522825062274933,0.0597447454929352,-0.850343644618988,-0.518397629261017,1.18066657250893e-006,-0.85513961315155,0.518397629261017,-1.18066657250893e-006,-0.85513961315155,0.923879325389862,-1.96004208419254e-007,0.382683604955673,0.707106709480286,-1.05948227968611e-008,0.70710676908493,0.382683426141739,-2.91357586945651e-008,0.923879444599152,0,0,0.999999940395355,-0.382683426141739,2.91357586945651e-008,0.923879444599152,-0.707106709480286,1.3243529828344e-008,0.70710676908493,-0.923879325389862,1.98652912786201e-007,0.382683604955673,0.882639169692993,0.295438170433044,0.365601181983948,0.675543069839478,0.295438319444656,0.675542414188385,0.365601509809494,0.295438230037689,0.882638990879059,3.08202686483128e-007,0.295438259840012,0.955361783504486,-0.365600675344467,0.295438349246979,0.882639348506927,-0.675542414188385,0.295438408851624,0.675543010234833,-0.882638871669769,0.295438438653946,0.365601480007172,0.763177931308746,0.563584983348846,0.31611904501915,0.584111392498016,0.563585102558136,0.584110856056213,0.316119015216827,0.563584983348846,0.763177871704102,3.36254487365295e-007,0.563584983348846,0.826057970523834,-0.316118329763412,0.563584983348846,0.763178169727325,-0.584110796451569,0.563585042953491,0.584111392498016,-0.763177871704102,0.563585042953491,0.316119074821472,0.579267501831055,0.779023289680481,0.239941149950027,
|
||||
0.443352371454239,0.779023408889771,0.44335201382637,0.239940777420998,0.779023468494415,0.57926732301712,2.71963358500216e-007,0.779023349285126,0.626994729042053,-0.239940151572227,0.779023230075836,0.579267978668213,-0.443351954221725,0.779023289680481,0.443352490663528,-0.579267561435699,0.779023289680481,0.23994106054306,0.382436066865921,0.910302639007568,0.158402666449547,0.292731821537018,0.910283744335175,0.292730987071991,0.158424094319344,0.910277545452118,0.382486999034882,-1.29567060866975e-005,0.910285174846649,0.413981676101685,-0.158423185348511,0.910305202007294,0.382421553134918,-0.292665511369705,0.910334825515747,0.292638182640076,-0.382304668426514,0.910369396209717,0.158337071537972,-0.504294753074646,0.692565858364105,-0.515789866447449,-0.286827087402344,0.816448152065277,-0.50114119052887,0.000677500676829368,0.848011910915375,-0.529976606369019,0.288040339946747,0.816234409809113,-0.50079333782196,0.505387425422668,0.691749453544617,-0.515815854072571,0.775141358375549,0.496765494346619,-0.390358537435532,0.890869557857513,0.287933647632599,-0.351348102092743,0.936307728290558,-0.000580868974793702,-0.351179748773575,-0.936307787895203,0.000580871768761426,-0.351179718971252,-0.890511274337769,0.28903865814209,-0.351348906755447,-0.774473130702972,0.497744917869568,-0.390437215566635,0.618634283542633,0.756046831607819,-0.213739514350891,-0.618014872074127,0.756545662879944,-0.213766172528267,0.349696904420853,0.925523817539215,-0.145318374037743,0.301173597574234,0.922609329223633,-0.241010695695877,0.120846144855022,0.945207417011261,-0.303280144929886,0.000257047271588817,0.949586808681488,-0.31350365281105,-0.120398744940758,0.945394933223724,-0.302873522043228,-0.300799906253815,0.922718346118927,-0.241060256958008,-0.34903484582901,0.925826072692871,-0.144985005259514,-0.95243501663208,-0.303122699260712,-0.0313705801963806,-0.841986954212189,-0.539152681827545,-0.0192899145185947,-0.611387372016907,-0.78987991809845,0.0479054041206837,-0.405566841363907,-0.913812816143036,0.0214842893183231,
|
||||
-0.00240382226184011,-0.999997079372406,-0.000153351444168948,0.405069679021835,-0.914031267166138,0.0215688776224852,0.611517906188965,-0.789777934551239,0.0479217246174812,0.84181946516037,-0.539409220218658,-0.0194287542253733,0.95235151052475,-0.30338442325592,-0.0313728004693985,0.232987999916077,-0.723920226097107,-0.649350345134735,0.000733268272597343,-0.762745440006256,-0.646698296070099,-0.231588378548622,-0.724367797374725,-0.649351894855499,-0.442203164100647,-0.613134026527405,-0.654616594314575,-0.607602477073669,-0.444047600030899,-0.658514022827148,-0.713218510150909,-0.233256831765175,-0.660991966724396,0.713671088218689,-0.23187318444252,-0.660990297794342,0.608466506004334,-0.442868173122406,-0.658510565757751,0.44339781999588,-0.612275898456573,-0.654611587524414,-0.524224758148193,-0.0704993680119514,-0.848656594753265,-0.515698432922363,-0.104740209877491,-0.850343763828278,-0.493025243282318,-0.160193875432014,-0.85513973236084,-0.476780921220779,-0.229044452309608,-0.848656833171844,-0.458091706037521,-0.258973300457001,-0.850343823432922,-0.419392228126526,-0.304706364870071,-0.855139672756195,-0.382667005062103,-0.365167766809464,-0.8486567735672,-0.355643749237061,-0.387856811285019,-0.850343763828278,-0.304706335067749,-0.419392436742783,-0.85513973236084,-0.251095026731491,-0.465545654296875,-0.848656833171844,-0.218383371829987,-0.478773474693298,-0.850343763828278,-0.160193398594856,-0.49302551150322,-0.85513961315155,-0.0949439257383347,-0.520352959632874,-0.8486567735672,-0.0597460009157658,-0.522825062274933,-0.850343525409698,2.78458545110993e-009,-0.518397629261017,-0.855139493942261,0.0705009028315544,-0.524224460124969,-0.848656594753265,0.104740262031555,-0.515698671340942,-0.850343585014343,0.16019369661808,-0.493025273084641,-0.85513961315155,0.229044675827026,-0.476781219244003,-0.84865665435791,0.258973598480225,-0.458092153072357,-0.850343465805054,0.304706871509552,-0.419392496347427,-0.855139493942261,0.365167915821075,-0.382667154073715,-0.848656535148621,0.387856602668762,-0.35564449429512,-0.850343525409698,
|
||||
0.419392645359039,-0.304706454277039,-0.855139493942261,0.465546041727066,-0.251094847917557,-0.848656535148621,0.478773981332779,-0.218383371829987,-0.850343525409698,0.493025720119476,-0.160193458199501,-0.855139434337616,0.520353138446808,-0.0949438512325287,-0.848656535148621,0.522825062274933,-0.0597447454929352,-0.850343644618988,-0.882639169692993,-0.295438170433044,0.365601181983948,-0.675543069839478,-0.295438319444656,0.675542414188385,-0.365601509809494,-0.295438230037689,0.882638990879059,-3.08202686483128e-007,-0.295438259840012,0.955361783504486,0.365600675344467,-0.295438349246979,0.882639348506927,0.675542414188385,-0.295438408851624,0.675543010234833,0.882638871669769,-0.295438438653946,0.365601480007172,-0.763177931308746,-0.563584983348846,0.31611904501915,-0.584111392498016,-0.563585102558136,0.584110856056213,-0.316119015216827,-0.563584983348846,0.763177871704102,-3.36254487365295e-007,-0.563584983348846,0.826057970523834,0.316118329763412,-0.563584983348846,0.763178169727325,0.584110796451569,-0.563585042953491,0.584111392498016,0.763177871704102,-0.563585042953491,0.316119074821472,-0.579267501831055,-0.779023289680481,0.239941149950027,-0.443352371454239,-0.779023408889771,0.44335201382637,-0.239940777420998,-0.779023468494415,0.57926732301712,-2.71963358500216e-007,-0.779023349285126,0.626994729042053,0.239940151572227,-0.779023230075836,0.579267978668213,0.443351954221725,-0.779023289680481,0.443352490663528,0.579267561435699,-0.779023289680481,0.23994106054306,-0.383364319801331,-0.90984433889389,0.158792346715927,-0.29342120885849,-0.909835577011108,0.293433219194412,-0.158777013421059,-0.909844517707825,0.383369952440262,2.55816630669869e-005,-0.909869492053986,0.414894282817841,0.15876892209053,-0.909906387329102,0.383226603269577,0.29326993227005,-0.909949660301209,0.293230652809143,0.3830706179142,-0.909992933273315,0.158649355173111,0.504294753074646,-0.692565858364105,-0.515789866447449,0.286827087402344,-0.816448152065277,-0.50114119052887,-0.000677500676829368,-0.848011910915375,-0.529976606369019,
|
||||
-0.288040339946747,-0.816234409809113,-0.50079333782196,-0.505387485027313,-0.691749453544617,-0.515815854072571,-0.775141417980194,-0.496765464544296,-0.390358537435532,-0.890869557857513,-0.287933647632599,-0.351348102092743,0.890511274337769,-0.289038687944412,-0.35134893655777,0.774473130702972,-0.497744858264923,-0.390437215566635,-0.618634343147278,-0.756046831607819,-0.213739514350891,0.618014872074127,-0.756545662879944,-0.213766172528267,-0.35130187869072,-0.924808919429779,-0.145997524261475,-0.302366614341736,-0.922012269496918,-0.241800978779793,-0.121337905526161,-0.944665968418121,-0.304767549037933,-0.000235019993851893,-0.949193179607391,-0.314693510532379,0.120913416147232,-0.944890081882477,-0.304240822792053,0.301842212677002,-0.922201633453369,-0.241733744740486,0.350369065999985,-0.925236344337463,-0.145530521869659,-0.182937070727348,-0.983124494552612,6.2264982261695e-005,0.183531492948532,-0.983013689517975,6.1371159972623e-005,-0.169067963957787,-0.983098983764648,0.0702301859855652,-0.129371270537376,-0.983069062232971,0.129762157797813,-0.0698795914649963,-0.983039200305939,0.169560074806213,0.000327881425619125,-0.983014047145844,0.183529689908028,0.0705259218811989,-0.982997000217438,0.169536799192429,0.129994586110115,-0.982990980148315,0.129730641841888,0.169670239090919,-0.982996761798859,0.0702084600925446,-0.168900951743126,-0.983141541481018,-0.0700361803174019,-0.129135966300964,-0.98314756155014,-0.12940114736557,-0.0735219269990921,-0.983218967914581,-0.166957288980484,0.000394314294680953,-0.983463108539581,-0.181107714772224,0.0738895684480667,-0.983170866966248,-0.167078167200089,0.129759609699249,-0.983069121837616,-0.129373461008072,0.169504478573799,-0.98303896188736,-0.0700171142816544,0.183433696627617,0.983031988143921,6.18208723608404e-005,-0.183770149946213,0.982969164848328,6.1534381529782e-005,0.169540628790855,0.983007907867432,0.0703658610582352,0.12977123260498,0.982982814311981,0.130015909671783,0.0701662674546242,0.98296046257019,0.169897675514221,-0.000181678304215893,0.982944071292877,0.183903887867928,
|
||||
-0.0705258399248123,0.982936441898346,0.169887498021126,-0.13012121617794,0.982938468456268,0.130000993609428,-0.169880479574203,0.982949912548065,0.0703556090593338,0.169370621442795,0.983051121234894,-0.0701715797185898,0.129531264305115,0.983062565326691,-0.129651620984077,0.0738088563084602,0.983138620853424,-0.167303547263145,-0.000222105591092259,0.983401775360107,-0.181440591812134,-0.0739132985472679,0.983110666275024,-0.167421877384186,-0.129881098866463,0.983018159866333,-0.129638329148293,-0.169711098074913,0.982992947101593,-0.070162259042263
|
||||
}
|
||||
NormalsW: *233 {
|
||||
a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
||||
}
|
||||
}
|
||||
LayerElementBinormal: 0 {
|
||||
Version: 102
|
||||
Name: "map1"
|
||||
MappingInformationType: "ByPolygonVertex"
|
||||
ReferenceInformationType: "Direct"
|
||||
Binormals: *2892 {
|
||||
a: -0.538756966590881,0.842166483402252,0.0222883857786655,-0.303491592407227,0.952803611755371,-0.00763872265815735,-0.268792986869812,0.957647264003754,0.103257656097412,-0.418077945709229,0.866551637649536,0.272578746080399,-0.690481603145599,0.652971923351288,0.311227947473526,-0.538756966590881,0.842166483402252,0.0222883857786655,-0.418077945709229,0.866551637649536,0.272578746080399,-0.788570821285248,0.613189399242401,-0.0464206822216511,-0.690481603145599,0.652971923351288,0.311227947473526,-0.914563536643982,0.403970152139664,0.0195391811430454,0.687305569648743,0.651948213577271,0.320272892713547,0.913873791694641,0.402571469545364,0.0526415891945362,0.840834498405457,0.37771138548851,0.387726128101349,0.409387439489365,0.864872813224792,0.290511399507523,0.687305569648743,0.651948213577271,0.320272892713547,0.429987072944641,0.719381034374237,0.545529305934906,0.304097056388855,0.952407658100128,-0.0210890527814627,0.538956105709076,0.84198522567749,0.0242342874407768,0.409387439489365,0.864872813224792,0.290511399507523,0.263679027557373,0.957222759723663,0.119155757129192,0.000337140896590427,0.999957382678986,-0.00922508258372545,0.304097056388855,0.952407658100128,-0.0210890527814627,0.263679027557373,0.957222759723663,0.119155757129192,-0.00047217431711033,0.999995648860931,0.0029129518661648,-0.303491592407227,0.952803611755371,-0.00763872265815735,0.000187950907275081,0.999997079372406,0.00242988578975201,-0.00364801031537354,0.999928593635559,-0.0113801760599017,-0.268792986869812,0.957647264003754,0.103257656097412,-0.239447131752968,0.892947554588318,0.381195425987244,-0.418077945709229,0.866551637649536,0.272578746080399,-0.268792986869812,0.957647264003754,0.103257656097412,-0.148835822939873,0.971898555755615,0.182376638054848,-0.24627885222435,0.784804880619049,0.568707406520844,-0.436534821987152,0.720601975917816,0.538674414157867,-0.418077945709229,0.866551637649536,0.272578746080399,-0.239447131752968,0.892947554588318,0.381195425987244,-0.184602230787277,0.688093483448029,0.701747417449951,
|
||||
-0.386598587036133,0.577563107013702,0.719001054763794,-0.436534821987152,0.720601975917816,0.538674414157867,-0.24627885222435,0.784804880619049,0.568707406520844,-0.0655900537967682,0.645269334316254,0.761134445667267,-0.152839198708534,0.523837924003601,0.83799409866333,-0.386598587036133,0.577563107013702,0.719001054763794,-0.184602230787277,0.688093483448029,0.701747417449951,0.166800603270531,0.687579393386841,0.706691086292267,0.37522628903389,0.577071487903595,0.72539222240448,0.134322851896286,0.525096774101257,0.840375483036041,0.0663638785481453,0.64530998468399,0.76103276014328,0.233672022819519,0.784035384654999,0.575052917003632,0.429987072944641,0.719381034374237,0.545529305934906,0.37522628903389,0.577071487903595,0.72539222240448,0.166800603270531,0.687579393386841,0.706691086292267,0.232008963823318,0.892817258834839,0.386069238185883,0.409387439489365,0.864872813224792,0.290511399507523,0.429987072944641,0.719381034374237,0.545529305934906,0.233672022819519,0.784035384654999,0.575052917003632,0.139544054865837,0.971771836280823,0.190228596329689,0.263679027557373,0.957222759723663,0.119155757129192,0.409387439489365,0.864872813224792,0.290511399507523,0.232008963823318,0.892817258834839,0.386069238185883,-0.00492393365129828,0.999977886676788,0.00447924993932247,-0.00047217431711033,0.999995648860931,0.0029129518661648,0.263679027557373,0.957222759723663,0.119155757129192,0.139544054865837,0.971771836280823,0.190228596329689,-0.148835822939873,0.971898555755615,0.182376638054848,-0.268792986869812,0.957647264003754,0.103257656097412,-0.00364801031537354,0.999928593635559,-0.0113801760599017,-0.00743714720010757,0.999945521354675,-0.0073259174823761,-0.119516372680664,0.973381519317627,0.19556137919426,-0.239447131752968,0.892947554588318,0.381195425987244,-0.148835822939873,0.971898555755615,0.182376638054848,-0.119516372680664,0.973381519317627,0.19556137919426,-0.126604616641998,0.965875566005707,0.22595502436161,-0.239447131752968,0.892947554588318,0.381195425987244,-0.126604616641998,0.965875566005707,0.22595502436161,
|
||||
-0.143458381295204,0.952395379543304,0.269003540277481,-0.239447131752968,0.892947554588318,0.381195425987244,-0.160483658313751,0.930881261825562,0.328184545040131,-0.24627885222435,0.784804880619049,0.568707406520844,-0.239447131752968,0.892947554588318,0.381195425987244,-0.160483658313751,0.930881261825562,0.328184545040131,-0.141191884875298,0.921680927276611,0.361343532800674,-0.24627885222435,0.784804880619049,0.568707406520844,-0.141191884875298,0.921680927276611,0.361343532800674,-0.140671089291573,0.907805025577545,0.39509704709053,-0.24627885222435,0.784804880619049,0.568707406520844,-0.142982751131058,0.884966671466827,0.443159282207489,-0.184602230787277,0.688093483448029,0.701747417449951,-0.24627885222435,0.784804880619049,0.568707406520844,-0.142982751131058,0.884966671466827,0.443159282207489,-0.102957256138325,0.877816915512085,0.467800587415695,-0.184602230787277,0.688093483448029,0.701747417449951,-0.102957256138325,0.877816915512085,0.467800587415695,-0.0831321701407433,0.869988560676575,0.486013382673264,-0.184602230787277,0.688093483448029,0.701747417449951,-0.0644405260682106,0.853932559490204,0.516378462314606,-0.0655900537967682,0.645269334316254,0.761134445667267,-0.184602230787277,0.688093483448029,0.701747417449951,-0.0644405260682106,0.853932559490204,0.516378462314606,-0.0295761451125145,0.852418601512909,0.522022843360901,-0.0655900537967682,0.645269334316254,0.761134445667267,-0.0295761451125145,0.852418601512909,0.522022843360901,-0.0144781339913607,0.855050027370453,0.518343389034271,-0.0655900537967682,0.645269334316254,0.761134445667267,0.0144781330600381,0.855050027370453,0.518343389034271,0.0454504080116749,0.851578295230865,0.522253513336182,0.0663638785481453,0.64530998468399,0.76103276014328,0.0454504080116749,0.851578295230865,0.522253513336182,0.0614676773548126,0.85676896572113,0.512024164199829,0.166800603270531,0.687579393386841,0.706691086292267,0.0614676773548126,0.85676896572113,0.512024164199829,0.0831314995884895,0.869988679885864,0.486013323068619,0.166800603270531,0.687579393386841,0.706691086292267,
|
||||
0.0831314995884895,0.869988679885864,0.486013323068619,0.13205149769783,0.878993153572083,0.458185017108917,0.166800603270531,0.687579393386841,0.706691086292267,0.13205149769783,0.878993153572083,0.458185017108917,0.139386579394341,0.888887643814087,0.436406016349792,0.233672022819519,0.784035384654999,0.575052917003632,0.139386579394341,0.888887643814087,0.436406016349792,0.140670999884605,0.90780508518219,0.395097196102142,0.233672022819519,0.784035384654999,0.575052917003632,0.140670999884605,0.90780508518219,0.395097196102142,0.160689011216164,0.923837423324585,0.347424119710922,0.233672022819519,0.784035384654999,0.575052917003632,0.160689011216164,0.923837423324585,0.347424119710922,0.161058574914932,0.934518694877625,0.317387938499451,0.232008963823318,0.892817258834839,0.386069238185883,0.161058574914932,0.934518694877625,0.317387938499451,0.143458902835846,0.95239531993866,0.269003361463547,0.232008963823318,0.892817258834839,0.386069238185883,0.143458902835846,0.95239531993866,0.269003361463547,0.128421768546104,0.967925548553467,0.215935245156288,0.232008963823318,0.892817258834839,0.386069238185883,0.128421768546104,0.967925548553467,0.215935245156288,0.11673241853714,0.975803911685944,0.184879288077354,0.139544054865837,0.971771836280823,0.190228596329689,0.11673241853714,0.975803911685944,0.184879288077354,0.0885517746210098,0.987037658691406,0.133847966790199,0.139544054865837,0.971771836280823,0.190228596329689,0.0885517746210098,0.987037658691406,0.133847966790199,0.0527799502015114,0.995475888252258,0.0790073499083519,0.139544054865837,0.971771836280823,0.190228596329689,0.0527799502015114,0.995475888252258,0.0790073499083519,0.0310549214482307,0.998213708400726,0.0510402284562588,-0.00492393365129828,0.999977886676788,0.00447924993932247,0.0310549214482307,0.998213708400726,0.0510402284562588,6.26311759788223e-007,1,1.0009920288212e-006,-0.00492393365129828,0.999977886676788,0.00447924993932247,-0.0394734852015972,0.997507810592651,0.0584814846515656,-0.148835822939873,0.971898555755615,0.182376638054848,
|
||||
-0.00743714720010757,0.999945521354675,-0.0073259174823761,-0.0394734852015972,0.997507810592651,0.0584814846515656,-0.0611926093697548,0.994467496871948,0.0853817090392113,-0.148835822939873,0.971898555755615,0.182376638054848,-0.0611926093697548,0.994467496871948,0.0853817090392113,-0.0885518565773964,0.987037658691406,0.133848413825035,-0.148835822939873,0.971898555755615,0.182376638054848,-0.00127343460917473,0.999994456768036,0.00307485298253596,-0.273578345775604,0.955360651016235,-0.111539654433727,-0.210978776216507,0.955357730388641,-0.206832364201546,-0.00184407422784716,0.999996662139893,0.00184408889617771,-0.00184407422784716,0.999996662139893,0.00184408889617771,-0.210978776216507,0.955357730388641,-0.206832364201546,-0.11558723449707,0.955358386039734,-0.271901100873947,-0.00219144718721509,0.99999725818634,0.000907758774701506,-0.00219144718721509,0.99999725818634,0.000907758774701506,-0.11558723449707,0.955358386039734,-0.271901100873947,-0.00232641189359128,0.955359280109406,-0.29543748497963,-0.00230691395699978,0.99999737739563,0,-0.00230691395699978,0.99999737739563,0,-0.00232641189359128,0.955359280109406,-0.29543748497963,0.110599935054779,0.955358505249023,-0.273967087268829,-0.00254978518933058,0.999996244907379,-0.00105618720408529,-0.00254978518933058,0.999996244907379,-0.00105618720408529,0.110599935054779,0.955358505249023,-0.273967087268829,0.205816701054573,0.95535272359848,-0.211992397904396,-0.00285471859388053,0.999991893768311,-0.00285473698750138,-0.00285471859388053,0.999991893768311,-0.00285473698750138,0.205816701054573,0.95535272359848,-0.211992397904396,0.269901931285858,0.955331683158875,-0.1203927770257,-0.0024407603777945,0.999979734420776,-0.00589303206652403,-0.0024407603777945,0.999979734420776,-0.00589303206652403,0.269901931285858,0.955331683158875,-0.1203927770257,0.304097056388855,0.952407658100128,-0.0210890527814627,0.000337140896590427,0.999957382678986,-0.00922508258372545,0.000187950907275081,0.999997079372406,0.00242988578975201,-0.303491592407227,0.952803611755371,-0.00763872265815735,
|
||||
-0.273578345775604,0.955360651016235,-0.111539654433727,-0.00127343460917473,0.999994456768036,0.00307485298253596,-0.273578345775604,0.955360651016235,-0.111539654433727,-0.522167682647705,0.826051890850067,-0.212083175778389,-0.40167224407196,0.8260498046875,-0.395349621772766,-0.210978776216507,0.955357730388641,-0.206832364201546,-0.210978776216507,0.955357730388641,-0.206832364201546,-0.40167224407196,0.8260498046875,-0.395349621772766,-0.218749910593033,0.826053500175476,-0.519407510757446,-0.11558723449707,0.955358386039734,-0.271901100873947,-0.11558723449707,0.955358386039734,-0.271901100873947,-0.218749910593033,0.826053500175476,-0.519407510757446,-0.00222387071698904,0.826056063175201,-0.563583672046661,-0.00232641189359128,0.955359280109406,-0.29543748497963,-0.00232641189359128,0.955359280109406,-0.29543748497963,-0.00222387071698904,0.826056063175201,-0.563583672046661,0.213519424200058,0.826055824756622,-0.521575748920441,0.110599935054779,0.955358505249023,-0.273967087268829,0.110599935054779,0.955358505249023,-0.273967087268829,0.213519424200058,0.826055824756622,-0.521575748920441,0.395447641611099,0.826050221920013,-0.401574671268463,0.205816701054573,0.95535272359848,-0.211992397904396,0.205816701054573,0.95535272359848,-0.211992397904396,0.395447641611099,0.826050221920013,-0.401574671268463,0.516389131546021,0.826006770133972,-0.225953683257103,0.269901931285858,0.955331683158875,-0.1203927770257,0.269901931285858,0.955331683158875,-0.1203927770257,0.516389131546021,0.826006770133972,-0.225953683257103,0.538956105709076,0.84198522567749,0.0242342874407768,0.304097056388855,0.952407658100128,-0.0210890527814627,-0.303491592407227,0.952803611755371,-0.00763872265815735,-0.538756966590881,0.842166483402252,0.0222883857786655,-0.522167682647705,0.826051890850067,-0.212083175778389,-0.273578345775604,0.955360651016235,-0.111539654433727,-0.522167682647705,0.826051890850067,-0.212083175778389,-0.722746193408966,0.626975119113922,-0.290758103132248,-0.553999066352844,0.626988470554352,-0.547695577144623,
|
||||
-0.40167224407196,0.8260498046875,-0.395349621772766,-0.40167224407196,0.8260498046875,-0.395349621772766,-0.553999066352844,0.626988470554352,-0.547695577144623,-0.300527393817902,0.626992583274841,-0.718723714351654,-0.218749910593033,0.826053500175476,-0.519407510757446,-0.218749910593033,0.826053500175476,-0.519407510757446,-0.300527393817902,0.626992583274841,-0.718723714351654,-0.00139167241286486,0.626994252204895,-0.779022693634033,-0.00222387071698904,0.826056063175201,-0.563583672046661,-0.00222387071698904,0.826056063175201,-0.563583672046661,-0.00139167241286486,0.626994252204895,-0.779022693634033,0.296986013650894,0.626994609832764,-0.720192492008209,0.213519424200058,0.826055824756622,-0.521575748920441,0.213519424200058,0.826055824756622,-0.521575748920441,0.296986013650894,0.626994609832764,-0.720192492008209,0.549368441104889,0.626993596553802,-0.552334666252136,0.395447641611099,0.826050221920013,-0.401574671268463,0.395447641611099,0.826050221920013,-0.401574671268463,0.549368441104889,0.626993596553802,-0.552334666252136,0.718461275100708,0.62699156999588,-0.30115619301796,0.516389131546021,0.826006770133972,-0.225953683257103,0.516389131546021,0.826006770133972,-0.225953683257103,0.718461275100708,0.62699156999588,-0.30115619301796,0.788516461849213,0.613313794136047,-0.0456949062645435,0.538956105709076,0.84198522567749,0.0242342874407768,-0.538756966590881,0.842166483402252,0.0222883857786655,-0.788570821285248,0.613189399242401,-0.0464206822216511,-0.722746193408966,0.626975119113922,-0.290758103132248,-0.522167682647705,0.826051890850067,-0.212083175778389,-0.722746193408966,0.626975119113922,-0.290758103132248,-0.841388463973999,0.413942813873291,-0.34744331240654,-0.643967926502228,0.413984745740891,-0.643367767333984,-0.553999066352844,0.626988470554352,-0.547695577144623,-0.553999066352844,0.626988470554352,-0.547695577144623,-0.643967926502228,0.413984745740891,-0.643367767333984,-0.348230361938477,0.413998246192932,-0.841035723686218,-0.300527393817902,0.626992583274841,-0.718723714351654,
|
||||
-0.300527393817902,0.626992583274841,-0.718723714351654,-0.348230361938477,0.413998246192932,-0.841035723686218,0.000344159576343372,0.413981676101685,-0.910285174846649,-0.00139167241286486,0.626994252204895,-0.779022693634033,-0.00139167241286486,0.626994252204895,-0.779022693634033,0.000344159576343372,0.413981676101685,-0.910285174846649,0.348682522773743,0.413937419652939,-0.840878307819366,0.296986013650894,0.626994609832764,-0.720192492008209,0.296986013650894,0.626994609832764,-0.720192492008209,0.348682522773743,0.413937419652939,-0.840878307819366,0.643805384635925,0.413872271776199,-0.643602788448334,0.549368441104889,0.626993596553802,-0.552334666252136,0.549368441104889,0.626993596553802,-0.552334666252136,0.643805384635925,0.413872271776199,-0.643602788448334,0.85091769695282,0.413651525974274,-0.323776930570602,0.718461275100708,0.62699156999588,-0.30115619301796,0.718461275100708,0.62699156999588,-0.30115619301796,0.85091769695282,0.413651525974274,-0.323776930570602,0.913873791694641,0.402571469545364,0.0526415891945362,0.788516461849213,0.613313794136047,-0.0456949062645435,-0.788570821285248,0.613189399242401,-0.0464206822216511,-0.914563536643982,0.403970152139664,0.0195391811430454,-0.841388463973999,0.413942813873291,-0.34744331240654,-0.722746193408966,0.626975119113922,-0.290758103132248,-0.841388463973999,0.413942813873291,-0.34744331240654,-0.89221203327179,0.183422282338142,-0.412691086530685,-0.665881633758545,0.183553606271744,-0.723125040531158,-0.643967926502228,0.413984745740891,-0.643367767333984,-0.643967926502228,0.413984745740891,-0.643367767333984,-0.665881633758545,0.183553606271744,-0.723125040531158,-0.338062316179276,0.18367038667202,-0.923027157783508,-0.348230361938477,0.413998246192932,-0.841035723686218,-0.348230361938477,0.413998246192932,-0.841035723686218,-0.338062316179276,0.18367038667202,-0.923027157783508,0.041039664298296,0.183756306767464,-0.982114791870117,0.000344159576343372,0.413981676101685,-0.910285174846649,0.000344159576343372,0.413981676101685,-0.910285174846649,
|
||||
0.041039664298296,0.183756306767464,-0.982114791870117,0.413609892129898,0.18379670381546,-0.891709446907043,0.348682522773743,0.413937419652939,-0.840878307819366,0.348682522773743,0.413937419652939,-0.840878307819366,0.413609892129898,0.18379670381546,-0.891709446907043,0.723079919815063,0.183787003159523,-0.665866196155548,0.643805384635925,0.413872271776199,-0.643602788448334,0.643805384635925,0.413872271776199,-0.643602788448334,0.723079919815063,0.183787003159523,-0.665866196155548,0.908484756946564,0.183872982859612,-0.375295042991638,0.85091769695282,0.413651525974274,-0.323776930570602,0.85091769695282,0.413651525974274,-0.323776930570602,0.908484756946564,0.183872982859612,-0.375295042991638,0.982218205928802,0.18363219499588,-0.0390720628201962,0.913873791694641,0.402571469545364,0.0526415891945362,-0.914563536643982,0.403970152139664,0.0195391811430454,-0.982280671596527,0.183295950293541,-0.0390802174806595,-0.89221203327179,0.183422282338142,-0.412691086530685,-0.841388463973999,0.413942813873291,-0.34744331240654,0.0454504080116749,0.851578295230865,0.522253513336182,0.166800603270531,0.687579393386841,0.706691086292267,0.0663638785481453,0.64530998468399,0.76103276014328,0.13205149769783,0.878993153572083,0.458185017108917,0.233672022819519,0.784035384654999,0.575052917003632,0.166800603270531,0.687579393386841,0.706691086292267,0.160689011216164,0.923837423324585,0.347424119710922,0.232008963823318,0.892817258834839,0.386069238185883,0.233672022819519,0.784035384654999,0.575052917003632,0.128421768546104,0.967925548553467,0.215935245156288,0.139544054865837,0.971771836280823,0.190228596329689,0.232008963823318,0.892817258834839,0.386069238185883,0.0527799502015114,0.995475888252258,0.0790073499083519,-0.00492393365129828,0.999977886676788,0.00447924993932247,0.139544054865837,0.971771836280823,0.190228596329689,-0.0831321701407433,0.869988560676575,0.486013382673264,-0.0644405260682106,0.853932559490204,0.516378462314606,-0.184602230787277,0.688093483448029,0.701747417449951,-0.140671089291573,0.907805025577545,0.39509704709053,
|
||||
-0.142982751131058,0.884966671466827,0.443159282207489,-0.24627885222435,0.784804880619049,0.568707406520844,-0.143458381295204,0.952395379543304,0.269003540277481,-0.160483658313751,0.930881261825562,0.328184545040131,-0.239447131752968,0.892947554588318,0.381195425987244,-0.0885518565773964,0.987037658691406,0.133848413825035,-0.119516372680664,0.973381519317627,0.19556137919426,-0.148835822939873,0.971898555755615,0.182376638054848,6.26311759788223e-007,1,-1.0009920288212e-006,-0.0394734852015972,0.997507810592651,0.0584814846515656,-0.00743714720010757,0.999945521354675,-0.0073259174823761,-0.690481603145599,0.652971923351288,0.311227947473526,-0.386598587036133,0.577563107013702,0.719001054763794,-0.679749429225922,0.384975999593735,0.624287009239197,0.330280840396881,0.325859487056732,0.885850012302399,0.184393793344498,0.308082848787308,0.933318734169006,0.37522628903389,0.577071487903595,0.72539222240448,0.687305569648743,0.651948213577271,0.320272892713547,0.37522628903389,0.577071487903595,0.72539222240448,0.429987072944641,0.719381034374237,0.545529305934906,-0.690481603145599,0.652971923351288,0.311227947473526,-0.436534821987152,0.720601975917816,0.538674414157867,-0.386598587036133,0.577563107013702,0.719001054763794,-0.855075120925903,0.378688842058182,0.35417714715004,-0.679749429225922,0.384975999593735,0.624287009239197,-0.665934026241302,0.183123126626015,0.723185837268829,-0.907976388931274,0.183331519365311,0.376786977052689,-0.679749429225922,0.384975999593735,0.624287009239197,-0.363734304904938,0.326433509588242,0.8724325299263,-0.381559401750565,0.182835951447487,0.90608137845993,-0.665934026241302,0.183123126626015,0.723185837268829,-0.363734304904938,0.326433509588242,0.8724325299263,-0.194435983896255,0.30756801366806,0.931448698043823,-0.201113969087601,0.177689477801323,0.963317036628723,-0.381559401750565,0.182835951447487,0.90608137845993,0.184393793344498,0.308082848787308,0.933318734169006,0.330280840396881,0.325859487056732,0.885850012302399,0.418961435556412,0.182958588004112,0.889380395412445,
|
||||
0.203014105558395,0.177706599235535,0.962915182113647,0.330280840396881,0.325859487056732,0.885850012302399,0.637124121189117,0.38251268863678,0.669146358966827,0.723138451576233,0.183364510536194,0.665919125080109,0.418961435556412,0.182958588004112,0.889380395412445,0.637124121189117,0.38251268863678,0.669146358966827,0.840834498405457,0.37771138548851,0.387726128101349,0.92268431186676,0.183501794934273,0.339088410139084,0.723138451576233,0.183364510536194,0.665919125080109,0.840834498405457,0.37771138548851,0.387726128101349,0.913873791694641,0.402571469545364,0.0526415891945362,0.982218205928802,0.18363219499588,-0.0390720628201962,0.92268431186676,0.183501794934273,0.339088410139084,-0.914563536643982,0.403970152139664,0.0195391811430454,-0.855075120925903,0.378688842058182,0.35417714715004,-0.907976388931274,0.183331519365311,0.376786977052689,-0.982280671596527,0.183295950293541,-0.0390802174806595,0.687305569648743,0.651948213577271,0.320272892713547,0.840834498405457,0.37771138548851,0.387726128101349,0.637124121189117,0.38251268863678,0.669146358966827,0.37522628903389,0.577071487903595,0.72539222240448,0.637124121189117,0.38251268863678,0.669146358966827,0.330280840396881,0.325859487056732,0.885850012302399,-0.363734304904938,0.326433509588242,0.8724325299263,-0.386598587036133,0.577563107013702,0.719001054763794,-0.194435983896255,0.30756801366806,0.931448698043823,-0.690481603145599,0.652971923351288,0.311227947473526,-0.679749429225922,0.384975999593735,0.624287009239197,-0.855075120925903,0.378688842058182,0.35417714715004,-0.690481603145599,0.652971923351288,0.311227947473526,-0.855075120925903,0.378688842058182,0.35417714715004,-0.914563536643982,0.403970152139664,0.0195391811430454,-0.679749429225922,0.384975999593735,0.624287009239197,-0.386598587036133,0.577563107013702,0.719001054763794,-0.363734304904938,0.326433509588242,0.8724325299263,0.913873791694641,0.402571469545364,0.0526415891945362,0.687305569648743,0.651948213577271,0.320272892713547,0.788516461849213,0.613313794136047,-0.0456949062645435,
|
||||
0.37522628903389,0.577071487903595,0.72539222240448,0.687305569648743,0.651948213577271,0.320272892713547,0.637124121189117,0.38251268863678,0.669146358966827,-0.538600146770477,0.842110395431519,-0.0275673791766167,-0.303326666355133,0.9528848528862,0.00184651091694832,-0.265641659498215,0.957633018493652,-0.111236430704594,-0.413835555315018,0.866088271141052,-0.280413091182709,-0.687900722026825,0.652649104595184,-0.31755593419075,-0.413835555315018,0.866088271141052,-0.280413091182709,-0.429374217987061,0.720117330551147,-0.545040249824524,-0.788780808448792,0.613155782222748,0.0431852638721466,-0.687900722026825,0.652649104595184,-0.31755593419075,-0.914010167121887,0.405171811580658,-0.0205282382667065,0.684887290000916,0.651613831520081,-0.32608100771904,0.913421988487244,0.403549164533615,-0.0529943630099297,0.840420544147491,0.379155844449997,-0.387213408946991,0.538829863071442,0.841936945915222,-0.0283651407808065,0.788650214672089,0.613292157649994,0.0436320342123508,0.684887290000916,0.651613831520081,-0.32608100771904,0.30397617816925,0.952543497085571,0.0161072611808777,0.538829863071442,0.841936945915222,-0.0283651407808065,0.405113220214844,0.864263892173767,-0.298213392496109,0.260820865631104,0.957090973854065,-0.126291528344154,-0.00364801031537354,0.999928593635559,-0.0113801760599017,0.000187950907275081,0.999997079372406,0.00242988578975201,0.30397617816925,0.952543497085571,0.0161072611808777,0.260820865631104,0.957090973854065,-0.126291528344154,-0.303326666355133,0.9528848528862,0.00184651091694832,0.000337140896590427,0.999957382678986,-0.00922508258372545,-0.00047217431711033,0.999995648860931,0.0029129518661648,-0.265641659498215,0.957633018493652,-0.111236430704594,-0.236930131912231,0.892696976661682,-0.383348882198334,-0.413835555315018,0.866088271141052,-0.280413091182709,-0.265641659498215,0.957633018493652,-0.111236430704594,-0.146542638540268,0.971786975860596,-0.184811681509018,-0.244563356041908,0.784623861312866,-0.569696605205536,-0.429374217987061,0.720117330551147,-0.545040249824524,
|
||||
-0.413835555315018,0.866088271141052,-0.280413091182709,-0.236930131912231,0.892696976661682,-0.383348882198334,-0.183373287320137,0.688037991523743,-0.702123820781708,-0.38222798705101,0.577488660812378,-0.721393525600433,-0.429374217987061,0.720117330551147,-0.545040249824524,-0.244563356041908,0.784623861312866,-0.569696605205536,-0.0654601380228996,0.645274877548218,-0.761140882968903,-0.153820216655731,0.523757815361023,-0.837864637374878,-0.38222798705101,0.577488660812378,-0.721393525600433,-0.183373287320137,0.688037991523743,-0.702123820781708,0.165740862488747,0.687516689300537,-0.707001388072968,0.371506989002228,0.576981961727142,-0.727374970912933,0.136142775416374,0.524964094161987,-0.840165495872498,0.0660759806632996,0.645322263240814,-0.76104748249054,0.232035249471664,0.783841133117676,-0.575979828834534,0.423068106174469,0.718859016895294,-0.551593244075775,0.371506989002228,0.576981961727142,-0.727374970912933,0.165740862488747,0.687516689300537,-0.707001388072968,0.229418396949768,0.892531752586365,-0.388270884752274,0.405113220214844,0.864263892173767,-0.298213392496109,0.423068106174469,0.718859016895294,-0.551593244075775,0.232035249471664,0.783841133117676,-0.575979828834534,0.136930271983147,0.971599221229553,-0.192990154027939,0.260820865631104,0.957090973854065,-0.126291528344154,0.405113220214844,0.864263892173767,-0.298213392496109,0.229418396949768,0.892531752586365,-0.388270884752274,-0.00743714720010757,0.999945521354675,-0.0073259174823761,-0.00364801031537354,0.999928593635559,-0.0113801760599017,0.260820865631104,0.957090973854065,-0.126291528344154,0.136930271983147,0.971599221229553,-0.192990154027939,-0.146542638540268,0.971786975860596,-0.184811681509018,-0.265641659498215,0.957633018493652,-0.111236430704594,-0.00047217431711033,0.999995648860931,0.0029129518661648,-0.00492393365129828,0.999977886676788,0.00447924993932247,-0.119515918195248,0.973381578922272,-0.195561647415161,-0.236930131912231,0.892696976661682,-0.383348882198334,-0.146542638540268,0.971786975860596,-0.184811681509018,
|
||||
-0.119515918195248,0.973381578922272,-0.195561647415161,-0.126603722572327,0.965875625610352,-0.225955545902252,-0.236930131912231,0.892696976661682,-0.383348882198334,-0.126603722572327,0.965875625610352,-0.225955545902252,-0.14345808327198,0.95239531993866,-0.269003659486771,-0.236930131912231,0.892696976661682,-0.383348882198334,-0.160484656691551,0.930881261825562,-0.328184098005295,-0.244563356041908,0.784623861312866,-0.569696605205536,-0.236930131912231,0.892696976661682,-0.383348882198334,-0.160484656691551,0.930881261825562,-0.328184098005295,-0.141194611787796,0.921681046485901,-0.361342430114746,-0.244563356041908,0.784623861312866,-0.569696605205536,-0.141194611787796,0.921681046485901,-0.361342430114746,-0.140670835971832,0.90780508518219,-0.39509716629982,-0.244563356041908,0.784623861312866,-0.569696605205536,-0.142981961369514,0.884966611862183,-0.443159431219101,-0.183373287320137,0.688037991523743,-0.702123820781708,-0.244563356041908,0.784623861312866,-0.569696605205536,-0.142981961369514,0.884966611862183,-0.443159431219101,-0.102957099676132,0.877816915512085,-0.467800617218018,-0.183373287320137,0.688037991523743,-0.702123820781708,-0.102957099676132,0.877816915512085,-0.467800617218018,-0.0831338614225388,0.869988560676575,-0.48601308465004,-0.183373287320137,0.688037991523743,-0.702123820781708,-0.0644401460886002,0.853932559490204,-0.51637852191925,-0.0654601380228996,0.645274877548218,-0.761140882968903,-0.183373287320137,0.688037991523743,-0.702123820781708,-0.0644401460886002,0.853932559490204,-0.51637852191925,-0.0295741520822048,0.852418601512909,-0.522023022174835,-0.0654601380228996,0.645274877548218,-0.761140882968903,-0.0295741520822048,0.852418601512909,-0.522023022174835,-0.0144781563431025,0.855050027370453,-0.518343389034271,-0.0654601380228996,0.645274877548218,-0.761140882968903,0.0144781563431025,0.855050027370453,-0.518343389034271,0.0454489216208458,0.851578295230865,-0.522253692150116,0.0660759806632996,0.645322263240814,-0.76104748249054,0.0454489216208458,0.851578295230865,-0.522253692150116,
|
||||
0.061467669904232,0.85676896572113,-0.512024164199829,0.165740862488747,0.687516689300537,-0.707001388072968,0.061467669904232,0.85676896572113,-0.512024164199829,0.083133190870285,0.869988679885864,-0.486013025045395,0.165740862488747,0.687516689300537,-0.707001388072968,0.083133190870285,0.869988679885864,-0.486013025045395,0.132051512598991,0.878993153572083,-0.458185017108917,0.165740862488747,0.687516689300537,-0.707001388072968,0.132051512598991,0.878993153572083,-0.458185017108917,0.139386579394341,0.888887643814087,-0.436406016349792,0.232035249471664,0.783841133117676,-0.575979828834534,0.139386579394341,0.888887643814087,-0.436406016349792,0.140670999884605,0.90780508518219,-0.395097196102142,0.232035249471664,0.783841133117676,-0.575979828834534,0.140670999884605,0.90780508518219,-0.395097196102142,0.160688802599907,0.923837423324585,-0.347424209117889,0.232035249471664,0.783841133117676,-0.575979828834534,0.160688802599907,0.923837423324585,-0.347424209117889,0.161058604717255,0.93451863527298,-0.317387938499451,0.229418396949768,0.892531752586365,-0.388270884752274,0.161058604717255,0.93451863527298,-0.317387938499451,0.143458321690559,0.95239531993866,-0.269003629684448,0.229418396949768,0.892531752586365,-0.388270884752274,0.143458321690559,0.95239531993866,-0.269003629684448,0.128421515226364,0.967925548553467,-0.215935379266739,0.229418396949768,0.892531752586365,-0.388270884752274,0.128421515226364,0.967925548553467,-0.215935379266739,0.116733051836491,0.975803971290588,-0.184878945350647,0.136930271983147,0.971599221229553,-0.192990154027939,0.116733051836491,0.975803971290588,-0.184878945350647,0.0885523110628128,0.987037718296051,-0.133847653865814,0.136930271983147,0.971599221229553,-0.192990154027939,0.0885523110628128,0.987037718296051,-0.133847653865814,0.0527802258729935,0.995475888252258,-0.0790071785449982,0.136930271983147,0.971599221229553,-0.192990154027939,0.0527802258729935,0.995475888252258,-0.0790071785449982,0.0310549195855856,0.998213708400726,-0.0510402284562588,-0.00743714720010757,0.999945521354675,-0.0073259174823761,
|
||||
0.0310549195855856,0.998213708400726,-0.0510402284562588,6.26311759788223e-007,1,-1.0009920288212e-006,-0.00743714720010757,0.999945521354675,-0.0073259174823761,-0.039473719894886,0.997507810592651,-0.0584813393652439,-0.146542638540268,0.971786975860596,-0.184811681509018,-0.00492393365129828,0.999977886676788,0.00447924993932247,-0.039473719894886,0.997507810592651,-0.0584813393652439,-0.0611930415034294,0.994467377662659,-0.0853814259171486,-0.146542638540268,0.971786975860596,-0.184811681509018,-0.0611930415034294,0.994467377662659,-0.0853814259171486,-0.0885517448186874,0.987037658691406,-0.13384847342968,-0.146542638540268,0.971786975860596,-0.184811681509018,-0.0024407603777945,0.999979734420776,-0.00589303206652403,-0.274730205535889,0.955351591110229,0.108751483261585,-0.211715266108513,0.955354332923889,0.20609438419342,-0.00285471859388053,0.999991893768311,-0.00285473698750138,-0.00285471859388053,0.999991893768311,-0.00285473698750138,-0.211715266108513,0.955354332923889,0.20609438419342,-0.115752041339874,0.955357789993286,0.271832644939423,-0.00254978518933058,0.999996244907379,-0.00105618720408529,-0.00254978518933058,0.999996244907379,-0.00105618720408529,-0.115752041339874,0.955357789993286,0.271832644939423,-0.00236092647537589,0.955359220504761,0.295437455177307,-0.00230691395699978,0.99999737739563,0,-0.00230691395699978,0.99999737739563,0,-0.00236092647537589,0.955359220504761,0.295437455177307,0.11093694716692,0.95535933971405,0.273827761411667,-0.00219144718721509,0.99999725818634,0.000907758774701506,-0.00219144718721509,0.99999725818634,0.000907758774701506,0.11093694716692,0.95535933971405,0.273827761411667,0.206899732351303,0.95535796880722,0.210911631584167,-0.00184407422784716,0.999996662139893,0.00184408889617771,-0.00184407422784716,0.999996662139893,0.00184408889617771,0.206899732351303,0.95535796880722,0.210911631584167,0.271393924951553,0.955353975296021,0.116808734834194,-0.00127343460917473,0.999994456768036,0.00307485298253596,-0.00127343460917473,0.999994456768036,0.00307485298253596,
|
||||
0.271393924951553,0.955353975296021,0.116808734834194,0.30397617816925,0.952543497085571,0.0161072611808777,0.000187950907275081,0.999997079372406,0.00242988578975201,0.000337140896590427,0.999957382678986,-0.00922508258372545,-0.303326666355133,0.9528848528862,0.00184651091694832,-0.274730205535889,0.955351591110229,0.108751483261585,-0.0024407603777945,0.999979734420776,-0.00589303206652403,-0.274730205535889,0.955351591110229,0.108751483261585,-0.523113965988159,0.826041340827942,0.209780052304268,-0.401780903339386,0.826049149036407,0.395240426063538,-0.211715266108513,0.955354332923889,0.20609438419342,-0.211715266108513,0.955354332923889,0.20609438419342,-0.401780903339386,0.826049149036407,0.395240426063538,-0.218433663249016,0.826054453849792,0.519539177417755,-0.115752041339874,0.955357789993286,0.271832644939423,-0.115752041339874,0.955357789993286,0.271832644939423,-0.218433663249016,0.826054453849792,0.519539177417755,-0.00240747164934874,0.826055705547333,0.563583374023438,-0.00236092647537589,0.955359220504761,0.295437455177307,-0.00236092647537589,0.955359220504761,0.295437455177307,-0.00240747164934874,0.826055705547333,0.563583374023438,0.213593304157257,0.826056003570557,0.52154529094696,0.11093694716692,0.95535933971405,0.273827761411667,0.11093694716692,0.95535933971405,0.273827761411667,0.213593304157257,0.826056003570557,0.52154529094696,0.396367132663727,0.826054215431213,0.400658965110779,0.206899732351303,0.95535796880722,0.210911631584167,0.206899732351303,0.95535796880722,0.210911631584167,0.396367132663727,0.826054215431213,0.400658965110779,0.517705738544464,0.826033294200897,0.222822576761246,0.271393924951553,0.955353975296021,0.116808734834194,0.271393924951553,0.955353975296021,0.116808734834194,0.517705738544464,0.826033294200897,0.222822576761246,0.538829863071442,0.841936945915222,-0.0283651407808065,0.30397617816925,0.952543497085571,0.0161072611808777,-0.303326666355133,0.9528848528862,0.00184651091694832,-0.538600146770477,0.842110395431519,-0.0275673791766167,-0.523113965988159,0.826041340827942,0.209780052304268,
|
||||
-0.274730205535889,0.955351591110229,0.108751483261585,-0.523113965988159,0.826041340827942,0.209780052304268,-0.72319507598877,0.626968681812286,0.289653420448303,-0.553344786167145,0.626990914344788,0.548354029655457,-0.401780903339386,0.826049149036407,0.395240426063538,-0.401780903339386,0.826049149036407,0.395240426063538,-0.553344786167145,0.626990914344788,0.548354029655457,-0.300109475851059,0.626993238925934,0.718897640705109,-0.218433663249016,0.826054453849792,0.519539177417755,-0.218433663249016,0.826054453849792,0.519539177417755,-0.300109475851059,0.626993238925934,0.718897640705109,-0.0018279068171978,0.626993775367737,0.77902215719223,-0.00240747164934874,0.826055705547333,0.563583374023438,-0.00240747164934874,0.826055705547333,0.563583374023438,-0.0018279068171978,0.626993775367737,0.77902215719223,0.296682685613632,0.626994371414185,0.720317780971527,0.213593304157257,0.826056003570557,0.52154529094696,0.213593304157257,0.826056003570557,0.52154529094696,0.296682685613632,0.626994371414185,0.720317780971527,0.549998641014099,0.626994371414185,0.551706075668335,0.396367132663727,0.826054215431213,0.400658965110779,0.396367132663727,0.826054215431213,0.400658965110779,0.549998641014099,0.626994371414185,0.551706075668335,0.719275891780853,0.626994609832764,0.299199253320694,0.517705738544464,0.826033294200897,0.222822576761246,0.517705738544464,0.826033294200897,0.222822576761246,0.719275891780853,0.626994609832764,0.299199253320694,0.788650214672089,0.613292157649994,0.0436320342123508,0.538829863071442,0.841936945915222,-0.0283651407808065,-0.538600146770477,0.842110395431519,-0.0275673791766167,-0.788780808448792,0.613155782222748,0.0431852638721466,-0.72319507598877,0.626968681812286,0.289653420448303,-0.523113965988159,0.826041340827942,0.209780052304268,-0.72319507598877,0.626968681812286,0.289653420448303,-0.840883135795593,0.41494956612587,0.347465723752975,-0.64326673746109,0.41496878862381,0.643435299396515,-0.553344786167145,0.626990914344788,0.548354029655457,-0.553344786167145,0.626990914344788,0.548354029655457,
|
||||
-0.64326673746109,0.41496878862381,0.643435299396515,-0.347779333591461,0.414949029684067,0.840753734111786,-0.300109475851059,0.626993238925934,0.718897640705109,-0.300109475851059,0.626993238925934,0.718897640705109,-0.347779333591461,0.414949029684067,0.840753734111786,0.000653257477097213,0.414894253015518,0.909869432449341,-0.0018279068171978,0.626993775367737,0.77902215719223,-0.0018279068171978,0.626993775367737,0.77902215719223,0.000653257477097213,0.414894253015518,0.909869432449341,0.348866671323776,0.414813429117203,0.840370118618011,0.296682685613632,0.626994371414185,0.720317780971527,0.296682685613632,0.626994371414185,0.720317780971527,0.348866671323776,0.414813429117203,0.840370118618011,0.644005000591278,0.414718508720398,0.642857849597931,0.549998641014099,0.626994371414185,0.551706075668335,0.549998641014099,0.626994371414185,0.551706075668335,0.644005000591278,0.414718508720398,0.642857849597931,0.850795567035675,0.414471566677094,0.323048204183578,0.719275891780853,0.626994609832764,0.299199253320694,0.719275891780853,0.626994609832764,0.299199253320694,0.850795567035675,0.414471566677094,0.323048204183578,0.913421988487244,0.403549164533615,-0.0529943630099297,0.788650214672089,0.613292157649994,0.0436320342123508,-0.788780808448792,0.613155782222748,0.0431852638721466,-0.914010167121887,0.405171811580658,-0.0205282382667065,-0.840883135795593,0.41494956612587,0.347465723752975,-0.72319507598877,0.626968681812286,0.289653420448303,-0.840883135795593,0.41494956612587,0.347465723752975,-0.892028987407684,0.182931676506996,0.4133041203022,-0.665085196495056,0.183087393641472,0.723975598812103,-0.64326673746109,0.41496878862381,0.643435299396515,-0.64326673746109,0.41496878862381,0.643435299396515,-0.665085196495056,0.183087393641472,0.723975598812103,-0.336674779653549,0.183243542909622,0.923618912696838,-0.347779333591461,0.414949029684067,0.840753734111786,-0.347779333591461,0.414949029684067,0.840753734111786,-0.336674779653549,0.183243542909622,0.923618912696838,0.042657058686018,0.183376416563988,0.982116878032684,
|
||||
0.000653257477097213,0.414894253015518,0.909869432449341,0.000653257477097213,0.414894253015518,0.909869432449341,0.042657058686018,0.183376416563988,0.982116878032684,0.414974808692932,0.183467492461205,0.891142904758453,0.348866671323776,0.414813429117203,0.840370118618011,0.348866671323776,0.414813429117203,0.840370118618011,0.414974808692932,0.183467492461205,0.891142904758453,0.72387570142746,0.183502331376076,0.665079712867737,0.644005000591278,0.414718508720398,0.642857849597931,0.644005000591278,0.414718508720398,0.642857849597931,0.72387570142746,0.183502331376076,0.665079712867737,0.908817887306213,0.18362233042717,0.374610275030136,0.850795567035675,0.414471566677094,0.323048204183578,0.850795567035675,0.414471566677094,0.323048204183578,0.908817887306213,0.18362233042717,0.374610275030136,0.982262849807739,0.183393731713295,0.0390708856284618,0.913421988487244,0.403549164533615,-0.0529943630099297,-0.914010167121887,0.405171811580658,-0.0205282382667065,-0.982372999191284,0.182799711823463,0.0390859842300415,-0.892028987407684,0.182931676506996,0.4133041203022,-0.840883135795593,0.41494956612587,0.347465723752975,0.0454489216208458,0.851578295230865,-0.522253692150116,0.165740862488747,0.687516689300537,-0.707001388072968,0.0660759806632996,0.645322263240814,-0.76104748249054,0.132051512598991,0.878993153572083,-0.458185017108917,0.232035249471664,0.783841133117676,-0.575979828834534,0.165740862488747,0.687516689300537,-0.707001388072968,0.160688802599907,0.923837423324585,-0.347424209117889,0.229418396949768,0.892531752586365,-0.388270884752274,0.232035249471664,0.783841133117676,-0.575979828834534,0.128421515226364,0.967925548553467,-0.215935379266739,0.136930271983147,0.971599221229553,-0.192990154027939,0.229418396949768,0.892531752586365,-0.388270884752274,0.0527802258729935,0.995475888252258,-0.0790071785449982,-0.00743714720010757,0.999945521354675,-0.0073259174823761,0.136930271983147,0.971599221229553,-0.192990154027939,-0.0831338614225388,0.869988560676575,-0.48601308465004,-0.0644401460886002,0.853932559490204,-0.51637852191925,
|
||||
-0.183373287320137,0.688037991523743,-0.702123820781708,-0.140670835971832,0.90780508518219,-0.39509716629982,-0.142981961369514,0.884966611862183,-0.443159431219101,-0.244563356041908,0.784623861312866,-0.569696605205536,-0.14345808327198,0.95239531993866,-0.269003659486771,-0.160484656691551,0.930881261825562,-0.328184098005295,-0.236930131912231,0.892696976661682,-0.383348882198334,-0.0885517448186874,0.987037658691406,-0.13384847342968,-0.119515918195248,0.973381578922272,-0.195561647415161,-0.146542638540268,0.971786975860596,-0.184811681509018,6.26311759788223e-007,1,1.0009920288212e-006,-0.039473719894886,0.997507810592651,-0.0584813393652439,-0.00492393365129828,0.999977886676788,0.00447924993932247,-0.687900722026825,0.652649104595184,-0.31755593419075,-0.38222798705101,0.577488660812378,-0.721393525600433,-0.677437245845795,0.386322140693665,-0.625966489315033,0.330555200576782,0.327323615550995,-0.88520759344101,0.185296460986137,0.309202581644058,-0.932769596576691,0.371506989002228,0.576981961727142,-0.727374970912933,0.684887290000916,0.651613831520081,-0.32608100771904,0.371506989002228,0.576981961727142,-0.727374970912933,0.423068106174469,0.718859016895294,-0.551593244075775,-0.687900722026825,0.652649104595184,-0.31755593419075,-0.429374217987061,0.720117330551147,-0.545040249824524,-0.38222798705101,0.577488660812378,-0.721393525600433,-0.854414582252502,0.380431532859802,-0.353903293609619,-0.677437245845795,0.386322140693665,-0.625966489315033,-0.665136814117432,0.182662442326546,-0.724035620689392,-0.907857716083527,0.182845786213875,-0.37730860710144,-0.677437245845795,0.386322140693665,-0.625966489315033,-0.362735062837601,0.327999919652939,-0.872261106967926,-0.379796206951141,0.182399392127991,-0.906909763813019,-0.665136814117432,0.182662442326546,-0.724035620689392,-0.362735062837601,0.327999919652939,-0.872261106967926,-0.194876074790955,0.308703690767288,-0.930980861186981,-0.199718877673149,0.177381545305252,-0.963663935661316,-0.379796206951141,0.182399392127991,-0.906909763813019,0.185296460986137,0.309202581644058,-0.932769596576691,
|
||||
0.330555200576782,0.327323615550995,-0.88520759344101,0.420262604951859,0.182631239295006,-0.88883364200592,0.204228669404984,0.177369773387909,-0.962720453739166,0.330555200576782,0.327323615550995,-0.88520759344101,0.635348618030548,0.383629411458969,-0.670194625854492,0.723934292793274,0.183087468147278,-0.665130317211151,0.420262604951859,0.182631239295006,-0.88883364200592,0.635348618030548,0.383629411458969,-0.670194625854492,0.840420544147491,0.379155844449997,-0.387213408946991,0.922936260700226,0.183253362774849,-0.338536709547043,0.723934292793274,0.183087468147278,-0.665130317211151,0.840420544147491,0.379155844449997,-0.387213408946991,0.913421988487244,0.403549164533615,-0.0529943630099297,0.982262849807739,0.183393731713295,0.0390708856284618,0.922936260700226,0.183253362774849,-0.338536709547043,-0.914010167121887,0.405171811580658,-0.0205282382667065,-0.854414582252502,0.380431532859802,-0.353903293609619,-0.907857716083527,0.182845786213875,-0.37730860710144,-0.982372999191284,0.182799711823463,0.0390859842300415,0.684887290000916,0.651613831520081,-0.32608100771904,0.840420544147491,0.379155844449997,-0.387213408946991,0.635348618030548,0.383629411458969,-0.670194625854492,0.371506989002228,0.576981961727142,-0.727374970912933,0.635348618030548,0.383629411458969,-0.670194625854492,0.330555200576782,0.327323615550995,-0.88520759344101,-0.194876074790955,0.308703690767288,-0.930980861186981,-0.38222798705101,0.577488660812378,-0.721393525600433,-0.153820216655731,0.523757815361023,-0.837864637374878,-0.687900722026825,0.652649104595184,-0.31755593419075,-0.677437245845795,0.386322140693665,-0.625966489315033,-0.854414582252502,0.380431532859802,-0.353903293609619,-0.687900722026825,0.652649104595184,-0.31755593419075,-0.854414582252502,0.380431532859802,-0.353903293609619,-0.914010167121887,0.405171811580658,-0.0205282382667065,-0.677437245845795,0.386322140693665,-0.625966489315033,-0.38222798705101,0.577488660812378,-0.721393525600433,-0.362735062837601,0.327999919652939,-0.872261106967926,0.913421988487244,0.403549164533615,-0.0529943630099297,
|
||||
0.684887290000916,0.651613831520081,-0.32608100771904,0.788650214672089,0.613292157649994,0.0436320342123508,0.371506989002228,0.576981961727142,-0.727374970912933,0.684887290000916,0.651613831520081,-0.32608100771904,0.635348618030548,0.383629411458969,-0.670194625854492,-0.194435983896255,0.30756801366806,0.931448698043823,-0.386598587036133,0.577563107013702,0.719001054763794,-0.152839198708534,0.523837924003601,0.83799409866333,0.37522628903389,0.577071487903595,0.72539222240448,0.184393793344498,0.308082848787308,0.933318734169006,0.134322851896286,0.525096774101257,0.840375483036041,0.371506989002228,0.576981961727142,-0.727374970912933,0.185296460986137,0.309202581644058,-0.932769596576691,0.136142775416374,0.524964094161987,-0.840165495872498,-0.362735062837601,0.327999919652939,-0.872261106967926,-0.38222798705101,0.577488660812378,-0.721393525600433,-0.194876074790955,0.308703690767288,-0.930980861186981,-0.665085196495056,0.183087393641472,0.723975598812103,-0.892028987407684,0.182931676506996,0.4133041203022,-0.830575883388519,0.00191116065252572,0.556902229785919,-0.336674779653549,0.183243542909622,0.923618912696838,-0.665085196495056,0.183087393641472,0.723975598812103,-0.553587973117828,0.00120302115101367,0.832789897918701,0.042657058686018,0.183376416563988,0.982116878032684,-0.336674779653549,0.183243542909622,0.923618912696838,-0.19235135614872,0.000311891577439383,0.981326103210449,0.414974808692932,0.183467492461205,0.891142904758453,0.042657058686018,0.183376416563988,0.982116878032684,0.197806879878044,-0.000625815766397864,0.980240881443024,0.72387570142746,0.183502331376076,0.665079712867737,0.414974808692932,0.183467492461205,0.891142904758453,0.557508051395416,-0.00146746239624918,0.830170333385468,0.908817887306213,0.18362233042717,0.374610275030136,0.72387570142746,0.183502331376076,0.665079712867737,0.832330167293549,-0.00208577886223793,0.554276347160339,0.982262849807739,0.183393731713295,0.0390708856284618,0.908817887306213,0.18362233042717,0.374610275030136,0.980889797210693,-0.00238772621378303,0.194549754261971,
|
||||
-0.892028987407684,0.182931676506996,0.4133041203022,-0.982372999191284,0.182799711823463,0.0390859842300415,-0.980670928955078,0.00232736184261739,0.195650845766068,-0.907857716083527,0.182845786213875,-0.37730860710144,-0.665136814117432,0.182662442326546,-0.724035620689392,-0.830565094947815,0.00208194111473858,-0.55691784620285,-0.665136814117432,0.182662442326546,-0.724035620689392,-0.379796206951141,0.182399392127991,-0.906909763813019,-0.553554773330688,0.00145836442243308,-0.832811594009399,-0.379796206951141,0.182399392127991,-0.906909763813019,-0.199718877673149,0.177381545305252,-0.963663935661316,-0.203706488013268,0.00063981197308749,-0.979031801223755,0.204228669404984,0.177369773387909,-0.962720453739166,0.420262604951859,0.182631239295006,-0.88883364200592,0.207906931638718,-0.000349771784385666,-0.978148579597473,0.420262604951859,0.182631239295006,-0.88883364200592,0.723934292793274,0.183087468147278,-0.665130317211151,0.55754280090332,-0.00121293298434466,-0.830147385597229,0.723934292793274,0.183087468147278,-0.665130317211151,0.922936260700226,0.183253362774849,-0.338536709547043,0.83234041929245,-0.0019158071372658,-0.55426150560379,0.922936260700226,0.183253362774849,-0.338536709547043,0.982262849807739,0.183393731713295,0.0390708856284618,0.980890333652496,-0.0023280584719032,-0.194547861814499,-0.982372999191284,0.182799711823463,0.0390859842300415,-0.907857716083527,0.182845786213875,-0.37730860710144,-0.980670273303986,0.0023873676545918,-0.195653304457664,-0.665881633758545,0.183553606271744,-0.723125040531158,-0.89221203327179,0.183422282338142,-0.412691086530685,-0.83098167181015,0.000998507020995021,-0.556298971176147,-0.338062316179276,0.18367038667202,-0.923027157783508,-0.665881633758545,0.183553606271744,-0.723125040531158,-0.554487824440002,0.000593331817071885,-0.832191705703735,0.041039664298296,0.183756306767464,-0.982114791870117,-0.338062316179276,0.18367038667202,-0.923027157783508,-0.193589672446251,9.78909301920794e-005,-0.981082677841187,0.413609892129898,0.18379670381546,-0.891709446907043,
|
||||
0.041039664298296,0.183756306767464,-0.982114791870117,0.196580201387405,-0.000412170949857682,-0.980487644672394,0.723079919815063,0.183787003159523,-0.665866196155548,0.413609892129898,0.18379670381546,-0.891709446907043,0.556641101837158,-0.000859267020132393,-0.830752730369568,0.908484756946564,0.183872982859612,-0.375295042991638,0.723079919815063,0.183787003159523,-0.665866196155548,0.831947505474091,-0.00117558205965906,-0.554853200912476,0.982218205928802,0.18363219499588,-0.0390720628201962,0.908484756946564,0.183872982859612,-0.375295042991638,0.980842590332031,-0.00131329603027552,-0.194798082113266,-0.89221203327179,0.183422282338142,-0.412691086530685,-0.982280671596527,0.183295950293541,-0.0390802174806595,-0.980723142623901,0.00125140103045851,-0.195398911833763,-0.907976388931274,0.183331519365311,0.376786977052689,-0.665934026241302,0.183123126626015,0.723185837268829,-0.830975711345673,0.00117454153951257,0.55630749464035,-0.665934026241302,0.183123126626015,0.723185837268829,-0.381559401750565,0.182835951447487,0.90608137845993,-0.5544673204422,0.000856654602102935,0.83220511674881,-0.381559401750565,0.182835951447487,0.90608137845993,-0.201113969087601,0.177689477801323,0.963317036628723,-0.205046787858009,0.000422966579208151,0.978752136230469,0.203014105558395,0.177706599235535,0.962915182113647,0.418961435556412,0.182958588004112,0.889380395412445,0.206765487790108,-0.0001155445643235,0.978390514850616,0.418961435556412,0.182958588004112,0.889380395412445,0.723138451576233,0.183364510536194,0.665919125080109,0.556659579277039,-0.000596401048824191,0.830740571022034,0.723138451576233,0.183364510536194,0.665919125080109,0.92268431186676,0.183501794934273,0.339088410139084,0.831953406333923,-0.00100000773090869,0.554844677448273,0.92268431186676,0.183501794934273,0.339088410139084,0.982218205928802,0.18363219499588,-0.0390720628201962,0.980843007564545,-0.00125165306963027,0.194796353578568,-0.982280671596527,0.183295950293541,-0.0390802174806595,-0.907976388931274,0.183331519365311,0.376786977052689,
|
||||
-0.980722784996033,0.0013132345629856,0.195399910211563,0.405113220214844,0.864263892173767,-0.298213392496109,0.684887290000916,0.651613831520081,-0.32608100771904,0.423068106174469,0.718859016895294,-0.551593244075775,-0.687900722026825,0.652649104595184,-0.31755593419075,-0.538600146770477,0.842110395431519,-0.0275673791766167,-0.413835555315018,0.866088271141052,-0.280413091182709,-0.687900722026825,0.652649104595184,-0.31755593419075,-0.788780808448792,0.613155782222748,0.0431852638721466,-0.538600146770477,0.842110395431519,-0.0275673791766167,0.538829863071442,0.841936945915222,-0.0283651407808065,0.684887290000916,0.651613831520081,-0.32608100771904,0.405113220214844,0.864263892173767,-0.298213392496109,-0.690481603145599,0.652971923351288,0.311227947473526,-0.418077945709229,0.866551637649536,0.272578746080399,-0.436534821987152,0.720601975917816,0.538674414157867,-0.690481603145599,0.652971923351288,0.311227947473526,-0.788570821285248,0.613189399242401,-0.0464206822216511,-0.538756966590881,0.842166483402252,0.0222883857786655,0.538956105709076,0.84198522567749,0.0242342874407768,0.788516461849213,0.613313794136047,-0.0456949062645435,0.687305569648743,0.651948213577271,0.320272892713547,0.538956105709076,0.84198522567749,0.0242342874407768,0.687305569648743,0.651948213577271,0.320272892713547,0.409387439489365,0.864872813224792,0.290511399507523
|
||||
}
|
||||
BinormalsW: *964 {
|
||||
a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
||||
}
|
||||
|
||||
}
|
||||
LayerElementTangent: 0 {
|
||||
Version: 102
|
||||
Name: "map1"
|
||||
MappingInformationType: "ByPolygonVertex"
|
||||
ReferenceInformationType: "Direct"
|
||||
Tangents: *2892 {
|
||||
a: -0.0282621681690216,0.00837395433336496,-0.999565541744232,-0.0275745261460543,-0.0167960915714502,-0.99947863817215,-0.3661989569664,-0.00245080282911658,-0.930533468723297,-0.473673552274704,0.0480867736041546,-0.879386723041534,-0.374868869781494,0.0449530780315399,-0.925987362861633,-0.0282621681690216,0.00837395433336496,-0.999565541744232,-0.473673552274704,0.0480867736041546,-0.879386723041534,0.0660418570041656,0.00939577352255583,-0.997772634029388,-0.374868869781494,0.0449530780315399,-0.925987362861633,-0.0092355152592063,0.0274389740079641,-0.999580800533295,-0.38166555762291,-0.0510107167065144,0.922891795635223,-0.0394939891993999,-0.0408968888223171,0.998382449150085,-0.413729399442673,-0.0134215196594596,0.910300850868225,-0.482279151678085,-0.0651531293988228,0.873591184616089,-0.38166555762291,-0.0510107167065144,0.922891795635223,-0.748864352703094,-0.053324569016695,0.660574376583099,-0.0234815906733274,0.0296245627105236,0.999285221099854,-0.0294309239834547,-0.00992964673787355,0.999517500400543,-0.482279151678085,-0.0651531293988228,0.873591184616089,-0.370759844779968,-0.0134662110358477,0.928631246089935,-0.0219474602490664,0.00923025980591774,0.999716520309448,-0.0234815906733274,0.0296245627105236,0.999285221099854,-0.370759844779968,-0.0134662110358477,0.928631246089935,-0.351179897785187,-0.00289323786273599,0.936303496360779,-0.0275745261460543,-0.0167960915714502,-0.99947863817215,-0.0219492372125387,0.00243342551402748,-0.999756038188934,-0.351161330938339,-0.0119364568963647,-0.936238884925842,-0.3661989569664,-0.00245080282911658,-0.930533468723297,-0.757287383079529,0.0739360004663467,-0.648883044719696,-0.473673552274704,0.0480867736041546,-0.879386723041534,-0.3661989569664,-0.00245080282911658,-0.930533468723297,-0.684957802295685,0.0316951125860214,-0.727893054485321,-0.862440168857574,0.0902659669518471,-0.498045146465302,-0.744325757026672,0.0470677204430103,-0.666155993938446,-0.473673552274704,0.0480867736041546,-0.879386723041534,-0.757287383079529,0.0739360004663467,-0.648883044719696,
|
||||
-0.955138146877289,0.0426447279751301,-0.293074399232864,-0.876113057136536,0.0134953232482076,-0.481916457414627,-0.744325757026672,0.0470677204430103,-0.666155993938446,-0.862440168857574,0.0902659669518471,-0.498045146465302,-0.997846305370331,-0.0429750829935074,-0.0495553649961948,-0.98825079202652,-0.0804334431886673,-0.129964381456375,-0.876113057136536,0.0134953232482076,-0.481916457414627,-0.955138146877289,0.0426447279751301,-0.293074399232864,-0.958067834377289,-0.0563384778797627,0.280948042869568,-0.881439387798309,-0.0200207587331533,0.471872478723526,-0.990937411785126,0.0717573091387749,0.113551631569862,-0.997795164585114,0.042359359562397,0.051091942936182,-0.865329802036285,-0.102012798190117,0.490711331367493,-0.748864352703094,-0.053324569016695,0.660574376583099,-0.881439387798309,-0.0200207587331533,0.471872478723526,-0.958067834377289,-0.0563384778797627,0.280948042869568,-0.758907318115234,-0.0821298584342003,0.645998775959015,-0.482279151678085,-0.0651531293988228,0.873591184616089,-0.748864352703094,-0.053324569016695,0.660574376583099,-0.865329802036285,-0.102012798190117,0.490711331367493,-0.686440765857697,-0.0435233674943447,0.725881993770599,-0.370759844779968,-0.0134662110358477,0.928631246089935,-0.482279151678085,-0.0651531293988228,0.873591184616089,-0.758907318115234,-0.0821298584342003,0.645998775959015,-0.661822974681854,-0.00661670323461294,0.749630928039551,-0.351179897785187,-0.00289323786273599,0.936303496360779,-0.370759844779968,-0.0134662110358477,0.928631246089935,-0.686440765857697,-0.0435233674943447,0.725881993770599,-0.684957802295685,0.0316951125860214,-0.727893054485321,-0.3661989569664,-0.00245080282911658,-0.930533468723297,-0.351161330938339,-0.0119364568963647,-0.936238884925842,-0.661799609661102,-0.010414038784802,-0.749608516693115,-0.870859086513519,-0.0081884516403079,-0.491464227437973,-0.757287383079529,0.0739360004663467,-0.648883044719696,-0.684957802295685,0.0316951125860214,-0.727893054485321,-0.870859086513519,-0.0081884516403079,-0.491464227437973,
|
||||
-0.879842698574066,-0.00414933497086167,-0.475246846675873,-0.757287383079529,0.0739360004663467,-0.648883044719696,-0.879842698574066,-0.00414933497086167,-0.475246846675873,-0.8963982462883,-0.00985895935446024,-0.443139940500259,-0.757287383079529,0.0739360004663467,-0.648883044719696,-0.909841120243073,-0.0106101483106613,-0.414821028709412,-0.862440168857574,0.0902659669518471,-0.498045146465302,-0.757287383079529,0.0739360004663467,-0.648883044719696,-0.909841120243073,-0.0106101483106613,-0.414821028709412,-0.923895180225372,0.0084479134529829,-0.382552266120911,-0.862440168857574,0.0902659669518471,-0.498045146465302,-0.923895180225372,0.0084479134529829,-0.382552266120911,-0.942000925540924,9.51236288528889e-005,-0.335610330104828,-0.862440168857574,0.0902659669518471,-0.498045146465302,-0.957343757152557,-0.0100682210177183,-0.288775682449341,-0.955138146877289,0.0426447279751301,-0.293074399232864,-0.862440168857574,0.0902659669518471,-0.498045146465302,-0.957343757152557,-0.0100682210177183,-0.288775682449341,-0.970416665077209,0.0146107990294695,-0.240993812680244,-0.955138146877289,0.0426447279751301,-0.293074399232864,-0.970416665077209,0.0146107990294695,-0.240993812680244,-0.983578681945801,0.00676653394475579,-0.180352717638016,-0.955138146877289,0.0426447279751301,-0.293074399232864,-0.993394672870636,-0.00566089013591409,-0.114607527852058,-0.997846305370331,-0.0429750829935074,-0.0495553649961948,-0.955138146877289,0.0426447279751301,-0.293074399232864,-0.993394672870636,-0.00566089013591409,-0.114607527852058,-0.997775316238403,0.00603889301419258,-0.0663917511701584,-0.997846305370331,-0.0429750829935074,-0.0495553649961948,-0.997775316238403,0.00603889301419258,-0.0663917511701584,-0.999895036220551,-0.0123808197677135,-0.00750543503090739,-0.997846305370331,-0.0429750829935074,-0.0495553649961948,-0.999895036220551,0.0123808169737458,0.00750543968752027,-0.996475756168365,0.00175244431011379,0.083863265812397,-0.997795164585114,0.042359359562397,0.051091942936182,-0.996475756168365,0.00175244431011379,0.083863265812397,
|
||||
-0.992598235607147,-0.00136089965235442,0.1214369982481,-0.958067834377289,-0.0563384778797627,0.280948042869568,-0.992598235607147,-0.00136089965235442,0.1214369982481,-0.983578681945801,-0.0067672492004931,0.180352658033371,-0.958067834377289,-0.0563384778797627,0.280948042869568,-0.983578681945801,-0.0067672492004931,0.180352658033371,-0.964417397975922,0.00712152058258653,0.264288395643234,-0.958067834377289,-0.0563384778797627,0.280948042869568,-0.964417397975922,0.00712152058258653,0.264288395643234,-0.955774068832397,0.00550884520635009,0.294050365686417,-0.865329802036285,-0.102012798190117,0.490711331367493,-0.955774068832397,0.00550884520635009,0.294050365686417,-0.94200074672699,-9.54910428845324e-005,0.335610777139664,-0.865329802036285,-0.102012798190117,0.490711331367493,-0.94200074672699,-9.54910428845324e-005,0.335610777139664,-0.916968524456024,0.00950164441019297,0.398846179246902,-0.865329802036285,-0.102012798190117,0.490711331367493,-0.916968524456024,0.00950164441019297,0.398846179246902,-0.907539248466492,0.0138541078194976,0.419738829135895,-0.758907318115234,-0.0821298584342003,0.645998775959015,-0.907539248466492,0.0138541078194976,0.419738829135895,-0.896397888660431,0.0098593458533287,0.443140417337418,-0.758907318115234,-0.0821298584342003,0.645998775959015,-0.896397888660431,0.0098593458533287,0.443140417337418,-0.875656545162201,0.00845817849040031,0.482859939336777,-0.758907318115234,-0.0821298584342003,0.645998775959015,-0.875656545162201,0.00845817849040031,0.482859939336777,-0.870143055915833,0.0107472632080317,0.492681920528412,-0.686440765857697,-0.0435233674943447,0.725881993770599,-0.870143055915833,0.0107472632080317,0.492681920528412,-0.865496397018433,0.00973362103104591,0.500820398330688,-0.686440765857697,-0.0435233674943447,0.725881993770599,-0.865496397018433,0.00973362103104591,0.500820398330688,-0.852318346500397,0.00368032860569656,0.52301013469696,-0.686440765857697,-0.0435233674943447,0.725881993770599,-0.852318346500397,0.00368032860569656,0.52301013469696,-0.851874053478241,-0.000277755403658375,0.523746490478516,
|
||||
-0.661822974681854,-0.00661670323461294,0.749630928039551,-0.851874053478241,-0.000277755403658375,0.523746490478516,-0.85513961315155,1.66720823813193e-008,0.518397629261017,-0.661822974681854,-0.00661670323461294,0.749630928039551,-0.850664496421814,-0.00284199137240648,-0.52570116519928,-0.684957802295685,0.0316951125860214,-0.727893054485321,-0.661799609661102,-0.010414038784802,-0.749608516693115,-0.850664496421814,-0.00284199137240648,-0.52570116519928,-0.854582130908966,-0.00800354313105345,-0.519254624843597,-0.684957802295685,0.0316951125860214,-0.727893054485321,-0.854582130908966,-0.00800354313105345,-0.519254624843597,-0.865496695041656,-0.00973355211317539,-0.50081992149353,-0.684957802295685,0.0316951125860214,-0.727893054485321,0.382681488990784,0.00332811567932367,-0.923874199390411,0.382234007120132,0.0015712819295004,-0.924064218997955,0.706490874290466,0.00280094775371253,-0.707716464996338,0.707104325294495,0.00260792463086545,-0.707104325294495,0.707104325294495,0.00260792463086545,-0.707104325294495,0.706490874290466,0.00280094775371253,-0.707716464996338,0.923566401004791,0.00261434051208198,-0.383429288864136,0.923876762390137,0.00237201689742506,-0.382682383060455,0.923876762390137,0.00237201689742506,-0.382682383060455,0.923566401004791,0.00261434051208198,-0.383429288864136,0.99999737739563,0.0022224741987884,-0.000687605759594589,0.999997317790985,0.00230691395699978,5.11294674133966e-013,0.999997317790985,0.00230691395699978,5.11294674133966e-013,0.99999737739563,0.0022224741987884,-0.000687605759594589,0.924177289009094,0.00254269503057003,0.381955116987228,0.92387592792511,0.00275987922213972,0.38268193602562,0.92387592792511,0.00275987922213972,0.38268193602562,0.924177289009094,0.00254269503057003,0.381955116987228,0.708012640476227,0.00417182641103864,0.70618748664856,0.707100927829742,0.00403719395399094,0.707100927829742,0.707100927829742,0.00403719395399094,0.707100927829742,0.708012640476227,0.00417182641103864,0.70618748664856,0.384839415550232,0.00758680049329996,0.92295241355896,
|
||||
0.382675796747208,0.00637848861515522,0.923860490322113,0.382675796747208,0.00637848861515522,0.923860490322113,0.384839415550232,0.00758680049329996,0.92295241355896,-0.0234815906733274,0.0296245627105236,0.999285221099854,-0.0219474602490664,0.00923025980591774,0.999716520309448,-0.0219492372125387,0.00243342551402748,-0.999756038188934,-0.0275745261460543,-0.0167960915714502,-0.99947863817215,0.382234007120132,0.0015712819295004,-0.924064218997955,0.382681488990784,0.00332811567932367,-0.923874199390411,0.382234007120132,0.0015712819295004,-0.924064218997955,0.380657643079758,0.00320996600203216,-0.92471045255661,0.705317854881287,0.0036928802728653,-0.708881616592407,0.706490874290466,0.00280094775371253,-0.707716464996338,0.706490874290466,0.00280094775371253,-0.707716464996338,0.705317854881287,0.0036928802728653,-0.708881616592407,0.923156142234802,0.00275051454082131,-0.384415417909622,0.923566401004791,0.00261434051208198,-0.383429288864136,0.923566401004791,0.00261434051208198,-0.383429288864136,0.923156142234802,0.00275051454082131,-0.384415417909622,0.999997556209564,0.00183685764204711,-0.00125361664686352,0.99999737739563,0.0022224741987884,-0.000687605759594589,0.99999737739563,0.0022224741987884,-0.000687605759594589,0.999997556209564,0.00183685764204711,-0.00125361664686352,0.92438006401062,0.00192629278171808,0.3814677298069,0.924177289009094,0.00254269503057003,0.381955116987228,0.924177289009094,0.00254269503057003,0.381955116987228,0.92438006401062,0.00192629278171808,0.3814677298069,0.708826959133148,0.00357862864620984,0.705373346805573,0.708012640476227,0.00417182641103864,0.70618748664856,0.708012640476227,0.00417182641103864,0.70618748664856,0.708826959133148,0.00357862864620984,0.705373346805573,0.388460636138916,0.00920236948877573,0.921419322490692,0.384839415550232,0.00758680049329996,0.92295241355896,0.384839415550232,0.00758680049329996,0.92295241355896,0.388460636138916,0.00920236948877573,0.921419322490692,-0.0294309239834547,-0.00992964673787355,0.999517500400543,-0.0234815906733274,0.0296245627105236,0.999285221099854,
|
||||
-0.0275745261460543,-0.0167960915714502,-0.99947863817215,-0.0282621681690216,0.00837395433336496,-0.999565541744232,0.380657643079758,0.00320996600203216,-0.92471045255661,0.382234007120132,0.0015712819295004,-0.924064218997955,0.380657643079758,0.00320996600203216,-0.92471045255661,0.37694451212883,0.00498983403667808,-0.926222503185272,0.704644381999969,0.00279445992782712,-0.709555149078369,0.705317854881287,0.0036928802728653,-0.708881616592407,0.705317854881287,0.0036928802728653,-0.708881616592407,0.704644381999969,0.00279445992782712,-0.709555149078369,0.923098921775818,0.00163458997849375,-0.384558975696564,0.923156142234802,0.00275051454082131,-0.384415417909622,0.923156142234802,0.00275051454082131,-0.384415417909622,0.923098921775818,0.00163458997849375,-0.384558975696564,0.999998927116394,0.000872359145432711,-0.0010843159398064,0.999997556209564,0.00183685764204711,-0.00125361664686352,0.999997556209564,0.00183685764204711,-0.00125361664686352,0.999998927116394,0.000872359145432711,-0.0010843159398064,0.924244463443756,0.000768603116739541,0.381800144910812,0.92438006401062,0.00192629278171808,0.3814677298069,0.92438006401062,0.00192629278171808,0.3814677298069,0.924244463443756,0.000768603116739541,0.381800144910812,0.708260774612427,0.00131477764807642,0.705949723720551,0.708826959133148,0.00357862864620984,0.705373346805573,0.708826959133148,0.00357862864620984,0.705373346805573,0.708260774612427,0.00131477764807642,0.705949723720551,0.385048717260361,0.00206162966787815,0.922893941402435,0.388460636138916,0.00920236948877573,0.921419322490692,0.388460636138916,0.00920236948877573,0.921419322490692,0.385048717260361,0.00206162966787815,0.922893941402435,0.0654798820614815,-0.00984381418675184,0.997805237770081,-0.0294309239834547,-0.00992964673787355,0.999517500400543,-0.0282621681690216,0.00837395433336496,-0.999565541744232,0.0660418570041656,0.00939577352255583,-0.997772634029388,0.37694451212883,0.00498983403667808,-0.926222503185272,0.380657643079758,0.00320996600203216,-0.92471045255661,0.37694451212883,0.00498983403667808,-0.926222503185272,
|
||||
0.381848245859146,0.000403334037400782,-0.92422491312027,0.706833302974701,0.000175172375747934,-0.707379996776581,0.704644381999969,0.00279445992782712,-0.709555149078369,0.704644381999969,0.00279445992782712,-0.709555149078369,0.706833302974701,0.000175172375747934,-0.707379996776581,0.92392498254776,-4.67287027277052e-005,-0.38257360458374,0.923098921775818,0.00163458997849375,-0.384558975696564,0.923098921775818,0.00163458997849375,-0.384558975696564,0.92392498254776,-4.67287027277052e-005,-0.38257360458374,0.99999988079071,-0.000130679982248694,0.000318647857056931,0.999998927116394,0.000872359145432711,-0.0010843159398064,0.999998927116394,0.000872359145432711,-0.0010843159398064,0.99999988079071,-0.000130679982248694,0.000318647857056931,0.923754572868347,-0.000129075328004546,0.382984817028046,0.924244463443756,0.000768603116739541,0.381800144910812,0.924244463443756,0.000768603116739541,0.381800144910812,0.923754572868347,-0.000129075328004546,0.382984817028046,0.707008898258209,-4.17007759097032e-005,0.707204639911652,0.708260774612427,0.00131477764807642,0.705949723720551,0.708260774612427,0.00131477764807642,0.705949723720551,0.707008898258209,-4.17007759097032e-005,0.707204639911652,0.360253006219864,-0.010950380936265,0.932790398597717,0.385048717260361,0.00206162966787815,0.922893941402435,0.385048717260361,0.00206162966787815,0.922893941402435,0.360253006219864,-0.010950380936265,0.932790398597717,-0.0394939891993999,-0.0408968888223171,0.998382449150085,0.0654798820614815,-0.00984381418675184,0.997805237770081,0.0660418570041656,0.00939577352255583,-0.997772634029388,-0.0092355152592063,0.0274389740079641,-0.999580800533295,0.381848245859146,0.000403334037400782,-0.92422491312027,0.37694451212883,0.00498983403667808,-0.926222503185272,0.381848245859146,0.000403334037400782,-0.92422491312027,0.418585300445557,-0.00718663912266493,-0.908149063587189,0.734684407711029,-0.00726562226191163,-0.678370237350464,0.706833302974701,0.000175172375747934,-0.707379996776581,0.706833302974701,0.000175172375747934,-0.707379996776581,
|
||||
0.734684407711029,-0.00726562226191163,-0.678370237350464,0.938504457473755,-0.00732936663553119,-0.345189392566681,0.92392498254776,-4.67287027277052e-005,-0.38257360458374,0.92392498254776,-4.67287027277052e-005,-0.38257360458374,0.938504457473755,-0.00732936663553119,-0.345189392566681,0.999157428741455,-0.00736892223358154,0.0403730794787407,0.99999988079071,-0.000130679982248694,0.000318647857056931,0.99999988079071,-0.000130679982248694,0.000318647857056931,0.999157428741455,-0.00736892223358154,0.0403730794787407,0.907718539237976,-0.00737858936190605,0.419514715671539,0.923754572868347,-0.000129075328004546,0.382984817028046,0.923754572868347,-0.000129075328004546,0.382984817028046,0.907718539237976,-0.00737858936190605,0.419514715671539,0.678398072719574,-0.00735778035596013,0.73465770483017,0.707008898258209,-4.17007759097032e-005,0.707204639911652,0.707008898258209,-4.17007759097032e-005,0.707204639911652,0.678398072719574,-0.00735778035596013,0.73465770483017,0.381832718849182,-0.000161686970386654,0.924231350421906,0.360253006219864,-0.010950380936265,0.932790398597717,0.360253006219864,-0.010950380936265,0.932790398597717,0.381832718849182,-0.000161686970386654,0.924231350421906,0.0384179316461086,0.00711983861401677,0.999236345291138,-0.0394939891993999,-0.0408968888223171,0.998382449150085,-0.0092355152592063,0.0274389740079641,-0.999580800533295,0.0384284369647503,-0.00710790324956179,-0.999236047267914,0.418585300445557,-0.00718663912266493,-0.908149063587189,0.381848245859146,0.000403334037400782,-0.92422491312027,-0.996475756168365,0.00175244431011379,0.083863265812397,-0.958067834377289,-0.0563384778797627,0.280948042869568,-0.997795164585114,0.042359359562397,0.051091942936182,-0.964417397975922,0.00712152058258653,0.264288395643234,-0.865329802036285,-0.102012798190117,0.490711331367493,-0.958067834377289,-0.0563384778797627,0.280948042869568,-0.916968524456024,0.00950164441019297,0.398846179246902,-0.758907318115234,-0.0821298584342003,0.645998775959015,-0.865329802036285,-0.102012798190117,0.490711331367493,
|
||||
-0.875656545162201,0.00845817849040031,0.482859939336777,-0.686440765857697,-0.0435233674943447,0.725881993770599,-0.758907318115234,-0.0821298584342003,0.645998775959015,-0.852318346500397,0.00368032860569656,0.52301013469696,-0.661822974681854,-0.00661670323461294,0.749630928039551,-0.686440765857697,-0.0435233674943447,0.725881993770599,-0.983578681945801,0.00676653394475579,-0.180352717638016,-0.993394672870636,-0.00566089013591409,-0.114607527852058,-0.955138146877289,0.0426447279751301,-0.293074399232864,-0.942000925540924,9.51236288528889e-005,-0.335610330104828,-0.957343757152557,-0.0100682210177183,-0.288775682449341,-0.862440168857574,0.0902659669518471,-0.498045146465302,-0.8963982462883,-0.00985895935446024,-0.443139940500259,-0.909841120243073,-0.0106101483106613,-0.414821028709412,-0.757287383079529,0.0739360004663467,-0.648883044719696,-0.865496695041656,-0.00973355211317539,-0.50081992149353,-0.870859086513519,-0.0081884516403079,-0.491464227437973,-0.684957802295685,0.0316951125860214,-0.727893054485321,-0.85513961315155,1.66720823813193e-008,-0.518397629261017,-0.850664496421814,-0.00284199137240648,-0.52570116519928,-0.661799609661102,-0.010414038784802,-0.749608516693115,-0.374868869781494,0.0449530780315399,-0.925987362861633,-0.876113057136536,0.0134953232482076,-0.481916457414627,-0.668756425380707,0.0241918787360191,-0.743087828159332,-0.936172366142273,-0.00662188790738583,0.351478934288025,-0.982852339744568,0.0580480173230171,0.175018727779388,-0.881439387798309,-0.0200207587331533,0.471872478723526,-0.38166555762291,-0.0510107167065144,0.922891795635223,-0.881439387798309,-0.0200207587331533,0.471872478723526,-0.748864352703094,-0.053324569016695,0.660574376583099,-0.374868869781494,0.0449530780315399,-0.925987362861633,-0.744325757026672,0.0470677204430103,-0.666155993938446,-0.876113057136536,0.0134953232482076,-0.481916457414627,-0.38282984495163,-0.000403486425057054,-0.92381876707077,-0.668756425380707,0.0241918787360191,-0.743087828159332,-0.734679162502289,0.00733575597405434,-0.678375005722046,
|
||||
-0.383265525102615,0.000102500183857046,-0.923638224601746,-0.668756425380707,0.0241918787360191,-0.743087828159332,-0.923630595207214,-0.00488327722996473,-0.383252620697021,-0.921392679214478,0.00304058776237071,-0.388620674610138,-0.734679162502289,0.00733575597405434,-0.678375005722046,-0.923630595207214,-0.00488327722996473,-0.383252620697021,-0.980915129184723,-0.060716949403286,-0.184712931513786,-0.97956770658493,-0.0367041863501072,-0.197736367583275,-0.921392679214478,0.00304058776237071,-0.388620674610138,-0.982852339744568,0.0580480173230171,0.175018727779388,-0.936172366142273,-0.00662188790738583,0.351478934288025,-0.904990673065186,0.00440627103671432,0.425408542156219,-0.979175627231598,0.0366211198270321,0.199683889746666,-0.936172366142273,-0.00662188790738583,0.351478934288025,-0.709642350673676,-0.0476938933134079,0.702945947647095,-0.678381681442261,0.00725614931434393,0.734673857688904,-0.904990673065186,0.00440627103671432,0.425408542156219,-0.709642350673676,-0.0476938933134079,0.702945947647095,-0.413729399442673,-0.0134215196594596,0.910300850868225,-0.346196413040161,0.00719054555520415,0.938134491443634,-0.678381681442261,0.00725614931434393,0.734673857688904,-0.413729399442673,-0.0134215196594596,0.910300850868225,-0.0394939891993999,-0.0408968888223171,0.998382449150085,0.0384179316461086,0.00711983861401677,0.999236345291138,-0.346196413040161,0.00719054555520415,0.938134491443634,-0.0092355152592063,0.0274389740079641,-0.999580800533295,-0.38282984495163,-0.000403486425057054,-0.92381876707077,-0.383265525102615,0.000102500183857046,-0.923638224601746,0.0384284369647503,-0.00710790324956179,-0.999236047267914,-0.38166555762291,-0.0510107167065144,0.922891795635223,-0.413729399442673,-0.0134215196594596,0.910300850868225,-0.709642350673676,-0.0476938933134079,0.702945947647095,-0.881439387798309,-0.0200207587331533,0.471872478723526,-0.709642350673676,-0.0476938933134079,0.702945947647095,-0.936172366142273,-0.00662188790738583,0.351478934288025,-0.923630595207214,-0.00488327722996473,-0.383252620697021,
|
||||
-0.876113057136536,0.0134953232482076,-0.481916457414627,-0.980915129184723,-0.060716949403286,-0.184712931513786,-0.374868869781494,0.0449530780315399,-0.925987362861633,-0.668756425380707,0.0241918787360191,-0.743087828159332,-0.38282984495163,-0.000403486425057054,-0.92381876707077,-0.374868869781494,0.0449530780315399,-0.925987362861633,-0.38282984495163,-0.000403486425057054,-0.92381876707077,-0.0092355152592063,0.0274389740079641,-0.999580800533295,-0.668756425380707,0.0241918787360191,-0.743087828159332,-0.876113057136536,0.0134953232482076,-0.481916457414627,-0.923630595207214,-0.00488327722996473,-0.383252620697021,-0.0394939891993999,-0.0408968888223171,0.998382449150085,-0.38166555762291,-0.0510107167065144,0.922891795635223,0.0654798820614815,-0.00984381418675184,0.997805237770081,-0.881439387798309,-0.0200207587331533,0.471872478723526,-0.38166555762291,-0.0510107167065144,0.922891795635223,-0.709642350673676,-0.0476938933134079,0.702945947647095,-0.0311072655022144,0.0128218196332455,0.999433755874634,-0.0293328315019608,-0.01127421669662,0.999506175518036,-0.368491262197495,0.00576443690806627,0.92961323261261,-0.477384448051453,0.0558155626058578,0.87692004442215,-0.379584103822708,0.0494194626808167,0.923836469650269,-0.477384448051453,0.0558155626058578,0.87692004442215,-0.748479187488556,0.0539784878492355,0.660957634449005,0.0634846463799477,0.0113839320838451,0.997917890548706,-0.379584103822708,0.0494194626808167,0.923836469650269,-0.0100541403517127,0.0279624294489622,0.999558448791504,-0.385988235473633,-0.0551172234117985,-0.920855700969696,-0.0397344008088112,-0.0411678813397884,-0.998361647129059,-0.413442641496658,-0.0133607620373368,-0.910432100296021,-0.0316582098603249,-0.0134095335379243,-0.999408781528473,0.0638496354222298,-0.0111117037013173,-0.997897684574127,-0.385988235473633,-0.0551172234117985,-0.920855700969696,-0.0249972473829985,0.0248763523995876,-0.999377906322479,-0.0316582098603249,-0.0134095335379243,-0.999408781528473,-0.48587504029274,-0.0727869719266891,-0.870992243289948,
|
||||
-0.372776061296463,-0.020824883133173,-0.927687585353851,-0.351161330938339,-0.0119364568963647,-0.936238884925842,-0.0219492372125387,0.00243342551402748,-0.999756038188934,-0.0249972473829985,0.0248763523995876,-0.999377906322479,-0.372776061296463,-0.020824883133173,-0.927687585353851,-0.0293328315019608,-0.01127421669662,0.999506175518036,-0.0219474602490664,0.00923025980591774,0.999716520309448,-0.351179897785187,-0.00289323786273599,0.936303496360779,-0.368491262197495,0.00576443690806627,0.92961323261261,-0.758078694343567,0.0769018977880478,0.647613108158112,-0.477384448051453,0.0558155626058578,0.87692004442215,-0.368491262197495,0.00576443690806627,0.92961323261261,-0.685452103614807,0.0349476002156734,0.727278590202332,-0.862928211688995,0.0918264016509056,0.496913224458694,-0.748479187488556,0.0539784878492355,0.660957634449005,-0.477384448051453,0.0558155626058578,0.87692004442215,-0.758078694343567,0.0769018977880478,0.647613108158112,-0.955374777317047,0.0435299277305603,0.292171329259872,-0.878028750419617,0.0163732264190912,0.478327691555023,-0.748479187488556,0.0539784878492355,0.660957634449005,-0.862928211688995,0.0918264016509056,0.496913224458694,-0.997854888439178,-0.0428910739719868,0.0494562685489655,-0.988098561763763,-0.080953449010849,0.130796238780022,-0.878028750419617,0.0163732264190912,0.478327691555023,-0.955374777317047,0.0435299277305603,0.292171329259872,-0.95825183391571,-0.0570989325642586,-0.280166268348694,-0.883013427257538,-0.0224533900618553,-0.468810260295868,-0.990689039230347,0.0727216824889183,-0.115095049142838,-0.997814238071442,0.042173158377409,-0.0508723519742489,-0.865770220756531,-0.103495240211487,-0.489623069763184,-0.752794861793518,-0.0599513277411461,-0.655519366264343,-0.883013427257538,-0.0224533900618553,-0.468810260295868,-0.95825183391571,-0.0570989325642586,-0.280166268348694,-0.759694457054138,-0.0851753950119019,-0.644677817821503,-0.48587504029274,-0.0727869719266891,-0.870992243289948,-0.752794861793518,-0.0599513277411461,-0.655519366264343,-0.865770220756531,-0.103495240211487,-0.489623069763184,
|
||||
-0.686966955661774,-0.0472219176590443,-0.725152790546417,-0.372776061296463,-0.020824883133173,-0.927687585353851,-0.48587504029274,-0.0727869719266891,-0.870992243289948,-0.759694457054138,-0.0851753950119019,-0.644677817821503,-0.661799609661102,-0.010414038784802,-0.749608516693115,-0.351161330938339,-0.0119364568963647,-0.936238884925842,-0.372776061296463,-0.020824883133173,-0.927687585353851,-0.686966955661774,-0.0472219176590443,-0.725152790546417,-0.685452103614807,0.0349476002156734,0.727278590202332,-0.368491262197495,0.00576443690806627,0.92961323261261,-0.351179897785187,-0.00289323786273599,0.936303496360779,-0.661822974681854,-0.00661670323461294,0.749630928039551,-0.870859146118164,-0.00818793755024672,0.491464167833328,-0.758078694343567,0.0769018977880478,0.647613108158112,-0.685452103614807,0.0349476002156734,0.727278590202332,-0.870859146118164,-0.00818793755024672,0.491464167833328,-0.879842817783356,-0.00414833659306169,0.475246608257294,-0.758078694343567,0.0769018977880478,0.647613108158112,-0.879842817783356,-0.00414833659306169,0.475246608257294,-0.896398186683655,-0.00985864643007517,0.44313982129097,-0.758078694343567,0.0769018977880478,0.647613108158112,-0.909841001033783,-0.0106111532077193,0.414821416139603,-0.862928211688995,0.0918264016509056,0.496913224458694,-0.758078694343567,0.0769018977880478,0.647613108158112,-0.909841001033783,-0.0106111532077193,0.414821416139603,-0.923894703388214,0.00844520330429077,0.382553339004517,-0.862928211688995,0.0918264016509056,0.496913224458694,-0.923894703388214,0.00844520330429077,0.382553339004517,-0.942000925540924,9.53813723754138e-005,0.335610210895538,-0.862928211688995,0.0918264016509056,0.496913224458694,-0.957343995571136,-0.0100674862042069,0.288775384426117,-0.955374777317047,0.0435299277305603,0.292171329259872,-0.862928211688995,0.0918264016509056,0.496913224458694,-0.957343995571136,-0.0100674862042069,0.288775384426117,-0.970416665077209,0.0146109508350492,0.240993738174438,-0.955374777317047,0.0435299277305603,0.292171329259872,
|
||||
-0.970416665077209,0.0146109508350492,0.240993738174438,-0.983578562736511,0.00676502985879779,0.180353552103043,-0.955374777317047,0.0435299277305603,0.292171329259872,-0.993394792079926,-0.00566056277602911,0.114607326686382,-0.997854888439178,-0.0428910739719868,0.0494562685489655,-0.955374777317047,0.0435299277305603,0.292171329259872,-0.993394792079926,-0.00566056277602911,0.114607326686382,-0.997775435447693,0.00604059733450413,0.0663907080888748,-0.997854888439178,-0.0428910739719868,0.0494562685489655,-0.997775435447693,0.00604059733450413,0.0663907080888748,-0.999895036220551,-0.0123808393254876,0.00750544667243958,-0.997854888439178,-0.0428910739719868,0.0494562685489655,-0.999895036220551,0.0123808365315199,-0.00750545132905245,-0.99647581577301,0.00175117491744459,-0.0838624835014343,-0.997814238071442,0.042173158377409,-0.0508723519742489,-0.99647581577301,0.00175117491744459,-0.0838624835014343,-0.992598235607147,-0.00136090733576566,-0.121437005698681,-0.95825183391571,-0.0570989325642586,-0.280166268348694,-0.992598235607147,-0.00136090733576566,-0.121437005698681,-0.983578562736511,-0.00676574558019638,-0.180353492498398,-0.95825183391571,-0.0570989325642586,-0.280166268348694,-0.983578562736511,-0.00676574558019638,-0.180353492498398,-0.964417397975922,0.00712154526263475,-0.264288395643234,-0.95825183391571,-0.0570989325642586,-0.280166268348694,-0.964417397975922,0.00712154526263475,-0.264288395643234,-0.955774068832397,0.00550884520635009,-0.294050365686417,-0.865770220756531,-0.103495240211487,-0.489623069763184,-0.955774068832397,0.00550884520635009,-0.294050365686417,-0.94200074672699,-9.54910428845324e-005,-0.335610777139664,-0.865770220756531,-0.103495240211487,-0.489623069763184,-0.94200074672699,-9.54910428845324e-005,-0.335610777139664,-0.916968703269959,0.00950143113732338,-0.398846179246902,-0.865770220756531,-0.103495240211487,-0.489623069763184,-0.916968703269959,0.00950143113732338,-0.398846179246902,-0.907539188861847,0.0138541469350457,-0.419738829135895,-0.759694457054138,-0.0851753950119019,-0.644677817821503,
|
||||
-0.907539188861847,0.0138541469350457,-0.419738829135895,-0.896398067474365,0.00985873024910688,-0.44314032793045,-0.759694457054138,-0.0851753950119019,-0.644677817821503,-0.896398067474365,0.00985873024910688,-0.44314032793045,-0.87565666437149,0.00845790468156338,-0.482859909534454,-0.759694457054138,-0.0851753950119019,-0.644677817821503,-0.87565666437149,0.00845790468156338,-0.482859909534454,-0.870142936706543,0.0107479663565755,-0.492682009935379,-0.686966955661774,-0.0472219176590443,-0.725152790546417,-0.870142936706543,0.0107479663565755,-0.492682009935379,-0.865496397018433,0.00973423197865486,-0.500820457935333,-0.686966955661774,-0.0472219176590443,-0.725152790546417,-0.865496397018433,0.00973423197865486,-0.500820457935333,-0.852318346500397,0.00368064735084772,-0.523010194301605,-0.686966955661774,-0.0472219176590443,-0.725152790546417,-0.852318346500397,0.00368064735084772,-0.523010194301605,-0.851874053478241,-0.000277757091680542,-0.523746490478516,-0.661799609661102,-0.010414038784802,-0.749608516693115,-0.851874053478241,-0.000277757091680542,-0.523746490478516,-0.85513961315155,1.66720823813193e-008,-0.518397629261017,-0.661799609661102,-0.010414038784802,-0.749608516693115,-0.850664496421814,-0.00284226750954986,0.52570116519928,-0.685452103614807,0.0349476002156734,0.727278590202332,-0.661822974681854,-0.00661670323461294,0.749630928039551,-0.850664496421814,-0.00284226750954986,0.52570116519928,-0.854582071304321,-0.00800405349582434,0.519254684448242,-0.685452103614807,0.0349476002156734,0.727278590202332,-0.854582071304321,-0.00800405349582434,0.519254684448242,-0.865496814250946,-0.00973344314843416,0.50081992149353,-0.685452103614807,0.0349476002156734,0.727278590202332,0.382675796747208,0.00637848861515522,0.923860490322113,0.381406933069229,0.00445334799587727,0.924396395683289,0.706270515918732,0.00379701470956206,0.707931816577911,0.707100927829742,0.00403719395399094,0.707100927829742,0.707100927829742,0.00403719395399094,0.707100927829742,0.706270515918732,0.00379701470956206,0.707931816577911,
|
||||
0.923545837402344,0.0027848444879055,0.383477836847305,0.92387592792511,0.00275987922213972,0.38268193602562,0.92387592792511,0.00275987922213972,0.38268193602562,0.923545837402344,0.0027848444879055,0.383477836847305,0.999997198581696,0.00225544790737331,0.000697802461218089,0.999997317790985,0.00230691395699978,5.11294674133966e-013,0.999997317790985,0.00230691395699978,5.11294674133966e-013,0.999997198581696,0.00225544790737331,0.000697802461218089,0.924136936664581,0.00219430145807564,-0.382055044174194,0.923876762390137,0.00237201689742506,-0.382682383060455,0.923876762390137,0.00237201689742506,-0.382682383060455,0.924136936664581,0.00219430145807564,-0.382055044174194,0.707696855068207,0.00271008699201047,-0.7065110206604,0.707104325294495,0.00260792463086545,-0.707104325294495,0.707104325294495,0.00260792463086545,-0.707104325294495,0.707696855068207,0.00271008699201047,-0.7065110206604,0.383788645267487,0.00387790170498192,-0.923412799835205,0.382681488990784,0.00332811567932367,-0.923874199390411,0.382681488990784,0.00332811567932367,-0.923874199390411,0.383788645267487,0.00387790170498192,-0.923412799835205,-0.0249972473829985,0.0248763523995876,-0.999377906322479,-0.0219492372125387,0.00243342551402748,-0.999756038188934,-0.0219474602490664,0.00923025980591774,0.999716520309448,-0.0293328315019608,-0.01127421669662,0.999506175518036,0.381406933069229,0.00445334799587727,0.924396395683289,0.382675796747208,0.00637848861515522,0.923860490322113,0.381406933069229,0.00445334799587727,0.924396395683289,0.379356294870377,0.0052667697891593,0.925235688686371,0.705255925655365,0.00382014783099294,0.708942472934723,0.706270515918732,0.00379701470956206,0.707931816577911,0.706270515918732,0.00379701470956206,0.707931816577911,0.705255925655365,0.00382014783099294,0.708942472934723,0.923231065273285,0.0024675561580807,0.384237438440323,0.923545837402344,0.0027848444879055,0.383477836847305,0.923545837402344,0.0027848444879055,0.383477836847305,0.923231065273285,0.0024675561580807,0.384237438440323,0.999997079372406,0.00198852177709341,0.00135709275491536,
|
||||
0.999997198581696,0.00225544790737331,0.000697802461218089,0.999997198581696,0.00225544790737331,0.000697802461218089,0.999997079372406,0.00198852177709341,0.00135709275491536,0.924363017082214,0.00186029332689941,-0.381509453058243,0.924136936664581,0.00219430145807564,-0.382055044174194,0.924136936664581,0.00219430145807564,-0.382055044174194,0.924363017082214,0.00186029332689941,-0.381509453058243,0.708313226699829,0.00250664702616632,-0.705893874168396,0.707696855068207,0.00271008699201047,-0.7065110206604,0.707696855068207,0.00271008699201047,-0.7065110206604,0.708313226699829,0.00250664702616632,-0.705893874168396,0.386704325675964,0.00639659212902188,-0.922181487083435,0.383788645267487,0.00387790170498192,-0.923412799835205,0.383788645267487,0.00387790170498192,-0.923412799835205,0.386704325675964,0.00639659212902188,-0.922181487083435,-0.0316582098603249,-0.0134095335379243,-0.999408781528473,-0.0249972473829985,0.0248763523995876,-0.999377906322479,-0.0293328315019608,-0.01127421669662,0.999506175518036,-0.0311072655022144,0.0128218196332455,0.999433755874634,0.379356294870377,0.0052667697891593,0.925235688686371,0.381406933069229,0.00445334799587727,0.924396395683289,0.379356294870377,0.0052667697891593,0.925235688686371,0.376082360744476,0.00573744578287005,0.926568448543549,0.705158293247223,0.00221244269050658,0.709046423435211,0.705255925655365,0.00382014783099294,0.708942472934723,0.705255925655365,0.00382014783099294,0.708942472934723,0.705158293247223,0.00221244269050658,0.709046423435211,0.923234820365906,0.00135077151935548,0.384233564138412,0.923231065273285,0.0024675561580807,0.384237438440323,0.923231065273285,0.0024675561580807,0.384237438440323,0.923234820365906,0.00135077151935548,0.384233564138412,0.999998211860657,0.00114587740972638,0.00142415158916265,0.999997079372406,0.00198852177709341,0.00135709275491536,0.999997079372406,0.00198852177709341,0.00135709275491536,0.999998211860657,0.00114587740972638,0.00142415158916265,0.924341917037964,0.000974365335423499,-0.381563782691956,0.924363017082214,0.00186029332689941,-0.381509453058243,
|
||||
0.924363017082214,0.00186029332689941,-0.381509453058243,0.924341917037964,0.000974365335423499,-0.381563782691956,0.707771420478821,0.000756698369514197,-0.7064408659935,0.708313226699829,0.00250664702616632,-0.705893874168396,0.708313226699829,0.00250664702616632,-0.705893874168396,0.707771420478821,0.000756698369514197,-0.7064408659935,0.383524864912033,0.00073260796489194,-0.923530101776123,0.386704325675964,0.00639659212902188,-0.922181487083435,0.386704325675964,0.00639659212902188,-0.922181487083435,0.383524864912033,0.00073260796489194,-0.923530101776123,0.0638496354222298,-0.0111117037013173,-0.997897684574127,-0.0316582098603249,-0.0134095335379243,-0.999408781528473,-0.0311072655022144,0.0128218196332455,0.999433755874634,0.0634846463799477,0.0113839320838451,0.997917890548706,0.376082360744476,0.00573744578287005,0.926568448543549,0.379356294870377,0.0052667697891593,0.925235688686371,0.376082360744476,0.00573744578287005,0.926568448543549,0.382030516862869,0.000319850340019912,0.924149572849274,0.707185924053192,-4.17424489569385e-005,0.707027494907379,0.705158293247223,0.00221244269050658,0.709046423435211,0.705158293247223,0.00221244269050658,0.709046423435211,0.707185924053192,-4.17424489569385e-005,0.707027494907379,0.924034237861633,-0.000164232958923094,0.382309526205063,0.923234820365906,0.00135077151935548,0.384233564138412,0.923234820365906,0.00135077151935548,0.384233564138412,0.924034237861633,-0.000164232958923094,0.382309526205063,0.999999642372131,-0.000247757183387876,-0.00060499255778268,0.999998211860657,0.00114587740972638,0.00142415158916265,0.999998211860657,0.00114587740972638,0.00142415158916265,0.999999642372131,-0.000247757183387876,-0.00060499255778268,0.923625648021698,-0.000270310527412221,-0.383295446634293,0.924341917037964,0.000974365335423499,-0.381563782691956,0.924341917037964,0.000974365335423499,-0.381563782691956,0.923625648021698,-0.000270310527412221,-0.383295446634293,0.706576526165009,-0.000311127922032028,-0.707636594772339,0.707771420478821,0.000756698369514197,-0.7064408659935,
|
||||
0.707771420478821,0.000756698369514197,-0.7064408659935,0.706576526165009,-0.000311127922032028,-0.707636594772339,0.359727174043655,-0.011227909475565,-0.932989776134491,0.383524864912033,0.00073260796489194,-0.923530101776123,0.383524864912033,0.00073260796489194,-0.923530101776123,0.359727174043655,-0.011227909475565,-0.932989776134491,-0.0397344008088112,-0.0411678813397884,-0.998361647129059,0.0638496354222298,-0.0111117037013173,-0.997897684574127,0.0634846463799477,0.0113839320838451,0.997917890548706,-0.0100541403517127,0.0279624294489622,0.999558448791504,0.382030516862869,0.000319850340019912,0.924149572849274,0.376082360744476,0.00573744578287005,0.926568448543549,0.382030516862869,0.000319850340019912,0.924149572849274,0.419166177511215,-0.00722912652418017,0.907880663871765,0.735475838184357,-0.00735874427482486,0.677510917186737,0.707185924053192,-4.17424489569385e-005,0.707027494907379,0.707185924053192,-4.17424489569385e-005,0.707027494907379,0.735475838184357,-0.00735874427482486,0.677510917186737,0.93902450799942,-0.00745550682768226,0.343769550323486,0.924034237861633,-0.000164232958923094,0.382309526205063,0.924034237861633,-0.000164232958923094,0.382309526205063,0.93902450799942,-0.00745550682768226,0.343769550323486,0.99908971786499,-0.00750681897625327,-0.0419926159083843,0.999999642372131,-0.000247757183387876,-0.00060499255778268,0.999999642372131,-0.000247757183387876,-0.00060499255778268,0.99908971786499,-0.00750681897625327,-0.0419926159083843,0.907095432281494,-0.00750483153387904,-0.420858263969421,0.923625648021698,-0.000270310527412221,-0.383295446634293,0.923625648021698,-0.000270310527412221,-0.383295446634293,0.907095432281494,-0.00750483153387904,-0.420858263969421,0.677573144435883,-0.00745209073647857,-0.735417485237122,0.706576526165009,-0.000311127922032028,-0.707636594772339,0.706576526165009,-0.000311127922032028,-0.707636594772339,0.677573144435883,-0.00745209073647857,-0.735417485237122,0.381132572889328,-0.00024649384431541,-0.924520432949066,0.359727174043655,-0.011227909475565,-0.932989776134491,
|
||||
0.359727174043655,-0.011227909475565,-0.932989776134491,0.381132572889328,-0.00024649384431541,-0.924520432949066,0.0384184792637825,0.0071104564704001,-0.999236464500427,-0.0397344008088112,-0.0411678813397884,-0.998361647129059,-0.0100541403517127,0.0279624294489622,0.999558448791504,0.0384377688169479,-0.00708910170942545,0.999235808849335,0.419166177511215,-0.00722912652418017,0.907880663871765,0.382030516862869,0.000319850340019912,0.924149572849274,-0.99647581577301,0.00175117491744459,-0.0838624835014343,-0.95825183391571,-0.0570989325642586,-0.280166268348694,-0.997814238071442,0.042173158377409,-0.0508723519742489,-0.964417397975922,0.00712154526263475,-0.264288395643234,-0.865770220756531,-0.103495240211487,-0.489623069763184,-0.95825183391571,-0.0570989325642586,-0.280166268348694,-0.916968703269959,0.00950143113732338,-0.398846179246902,-0.759694457054138,-0.0851753950119019,-0.644677817821503,-0.865770220756531,-0.103495240211487,-0.489623069763184,-0.87565666437149,0.00845790468156338,-0.482859909534454,-0.686966955661774,-0.0472219176590443,-0.725152790546417,-0.759694457054138,-0.0851753950119019,-0.644677817821503,-0.852318346500397,0.00368064735084772,-0.523010194301605,-0.661799609661102,-0.010414038784802,-0.749608516693115,-0.686966955661774,-0.0472219176590443,-0.725152790546417,-0.983578562736511,0.00676502985879779,0.180353552103043,-0.993394792079926,-0.00566056277602911,0.114607326686382,-0.955374777317047,0.0435299277305603,0.292171329259872,-0.942000925540924,9.53813723754138e-005,0.335610210895538,-0.957343995571136,-0.0100674862042069,0.288775384426117,-0.862928211688995,0.0918264016509056,0.496913224458694,-0.896398186683655,-0.00985864643007517,0.44313982129097,-0.909841001033783,-0.0106111532077193,0.414821416139603,-0.758078694343567,0.0769018977880478,0.647613108158112,-0.865496814250946,-0.00973344314843416,0.50081992149353,-0.870859146118164,-0.00818793755024672,0.491464167833328,-0.685452103614807,0.0349476002156734,0.727278590202332,-0.85513961315155,1.66720823813193e-008,0.518397629261017,
|
||||
-0.850664496421814,-0.00284226750954986,0.52570116519928,-0.661822974681854,-0.00661670323461294,0.749630928039551,-0.379584103822708,0.0494194626808167,0.923836469650269,-0.878028750419617,0.0163732264190912,0.478327691555023,-0.670561850070953,0.0254663806408644,0.741416394710541,-0.936009168624878,-0.00646509882062674,-0.351916193962097,-0.982682585716248,0.0585307888686657,-0.175809472799301,-0.883013427257538,-0.0224533900618553,-0.468810260295868,-0.385988235473633,-0.0551172234117985,-0.920855700969696,-0.883013427257538,-0.0224533900618553,-0.468810260295868,-0.752794861793518,-0.0599513277411461,-0.655519366264343,-0.379584103822708,0.0494194626808167,0.923836469650269,-0.748479187488556,0.0539784878492355,0.660957634449005,-0.878028750419617,0.0163732264190912,0.478327691555023,-0.382835000753403,-0.000415517599321902,0.923816561698914,-0.670561850070953,0.0254663806408644,0.741416394710541,-0.735470533370972,0.00742957554757595,0.677515864372253,-0.383753627538681,0.000144893521792255,0.923435568809509,-0.670561850070953,0.0254663806408644,0.741416394710541,-0.923959016799927,-0.00471155066043139,0.382462292909622,-0.922143876552582,0.00326800928451121,0.386833220720291,-0.735470533370972,0.00742957554757595,0.677515864372253,-0.923959016799927,-0.00471155066043139,0.382462292909622,-0.980827867984772,-0.0611074231564999,0.1850476115942,-0.979853093624115,-0.0365506075322628,0.196346208453178,-0.922143876552582,0.00326800928451121,0.386833220720291,-0.982682585716248,0.0585307888686657,-0.175809472799301,-0.936009168624878,-0.00646509882062674,-0.351916193962097,-0.904389202594757,0.00454117124900222,-0.426684528589249,-0.978922963142395,0.0366077683866024,-0.200921297073364,-0.936009168624878,-0.00646509882062674,-0.351916193962097,-0.710790753364563,-0.0487078428268433,-0.701714992523193,-0.677555620670319,0.00735082710161805,-0.735434651374817,-0.904389202594757,0.00454117124900222,-0.426684528589249,-0.710790753364563,-0.0487078428268433,-0.701714992523193,-0.413442641496658,-0.0133607620373368,-0.910432100296021,
|
||||
-0.345625638961792,0.00723784137517214,-0.938344538211823,-0.677555620670319,0.00735082710161805,-0.735434651374817,-0.413442641496658,-0.0133607620373368,-0.910432100296021,-0.0397344008088112,-0.0411678813397884,-0.998361647129059,0.0384184792637825,0.0071104564704001,-0.999236464500427,-0.345625638961792,0.00723784137517214,-0.938344538211823,-0.0100541403517127,0.0279624294489622,0.999558448791504,-0.382835000753403,-0.000415517599321902,0.923816561698914,-0.383753627538681,0.000144893521792255,0.923435568809509,0.0384377688169479,-0.00708910170942545,0.999235808849335,-0.385988235473633,-0.0551172234117985,-0.920855700969696,-0.413442641496658,-0.0133607620373368,-0.910432100296021,-0.710790753364563,-0.0487078428268433,-0.701714992523193,-0.883013427257538,-0.0224533900618553,-0.468810260295868,-0.710790753364563,-0.0487078428268433,-0.701714992523193,-0.936009168624878,-0.00646509882062674,-0.351916193962097,-0.980827867984772,-0.0611074231564999,0.1850476115942,-0.878028750419617,0.0163732264190912,0.478327691555023,-0.988098561763763,-0.080953449010849,0.130796238780022,-0.379584103822708,0.0494194626808167,0.923836469650269,-0.670561850070953,0.0254663806408644,0.741416394710541,-0.382835000753403,-0.000415517599321902,0.923816561698914,-0.379584103822708,0.0494194626808167,0.923836469650269,-0.382835000753403,-0.000415517599321902,0.923816561698914,-0.0100541403517127,0.0279624294489622,0.999558448791504,-0.670561850070953,0.0254663806408644,0.741416394710541,-0.878028750419617,0.0163732264190912,0.478327691555023,-0.923959016799927,-0.00471155066043139,0.382462292909622,-0.0397344008088112,-0.0411678813397884,-0.998361647129059,-0.385988235473633,-0.0551172234117985,-0.920855700969696,0.0638496354222298,-0.0111117037013173,-0.997897684574127,-0.883013427257538,-0.0224533900618553,-0.468810260295868,-0.385988235473633,-0.0551172234117985,-0.920855700969696,-0.710790753364563,-0.0487078428268433,-0.701714992523193,-0.980915129184723,-0.060716949403286,-0.184712931513786,-0.876113057136536,0.0134953232482076,-0.481916457414627,
|
||||
-0.98825079202652,-0.0804334431886673,-0.129964381456375,-0.881439387798309,-0.0200207587331533,0.471872478723526,-0.982852339744568,0.0580480173230171,0.175018727779388,-0.990937411785126,0.0717573091387749,0.113551631569862,-0.883013427257538,-0.0224533900618553,-0.468810260295868,-0.982682585716248,0.0585307888686657,-0.175809472799301,-0.990689039230347,0.0727216824889183,-0.115095049142838,-0.923959016799927,-0.00471155066043139,0.382462292909622,-0.878028750419617,0.0163732264190912,0.478327691555023,-0.980827867984772,-0.0611074231564999,0.1850476115942,0.735475838184357,-0.00735874427482486,0.677510917186737,0.419166177511215,-0.00722912652418017,0.907880663871765,0.556900262832642,-0.00146606378257275,0.830577969551086,0.93902450799942,-0.00745550682768226,0.343769550323486,0.735475838184357,-0.00735874427482486,0.677510917186737,0.832787215709686,-0.0020867723505944,0.553589224815369,0.99908971786499,-0.00750681897625327,-0.0419926159083843,0.93902450799942,-0.00745550682768226,0.343769550323486,0.98132312297821,-0.00238843052648008,0.192351520061493,0.907095432281494,-0.00750483153387904,-0.420858263969421,0.99908971786499,-0.00750681897625327,-0.0419926159083843,0.980238020420074,-0.00232599047012627,-0.197807788848877,0.677573144435883,-0.00745209073647857,-0.735417485237122,0.907095432281494,-0.00750483153387904,-0.420858263969421,0.830168068408966,-0.00191008707042784,-0.557509899139404,0.381132572889328,-0.00024649384431541,-0.924520432949066,0.677573144435883,-0.00745209073647857,-0.735417485237122,0.55427497625351,-0.00120474258437753,-0.832332670688629,0.0384184792637825,0.0071104564704001,-0.999236464500427,0.381132572889328,-0.00024649384431541,-0.924520432949066,0.194549530744553,-0.00031724211294204,-0.980892598628998,0.419166177511215,-0.00722912652418017,0.907880663871765,0.0384377688169479,-0.00708910170942545,0.999235808849335,0.195649892091751,-0.000620697042904794,0.980673551559448,-0.383753627538681,0.000144893521792255,0.923435568809509,-0.735470533370972,0.00742957554757595,0.677515864372253,
|
||||
-0.556916475296021,0.0012113630073145,0.830567598342896,-0.735470533370972,0.00742957554757595,0.677515864372253,-0.922143876552582,0.00326800928451121,0.386833220720291,-0.832809269428253,0.00191704242024571,0.553556561470032,-0.922143876552582,0.00326800928451121,0.386833220720291,-0.979853093624115,-0.0365506075322628,0.196346208453178,-0.979029059410095,0.00232217996381223,0.203707441687584,-0.978922963142395,0.0366077683866024,-0.200921297073364,-0.904389202594757,0.00454117124900222,-0.426684528589249,-0.978145599365234,0.0023831776343286,-0.207907140254974,-0.904389202594757,0.00454117124900222,-0.426684528589249,-0.677555620670319,0.00735082710161805,-0.735434651374817,-0.830144703388214,0.00208102655597031,-0.557544052600861,-0.677555620670319,0.00735082710161805,-0.735434651374817,-0.345625638961792,0.00723784137517214,-0.938344538211823,-0.554259538650513,0.00145998655352741,-0.832342505455017,-0.345625638961792,0.00723784137517214,-0.938344538211823,0.0384184792637825,0.0071104564704001,-0.999236464500427,-0.194546908140183,0.000618079327978194,-0.980892956256866,0.0384377688169479,-0.00708910170942545,0.999235808849335,-0.383753627538681,0.000144893521792255,0.923435568809509,-0.195653066039085,0.000319928483804688,0.98067307472229,0.734684407711029,-0.00726562226191163,-0.678370237350464,0.418585300445557,-0.00718663912266493,-0.908149063587189,0.55629825592041,-0.000858854909893125,-0.830982148647308,0.938504457473755,-0.00732936663553119,-0.345189392566681,0.734684407711029,-0.00726562226191163,-0.678370237350464,0.832190752029419,-0.00117584224790335,-0.554488062858582,0.999157428741455,-0.00736892223358154,0.0403730794787407,0.938504457473755,-0.00732936663553119,-0.345189392566681,0.981081664562225,-0.00131341721862555,-0.193589597940445,0.907718539237976,-0.00737858936190605,0.419514715671539,0.999157428741455,-0.00736892223358154,0.0403730794787407,0.980486869812012,-0.00125090486835688,0.196580559015274,0.678398072719574,-0.00735778035596013,0.73465770483017,0.907718539237976,-0.00737858936190605,0.419514715671539,
|
||||
0.830752015113831,-0.000998152303509414,0.556641697883606,0.381832718849182,-0.000161686970386654,0.924231350421906,0.678398072719574,-0.00735778035596013,0.73465770483017,0.554852843284607,-0.000593847536947578,0.831948220729828,0.0384179316461086,0.00711983861401677,0.999236345291138,0.381832718849182,-0.000161686970386654,0.924231350421906,0.194798082113266,-9.95088339550421e-005,0.980843305587769,0.418585300445557,-0.00718663912266493,-0.908149063587189,0.0384284369647503,-0.00710790324956179,-0.999236047267914,0.195398524403572,-0.00041066319681704,-0.980723798274994,-0.383265525102615,0.000102500183857046,-0.923638224601746,-0.734679162502289,0.00733575597405434,-0.678375005722046,-0.556307196617126,0.000595902907662094,-0.830976486206055,-0.734679162502289,0.00733575597405434,-0.678375005722046,-0.921392679214478,0.00304058776237071,-0.388620674610138,-0.832204401493073,0.00100039527751505,-0.554467916488647,-0.921392679214478,0.00304058776237071,-0.388620674610138,-0.97956770658493,-0.0367041863501072,-0.197736367583275,-0.978751242160797,0.00124729657545686,-0.205047130584717,-0.979175627231598,0.0366211198270321,0.199683889746666,-0.904990673065186,0.00440627103671432,0.425408542156219,-0.978389620780945,0.00131198135204613,0.206765443086624,-0.904990673065186,0.00440627103671432,0.425408542156219,-0.678381681442261,0.00725614931434393,0.734673857688904,-0.830739617347717,0.00117428845260292,0.556659817695618,-0.678381681442261,0.00725614931434393,0.734673857688904,-0.346196413040161,0.00719054555520415,0.938134491443634,-0.554843962192535,0.000857107166666538,0.831953883171082,-0.346196413040161,0.00719054555520415,0.938134491443634,0.0384179316461086,0.00711983861401677,0.999236345291138,-0.194795921444893,0.000409894186304882,0.980843544006348,0.0384284369647503,-0.00710790324956179,-0.999236047267914,-0.383265525102615,0.000102500183857046,-0.923638224601746,-0.195399940013886,0.000100314711744431,-0.98072361946106,-0.48587504029274,-0.0727869719266891,-0.870992243289948,-0.385988235473633,-0.0551172234117985,-0.920855700969696,
|
||||
-0.752794861793518,-0.0599513277411461,-0.655519366264343,-0.379584103822708,0.0494194626808167,0.923836469650269,-0.0311072655022144,0.0128218196332455,0.999433755874634,-0.477384448051453,0.0558155626058578,0.87692004442215,-0.379584103822708,0.0494194626808167,0.923836469650269,0.0634846463799477,0.0113839320838451,0.997917890548706,-0.0311072655022144,0.0128218196332455,0.999433755874634,-0.0316582098603249,-0.0134095335379243,-0.999408781528473,-0.385988235473633,-0.0551172234117985,-0.920855700969696,-0.48587504029274,-0.0727869719266891,-0.870992243289948,-0.374868869781494,0.0449530780315399,-0.925987362861633,-0.473673552274704,0.0480867736041546,-0.879386723041534,-0.744325757026672,0.0470677204430103,-0.666155993938446,-0.374868869781494,0.0449530780315399,-0.925987362861633,0.0660418570041656,0.00939577352255583,-0.997772634029388,-0.0282621681690216,0.00837395433336496,-0.999565541744232,-0.0294309239834547,-0.00992964673787355,0.999517500400543,0.0654798820614815,-0.00984381418675184,0.997805237770081,-0.38166555762291,-0.0510107167065144,0.922891795635223,-0.0294309239834547,-0.00992964673787355,0.999517500400543,-0.38166555762291,-0.0510107167065144,0.922891795635223,-0.482279151678085,-0.0651531293988228,0.873591184616089
|
||||
}
|
||||
TangentsW: *964 {
|
||||
a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
||||
}
|
||||
}
|
||||
LayerElementUV: 0 {
|
||||
Version: 101
|
||||
Name: "map1"
|
||||
MappingInformationType: "ByPolygonVertex"
|
||||
ReferenceInformationType: "IndexToDirect"
|
||||
UV: *546 {
|
||||
a: 0.246862500905991,0.405168116092682,0.245666161179543,0.305720716714859,0.185279190540314,0.2176294028759,0.247233480215073,0.204372689127922,0.814237952232361,0.215648278594017,0.757461309432983,0.0895968377590179,0.818677365779877,0.0895968377590179,0.751900196075439,0.201928868889809,0.75291919708252,0.301522672176361,0.75226229429245,0.401504367589951,0.752406537532806,0.499854624271393,0.246564731001854,0.503544986248016,0.100386947393417,0.372796773910522,0.156045272946358,0.332126766443253,0.179488107562065,0.415474981069565,0.112771183252335,0.434714674949646,0.0779809877276421,0.319878995418549,0.12283580750227,0.261149853467941,0.998008012771606,0.269273430109024,0.998008012771606,0.187375798821449,0.954844295978546,0.28284165263176,0.914989709854126,0.182913914322853,0.921235740184784,0.319878995418549,0.876975655555725,0.259808570146561,0.898829817771912,0.372796803712845,0.844234824180603,0.330335706472397,0.886445581912994,0.434714704751968,0.819235503673553,0.410158097743988,0.88251781463623,0.500593185424805,0.816401362419128,0.498267382383347,0.182436853647232,0.503845632076263,0.116698861122131,0.500593185424805,0.0720588564872742,0.440498352050781,0.0688493922352791,0.426491647958755,0.0649208724498749,0.413174659013748,0.0602779984474182,0.400694757699966,0.0549340471625328,0.389201909303665,0.0489137098193169,0.378846228122711,0.0422575324773788,0.369774878025055,0.0350245535373688,0.362127542495728,0.0272947028279305,0.356031000614166,0.0107660312205553,0.348895251750946,0.998008012771606,0.347990155220032,0.988450646400452,0.348895251750946,0.98004823923111,0.351592779159546,0.971922039985657,0.356031000614166,0.964192092418671,0.362127542495728,0.956959128379822,0.369774878025055,0.950303018093109,0.378846228122711,0.944282710552216,0.389201939105988,0.938938677310944,0.400694787502289,0.934295833110809,0.413174659013748,0.930367290973663,0.426491677761078,0.927157819271088,0.440498381853104,0.924666821956635,0.455050706863403,0.922891438007355,0.470008313655853,0.921827971935272,
|
||||
0.485234051942825,0.921473741531372,0.500593185424805,0.077388770878315,0.485233992338181,0.0763253942131996,0.470008283853531,0.0745499283075333,0.455050677061081,0.309226185083389,0.503018498420715,0.309589117765427,0.404941827058792,0.372756332159042,0.404651671648026,0.372370809316635,0.502663016319275,0.436086624860764,0.404324680566788,0.435757726430893,0.502367854118347,0.49951434135437,0.404055833816528,0.499258249998093,0.502103507518768,0.562953948974609,0.40379735827446,0.562784731388092,0.501820206642151,0.62630820274353,0.403429180383682,0.626243829727173,0.501433551311493,0.689473986625671,0.402740150690079,0.689507782459259,0.500807046890259,0.309372156858444,0.305912047624588,0.372663825750351,0.305455386638641,0.436097830533981,0.30505296587944,0.499641478061676,0.304794698953629,0.563166201114655,0.304591327905655,0.626553952693939,0.304301828145981,0.689782977104187,0.303622275590897,0.308871299028397,0.203175321221352,0.371825605630875,0.20262037217617,0.435542792081833,0.202254146337509,0.499523669481277,0.202091455459595,0.563413619995117,0.201997607946396,0.626919269561768,0.201908022165298,0.689823746681213,0.201755687594414,0.564293265342712,0.0895968377590179,0.629033625125885,0.0895968377590179,0.693618655204773,0.0895968377590179,0.851947784423828,0.00451681017875671,0.0777429044246674,0.500593185424805,0.118583589792252,0.0895968377590179,0.940706431865692,0.0895968377590179,0.998008012771606,0.0895968377590179,0.179014056921005,0.0895968377590179,0.879634201526642,0.0895968377590179,0.752920567989349,0.598189413547516,0.755312085151672,0.697762966156006,0.817910373210907,0.785576939582825,0.755303025245667,0.798992097377777,0.76635754108429,0.913068413734436,0.180462837219238,0.787406921386719,0.233679413795471,0.913068413734436,0.170606046915054,0.913068413734436,0.242763385176659,0.801299035549164,0.243554055690765,0.701750755310059,0.245398506522179,0.601529002189636,0.898829758167267,0.628389656543732,0.844481766223907,0.670109450817108,0.820165157318115,0.586816728115082,0.886445462703705,
|
||||
0.566471755504608,0.921235740184784,0.681307435035706,0.878978252410889,0.740887224674225,0.954844295978546,0.718344807624817,0.920043289661407,0.817796468734741,0.998008012771606,0.731912970542908,0.998008012771606,0.81693571805954,0.0443723760545254,0.718344807624817,0.0779809877276421,0.681307435035706,0.119523331522942,0.742200255393982,0.100386843085289,0.628389656543732,0.153378069400787,0.671952903270721,0.112771183252335,0.566471695899963,0.179169178009033,0.592336356639862,0.927157819271088,0.560688078403473,0.930367290973663,0.574694752693176,0.934295833110809,0.588011741638184,0.938938677310944,0.600491642951965,0.944282710552216,0.611984550952911,0.950303018093109,0.622340261936188,0.956959128379822,0.631411552429199,0.964192092418671,0.639058887958527,0.971922039985657,0.645155429840088,0.98004823923111,0.649593710899353,0.988450646400452,0.652291178703308,0.998008012771606,0.653196275234222,0.0107661504298449,0.652291178703308,0.0191685110330582,0.649593710899353,0.0272947028279305,0.645155429840088,0.0350246094167233,0.639058887958527,0.0422575324773788,0.631411552429199,0.0489137098193169,0.622340202331543,0.0549340471625328,0.611984491348267,0.0602779984474182,0.600491642951965,0.0649208724498749,0.588011741638184,0.0688493400812149,0.574694752693176,0.0720588564872742,0.560688078403473,0.0745499283075333,0.546135723590851,0.0763252750039101,0.531178116798401,0.0773887112736702,0.515952348709106,0.921827971935272,0.515952348709106,0.92289137840271,0.531178116798401,0.92466676235199,0.546135723590851,0.689927637577057,0.598919570446014,0.626407861709595,0.599420607089996,0.56272155046463,0.59979909658432,0.498964667320251,0.600086331367493,0.435242176055908,0.6003378033638,0.371659010648727,0.600615978240967,0.308337658643723,0.601018905639648,0.690968155860901,0.697933197021484,0.626994490623474,0.698487877845764,0.562903523445129,0.698859572410584,0.49873161315918,0.6991326212883,0.434603095054626,0.699357271194458,0.370644122362137,0.69959568977356,0.306940674781799,0.70002818107605,0.692380487918854,
|
||||
0.800500392913818,0.628205955028534,0.800987541675568,0.563565969467163,0.801204741001129,0.498712509870529,0.801398694515228,0.43386897444725,0.801555633544922,0.369312763214111,0.801678597927094,0.305497199296951,0.80167818069458,0.698879957199097,0.913068413734436,0.632190883159637,0.913068413734436,0.566124975681305,0.913068413734436,0.975477814674377,0.995483160018921,0.893916785717011,0.913068413734436,0.0502400398254395,0.913068413734436,0.998008012771606,0.913068413734436,0.830248117446899,0.913068413734436,0.950359761714935,0.913068413734436,0.107046462595463,0.913068413734436,0.00199203193187714,0.269273430109024,0.0443723760545254,0.28284165263176,0.0191685110330582,0.351592779159546,0.00199203193187714,0.347990155220032,0.302974760532379,0.0895968377590179,0.367213100194931,0.0895968377590179,0.43304705619812,0.0895968377590179,0.498797863721848,0.0895968377590179,0.0256561040878296,0.00451681017875671,0.00199203193187714,0.0895968377590179,0.239706665277481,0.0895968377590179,0.084710456430912,0.183458924293518,0.0580275654792786,0.0895968377590179,0.00199203193187714,0.814196765422821,0.00199203193187714,0.653196275234222,0.499592065811157,0.913068413734436,0.432785898447037,0.913068413734436,0.365581750869751,0.913068413734436,0.299251794815063,0.913068413734436,0.00199203193187714,0.731912970542908,0.134522944688797,0.995483160018921,0.00199203193187714,0.184496358036995,0.0788782015442848,0.818349003791809,0.00199204683303833,0.913068413734436,0.0785757601261139,0.995483160018921,0.0245111882686615,0.995483160018921,0.924342513084412,0.995483160018921,0.868936896324158,0.995483160018921,0.807586014270782,0.995483160018921,0.734097480773926,0.995483160018921,0.665311574935913,0.995483160018921,0.601731956005096,0.995483160018921,0.534437894821167,0.995483160018921,0.466274917125702,0.995483160018921,0.393513411283493,0.995483160018921,0.324972331523895,0.995483160018921,0.260128200054169,0.995483160018921,0.196170002222061,0.995483160018921,0.914514899253845,0.00451681017875671,0.972527384757996,0.00451681017875671,
|
||||
0.0867875516414642,0.00451681017875671,0.147060453891754,0.00451681017875671,0.205396860837936,0.00451681017875671,0.266011863946915,0.00451681017875671,0.327497452497482,0.00451681017875671,0.392808854579926,0.00451681017875671,0.463449329137802,0.00451681017875671,0.53246808052063,0.00451681017875671,0.599801003932953,0.00451681017875671,0.665184855461121,0.00451681017875671,0.732031285762787,0.00451681017875671,0.795388102531433,0.00451681017875671,0.775758862495422,0.959068357944489,0.226633101701736,0.959857821464539,0.699610710144043,0.959099411964417,0.631586611270905,0.959186911582947,0.568756282329559,0.959316909313202,0.499999970197678,0.959468722343445,0.432574808597565,0.959618926048279,0.358568549156189,0.959745049476624,0.291638106107712,0.959828674793243,0.837813019752502,0.959099411964417,0.895594716072083,0.959186911582947,0.950081944465637,0.959316909313202,0.998008012771606,0.958942890167236,0.00199204683303833,0.958942890167236,0.0510507822036743,0.959618926048279,0.106736421585083,0.959745049476624,0.1640565097332,0.959828674793243,0.235065460205078,0.0404002070426941,0.764041483402252,0.0399757921695709,0.29464128613472,0.0403836369514465,0.357593536376953,0.0403369963169098,0.432574808597565,0.0402675867080688,0.499999970197678,0.0401861965656281,0.568756282329559,0.0401052534580231,0.631586611270905,0.0400369763374329,0.699610710144043,0.0399914681911469,0.176473617553711,0.0403836369514465,0.117990851402283,0.0403369963169098,0.0559388101100922,0.0402675867080688,0.00199204683303833,0.0407054126262665,0.998008012771606,0.0407054126262665,0.943449020385742,0.0401052534580231,0.882882952690125,0.0400369763374329,0.824520766735077,0.0399914681911469
|
||||
}
|
||||
UVIndex: *964 {
|
||||
a: 1,0,14,13,2,1,13,3,2,197,4,5,6,25,4,23,9,8,25,27,10,9,27,29,0,11,30,14,12,13,14,15,16,17,13,12,188,198,17,16,187,208,198,188,20,21,19,18,22,23,21,20,24,25,23,22,26,27,25,24,28,29,27,26,15,14,30,31,32,12,15,32,33,12,33,34,12,35,16,12,35,36,16,36,37,16,38,188,16,38,39,188,39,40,188,189,187,188,189,41,187,41,190,187,42,43,18,43,44,20,44,45,20,45,46,20,46,47,22,47,48,22,48,49,22,49,50,24,50,51,24,51,52,24,52,53,26,53,54,26,54,55,26,55,56,28,56,57,28,58,15,31,58,59,15,59,60,15,61,62,63,64,64,63,65,66,66,65,67,68,68,67,69,70,70,69,71,72,72,71,73,74,74,73,9,10,11,0,62,61,62,75,76,63,63,76,77,65,65,77,78,67,67,78,79,69,69,79,80,71,71,80,81,73,73,81,8,9,0,1,75,62,75,82,83,76,76,83,84,77,77,84,85,78,78,85,86,79,79,86,87,80,80,87,88,81,81,88,7,8,1,3,82,75,82,191,192,83,83,192,193,84,84,193,194,85,85,194,89,86,86,89,90,87,87,90,91,88,88,91,5,7,3,197,191,82,191,258,259,192,192,259,260,193,193,260,261,194,194,261,262,89,89,262,263,90,90,263,264,91,91,264,257,5,197,256,258,191,43,20,18,46,22,20,49,24,22,52,26,24,55,28,26,40,189,188,37,38,16,34,35,12,60,32,15,93,58,31,2,198,94,95,96,21,4,21,23,2,17,198,97,94,266,265,94,199,267,266,199,196,268,267,96,95,270,269,95,98,271,270,98,6,272,271,6,5,257,272,197,97,265,256,4,6,98,21,98,95,199,198,196,2,94,97,2,97,197,94,198,199,5,4,7,21,4,98,100,99,112,111,101,111,115,102,101,103,104,105,106,108,107,104,109,108,124,126,30,11,109,126,99,10,29,112,110,111,112,113,114,115,111,110,116,117,115,114,118,119,117,116,120,209,200,206,121,122,209,120,123,124,122,121,125,126,124,123,31,30,126,125,113,112,29,28,127,110,113,127,128,110,128,129,110,130,114,110,130,131,114,131,132,114,133,116,114,133,134,116,134,135,116,136,118,116,136,137,118,137,138,118,201,139,206,139,140,120,140,141,120,141,142,120,142,143,121,143,144,121,144,145,121,145,146,123,146,147,123,147,148,123,148,149,125,149,150,125,150,151,125,151,152,31,152,93,31,153,113,28,153,154,113,154,155,113,74,156,157,72,72,157,158,70,70,158,159,68,68,159,160,66,66,160,161,64,64,161,162,61,61,162,109,11,10,99,156,74,156,163,164,
|
||||
157,157,164,165,158,158,165,166,159,159,166,167,160,160,167,168,161,161,168,169,162,162,169,108,109,99,100,163,156,163,170,171,164,164,171,172,165,165,172,173,166,166,173,174,167,167,174,175,168,168,175,176,169,169,176,107,108,100,102,170,163,170,177,178,171,171,178,179,172,172,179,202,173,173,202,203,174,174,203,204,175,175,204,205,176,176,205,105,107,102,103,177,170,177,241,242,178,178,242,243,179,179,243,244,202,202,244,245,203,203,245,246,204,204,246,247,205,205,247,240,105,103,239,241,177,139,120,206,142,121,120,145,123,121,148,125,123,151,31,125,135,136,116,132,133,114,129,130,110,155,127,113,57,153,28,101,117,181,182,210,209,104,209,122,101,115,117,184,181,249,248,181,185,250,249,185,183,251,250,210,182,253,252,182,186,254,253,186,106,255,254,106,105,240,255,103,184,248,239,104,106,186,209,186,182,183,117,119,101,181,184,101,184,103,181,117,185,105,104,107,209,104,186,196,198,208,21,96,19,209,210,200,185,117,183,242,241,217,243,242,218,244,243,219,245,244,220,246,245,221,247,246,222,240,247,223,241,239,216,248,249,214,249,250,213,250,251,180,252,253,212,253,254,211,254,255,207,255,240,224,239,248,215,259,258,231,260,259,232,261,260,233,262,261,234,263,262,235,264,263,236,257,264,237,258,256,230,265,266,228,266,267,227,267,268,195,269,270,226,270,271,225,271,272,92,272,257,238,256,265,229,124,104,122,101,100,111,101,102,100,108,104,124,2,13,17,2,3,1,8,7,4,8,4,25
|
||||
}
|
||||
}
|
||||
LayerElementSmoothing: 0 {
|
||||
Version: 102
|
||||
Name: ""
|
||||
MappingInformationType: "ByEdge"
|
||||
ReferenceInformationType: "Direct"
|
||||
Smoothing: *512 {
|
||||
a: 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,1,0,1,0,1,1,1,0,1,0,1,1,1,0,1,0,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,1,1,0,1,0,1,1,1,0,1,0,1,1,1,0,1,0,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,0,1,0,1,1,0,1,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
||||
}
|
||||
}
|
||||
LayerElementMaterial: 0 {
|
||||
Version: 101
|
||||
Name: ""
|
||||
MappingInformationType: "AllSame"
|
||||
ReferenceInformationType: "IndexToDirect"
|
||||
Materials: *1 {
|
||||
a: 0
|
||||
}
|
||||
}
|
||||
Layer: 0 {
|
||||
Version: 100
|
||||
LayerElement: {
|
||||
Type: "LayerElementNormal"
|
||||
TypedIndex: 0
|
||||
}
|
||||
LayerElement: {
|
||||
Type: "LayerElementBinormal"
|
||||
TypedIndex: 0
|
||||
}
|
||||
LayerElement: {
|
||||
Type: "LayerElementTangent"
|
||||
TypedIndex: 0
|
||||
}
|
||||
LayerElement: {
|
||||
Type: "LayerElementMaterial"
|
||||
TypedIndex: 0
|
||||
}
|
||||
LayerElement: {
|
||||
Type: "LayerElementSmoothing"
|
||||
TypedIndex: 0
|
||||
}
|
||||
LayerElement: {
|
||||
Type: "LayerElementUV"
|
||||
TypedIndex: 0
|
||||
}
|
||||
}
|
||||
}
|
||||
Model: 2704360498576, "Model::Portal", "Null" {
|
||||
Version: 232
|
||||
Properties70: {
|
||||
P: "RotationActive", "bool", "", "",1
|
||||
P: "InheritType", "enum", "", "",1
|
||||
P: "ScalingMax", "Vector3D", "Vector", "",0,0,0
|
||||
P: "DefaultAttributeIndex", "int", "Integer", "",0
|
||||
}
|
||||
Shading: Y
|
||||
Culling: "CullingOff"
|
||||
}
|
||||
Model: 2704360538016, "Model::SkySphere", "Mesh" {
|
||||
Version: 232
|
||||
Properties70: {
|
||||
P: "RotationActive", "bool", "", "",1
|
||||
P: "InheritType", "enum", "", "",1
|
||||
P: "ScalingMax", "Vector3D", "Vector", "",0,0,0
|
||||
P: "DefaultAttributeIndex", "int", "Integer", "",0
|
||||
P: "Lcl Scaling", "Lcl Scaling", "", "A",1.0014532692323,1.0014532692323,1.0014532692323
|
||||
P: "currentUVSet", "KString", "", "U", "map1"
|
||||
}
|
||||
Shading: T
|
||||
Culling: "CullingOff"
|
||||
}
|
||||
Material: 2704461935872, "Material::com_magicleap_iconcreation_InsidePortal_SkySphere_Mat", "" {
|
||||
Version: 102
|
||||
ShadingModel: "lambert"
|
||||
MultiLayer: 0
|
||||
Properties70: {
|
||||
P: "AmbientColor", "Color", "", "A",0,0,0
|
||||
P: "DiffuseColor", "Color", "", "A",0.5,0.5,0.5
|
||||
P: "DiffuseFactor", "Number", "", "A",0.800000011920929
|
||||
P: "TransparencyFactor", "Number", "", "A",1
|
||||
P: "Emissive", "Vector3D", "Vector", "",0,0,0
|
||||
P: "Ambient", "Vector3D", "Vector", "",0,0,0
|
||||
P: "Diffuse", "Vector3D", "Vector", "",0.400000005960464,0.400000005960464,0.400000005960464
|
||||
P: "Opacity", "double", "Number", "",1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
; Object connections
|
||||
;------------------------------------------------------------------
|
||||
|
||||
Connections: {
|
||||
|
||||
;Model::Portal, Model::RootNode
|
||||
C: "OO",2704360498576,0
|
||||
|
||||
;AnimLayer::BaseLayer, AnimStack::Take 001
|
||||
C: "OO",2704466337952,2704461746496
|
||||
|
||||
;NodeAttribute::, Model::Portal
|
||||
C: "OO",2704123178976,2704360498576
|
||||
|
||||
;Model::SkySphere, Model::Portal
|
||||
C: "OO",2704360538016,2704360498576
|
||||
|
||||
;Geometry::, Model::SkySphere
|
||||
C: "OO",2704463014528,2704360538016
|
||||
|
||||
;Material::com_magicleap_iconcreation_InsidePortal_SkySphere_Mat, Model::SkySphere
|
||||
C: "OO",2704461935872,2704360538016
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
{
|
||||
"global" : {},
|
||||
"materials" :
|
||||
[
|
||||
{
|
||||
"albedo" : "Icon/Portal/InsidePortal_SkySphere.png",
|
||||
"blendmode" : "opaque",
|
||||
"name" : "com_magicleap_iconcreation_InsidePortal_SkySphere_Mat",
|
||||
"shaderName" : "UnlitTextured"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 6.1 KiB |
|
@ -1,57 +0,0 @@
|
|||
KIND = program
|
||||
|
||||
INCS = \
|
||||
code/inc/ \
|
||||
code/inc.gen/ \
|
||||
$(GSTREAMER_DIR)/system/include/glib-2.0 \
|
||||
$(GSTREAMER_DIR)/system/lib64/glib-2.0/include/ \
|
||||
$(GSTREAMER_DIR)/system/include/gstreamer-1.0
|
||||
|
||||
SRCS = \
|
||||
code/src/main.cpp \
|
||||
code/src/Servo2D.cpp
|
||||
|
||||
LIBPATHS.debug = \
|
||||
$(GSTREAMER_DIR)/system/lib64/ \
|
||||
../../../target/magicleap/aarch64-linux-android/debug
|
||||
|
||||
LIBPATHS.release = \
|
||||
$(GSTREAMER_DIR)/system/lib64/ \
|
||||
../../../target/magicleap/aarch64-linux-android/release
|
||||
|
||||
LDFLAGS.device = \
|
||||
-L$(MLSDK)/lumin/stl/libc++/lib
|
||||
|
||||
DATAS = \
|
||||
fonts.xml : etc/fonts.xml \
|
||||
$(GSTREAMER_DIR)/system/lib64/*.so : bin/ \
|
||||
$(GSTREAMER_DIR)/system/lib64/gstreamer-1.0/*.so : bin/
|
||||
|
||||
STLIBS = \
|
||||
mlservo
|
||||
|
||||
SHLIBS = \
|
||||
glib-2.0 \
|
||||
gobject-2.0 \
|
||||
gstreamer-1.0 \
|
||||
gstapp-1.0 \
|
||||
gstaudio-1.0 \
|
||||
gstbase-1.0 \
|
||||
gstgl-1.0 \
|
||||
gstplayer-1.0 \
|
||||
gstsdp-1.0 \
|
||||
gstvideo-1.0 \
|
||||
gstwebrtc-1.0 \
|
||||
c++abi \
|
||||
log \
|
||||
z
|
||||
|
||||
# https://github.com/servo/servo/issues/23267
|
||||
CXXFLAGS = \
|
||||
-Wno-deprecated
|
||||
|
||||
USES = \
|
||||
lumin_runtime \
|
||||
scenes \
|
||||
pipeline/cache/AssetManifest \
|
||||
code/srcs
|
|
@ -1,10 +0,0 @@
|
|||
<?xml version="1.0" encoding="ASCII"?>
|
||||
<mlproject:mlproject xmlns:mlproject="http://www.magicleap.com/uidesigner/mlproject" generated="true" srcGenVersion="1">
|
||||
<designFile path="scenes/Servo2D.design"/>
|
||||
<pipelineDirectory path="pipeline"/>
|
||||
<preferences key="srcgen.directories.incgen" value="inc.gen"/>
|
||||
<preferences key="srcgen.directories.src" value="src"/>
|
||||
<preferences key="srcgen.directories.srcgen" value="src.gen"/>
|
||||
<preferences key="srcgen.directories.basedir" value="code"/>
|
||||
<preferences key="srcgen.directories.inc" value="inc"/>
|
||||
</mlproject:mlproject>
|
|
@ -1,74 +0,0 @@
|
|||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
//
|
||||
// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND
|
||||
// ANY MODIFICATIONS WILL BE OVERWRITTEN
|
||||
//
|
||||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
|
||||
// %BANNER_BEGIN%
|
||||
// ---------------------------------------------------------------------
|
||||
// %COPYRIGHT_BEGIN%
|
||||
//
|
||||
// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved.
|
||||
// Use of this file is governed by the Creator Agreement, located
|
||||
// here: https://id.magicleap.com/creator-terms
|
||||
//
|
||||
// %COPYRIGHT_END%
|
||||
// ---------------------------------------------------------------------
|
||||
// %BANNER_END%
|
||||
|
||||
// %SRC_VERSION%: 1
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <lumin/Prism.h>
|
||||
#include <lumin/node/Node.h>
|
||||
|
||||
#include <SceneDescriptor.h>
|
||||
#include <SpawnedSceneBase.h>
|
||||
#include <SpawnedSceneUserData.h>
|
||||
#include <scenes.h>
|
||||
|
||||
class PrismSceneManager {
|
||||
public:
|
||||
|
||||
typedef std::function<SpawnedSceneUserData*(SpawnedSceneBase&)> (*CreateSpawnedSceneUserData);
|
||||
static void setUserDataCreator(const SceneDescriptor & sceneDescriptor, CreateSpawnedSceneUserData createSpawnedSceneUserData);
|
||||
|
||||
public:
|
||||
|
||||
PrismSceneManager(lumin::Prism* prism);
|
||||
|
||||
enum class SceneState {
|
||||
Unloaded,
|
||||
ResourceModelLoaded,
|
||||
ResourceAndObjectModelLoaded,
|
||||
};
|
||||
|
||||
void setSceneState(const SceneDescriptor & sceneDescriptor, SceneState sceneState);
|
||||
SceneState getSceneState(const SceneDescriptor & sceneDescriptor, SceneState sceneState) const;
|
||||
|
||||
SpawnedSceneBase* spawnScene(const SceneDescriptor & sceneDescriptor);
|
||||
lumin::Node* spawn(const SceneDescriptor & sceneDescriptor);
|
||||
|
||||
private:
|
||||
|
||||
typedef SpawnedSceneBase* (*CreateSpawnedScene)(const SceneDescriptor& sceneDescriptor, lumin::Node* root);
|
||||
static const CreateSpawnedScene createSpawnedScene[scenes::numberOfExternalScenes];
|
||||
|
||||
typedef SpawnedSceneHandlers* (*CreateSpawnedSceneHandlers)(SpawnedSceneBase& spawnedScene);
|
||||
static const CreateSpawnedSceneHandlers createSpawnedSceneHandlers[scenes::numberOfExternalScenes];
|
||||
|
||||
static CreateSpawnedSceneUserData createSpawnedSceneUserData[scenes::numberOfExternalScenes];
|
||||
|
||||
private:
|
||||
|
||||
lumin::Node* createNodeTree(const SceneDescriptor & sceneDescriptor);
|
||||
|
||||
private:
|
||||
|
||||
lumin::Prism* prism_;
|
||||
SceneState sceneStates_[scenes::numberOfExternalScenes];
|
||||
std::string objectModelNames_[scenes::numberOfExternalScenes];
|
||||
};
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
//
|
||||
// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND
|
||||
// ANY MODIFICATIONS WILL BE OVERWRITTEN
|
||||
//
|
||||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
|
||||
// %BANNER_BEGIN%
|
||||
// ---------------------------------------------------------------------
|
||||
// %COPYRIGHT_BEGIN%
|
||||
//
|
||||
// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved.
|
||||
// Use of this file is governed by the Creator Agreement, located
|
||||
// here: https://id.magicleap.com/creator-terms
|
||||
//
|
||||
// %COPYRIGHT_END%
|
||||
// ---------------------------------------------------------------------
|
||||
// %BANNER_END%
|
||||
|
||||
// %SRC_VERSION%: 1
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <map>
|
||||
|
||||
// data class
|
||||
class SceneDescriptor {
|
||||
public:
|
||||
|
||||
typedef std::map<std::string /* externalNodeName */, const std::string& /* externalNodeId */> ExternalNodeReferences;
|
||||
|
||||
SceneDescriptor(int index, const char* externalName, const char* id, const char* sceneGraphFilePath, const char* resourceModelFilePath, const ExternalNodeReferences& externalNodeReferences, bool initiallySpawned);
|
||||
const std::string& getExternalName() const;
|
||||
const std::string& getId() const;
|
||||
const std::string& getSceneGraphPath() const;
|
||||
const std::string& getResourceModelPath() const;
|
||||
const ExternalNodeReferences & getExternalNodeReferences() const;
|
||||
bool getInitiallySpawned() const;
|
||||
|
||||
private:
|
||||
|
||||
friend class PrismSceneManager;
|
||||
int getIndex() const;
|
||||
|
||||
private:
|
||||
|
||||
int index_;
|
||||
std::string externalName_;
|
||||
std::string id_;
|
||||
std::string sceneGraphPath_;
|
||||
std::string resourceModelPath_;
|
||||
const ExternalNodeReferences& externalNodeReferences_;
|
||||
bool initiallySpawned_;
|
||||
};
|
||||
|
||||
bool operator<(const SceneDescriptor& a, const SceneDescriptor& b);
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
//
|
||||
// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND
|
||||
// ANY MODIFICATIONS WILL BE OVERWRITTEN
|
||||
//
|
||||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
|
||||
// %BANNER_BEGIN%
|
||||
// ---------------------------------------------------------------------
|
||||
// %COPYRIGHT_BEGIN%
|
||||
//
|
||||
// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved.
|
||||
// Use of this file is governed by the Creator Agreement, located
|
||||
// here: https://id.magicleap.com/creator-terms
|
||||
//
|
||||
// %COPYRIGHT_END%
|
||||
// ---------------------------------------------------------------------
|
||||
// %BANNER_END%
|
||||
|
||||
// %SRC_VERSION%: 1
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <SpawnedSceneBase.h>
|
||||
#include <SpawnedSceneHandlers.h>
|
||||
|
||||
#include <lumin/node/QuadNode.h>
|
||||
#include <lumin/ui/node/UiButton.h>
|
||||
#include <lumin/ui/node/UiPanel.h>
|
||||
#include <lumin/ui/node/UiTextEdit.h>
|
||||
|
||||
namespace scenes {
|
||||
|
||||
namespace Servo2D {
|
||||
|
||||
namespace externalNodes {
|
||||
extern const std::string contentPanel;
|
||||
extern const std::string content;
|
||||
extern const std::string backButton;
|
||||
extern const std::string fwdButton;
|
||||
extern const std::string urlBar;
|
||||
}
|
||||
|
||||
struct SpawnedScene : public SpawnedSceneBase {
|
||||
SpawnedScene(const SceneDescriptor& sceneDescriptor, lumin::Node* root);
|
||||
~SpawnedScene();
|
||||
lumin::ui::UiPanel* contentPanel;
|
||||
lumin::QuadNode* content;
|
||||
lumin::ui::UiButton* backButton;
|
||||
lumin::ui::UiButton* fwdButton;
|
||||
lumin::ui::UiTextEdit* urlBar;
|
||||
};
|
||||
|
||||
SpawnedSceneBase* createSpawnedScene(const SceneDescriptor& sceneDescriptor, lumin::Node* root);
|
||||
SpawnedSceneHandlers* createSpawnedSceneHandlers(SpawnedSceneBase& spawnedScene);
|
||||
|
||||
extern const SceneDescriptor descriptor;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
//
|
||||
// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND
|
||||
// ANY MODIFICATIONS WILL BE OVERWRITTEN
|
||||
//
|
||||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
|
||||
// %BANNER_BEGIN%
|
||||
// ---------------------------------------------------------------------
|
||||
// %COPYRIGHT_BEGIN%
|
||||
//
|
||||
// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved.
|
||||
// Use of this file is governed by the Creator Agreement, located
|
||||
// here: https://id.magicleap.com/creator-terms
|
||||
//
|
||||
// %COPYRIGHT_END%
|
||||
// ---------------------------------------------------------------------
|
||||
// %BANNER_END%
|
||||
|
||||
// %SRC_VERSION%: 1
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <lumin/node/Node.h>
|
||||
|
||||
class SceneDescriptor;
|
||||
class SpawnedSceneHandlers;
|
||||
struct SpawnedSceneUserData;
|
||||
|
||||
struct SpawnedSceneBase {
|
||||
SpawnedSceneBase(const SceneDescriptor &sd, lumin::Node* rt);
|
||||
virtual ~SpawnedSceneBase();
|
||||
|
||||
SpawnedSceneBase() = delete;
|
||||
SpawnedSceneBase(const SpawnedSceneBase&) = delete;
|
||||
SpawnedSceneBase(const SpawnedSceneBase&&) = delete;
|
||||
|
||||
const SceneDescriptor& sceneDescriptor;
|
||||
lumin::Node* root = nullptr;
|
||||
SpawnedSceneHandlers* handlers = nullptr;
|
||||
SpawnedSceneUserData* userData = nullptr;
|
||||
};
|
||||
|
|
@ -1,31 +0,0 @@
|
|||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
//
|
||||
// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND
|
||||
// ANY MODIFICATIONS WILL BE OVERWRITTEN
|
||||
//
|
||||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
|
||||
// %BANNER_BEGIN%
|
||||
// ---------------------------------------------------------------------
|
||||
// %COPYRIGHT_BEGIN%
|
||||
//
|
||||
// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved.
|
||||
// Use of this file is governed by the Creator Agreement, located
|
||||
// here: https://id.magicleap.com/creator-terms
|
||||
//
|
||||
// %COPYRIGHT_END%
|
||||
// ---------------------------------------------------------------------
|
||||
// %BANNER_END%
|
||||
|
||||
// %SRC_VERSION%: 1
|
||||
|
||||
#pragma once
|
||||
|
||||
struct SpawnedSceneBase;
|
||||
|
||||
class SpawnedSceneHandlers {
|
||||
public:
|
||||
SpawnedSceneHandlers(SpawnedSceneBase& ssb);
|
||||
virtual ~SpawnedSceneHandlers();
|
||||
};
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
//
|
||||
// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND
|
||||
// ANY MODIFICATIONS WILL BE OVERWRITTEN
|
||||
//
|
||||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
|
||||
// %BANNER_BEGIN%
|
||||
// ---------------------------------------------------------------------
|
||||
// %COPYRIGHT_BEGIN%
|
||||
//
|
||||
// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved.
|
||||
// Use of this file is governed by the Creator Agreement, located
|
||||
// here: https://id.magicleap.com/creator-terms
|
||||
//
|
||||
// %COPYRIGHT_END%
|
||||
// ---------------------------------------------------------------------
|
||||
// %BANNER_END%
|
||||
|
||||
// %SRC_VERSION%: 1
|
||||
|
||||
#pragma once
|
||||
|
||||
struct SpawnedSceneUserData {
|
||||
virtual ~SpawnedSceneUserData();
|
||||
};
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
//
|
||||
// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND
|
||||
// ANY MODIFICATIONS WILL BE OVERWRITTEN
|
||||
//
|
||||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
|
||||
// %BANNER_BEGIN%
|
||||
// ---------------------------------------------------------------------
|
||||
// %COPYRIGHT_BEGIN%
|
||||
//
|
||||
// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved.
|
||||
// Use of this file is governed by the Creator Agreement, located
|
||||
// here: https://id.magicleap.com/creator-terms
|
||||
//
|
||||
// %COPYRIGHT_END%
|
||||
// ---------------------------------------------------------------------
|
||||
// %BANNER_END%
|
||||
|
||||
// %SRC_VERSION%: 1
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <SceneDescriptor.h>
|
||||
#include <map>
|
||||
|
||||
namespace scenes {
|
||||
const int numberOfExternalScenes = 1;
|
||||
|
||||
typedef std::map<std::string /* externalName */, const SceneDescriptor& /* sceneDescription */> SceneDescriptorReferences;
|
||||
extern const SceneDescriptorReferences externalScenes;
|
||||
}
|
||||
|
|
@ -1,148 +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 https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include <lumin/LandscapeApp.h>
|
||||
#include <lumin/Prism.h>
|
||||
#include <lumin/event/ServerEvent.h>
|
||||
#include <SceneDescriptor.h>
|
||||
#include <PrismSceneManager.h>
|
||||
|
||||
#include <GLES/gl.h>
|
||||
#include <lumin/event/GestureInputEventData.h>
|
||||
#include <lumin/event/KeyInputEventData.h>
|
||||
#include <lumin/event/ControlTouchPadInputEventData.h>
|
||||
#include <lumin/event/ControlPose6DofInputEventData.h>
|
||||
#include <lumin/node/LineNode.h>
|
||||
#include <lumin/node/QuadNode.h>
|
||||
#include <lumin/resource/PlanarResource.h>
|
||||
#include <lumin/ui/KeyboardDefines.h>
|
||||
#include <lumin/ui/node/UiButton.h>
|
||||
#include <lumin/ui/node/UiPanel.h>
|
||||
#include <lumin/ui/node/UiTextEdit.h>
|
||||
|
||||
typedef struct Opaque ServoInstance;
|
||||
|
||||
/**
|
||||
* Servo2D Landscape Application
|
||||
*/
|
||||
class Servo2D : public lumin::LandscapeApp {
|
||||
public:
|
||||
/**
|
||||
* Constructs the Landscape Application.
|
||||
*/
|
||||
Servo2D(const char* uri, const char* args);
|
||||
|
||||
/**
|
||||
* 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;
|
||||
|
||||
/**
|
||||
* Update the browser history UI
|
||||
*/
|
||||
void updateHistory(bool canGoBack, bool canGoForward);
|
||||
|
||||
/**
|
||||
* Update the browser url bar.
|
||||
*/
|
||||
void updateUrl(const char* url);
|
||||
|
||||
/**
|
||||
* Make the keyboard visible
|
||||
*/
|
||||
void keyboardVisible(bool visible);
|
||||
|
||||
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 initial size of the Prism
|
||||
* Used in createPrism().
|
||||
*/
|
||||
const glm::vec3 getInitialPrismSize() const;
|
||||
|
||||
/**
|
||||
* Creates the prism, updates the private variable prism_ with the created prism.
|
||||
*/
|
||||
void createInitialPrism();
|
||||
|
||||
/**
|
||||
* Initializes and creates the scene of all scenes marked as initially instanced
|
||||
*/
|
||||
void spawnInitialScenes();
|
||||
|
||||
/**
|
||||
* Run application login
|
||||
*/
|
||||
virtual bool updateLoop(float fDelta) override;
|
||||
|
||||
/**
|
||||
* Handle events from the server
|
||||
*/
|
||||
virtual bool eventListener(lumin::ServerEvent* event) override;
|
||||
bool pose6DofEventListener(lumin::ControlPose6DofInputEventData* event);
|
||||
void urlBarEventListener();
|
||||
bool gestureEventListener(lumin::GestureInputEventData* event);
|
||||
bool keyboardEventListener(const lumin::ui::KeyboardEvent::EventData& event);
|
||||
|
||||
/**
|
||||
* Convert a point in prism coordinates to viewport coordinates
|
||||
* (ignoring the z value).
|
||||
*/
|
||||
glm::vec2 viewportPosition(glm::vec3 prism_pos);
|
||||
bool pointInsideViewport(glm::vec2 pt);
|
||||
|
||||
/**
|
||||
* Returns the intersection of the laser and the viewport, in viewport coordinates.
|
||||
* Returns (-1, -1) if the laser does not intersect the viewport.
|
||||
*/
|
||||
glm::vec2 laserPosition();
|
||||
|
||||
private:
|
||||
lumin::Prism* prism_ = nullptr; // represents the bounded space where the App renders.
|
||||
PrismSceneManager* prismSceneManager_ = nullptr;
|
||||
lumin::PlanarResource* plane_ = nullptr; // the plane we're rendering into
|
||||
lumin::QuadNode* content_node_ = nullptr; // the node containing the plane
|
||||
lumin::ui::UiPanel* content_panel_ = nullptr; // the panel containing the node
|
||||
lumin::ui::UiButton* back_button_ = nullptr; // the back button
|
||||
lumin::ui::UiButton* fwd_button_ = nullptr; // the forward button
|
||||
lumin::ui::UiTextEdit* url_bar_ = nullptr; // the URL bar
|
||||
lumin::LineNode* laser_ = nullptr; // The laser pointer
|
||||
glm::vec3 controller_position_; // The last recorded position of the controller (in world coords)
|
||||
glm::quat controller_orientation_; // The last recorded orientation of the controller (in world coords)
|
||||
bool controller_trigger_down_ = false; // Is the controller trigger currently down?
|
||||
ServoInstance* servo_ = nullptr; // the servo instance we're embedding
|
||||
const char* uri_ = nullptr;
|
||||
const char* args_ = nullptr;
|
||||
};
|
|
@ -1,124 +0,0 @@
|
|||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
//
|
||||
// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND
|
||||
// ANY MODIFICATIONS WILL BE OVERWRITTEN
|
||||
//
|
||||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
|
||||
// %BANNER_BEGIN%
|
||||
// ---------------------------------------------------------------------
|
||||
// %COPYRIGHT_BEGIN%
|
||||
//
|
||||
// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved.
|
||||
// Use of this file is governed by the Creator Agreement, located
|
||||
// here: https://id.magicleap.com/creator-terms
|
||||
//
|
||||
// %COPYRIGHT_END%
|
||||
// ---------------------------------------------------------------------
|
||||
// %BANNER_END%
|
||||
|
||||
// %SRC_VERSION%: 1
|
||||
|
||||
#include <PrismSceneManager.h>
|
||||
|
||||
#include <ml_logging.h>
|
||||
|
||||
PrismSceneManager::CreateSpawnedSceneUserData PrismSceneManager::createSpawnedSceneUserData[scenes::numberOfExternalScenes];
|
||||
|
||||
PrismSceneManager::PrismSceneManager(lumin::Prism* prism)
|
||||
: prism_(prism) {
|
||||
|
||||
if (!prism_) {
|
||||
ML_LOG(Error, "PrismSceneManager nullptr prism");
|
||||
abort();
|
||||
}
|
||||
|
||||
for (int i = 0; i < sizeof(sceneStates_)/sizeof(sceneStates_[0]); ++i) {
|
||||
sceneStates_[i] = SceneState::Unloaded;
|
||||
}
|
||||
}
|
||||
|
||||
void PrismSceneManager::setSceneState(const SceneDescriptor & sceneDescriptor, SceneState newState) {
|
||||
|
||||
const int sceneIndex = sceneDescriptor.getIndex();
|
||||
SceneState& sceneState = sceneStates_[sceneIndex];
|
||||
std::string& objectModelName = objectModelNames_[sceneIndex];
|
||||
|
||||
if (sceneState == SceneState::Unloaded && (newState == SceneState::ResourceModelLoaded || newState == SceneState::ResourceAndObjectModelLoaded)) {
|
||||
if (!prism_->loadResourceModel(sceneDescriptor.getResourceModelPath())) {
|
||||
ML_LOG(Error, "PrismSceneManager failed to load resource model");
|
||||
abort();
|
||||
}
|
||||
sceneState = SceneState::ResourceModelLoaded;
|
||||
}
|
||||
|
||||
if (sceneState == SceneState::ResourceModelLoaded && newState == SceneState::ResourceAndObjectModelLoaded) {
|
||||
std::string& objectModelName = objectModelNames_[sceneIndex];
|
||||
if (!prism_->loadObjectModel(sceneDescriptor.getSceneGraphPath(), objectModelName)) {
|
||||
ML_LOG(Error, "PrismSceneManager failed to load object model");
|
||||
abort();
|
||||
}
|
||||
sceneState = SceneState::ResourceAndObjectModelLoaded;
|
||||
}
|
||||
|
||||
if (sceneState == SceneState::ResourceAndObjectModelLoaded && (newState == SceneState::ResourceModelLoaded || newState == SceneState::Unloaded)) {
|
||||
if (!prism_->unloadObjectModel(objectModelName)) {
|
||||
ML_LOG(Error, "PrismSceneManager failed to unload object model");
|
||||
abort();
|
||||
}
|
||||
sceneState = SceneState::ResourceModelLoaded;
|
||||
objectModelName.clear();
|
||||
}
|
||||
|
||||
// Currently there is no effective way to unload the resource model
|
||||
}
|
||||
|
||||
SpawnedSceneBase* PrismSceneManager::spawnScene(const SceneDescriptor & sceneDescriptor) {
|
||||
|
||||
lumin::Node* root = createNodeTree(sceneDescriptor);
|
||||
if (!root) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
const int index = sceneDescriptor.getIndex();
|
||||
CreateSpawnedScene css = createSpawnedScene[index];
|
||||
SpawnedSceneBase* const spawnedScene = (*css)(sceneDescriptor, root);
|
||||
|
||||
CreateSpawnedSceneHandlers ch = createSpawnedSceneHandlers[index];
|
||||
SpawnedSceneHandlers* const handlers = (*ch)(*spawnedScene);
|
||||
spawnedScene->handlers = handlers;
|
||||
|
||||
CreateSpawnedSceneUserData cssud = createSpawnedSceneUserData[sceneDescriptor.getIndex()];
|
||||
if (cssud) {
|
||||
spawnedScene->userData = (*cssud)(*spawnedScene);
|
||||
}
|
||||
return spawnedScene;
|
||||
}
|
||||
|
||||
lumin::Node* PrismSceneManager::spawn(const SceneDescriptor & sceneDescriptor) {
|
||||
SpawnedSceneBase* spawnedSceneBase = spawnScene(sceneDescriptor);
|
||||
if (!spawnedSceneBase) {
|
||||
return nullptr;
|
||||
}
|
||||
lumin::Node* root = spawnedSceneBase->root;
|
||||
return root;
|
||||
}
|
||||
|
||||
lumin::Node* PrismSceneManager::createNodeTree(const SceneDescriptor & sceneDescriptor) {
|
||||
setSceneState(sceneDescriptor, SceneState::ResourceAndObjectModelLoaded);
|
||||
const int sceneIndex = sceneDescriptor.getIndex();
|
||||
std::string& objectModelName = objectModelNames_[sceneIndex];
|
||||
|
||||
lumin::Node* root = prism_->createAll(objectModelName);
|
||||
if (!root) {
|
||||
ML_LOG(Error, "PrismSceneManager failed to create the scene. Is the scene empty?");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
void PrismSceneManager::setUserDataCreator(const SceneDescriptor & sceneDescriptor, CreateSpawnedSceneUserData cssud) {
|
||||
createSpawnedSceneUserData[sceneDescriptor.getIndex()] = cssud ;
|
||||
}
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
//
|
||||
// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND
|
||||
// ANY MODIFICATIONS WILL BE OVERWRITTEN
|
||||
//
|
||||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
|
||||
// %BANNER_BEGIN%
|
||||
// ---------------------------------------------------------------------
|
||||
// %COPYRIGHT_BEGIN%
|
||||
//
|
||||
// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved.
|
||||
// Use of this file is governed by the Creator Agreement, located
|
||||
// here: https://id.magicleap.com/creator-terms
|
||||
//
|
||||
// %COPYRIGHT_END%
|
||||
// ---------------------------------------------------------------------
|
||||
// %BANNER_END%
|
||||
|
||||
// %SRC_VERSION%: 1
|
||||
|
||||
#include <SceneDescriptor.h>
|
||||
|
||||
SceneDescriptor::SceneDescriptor(int index, const char * externalName, const char * id, const char * sceneGraphPath, const char * resourceModelPath, const ExternalNodeReferences& externalNodeReferences, bool initiallySpawned)
|
||||
:
|
||||
index_(index),
|
||||
externalName_(externalName),
|
||||
id_(id),
|
||||
sceneGraphPath_(sceneGraphPath),
|
||||
resourceModelPath_(resourceModelPath),
|
||||
externalNodeReferences_(externalNodeReferences),
|
||||
initiallySpawned_(initiallySpawned) {
|
||||
}
|
||||
|
||||
int SceneDescriptor::getIndex() const {
|
||||
return index_;
|
||||
}
|
||||
|
||||
const std::string & SceneDescriptor::getExternalName() const {
|
||||
return externalName_;
|
||||
}
|
||||
|
||||
const std::string & SceneDescriptor::getId() const {
|
||||
return id_;
|
||||
}
|
||||
|
||||
const std::string & SceneDescriptor::getSceneGraphPath() const {
|
||||
return sceneGraphPath_;
|
||||
}
|
||||
|
||||
const std::string & SceneDescriptor::getResourceModelPath() const {
|
||||
return resourceModelPath_;
|
||||
}
|
||||
|
||||
const SceneDescriptor::ExternalNodeReferences & SceneDescriptor::getExternalNodeReferences() const {
|
||||
return externalNodeReferences_;
|
||||
}
|
||||
|
||||
bool SceneDescriptor::getInitiallySpawned() const {
|
||||
return initiallySpawned_;
|
||||
}
|
||||
|
||||
bool operator<(const SceneDescriptor& a, const SceneDescriptor& b) {
|
||||
return a.getExternalName() < b.getExternalName();
|
||||
}
|
||||
|
|
@ -1,108 +0,0 @@
|
|||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
//
|
||||
// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND
|
||||
// ANY MODIFICATIONS WILL BE OVERWRITTEN
|
||||
//
|
||||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
|
||||
// %BANNER_BEGIN%
|
||||
// ---------------------------------------------------------------------
|
||||
// %COPYRIGHT_BEGIN%
|
||||
//
|
||||
// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved.
|
||||
// Use of this file is governed by the Creator Agreement, located
|
||||
// here: https://id.magicleap.com/creator-terms
|
||||
//
|
||||
// %COPYRIGHT_END%
|
||||
// ---------------------------------------------------------------------
|
||||
// %BANNER_END%
|
||||
|
||||
// %SRC_VERSION%: 1
|
||||
|
||||
#include <SceneDescriptor.h>
|
||||
#include <SpawnedSceneBase.h>
|
||||
#include <Servo2D/Servo2D.h>
|
||||
|
||||
namespace scenes {
|
||||
|
||||
namespace Servo2D {
|
||||
|
||||
SpawnedScene::SpawnedScene(const SceneDescriptor& sceneDescriptor, lumin::Node* root)
|
||||
: SpawnedSceneBase(sceneDescriptor, root) {
|
||||
contentPanel = lumin::ui::UiPanel::CastFrom(root->findChild(externalNodes::contentPanel));
|
||||
content = lumin::QuadNode::CastFrom(root->findChild(externalNodes::content));
|
||||
backButton = lumin::ui::UiButton::CastFrom(root->findChild(externalNodes::backButton));
|
||||
fwdButton = lumin::ui::UiButton::CastFrom(root->findChild(externalNodes::fwdButton));
|
||||
urlBar = lumin::ui::UiTextEdit::CastFrom(root->findChild(externalNodes::urlBar));
|
||||
}
|
||||
|
||||
SpawnedScene::~SpawnedScene() {
|
||||
}
|
||||
|
||||
SpawnedSceneBase* createSpawnedScene(const SceneDescriptor& sceneDescriptor, lumin::Node* root) {
|
||||
using namespace externalNodes;
|
||||
SpawnedScene* spawnedScene = new SpawnedScene(sceneDescriptor, root);
|
||||
return spawnedScene;
|
||||
}
|
||||
|
||||
class Handlers : public SpawnedSceneHandlers
|
||||
{
|
||||
public:
|
||||
Handlers(SpawnedScene& ss);
|
||||
|
||||
private:
|
||||
|
||||
struct contentPanelHandlers {
|
||||
contentPanelHandlers(SpawnedScene& ss);
|
||||
};
|
||||
contentPanelHandlers contentPanelHandlers_;
|
||||
struct contentHandlers {
|
||||
contentHandlers(SpawnedScene& ss);
|
||||
};
|
||||
contentHandlers contentHandlers_;
|
||||
struct backButtonHandlers {
|
||||
backButtonHandlers(SpawnedScene& ss);
|
||||
};
|
||||
backButtonHandlers backButtonHandlers_;
|
||||
struct fwdButtonHandlers {
|
||||
fwdButtonHandlers(SpawnedScene& ss);
|
||||
};
|
||||
fwdButtonHandlers fwdButtonHandlers_;
|
||||
struct urlBarHandlers {
|
||||
urlBarHandlers(SpawnedScene& ss);
|
||||
};
|
||||
urlBarHandlers urlBarHandlers_;
|
||||
};
|
||||
|
||||
Handlers::contentPanelHandlers::contentPanelHandlers(SpawnedScene& ss)
|
||||
{
|
||||
}
|
||||
Handlers::contentHandlers::contentHandlers(SpawnedScene& ss)
|
||||
{
|
||||
}
|
||||
Handlers::backButtonHandlers::backButtonHandlers(SpawnedScene& ss)
|
||||
{
|
||||
}
|
||||
Handlers::fwdButtonHandlers::fwdButtonHandlers(SpawnedScene& ss)
|
||||
{
|
||||
}
|
||||
Handlers::urlBarHandlers::urlBarHandlers(SpawnedScene& ss)
|
||||
{
|
||||
}
|
||||
|
||||
Handlers::Handlers(SpawnedScene& ss)
|
||||
: SpawnedSceneHandlers(ss),
|
||||
contentPanelHandlers_(ss),
|
||||
contentHandlers_(ss),
|
||||
backButtonHandlers_(ss),
|
||||
fwdButtonHandlers_(ss),
|
||||
urlBarHandlers_(ss)
|
||||
{
|
||||
}
|
||||
|
||||
SpawnedSceneHandlers* createSpawnedSceneHandlers(SpawnedSceneBase& ssb) {
|
||||
return new Handlers(static_cast<SpawnedScene&>(ssb));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
//
|
||||
// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND
|
||||
// ANY MODIFICATIONS WILL BE OVERWRITTEN
|
||||
//
|
||||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
|
||||
// %BANNER_BEGIN%
|
||||
// ---------------------------------------------------------------------
|
||||
// %COPYRIGHT_BEGIN%
|
||||
//
|
||||
// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved.
|
||||
// Use of this file is governed by the Creator Agreement, located
|
||||
// here: https://id.magicleap.com/creator-terms
|
||||
//
|
||||
// %COPYRIGHT_END%
|
||||
// ---------------------------------------------------------------------
|
||||
// %BANNER_END%
|
||||
|
||||
// %SRC_VERSION%: 1
|
||||
|
||||
#include <SpawnedSceneBase.h>
|
||||
#include <SpawnedSceneHandlers.h>
|
||||
#include <SpawnedSceneUserData.h>
|
||||
|
||||
SpawnedSceneBase::SpawnedSceneBase(const SceneDescriptor &sd, lumin::Node* rt)
|
||||
: sceneDescriptor(sd),
|
||||
root(rt) {
|
||||
}
|
||||
|
||||
SpawnedSceneBase::~SpawnedSceneBase() {
|
||||
delete handlers;
|
||||
delete userData;
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
//
|
||||
// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND
|
||||
// ANY MODIFICATIONS WILL BE OVERWRITTEN
|
||||
//
|
||||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
|
||||
// %BANNER_BEGIN%
|
||||
// ---------------------------------------------------------------------
|
||||
// %COPYRIGHT_BEGIN%
|
||||
//
|
||||
// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved.
|
||||
// Use of this file is governed by the Creator Agreement, located
|
||||
// here: https://id.magicleap.com/creator-terms
|
||||
//
|
||||
// %COPYRIGHT_END%
|
||||
// ---------------------------------------------------------------------
|
||||
// %BANNER_END%
|
||||
|
||||
// %SRC_VERSION%: 1
|
||||
|
||||
#include <SpawnedSceneHandlers.h>
|
||||
|
||||
SpawnedSceneHandlers::SpawnedSceneHandlers(SpawnedSceneBase& ssb) {
|
||||
}
|
||||
|
||||
SpawnedSceneHandlers::~SpawnedSceneHandlers() {
|
||||
}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
//
|
||||
// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND
|
||||
// ANY MODIFICATIONS WILL BE OVERWRITTEN
|
||||
//
|
||||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
|
||||
// %BANNER_BEGIN%
|
||||
// ---------------------------------------------------------------------
|
||||
// %COPYRIGHT_BEGIN%
|
||||
//
|
||||
// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved.
|
||||
// Use of this file is governed by the Creator Agreement, located
|
||||
// here: https://id.magicleap.com/creator-terms
|
||||
//
|
||||
// %COPYRIGHT_END%
|
||||
// ---------------------------------------------------------------------
|
||||
// %BANNER_END%
|
||||
|
||||
// %SRC_VERSION%: 1
|
||||
|
||||
#include <SpawnedSceneUserData.h>
|
||||
|
||||
SpawnedSceneUserData::~SpawnedSceneUserData() {
|
||||
}
|
||||
|
|
@ -1,74 +0,0 @@
|
|||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
//
|
||||
// THE CONTENTS OF THIS FILE IS GENERATED BY CODE AND
|
||||
// ANY MODIFICATIONS WILL BE OVERWRITTEN
|
||||
//
|
||||
// -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING -- WARNING --
|
||||
|
||||
// %BANNER_BEGIN%
|
||||
// ---------------------------------------------------------------------
|
||||
// %COPYRIGHT_BEGIN%
|
||||
//
|
||||
// Copyright (c) 2018 Magic Leap, Inc. All Rights Reserved.
|
||||
// Use of this file is governed by the Creator Agreement, located
|
||||
// here: https://id.magicleap.com/creator-terms
|
||||
//
|
||||
// %COPYRIGHT_END%
|
||||
// ---------------------------------------------------------------------
|
||||
// %BANNER_END%
|
||||
|
||||
// %SRC_VERSION%: 1
|
||||
|
||||
#include <PrismSceneManager.h>
|
||||
#include <scenes.h>
|
||||
#include <Servo2D/Servo2D.h>
|
||||
|
||||
namespace scenes {
|
||||
|
||||
namespace Servo2D {
|
||||
|
||||
namespace externalNodes {
|
||||
extern const std::string contentPanel = "contentPanel";
|
||||
extern const std::string content = "content";
|
||||
extern const std::string backButton = "backButton";
|
||||
extern const std::string fwdButton = "fwdButton";
|
||||
extern const std::string urlBar = "urlBar";
|
||||
}
|
||||
|
||||
const SceneDescriptor::ExternalNodeReferences externalNodesMap = {
|
||||
{"contentPanel", externalNodes::contentPanel},
|
||||
{"content", externalNodes::content},
|
||||
{"backButton", externalNodes::backButton},
|
||||
{"fwdButton", externalNodes::fwdButton},
|
||||
{"urlBar", externalNodes::urlBar}
|
||||
};
|
||||
|
||||
const SceneDescriptor descriptor(
|
||||
0,
|
||||
"Servo2D",
|
||||
"root",
|
||||
"/assets/scenes/Servo2D.scene.xml",
|
||||
"/assets/scenes/Servo2D.scene.res.xml",
|
||||
externalNodesMap,
|
||||
true);
|
||||
}
|
||||
|
||||
const SceneDescriptorReferences externalScenes = {
|
||||
{Servo2D::descriptor.getExternalName(), Servo2D::descriptor}
|
||||
};
|
||||
|
||||
struct VerifyNumberOfExternalScenes {
|
||||
VerifyNumberOfExternalScenes() { assert(externalScenes.size() == numberOfExternalScenes); }
|
||||
};
|
||||
|
||||
VerifyNumberOfExternalScenes verifyNumberOfExternalScenes;
|
||||
}
|
||||
|
||||
const PrismSceneManager::CreateSpawnedScene PrismSceneManager::createSpawnedScene[scenes::numberOfExternalScenes] = {
|
||||
::scenes::Servo2D::createSpawnedScene
|
||||
};
|
||||
|
||||
const PrismSceneManager::CreateSpawnedSceneHandlers PrismSceneManager::createSpawnedSceneHandlers[scenes::numberOfExternalScenes] = {
|
||||
static_cast<CreateSpawnedSceneHandlers>(::scenes::Servo2D::createSpawnedSceneHandlers)
|
||||
};
|
||||
|
|
@ -1,396 +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 https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include <Servo2D/Servo2D.h>
|
||||
#include <lumin/node/RootNode.h>
|
||||
#include <lumin/ui/Cursor.h>
|
||||
#include <ml_logging.h>
|
||||
#include <scenes.h>
|
||||
#include <PrismSceneManager.h>
|
||||
|
||||
#include <Servo2D.h>
|
||||
#include <lumin/node/QuadNode.h>
|
||||
#include <lumin/ui/Keyboard.h>
|
||||
#include <EGL/egl.h>
|
||||
#include <GLES/gl.h>
|
||||
#include <glm/gtc/matrix_transform.hpp>
|
||||
#include <string.h>
|
||||
|
||||
// The viewport dimensions (in px).
|
||||
const int VIEWPORT_W = 852;
|
||||
const int VIEWPORT_H = 480;
|
||||
|
||||
// The hidpi factor.
|
||||
const float HIDPI = 1.0;
|
||||
|
||||
// The prism dimensions (in m).
|
||||
const float PRISM_W = 1.50;
|
||||
const float PRISM_H = 1;
|
||||
const float PRISM_D = 0.05;
|
||||
|
||||
// The length of the laser pointer (in m).
|
||||
const float LASER_LENGTH = 10.0;
|
||||
|
||||
// The width of the keyboard
|
||||
const float KEYBOARD_W = 1.333;
|
||||
|
||||
// The home page
|
||||
const char* HOME_PAGE = "https://servo.org/ml-home";
|
||||
|
||||
// The locale (currently ML only supports en)
|
||||
const lumin::ui::Locale::Code DEFAULT_LOCALE = lumin::ui::Locale::Code::kEn;
|
||||
|
||||
// A function which calls the ML logger, suitable for passing into Servo
|
||||
typedef void (*MLLogger)(MLLogLevel lvl, char* msg);
|
||||
void logger(MLLogLevel lvl, char* msg) {
|
||||
if (MLLoggingLogLevelIsEnabled(lvl)) {
|
||||
MLLoggingLog(lvl, ML_DEFAULT_LOG_TAG, msg);
|
||||
}
|
||||
}
|
||||
|
||||
// A function which updates the history ui, suitable for passing into Servo
|
||||
typedef void (*MLHistoryUpdate)(Servo2D* app, bool canGoBack, bool canGoForward);
|
||||
void history(Servo2D* app, bool canGoBack, bool canGoForward) {
|
||||
app->updateHistory(canGoBack, canGoForward);
|
||||
}
|
||||
|
||||
// A function which updates the url ui, suitable for passing into Servo
|
||||
typedef void (*MLURLUpdate)(Servo2D* app, char* url);
|
||||
void url(Servo2D* app, char* url) {
|
||||
app->updateUrl(url);
|
||||
}
|
||||
|
||||
// A function to show or hide the keyboard
|
||||
typedef void (*MLKeyboard)(Servo2D* app, bool visible);
|
||||
void keyboard(Servo2D* app, bool visible) {
|
||||
app->keyboardVisible(visible);
|
||||
}
|
||||
|
||||
// The functions Servo provides for hooking up to the ML.
|
||||
extern "C" ServoInstance* init_servo(EGLContext, EGLSurface, EGLDisplay, bool landscape,
|
||||
Servo2D*, MLLogger, MLHistoryUpdate, MLURLUpdate, MLKeyboard,
|
||||
const char* url, const char* args, int width, int height, float hidpi);
|
||||
extern "C" void heartbeat_servo(ServoInstance*);
|
||||
extern "C" void keyboard_servo(ServoInstance*, char32_t code, lumin::ui::KeyType keyType);
|
||||
extern "C" void trigger_servo(ServoInstance*, float x, float y, bool down);
|
||||
extern "C" void move_servo(ServoInstance*, float x, float y);
|
||||
extern "C" void traverse_servo(ServoInstance*, int delta);
|
||||
extern "C" void navigate_servo(ServoInstance*, const char* text);
|
||||
extern "C" void discard_servo(ServoInstance*);
|
||||
|
||||
// Create a Servo2D instance
|
||||
Servo2D::Servo2D(const char* uri, const char* args)
|
||||
: uri_(uri ? uri : HOME_PAGE)
|
||||
, args_(args)
|
||||
{
|
||||
ML_LOG(Debug, "Servo2D Constructor.");
|
||||
}
|
||||
|
||||
// Destroy a Servo 2D instance
|
||||
Servo2D::~Servo2D() {
|
||||
ML_LOG(Debug, "Servo2D Destructor.");
|
||||
}
|
||||
|
||||
const glm::vec3 Servo2D::getInitialPrismSize() const {
|
||||
return glm::vec3(PRISM_W, PRISM_H, PRISM_D);
|
||||
}
|
||||
|
||||
void Servo2D::createInitialPrism() {
|
||||
prism_ = requestNewPrism(getInitialPrismSize());
|
||||
if (!prism_) {
|
||||
ML_LOG(Error, "Servo2D Error creating default prism.");
|
||||
abort();
|
||||
}
|
||||
prismSceneManager_ = new PrismSceneManager(prism_);
|
||||
}
|
||||
|
||||
int Servo2D::init() {
|
||||
|
||||
ML_LOG(Debug, "Servo2D Initializing.");
|
||||
|
||||
createInitialPrism();
|
||||
lumin::ui::Cursor::SetScale(prism_, 0.03f);
|
||||
spawnInitialScenes();
|
||||
|
||||
// Check privileges
|
||||
if (checkPrivilege(lumin::PrivilegeId::kInternet) != lumin::PrivilegeResult::kGranted) {
|
||||
ML_LOG(Error, "Servo2D Failed to get internet access");
|
||||
abort();
|
||||
return 1;
|
||||
}
|
||||
if (checkPrivilege(lumin::PrivilegeId::kControllerPose) != lumin::PrivilegeResult::kGranted) {
|
||||
ML_LOG(Error, "Servo2D Failed to get controller access");
|
||||
abort();
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Get the planar resource that holds the EGL context
|
||||
lumin::RootNode* root_node = prism_->getRootNode();
|
||||
if (!root_node) {
|
||||
ML_LOG(Error, "Servo2D Failed to get root node");
|
||||
abort();
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::string content_node_id = scenes::Servo2D::externalNodes::content;
|
||||
content_node_ = lumin::QuadNode::CastFrom(prism_->findNode(content_node_id, root_node));
|
||||
if (!content_node_) {
|
||||
ML_LOG(Error, "Servo2D Failed to get content node");
|
||||
abort();
|
||||
return 1;
|
||||
}
|
||||
content_node_->setTriggerable(true);
|
||||
|
||||
content_panel_ = lumin::ui::UiPanel::CastFrom(
|
||||
prism_->findNode(scenes::Servo2D::externalNodes::contentPanel, root_node)
|
||||
);
|
||||
if (!content_panel_) {
|
||||
ML_LOG(Error, "Servo2D Failed to get content panel");
|
||||
abort();
|
||||
return 1;
|
||||
}
|
||||
lumin::ui::UiPanel::RequestFocus(content_panel_);
|
||||
|
||||
lumin::ResourceIDType plane_id = prism_->createPlanarEGLResourceId(VIEWPORT_W, VIEWPORT_H);
|
||||
if (!plane_id) {
|
||||
ML_LOG(Error, "Servo2D Failed to create EGL resource");
|
||||
abort();
|
||||
return 1;
|
||||
}
|
||||
|
||||
plane_ = static_cast<lumin::PlanarResource*>(prism_->getResource(plane_id));
|
||||
if (!plane_) {
|
||||
ML_LOG(Error, "Servo2D Failed to create plane");
|
||||
abort();
|
||||
return 1;
|
||||
}
|
||||
|
||||
content_node_->setRenderResource(plane_id);
|
||||
|
||||
// Get the EGL context, surface and display.
|
||||
EGLContext ctx = plane_->getEGLContext();
|
||||
EGLSurface surf = plane_->getEGLSurface();
|
||||
EGLDisplay dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
||||
|
||||
// Set up gstreamer
|
||||
auto tmpdir = getTempPath();
|
||||
auto bindir = getPackagePath() + "bin";
|
||||
auto registry = getWritablePath() + "gstreamer-registry.bin";
|
||||
setenv("GIO_MODULE_DIR", bindir.c_str(), 1);
|
||||
setenv("GST_PLUGIN_SYSTEM_PATH", bindir.c_str(), 1);
|
||||
setenv("GST_REGISTRY", registry.c_str(), 1);
|
||||
setenv("XDG_CACHE_HOME", tmpdir.c_str(), 1);
|
||||
|
||||
// Hook into servo
|
||||
servo_ = init_servo(ctx, surf, dpy, true,
|
||||
this, logger, history, url, keyboard, uri_, args_,
|
||||
VIEWPORT_W, VIEWPORT_H, HIDPI);
|
||||
if (!servo_) {
|
||||
ML_LOG(Error, "Servo2D Failed to init servo instance");
|
||||
abort();
|
||||
return 1;
|
||||
}
|
||||
|
||||
// Add a callback to the back button
|
||||
std::string back_button_id = scenes::Servo2D::externalNodes::backButton;
|
||||
back_button_ = lumin::ui::UiButton::CastFrom(prism_->findNode(back_button_id, root_node));
|
||||
if (!back_button_) {
|
||||
ML_LOG(Error, "Servo2D Failed to get back button");
|
||||
abort();
|
||||
return 1;
|
||||
}
|
||||
back_button_->onActivateSub(std::bind(traverse_servo, servo_, -1));
|
||||
|
||||
// Add a callback to the forward button
|
||||
std::string fwd_button_id = scenes::Servo2D::externalNodes::fwdButton;
|
||||
fwd_button_ = lumin::ui::UiButton::CastFrom(prism_->findNode(fwd_button_id, root_node));
|
||||
if (!fwd_button_) {
|
||||
ML_LOG(Error, "Servo2D Failed to get forward button");
|
||||
abort();
|
||||
return 1;
|
||||
}
|
||||
fwd_button_->onActivateSub(std::bind(traverse_servo, servo_, +1));
|
||||
|
||||
// Add a callback to the URL bar
|
||||
std::string url_bar_id = scenes::Servo2D::externalNodes::urlBar;
|
||||
url_bar_ = lumin::ui::UiTextEdit::CastFrom(prism_->findNode(url_bar_id, root_node));
|
||||
if (!url_bar_) {
|
||||
ML_LOG(Error, "Servo2D Failed to get URL bar");
|
||||
abort();
|
||||
return 1;
|
||||
}
|
||||
lumin::ui::KeyboardProperties keyboard_properties;
|
||||
keyboard_properties.keyboardZPosition = lumin::ui::KeyboardProperties::KeyboardZPosition::kVolumeCursorPlane;
|
||||
keyboard_properties.width = KEYBOARD_W;
|
||||
url_bar_->setKeyboardProperties(keyboard_properties);
|
||||
url_bar_->onFocusLostSub(std::bind(&Servo2D::urlBarEventListener, this));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int Servo2D::deInit() {
|
||||
ML_LOG(Debug, "Servo2D Deinitializing.");
|
||||
discard_servo(servo_);
|
||||
servo_ = nullptr;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Servo2D::spawnInitialScenes() {
|
||||
|
||||
// Iterate over all the exported scenes
|
||||
for (auto& exportedSceneEntry : scenes::externalScenes ) {
|
||||
|
||||
// If this scene was marked to be instanced at app initialization, do it
|
||||
const SceneDescriptor &sd = exportedSceneEntry.second;
|
||||
if (sd.getInitiallySpawned()) {
|
||||
lumin::Node* const spawnedRoot = prismSceneManager_->spawn(sd);
|
||||
if (spawnedRoot) {
|
||||
if (!prism_->getRootNode()->addChild(spawnedRoot)) {
|
||||
ML_LOG(Error, "Servo2D Failed to add spawnedRoot to the prism root node");
|
||||
abort();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool Servo2D::updateLoop(float fDelta) {
|
||||
glm::vec2 pos = laserPosition();
|
||||
move_servo(servo_, pos.x, pos.y);
|
||||
heartbeat_servo(servo_);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Servo2D::eventListener(lumin::ServerEvent* event) {
|
||||
// Dispatch based on event type
|
||||
lumin::ServerEventType typ = event->getServerEventType();
|
||||
switch (typ) {
|
||||
case lumin::ServerEventType::kGestureInputEvent:
|
||||
return gestureEventListener(static_cast<lumin::GestureInputEventData*>(event));
|
||||
case lumin::ServerEventType::kControlPose6DofInputEvent:
|
||||
return pose6DofEventListener(static_cast<lumin::ControlPose6DofInputEventData*>(event));
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
glm::vec2 Servo2D::viewportPosition(glm::vec3 prism_pos) {
|
||||
// Get the cursor position relative to the origin of the content node (in m)
|
||||
glm::vec3 pos = prism_pos - content_node_->getPrismPosition();
|
||||
|
||||
// Get the size of the content node (in m)
|
||||
glm::vec2 sz = content_node_->getSize();
|
||||
|
||||
// Convert to a position in viewport px
|
||||
float x = (pos.x / sz.x) * (float)VIEWPORT_W;
|
||||
float y = (1 - pos.y / sz.y) * (float)VIEWPORT_H; // Sigh, invert the y coordinate
|
||||
|
||||
return glm::vec2(x, y);
|
||||
}
|
||||
|
||||
bool Servo2D::pointInsideViewport(glm::vec2 pt) {
|
||||
return (0 <= pt.x && 0 <= pt.y && pt.x <= VIEWPORT_W && pt.y <= VIEWPORT_H);
|
||||
}
|
||||
|
||||
bool Servo2D::pose6DofEventListener(lumin::ControlPose6DofInputEventData* event) {
|
||||
// Get the controller position in world coordinates
|
||||
event->get6DofPosition(controller_position_.x, controller_position_.y, controller_position_.z);
|
||||
// Get the controller orientation
|
||||
event->getQuaternion(controller_orientation_.w, controller_orientation_.x,
|
||||
controller_orientation_.y, controller_orientation_.z);
|
||||
// Bubble up to any other 6DOF handlers
|
||||
return false;
|
||||
}
|
||||
|
||||
glm::vec2 Servo2D::laserPosition() {
|
||||
// Return (-1, -1) if the laser doesn't intersect z=0
|
||||
glm::vec2 result = glm::vec2(-1.0, -1.0);
|
||||
|
||||
// Convert to prism coordinates
|
||||
glm::vec3 position = glm::inverse(prism_->getTransform()) * glm::vec4(controller_position_, 1.0f);
|
||||
glm::quat orientation = glm::inverse(prism_->getRotation()) * controller_orientation_;
|
||||
|
||||
// 1m in the direction of the controller
|
||||
glm::vec3 direction = orientation * glm::vec3(0.0f, 0.0f, -1.0f);
|
||||
// The endpoint of the laser, in prism coordinates
|
||||
glm::vec3 endpoint = position + direction * LASER_LENGTH;
|
||||
|
||||
// The laser color
|
||||
glm::vec4 color = glm::vec4(1.0, 0.0, 0.0, 1.0);
|
||||
|
||||
// Does the laser intersect z=0?
|
||||
if ((position.z > 0) && (endpoint.z < 0)) {
|
||||
// How far along the laser did it intersect?
|
||||
float ratio = 1.0 / (1.0 - (endpoint.z / position.z));
|
||||
// The intersection point
|
||||
glm::vec3 intersection = ((1 - ratio) * position) + (ratio * endpoint);
|
||||
result = viewportPosition(intersection);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
bool Servo2D::gestureEventListener(lumin::GestureInputEventData* event) {
|
||||
// Only respond to trigger up or down
|
||||
lumin::input::GestureType typ = event->getGesture();
|
||||
if (typ != lumin::input::GestureType::TriggerDown && typ != lumin::input::GestureType::TriggerUp) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Only respond to trigger down if the laser is currently in the viewport
|
||||
glm::vec2 pos = laserPosition();
|
||||
if ((typ == lumin::input::GestureType::TriggerDown) && !pointInsideViewport(pos)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Only respond to trigger up if the trigger down happened inside the viewport
|
||||
if ((typ == lumin::input::GestureType::TriggerUp) && !controller_trigger_down_) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Inform Servo of the trigger
|
||||
controller_trigger_down_ = (typ == lumin::input::GestureType::TriggerDown);
|
||||
trigger_servo(servo_, pos.x, pos.y, controller_trigger_down_);
|
||||
return true;
|
||||
}
|
||||
|
||||
void Servo2D::urlBarEventListener() {
|
||||
navigate_servo(servo_, url_bar_->getText().c_str());
|
||||
}
|
||||
|
||||
void Servo2D::keyboardVisible(bool visible) {
|
||||
lumin::ui::Keyboard* keys = lumin::ui::Keyboard::Get();
|
||||
if (visible) {
|
||||
lumin::ui::KeyboardProperties properties;
|
||||
properties.keyboardZPosition = lumin::ui::KeyboardProperties::KeyboardZPosition::kVolumeCursorPlane;
|
||||
properties.width = KEYBOARD_W;
|
||||
keys->show(
|
||||
prism_,
|
||||
DEFAULT_LOCALE,
|
||||
properties,
|
||||
std::bind(&Servo2D::keyboardEventListener, this, std::placeholders::_1)
|
||||
);
|
||||
} else {
|
||||
keys->hide();
|
||||
}
|
||||
}
|
||||
|
||||
bool Servo2D::keyboardEventListener(const lumin::ui::KeyboardEvent::EventData& event) {
|
||||
if (event.getEventType() != lumin::ui::KeyboardEvent::EventType::KEY_PRESSED) {
|
||||
return false;
|
||||
}
|
||||
const lumin::ui::KeyboardEvent::KeyPressedData* keyPress =
|
||||
static_cast<const lumin::ui::KeyboardEvent::KeyPressedData*>(&event);
|
||||
keyboard_servo(servo_, keyPress->getCharCode(), keyPress->getKeyType());
|
||||
return true;
|
||||
}
|
||||
|
||||
void Servo2D::updateUrl(const char* url) {
|
||||
url_bar_->setText(url);
|
||||
}
|
||||
|
||||
void Servo2D::updateHistory(bool canGoBack, bool canGoForward) {
|
||||
back_button_->setEnabled(canGoBack);
|
||||
fwd_button_->setEnabled(canGoForward);
|
||||
}
|
|
@ -1,36 +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 https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include <Servo2D.h>
|
||||
#include <ml_lifecycle.h>
|
||||
#include <ml_logging.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
ML_LOG(Debug, "Servo2D Starting.");
|
||||
|
||||
// Handle optional initialization string passed via 'mldb launch'
|
||||
MLLifecycleInitArgList* list = NULL;
|
||||
MLLifecycleGetInitArgList(&list);
|
||||
const char* uri = NULL;
|
||||
if (nullptr != list) {
|
||||
int64_t list_length = 0;
|
||||
MLLifecycleGetInitArgListLength(list, &list_length);
|
||||
if (list_length > 0) {
|
||||
const MLLifecycleInitArg* iarg = NULL;
|
||||
MLLifecycleGetInitArgByIndex(list, 0, &iarg);
|
||||
if (nullptr != iarg) {
|
||||
MLLifecycleGetInitArgUri(iarg, &uri);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const char* args = getenv("SERVO_ARGS");
|
||||
|
||||
Servo2D myApp(uri, args);
|
||||
int rv = myApp.run();
|
||||
|
||||
MLLifecycleFreeInitArgList(&list);
|
||||
return rv;
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
SRCS = \
|
||||
src.gen/scenes.cpp \
|
||||
src.gen/Servo2D/Servo2D.cpp \
|
||||
src.gen/PrismSceneManager.cpp \
|
||||
src.gen/SceneDescriptor.cpp \
|
||||
src.gen/SpawnedSceneBase.cpp \
|
||||
src.gen/SpawnedSceneHandlers.cpp \
|
||||
src.gen/SpawnedSceneUserData.cpp \
|
|
@ -1,19 +0,0 @@
|
|||
<familyset>
|
||||
<family name="sans-serif">
|
||||
<font weight="300" style="normal">/system/etc/ml/kali/Fonts/Lomino/Light/LominoUI_Lt.ttf</font>
|
||||
<font weight="300" style="italic">/system/etc/ml/kali/Fonts/Lomino/LightItalic/LominoUI_LtIt.ttf</font>
|
||||
<font weight="400" style="normal">/system/etc/ml/kali/Fonts/Lomino/Regular/LominoUI_Rg.ttf</font>
|
||||
<font weight="400" style="italic">/system/etc/ml/kali/Fonts/Lomino/Italic/LominoUI_It.ttf</font>
|
||||
<font weight="500" style="normal">/system/etc/ml/kali/Fonts/Lomino/Medium/LominoUI_Md.ttf</font>
|
||||
<font weight="500" style="italic">/system/etc/ml/kali/Fonts/Lomino/MediumItalic/LominoUI_MdIt.ttf</font>
|
||||
<font weight="700" style="normal">/system/etc/ml/kali/Fonts/Lomino/Bold/LominoUI_Bd.ttf</font>
|
||||
<font weight="700" style="italic">/system/etc/ml/kali/Fonts/Lomino/BoldItalic/LominoUI_BdIt.ttf</font>
|
||||
<font weight="900" style="normal">/system/etc/ml/kali/Fonts/Lomino/ExtraBold/LominoUI_XBd.ttf</font>
|
||||
<font weight="900" style="italic">/system/etc/ml/kali/Fonts/Lomino/ExtraBoldItalic/LominoUI_XBdIt.ttf</font>
|
||||
</family>
|
||||
|
||||
<alias name="arial" to="sans-serif" />
|
||||
<alias name="helvetica" to="sans-serif" />
|
||||
<alias name="tahoma" to="sans-serif" />
|
||||
<alias name="verdana" to="sans-serif" />
|
||||
</familyset>
|
|
@ -1,21 +0,0 @@
|
|||
<manifest
|
||||
xmlns:ml="magicleap"
|
||||
ml:package="com.mozilla.servo2d"
|
||||
ml:version_code="1"
|
||||
ml:version_name="1.0">
|
||||
<application
|
||||
ml:visible_name="Servo2D"
|
||||
ml:sdk_version="1.0">
|
||||
<component
|
||||
ml:name=".servo2d.universe"
|
||||
ml:visible_name="Servo2D"
|
||||
ml:binary_name="bin/Servo2D"
|
||||
ml:type="Universe">
|
||||
<icon
|
||||
ml:model_folder="Icon/Model/"
|
||||
ml:portal_folder="Icon/Portal/" />
|
||||
</component>
|
||||
<uses-privilege ml:name="Internet"/>
|
||||
<uses-privilege ml:name="ControllerPose"/>
|
||||
</application>
|
||||
</manifest>
|
|
@ -1,36 +0,0 @@
|
|||
{
|
||||
"intermediate-storage": {
|
||||
"path": "cache",
|
||||
"kind": "in-tree"
|
||||
},
|
||||
"project-schema-version": 4,
|
||||
"types": {
|
||||
"assets": [
|
||||
"lap/types/asset/material",
|
||||
"lap/types/asset/model",
|
||||
"lap/types/asset/outline-font",
|
||||
"lap/types/asset/texture"
|
||||
],
|
||||
"files": [
|
||||
"lap/types/file/dds",
|
||||
"lap/types/file/fbx",
|
||||
"lap/types/file/files",
|
||||
"lap/types/file/gltf",
|
||||
"lap/types/file/jpg",
|
||||
"lap/types/file/kmat",
|
||||
"lap/types/file/otf",
|
||||
"lap/types/file/png"
|
||||
]
|
||||
},
|
||||
"checkpoint-hash": "ac0d99c246211709c735b6ff2a02e2f4a2450bdb04c0db28409c4990e45211b922511c68c5874869ee26898c1a95c40a812b85d4c3fa397703606f436fd84b51",
|
||||
"templates": [
|
||||
"lap/template/passthru_material_from_kmat",
|
||||
"lap/template/passthru_model_from_fbx",
|
||||
"lap/template/passthru_model_from_gltf",
|
||||
"lap/template/passthru_outline_font_from_otf",
|
||||
"lap/template/passthru_texture_from_dds",
|
||||
"lap/template/passthru_texture_from_jpg",
|
||||
"lap/template/passthru_texture_from_png"
|
||||
],
|
||||
"nodes": {}
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
DATAS = \
|
||||
scenes/Servo2D.scene.res.xml : assets/scenes/Servo2D.scene.res.xml \
|
||||
scenes/Servo2D.scene.xml : assets/scenes/Servo2D.scene.xml
|
|
@ -1,184 +0,0 @@
|
|||
<?xml version="1.0" encoding="ASCII"?>
|
||||
<design:rootNode xmlns:design="http://www.magicleap.com/uidesigner/rcp/document/design" name="root" nodeTypeId="lumin.root" modelId="lumin" version="1.11.1">
|
||||
<property id="name" value="root"/>
|
||||
<property id="sceneName" value="Servo2D"/>
|
||||
<node name="contentPanel" nodeTypeId="lumin.ui.panel">
|
||||
<property id="cursorInitialPosition"/>
|
||||
<property id="cursorVisible" value="false"/>
|
||||
<property id="edgeConstraint"/>
|
||||
<property id="external" value="true"/>
|
||||
<property id="gravityWellProperties">
|
||||
<property id="boundaryShape">
|
||||
<property id="size"/>
|
||||
<property id="offset"/>
|
||||
</property>
|
||||
</property>
|
||||
<property id="name" value="contentPanel"/>
|
||||
<property id="panelShape">
|
||||
<property id="size">
|
||||
<property id="x" value="1.28"/>
|
||||
<property id="y" value="0.72"/>
|
||||
</property>
|
||||
<property id="offset"/>
|
||||
</property>
|
||||
<property id="position">
|
||||
<property id="y" value="0.06"/>
|
||||
</property>
|
||||
<property id="rotation"/>
|
||||
<property id="scale"/>
|
||||
<node name="content" nodeTypeId="lumin.quad">
|
||||
<property id="external" value="true"/>
|
||||
<property id="name" value="content"/>
|
||||
<property id="position">
|
||||
<property id="x" value="-0.64"/>
|
||||
<property id="y" value="-0.36"/>
|
||||
<property id="z" value="-0.0"/>
|
||||
</property>
|
||||
<property id="rotation"/>
|
||||
<property id="scale"/>
|
||||
<property id="size">
|
||||
<property id="x" value="1.28"/>
|
||||
<property id="y" value="0.72"/>
|
||||
</property>
|
||||
<property id="texCoords">
|
||||
<property id="x">
|
||||
<property id="y" value="1.0"/>
|
||||
</property>
|
||||
<property id="y">
|
||||
<property id="x" value="1.0"/>
|
||||
<property id="y" value="1.0"/>
|
||||
</property>
|
||||
<property id="z">
|
||||
<property id="x" value="1.0"/>
|
||||
</property>
|
||||
<property id="w"/>
|
||||
</property>
|
||||
</node>
|
||||
</node>
|
||||
<node name="uiLinearLayout1" nodeTypeId="lumin.ui.linearLayout">
|
||||
<property id="alignment">
|
||||
<property id="horizontalAlignment" value="Center"/>
|
||||
</property>
|
||||
<property id="defaultItemAlignment">
|
||||
<property id="verticalAlignment" value="Center"/>
|
||||
</property>
|
||||
<property id="defaultItemPadding">
|
||||
<property id="right" value="0.01"/>
|
||||
<property id="left" value="0.01"/>
|
||||
</property>
|
||||
<property id="gravityWellProperties">
|
||||
<property id="boundaryShape">
|
||||
<property id="size"/>
|
||||
<property id="offset"/>
|
||||
</property>
|
||||
</property>
|
||||
<property id="itemAlignment"/>
|
||||
<property id="itemPadding"/>
|
||||
<property id="name" value="uiLinearLayout1"/>
|
||||
<property id="orientation" value="Horizontal"/>
|
||||
<property id="position">
|
||||
<property id="y" value="-0.32"/>
|
||||
</property>
|
||||
<property id="rotation"/>
|
||||
<property id="scale"/>
|
||||
<property id="size">
|
||||
<property id="x" value="1.28"/>
|
||||
<property id="y" value="0.05"/>
|
||||
</property>
|
||||
<node name="backButton" nodeTypeId="lumin.ui.button">
|
||||
<property id="external" value="true"/>
|
||||
<property id="gravityWellProperties">
|
||||
<property id="boundaryShape">
|
||||
<property id="size"/>
|
||||
<property id="offset"/>
|
||||
</property>
|
||||
</property>
|
||||
<property id="height" value="0.1"/>
|
||||
<property id="iconSize"/>
|
||||
<property id="name" value="backButton"/>
|
||||
<property id="position">
|
||||
<property id="y" value="-0.6"/>
|
||||
</property>
|
||||
<property id="rotation"/>
|
||||
<property id="scale"/>
|
||||
<property id="text" value="Back"/>
|
||||
<property id="textSize" value="0.05"/>
|
||||
<property id="textSizeChanged" value="true"/>
|
||||
<property id="width" value="0.1"/>
|
||||
</node>
|
||||
<node name="fwdButton" nodeTypeId="lumin.ui.button">
|
||||
<property id="external" value="true"/>
|
||||
<property id="gravityWellProperties">
|
||||
<property id="boundaryShape">
|
||||
<property id="size"/>
|
||||
<property id="offset"/>
|
||||
</property>
|
||||
</property>
|
||||
<property id="height" value="0.1"/>
|
||||
<property id="iconSize"/>
|
||||
<property id="name" value="fwdButton"/>
|
||||
<property id="position"/>
|
||||
<property id="rotation"/>
|
||||
<property id="scale"/>
|
||||
<property id="text" value="Fwd"/>
|
||||
<property id="textSize" value="0.05"/>
|
||||
<property id="textSizeChanged" value="true"/>
|
||||
<property id="width" value="0.1"/>
|
||||
</node>
|
||||
<node name="urlBar" nodeTypeId="lumin.ui.textEdit">
|
||||
<property id="alignment">
|
||||
<property id="verticalAlignment" value="Center"/>
|
||||
</property>
|
||||
<property id="external" value="true"/>
|
||||
<property id="gravityWellProperties">
|
||||
<property id="boundaryShape">
|
||||
<property id="size"/>
|
||||
<property id="offset"/>
|
||||
</property>
|
||||
</property>
|
||||
<property id="height" value="0.05"/>
|
||||
<property id="name" value="urlBar"/>
|
||||
<property id="position"/>
|
||||
<property id="rotation"/>
|
||||
<property id="scale"/>
|
||||
<property id="scrollBarVisibilityMode" value="Off"/>
|
||||
<property id="text" value=""/>
|
||||
<property id="textPadding">
|
||||
<property id="top" value="0.003"/>
|
||||
<property id="right" value="0.003"/>
|
||||
<property id="bottom" value="0.003"/>
|
||||
<property id="left" value="0.003"/>
|
||||
</property>
|
||||
<property id="textSize" value="0.05"/>
|
||||
<property id="width" value="1.8"/>
|
||||
</node>
|
||||
</node>
|
||||
<node name="bevel" nodeTypeId="lumin.quad">
|
||||
<property id="color" value="0.4 0.302 0.702 1"/>
|
||||
<property id="name" value="bevel"/>
|
||||
<property id="position">
|
||||
<property id="x" value="-0.65"/>
|
||||
<property id="y" value="-0.31"/>
|
||||
<property id="z" value="-0.01"/>
|
||||
</property>
|
||||
<property id="rotation"/>
|
||||
<property id="scale"/>
|
||||
<property id="size">
|
||||
<property id="x" value="1.3"/>
|
||||
<property id="y" value="0.74"/>
|
||||
</property>
|
||||
<property id="texCoords">
|
||||
<property id="x">
|
||||
<property id="y" value="1.0"/>
|
||||
</property>
|
||||
<property id="y">
|
||||
<property id="x" value="1.0"/>
|
||||
<property id="y" value="1.0"/>
|
||||
</property>
|
||||
<property id="z">
|
||||
<property id="x" value="1.0"/>
|
||||
</property>
|
||||
<property id="w"/>
|
||||
</property>
|
||||
</node>
|
||||
</design:rootNode>
|
|
@ -1 +0,0 @@
|
|||
<ResourceModel version="1"></ResourceModel>
|
|
@ -1,18 +0,0 @@
|
|||
<ObjectModel name="Servo2D" version="1">
|
||||
<TransformNode/>
|
||||
<UiPanel bottomEdgeConstraint="0.000000" cursorVisible="false" gravityWellRoundness="0.000000" gravityWellSize="0.000000, 0.000000" gravityWellSnap="ClosestEdge" leftEdgeConstraint="0.000000" name="contentPanel" pos="0,0.06,0" rightEdgeConstraint="0.000000" shape="[size:[1.28,0.72], roundness: 0, offset:[0,0,0]]" topEdgeConstraint="0.000000">
|
||||
<QuadNode castShadow="false" name="content" pos="-0.64,-0.36,-0" receiveShadow="false" shader="MAX" size="1.280000, 0.720000"/>
|
||||
</UiPanel>
|
||||
<UiLinearLayout alignment="Top, Center" gravityWellRoundness="0.000000" gravityWellSize="0.000000, 0.000000" gravityWellSnap="ClosestEdge" itemAlignment="Center, Left" itemPadding="0.000000, 0.010000, 0.000000, 0.010000" name="uiLinearLayout1" orientation="Horizontal" pos="0,-0.32,0" size="1.280000, 0.050000">
|
||||
<Content>
|
||||
<UiButton gravityWellRoundness="0.000000" gravityWellSize="0.000000, 0.000000" gravityWellSnap="ClosestEdge" name="backButton" pos="0,-0.6,0" size="0.100000, 0.100000" text="Back" textSize="0.050000"/>
|
||||
</Content>
|
||||
<Content>
|
||||
<UiButton gravityWellRoundness="0.000000" gravityWellSize="0.000000, 0.000000" gravityWellSnap="ClosestEdge" name="fwdButton" size="0.100000, 0.100000" text="Fwd" textSize="0.050000"/>
|
||||
</Content>
|
||||
<Content>
|
||||
<UiTextEdit alignment="Center, Left" font="DefaultRes_Font_LominoUI_Rg" gravityWellRoundness="0.000000" gravityWellSize="0.000000, 0.000000" gravityWellSnap="ClosestEdge" name="urlBar" scrollSpeed="0.500000" size="1.800000, 0.050000" textSize="0.050000"/>
|
||||
</Content>
|
||||
</UiLinearLayout>
|
||||
<QuadNode castShadow="false" color="0.1572062,0.09219654,0.4817875,1" name="bevel" pos="-0.65,-0.31,-0.01" receiveShadow="false" shader="MAX" size="1.300000, 0.740000"/>
|
||||
</ObjectModel>
|
|
@ -1,257 +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 https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
// The immersive mode Servo magicleap demo
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <unistd.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
#ifndef EGL_EGLEXT_PROTOTYPES
|
||||
#define EGL_EGLEXT_PROTOTYPES
|
||||
#endif
|
||||
|
||||
#include <EGL/egl.h>
|
||||
#include <EGL/eglext.h>
|
||||
|
||||
#ifndef GL_GLEXT_PROTOTYPES
|
||||
#define GL_GLEXT_PROTOTYPES
|
||||
#endif
|
||||
|
||||
#include <GLES3/gl3.h>
|
||||
#include <GLES3/gl3ext.h>
|
||||
|
||||
#include <ml_graphics.h>
|
||||
#include <ml_head_tracking.h>
|
||||
#include <ml_perception.h>
|
||||
#include <ml_fileinfo.h>
|
||||
#include <ml_lifecycle.h>
|
||||
#include <ml_logging.h>
|
||||
#include <ml_privileges.h>
|
||||
|
||||
// Constants
|
||||
const char application_name[] = "com.mozilla.servo3d";
|
||||
|
||||
// A function which calls the ML logger, suitable for passing into Servo
|
||||
typedef void (*MLLogger)(MLLogLevel lvl, char* msg);
|
||||
void logger(MLLogLevel lvl, char* msg) {
|
||||
if (MLLoggingLogLevelIsEnabled(lvl)) {
|
||||
MLLoggingLog(lvl, "Servo3D", msg);
|
||||
}
|
||||
}
|
||||
|
||||
// Entry points to servo
|
||||
typedef struct Opaque ServoInstance;
|
||||
extern "C" ServoInstance* init_servo(EGLContext, EGLSurface, EGLDisplay, bool landscape,
|
||||
void*, MLLogger, void*, void*, void*,
|
||||
const char* url, const char* args,
|
||||
int width, int height, float hidpi);
|
||||
extern "C" void heartbeat_servo(ServoInstance*);
|
||||
extern "C" void discard_servo(ServoInstance*);
|
||||
|
||||
// The Servo3D app
|
||||
struct Servo3D {
|
||||
ServoInstance* servo;
|
||||
bool running;
|
||||
};
|
||||
|
||||
// Callbacks
|
||||
static void onStop(void* app)
|
||||
{
|
||||
ML_LOG(Info, "%s: On stop called.", application_name);
|
||||
Servo3D* servo3d = (Servo3D*)app;
|
||||
servo3d->running = false;
|
||||
}
|
||||
|
||||
static void onPause(void* app)
|
||||
{
|
||||
ML_LOG(Info, "%s: On pause called.", application_name);
|
||||
// Treat a pause the same as a stop
|
||||
Servo3D* servo3d = (Servo3D*)app;
|
||||
servo3d->running = false;
|
||||
}
|
||||
|
||||
static void onResume(void* app)
|
||||
{
|
||||
ML_LOG(Info, "%s: On resume called.", application_name);
|
||||
}
|
||||
|
||||
static void onNewInitArg(void* app)
|
||||
{
|
||||
// TODO: call servo_navigate when a new URL arrives
|
||||
ML_LOG(Info, "%s: On new init arg called.", application_name);
|
||||
}
|
||||
|
||||
int main() {
|
||||
// set up graphics surface
|
||||
ML_LOG(Info, "%s: Initializing EGL.", application_name);
|
||||
EGLDisplay egl_display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
||||
|
||||
EGLint major = 4;
|
||||
EGLint minor = 0;
|
||||
eglInitialize(egl_display, &major, &minor);
|
||||
|
||||
// The GL API used should match https://github.com/servo/rust-offscreen-rendering-context/blob/fcbbb4d40dac5e969233c1519151ad5e07b7f22e/src/platform/with_egl/native_gl_context.rs#L14
|
||||
eglBindAPI(EGL_OPENGL_ES_API);
|
||||
|
||||
// Should match https://github.com/servo/rust-offscreen-rendering-context/blob/fcbbb4d40dac5e969233c1519151ad5e07b7f22e/src/platform/with_egl/utils.rs#L46
|
||||
EGLint config_attribs[] = {
|
||||
EGL_RED_SIZE, 8,
|
||||
EGL_GREEN_SIZE, 8,
|
||||
EGL_BLUE_SIZE, 8,
|
||||
EGL_ALPHA_SIZE, 0,
|
||||
EGL_DEPTH_SIZE, 24,
|
||||
EGL_STENCIL_SIZE, 0,
|
||||
EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
|
||||
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
|
||||
EGL_NONE
|
||||
};
|
||||
EGLConfig egl_config = nullptr;
|
||||
EGLint config_size = 0;
|
||||
eglChooseConfig(egl_display, config_attribs, &egl_config, 1, &config_size);
|
||||
if (config_size < 1) {
|
||||
ML_LOG(Error, "%s: Failed to choose EGL config. (%x)", application_name, eglGetError());
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Should match https://github.com/servo/rust-offscreen-rendering-context/blob/fcbbb4d40dac5e969233c1519151ad5e07b7f22e/src/platform/with_egl/native_gl_context.rs#L47
|
||||
EGLint context_attribs[] = {
|
||||
EGL_CONTEXT_CLIENT_VERSION, 3,
|
||||
EGL_NONE
|
||||
};
|
||||
EGLContext egl_context = eglCreateContext(egl_display, egl_config, EGL_NO_CONTEXT, context_attribs);
|
||||
if (EGL_NO_CONTEXT == egl_context) {
|
||||
ML_LOG(Error, "%s: Failed to initialize EGL context. (%x)", application_name, eglGetError());
|
||||
return -1;
|
||||
}
|
||||
|
||||
EGLint surface_attribs[] = {
|
||||
EGL_WIDTH, 1280,
|
||||
EGL_HEIGHT, 960,
|
||||
EGL_NONE
|
||||
};
|
||||
EGLSurface egl_surface = eglCreatePbufferSurface(egl_display, egl_config, surface_attribs);
|
||||
if (EGL_NO_SURFACE == egl_surface) {
|
||||
ML_LOG(Error, "%s: Failed to initialize EGL surface. (%x)", application_name, eglGetError());
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (!eglMakeCurrent(egl_display, egl_surface, egl_surface, egl_context)) {
|
||||
ML_LOG(Error, "%s: Failed to make EGL surface current. (%x)", application_name, eglGetError());
|
||||
return -1;
|
||||
}
|
||||
|
||||
GLenum read_status = glCheckFramebufferStatus(GL_READ_FRAMEBUFFER);
|
||||
GLenum draw_status = glCheckFramebufferStatus(GL_DRAW_FRAMEBUFFER);
|
||||
if ((read_status != GL_FRAMEBUFFER_COMPLETE) || (draw_status != GL_FRAMEBUFFER_COMPLETE)) {
|
||||
ML_LOG(Error, "%s: Incomplete GL framebuffer. (%x, %x)", application_name, read_status, draw_status);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ML_LOG(Info, "%s: Initialized EGL.", application_name);
|
||||
|
||||
// The app
|
||||
Servo3D app = { nullptr, true };
|
||||
|
||||
// let system know our app has started
|
||||
MLLifecycleCallbacks lifecycle_callbacks = {};
|
||||
lifecycle_callbacks.on_stop = onStop;
|
||||
lifecycle_callbacks.on_pause = onPause;
|
||||
lifecycle_callbacks.on_resume = onResume;
|
||||
lifecycle_callbacks.on_new_initarg = onNewInitArg;
|
||||
|
||||
if (MLResult_Ok != MLLifecycleInit(&lifecycle_callbacks, &app)) {
|
||||
ML_LOG(Error, "%s: Failed to initialize lifecycle.", application_name);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Get the file argument if there is one
|
||||
MLLifecycleInitArgList* arg_list = nullptr;
|
||||
const MLLifecycleInitArg* arg = nullptr;
|
||||
const char* url = "https://webvr.info/samples/03-vr-presentation.html";
|
||||
int64_t arg_list_len = 0;
|
||||
|
||||
if (MLResult_Ok != MLLifecycleGetInitArgList(&arg_list)) {
|
||||
ML_LOG(Error, "%s: Failed to get init args.", application_name);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (MLResult_Ok == MLLifecycleGetInitArgListLength(arg_list, &arg_list_len)) {
|
||||
if (arg_list_len) {
|
||||
if (MLResult_Ok != MLLifecycleGetInitArgByIndex(arg_list, 0, &arg)) {
|
||||
ML_LOG(Error, "%s: Failed to get init arg.", application_name);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (MLResult_Ok != MLLifecycleGetInitArgUri(arg, &url)) {
|
||||
ML_LOG(Error, "%s: Failed to get init arg uri.", application_name);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// init_servo calls MLLifecycleSetReadyIndication()
|
||||
|
||||
// Check privileges
|
||||
if (MLResult_Ok != MLPrivilegesStartup()) {
|
||||
ML_LOG(Error, "%s: Failed to initialize privileges.", application_name);
|
||||
return -1;
|
||||
}
|
||||
if (MLPrivilegesRequestPrivilege(MLPrivilegeID_LowLatencyLightwear) != MLPrivilegesResult_Granted) {
|
||||
ML_LOG(Error, "Privilege %d denied.", MLPrivilegeID_LowLatencyLightwear);
|
||||
return -1;
|
||||
}
|
||||
if (MLPrivilegesRequestPrivilege(MLPrivilegeID_Internet) != MLPrivilegesResult_Granted) {
|
||||
ML_LOG(Error, "Privilege %d denied.", MLPrivilegeID_Internet);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// initialize perception system
|
||||
MLPerceptionSettings perception_settings;
|
||||
if (MLResult_Ok != MLPerceptionInitSettings(&perception_settings)) {
|
||||
ML_LOG(Error, "%s: Failed to initialize perception.", application_name);
|
||||
}
|
||||
|
||||
if (MLResult_Ok != MLPerceptionStartup(&perception_settings)) {
|
||||
ML_LOG(Error, "%s: Failed to startup perception.", application_name);
|
||||
return -1;
|
||||
}
|
||||
|
||||
ML_LOG(Info, "%s: Initializing servo for %s.", application_name, url);
|
||||
|
||||
// Initialize servo
|
||||
app.servo = init_servo(egl_context, egl_surface, egl_display, false,
|
||||
&app, logger, nullptr, nullptr, nullptr,
|
||||
url,
|
||||
"--pref dom.webvr.enabled --pref dom.gamepad.enabled",
|
||||
500, 500, 1.0);
|
||||
|
||||
// At this point we can free the memory for the arg list, since the url isn't used after this
|
||||
MLLifecycleFreeInitArgList(&arg_list);
|
||||
|
||||
// Pin the main thread to the Denver core
|
||||
// https://forum.magicleap.com/hc/en-us/community/posts/360043120832-How-many-CPUs-does-an-immersive-app-have-access-to-
|
||||
uint32_t DenverCoreAffinityMask = 1 << 2; // Denver core is CPU2
|
||||
pid_t ThreadId = gettid();
|
||||
syscall(__NR_sched_setaffinity, ThreadId, sizeof(DenverCoreAffinityMask), &DenverCoreAffinityMask);
|
||||
|
||||
// Run the demo!
|
||||
ML_LOG(Info, "%s: Begin demo.", application_name);
|
||||
while (app.running) {
|
||||
ML_LOG(Debug, "%s: heartbeat.", application_name);
|
||||
heartbeat_servo(app.servo);
|
||||
// TODO: check heart_racing.
|
||||
}
|
||||
ML_LOG(Info, "%s: End demo.", application_name);
|
||||
|
||||
// Shut down
|
||||
discard_servo(app.servo);
|
||||
MLPerceptionShutdown();
|
||||
eglDestroyContext(egl_display, egl_context);
|
||||
eglTerminate(egl_display);
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
KIND = program
|
||||
|
||||
SRCS = \
|
||||
Servo3D.cpp
|
||||
|
||||
USES = ml_sdk
|
||||
|
||||
LIBPATHS.debug = \
|
||||
$(GSTREAMER_DIR)/system/lib64 \
|
||||
../../../target/magicleap/aarch64-linux-android/debug
|
||||
|
||||
LIBPATHS.release = \
|
||||
$(GSTREAMER_DIR)/system/lib64 \
|
||||
../../../target/magicleap/aarch64-linux-android/release
|
||||
|
||||
LIBPATHS.device = \
|
||||
$(MLSDK)/lumin/stl/libc++-lumin/lib \
|
||||
|
||||
STLIBS = \
|
||||
mlservo
|
||||
|
||||
SHLIBS = \
|
||||
glib-2.0 \
|
||||
gobject-2.0 \
|
||||
gstreamer-1.0 \
|
||||
gstapp-1.0 \
|
||||
gstaudio-1.0 \
|
||||
gstbase-1.0 \
|
||||
gstgl-1.0 \
|
||||
gstplayer-1.0 \
|
||||
gstsdp-1.0 \
|
||||
gstvideo-1.0 \
|
||||
gstwebrtc-1.0 \
|
||||
c++ \
|
||||
ml_privileges \
|
||||
log \
|
||||
z
|
|
@ -1,19 +0,0 @@
|
|||
<familyset>
|
||||
<family name="sans-serif">
|
||||
<font weight="300" style="normal">/system/etc/ml/kali/Fonts/Lomino/Light/LominoUI_Lt.ttf</font>
|
||||
<font weight="300" style="italic">/system/etc/ml/kali/Fonts/Lomino/LightItalic/LominoUI_LtIt.ttf</font>
|
||||
<font weight="400" style="normal">/system/etc/ml/kali/Fonts/Lomino/Regular/LominoUI_Rg.ttf</font>
|
||||
<font weight="400" style="italic">/system/etc/ml/kali/Fonts/Lomino/Italic/LominoUI_It.ttf</font>
|
||||
<font weight="500" style="normal">/system/etc/ml/kali/Fonts/Lomino/Medium/LominoUI_Md.ttf</font>
|
||||
<font weight="500" style="italic">/system/etc/ml/kali/Fonts/Lomino/MediumItalic/LominoUI_MdIt.ttf</font>
|
||||
<font weight="700" style="normal">/system/etc/ml/kali/Fonts/Lomino/Bold/LominoUI_Bd.ttf</font>
|
||||
<font weight="700" style="italic">/system/etc/ml/kali/Fonts/Lomino/BoldItalic/LominoUI_BdIt.ttf</font>
|
||||
<font weight="900" style="normal">/system/etc/ml/kali/Fonts/Lomino/ExtraBold/LominoUI_XBd.ttf</font>
|
||||
<font weight="900" style="italic">/system/etc/ml/kali/Fonts/Lomino/ExtraBoldItalic/LominoUI_XBdIt.ttf</font>
|
||||
</family>
|
||||
|
||||
<alias name="arial" to="sans-serif" />
|
||||
<alias name="helvetica" to="sans-serif" />
|
||||
<alias name="tahoma" to="sans-serif" />
|
||||
<alias name="verdana" to="sans-serif" />
|
||||
</familyset>
|
|
@ -1,23 +0,0 @@
|
|||
<manifest
|
||||
xmlns:ml="magicleap"
|
||||
ml:package="com.mozilla.servo3d"
|
||||
ml:version_code="1"
|
||||
ml:version_name="1.0">
|
||||
<application
|
||||
ml:visible_name="Servo3D"
|
||||
ml:sdk_version="0.20.0"
|
||||
ml:min_api_level="4">
|
||||
<component
|
||||
ml:name=".servo3d.fullscreen"
|
||||
ml:visible_name="Servo3D"
|
||||
ml:binary_name="bin/Servo3D"
|
||||
ml:type="Fullscreen">
|
||||
<icon
|
||||
ml:model_folder="Icon/Model/"
|
||||
ml:portal_folder="Icon/Portal/" />
|
||||
</component>
|
||||
<uses-privilege ml:name="ControllerPose"/>
|
||||
<uses-privilege ml:name="Internet"/>
|
||||
<uses-privilege ml:name="LowLatencyLightwear"/>
|
||||
</application>
|
||||
</manifest>
|
|
@ -1,21 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# 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 https://mozilla.org/MPL/2.0/.
|
||||
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
MAGICLEAP_TOOLCHAIN=${MAGICLEAP_TOOLCHAIN:-"${MAGICLEAP_SDK}/tools/toolchains"}
|
||||
TARGET=${TARGET:-"aarch64-linux-android"}
|
||||
LD=${LD:-"${MAGICLEAP_TOOLCHAIN}/bin/${TARGET}-ld"}
|
||||
LDFLAGS=${LDFLAGS:-"-L${MAGICLEAP_SDK}/lumin/stl/libc++/lib -L${MAGICLEAP_SDK}/lumin/usr/lib -L${MAGICLEAP_TOOLCHAIN}/lib/gcc/${TARGET}/4.9.x"}
|
||||
|
||||
# Remove the -landroid flag, grr
|
||||
ARGS=("$@")
|
||||
ARGS=${ARGS[@]/-landroid}
|
||||
|
||||
echo ${LD} ${LDFLAGS} ${ARGS}
|
||||
${LD} ${LDFLAGS} ${ARGS}
|
7
support/magicleap/gstreamer/.gitignore
vendored
7
support/magicleap/gstreamer/.gitignore
vendored
|
@ -1,7 +0,0 @@
|
|||
*.tar.gz
|
||||
*.tgz
|
||||
_build
|
||||
_install
|
||||
gst-build
|
||||
libiconv-1.16
|
||||
mlsdk.txt
|
|
@ -1,22 +0,0 @@
|
|||
# Building the binary .tgz for magicleap gstreamer
|
||||
|
||||
`mach` downloads prebuilt gstreamer libraries, which are built using this script.
|
||||
|
||||
# Requirements
|
||||
- Magic Leap SDK >= 0.22.0 for MacOSX
|
||||
* Download from https://creator.magicleap.com/downloads/lumin-sdk/overview
|
||||
* Install both `Lumin SDK` and `Lumin Runtime SDK` packages
|
||||
- An application certificate
|
||||
* Create one on https://creator.magicleap.com in `publish` section
|
||||
|
||||
# Setup MacOSX
|
||||
- Install python3 and HomeBrew
|
||||
- pip3 install git+https://github.com/mesonbuild/meson.git
|
||||
* Requires Meson >=0.52.0, currently only in git master.
|
||||
- brew install coreutils glib bison
|
||||
- export PATH=/usr/local/opt/gettext/bin:/usr/local/opt/bison/bin:$PATH
|
||||
|
||||
# Build Instructions
|
||||
- export MAGICLEAP_SDK=/path/to/mlsdk
|
||||
- export MLCERT=/path/to/application.cert
|
||||
- ./gstreamer.sh
|
|
@ -1,100 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# 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 https://mozilla.org/MPL/2.0/.
|
||||
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
SOURCE_DIR=gst-build
|
||||
BUILD_DIR=_build
|
||||
INSTALL_DIR=_install
|
||||
INSTALL_REAL_DIR=$(realpath ${INSTALL_DIR})
|
||||
ARCHIVE=gstreamer-magicleap-1.16.0-$(date +"%Y%m%d-%H%M%S").tgz
|
||||
|
||||
function build_and_install()
|
||||
{
|
||||
ninja -C ${BUILD_DIR}
|
||||
DESTDIR=${INSTALL_REAL_DIR} meson install -C ${BUILD_DIR} --only-changed
|
||||
echo Creating archive ${ARCHIVE}.
|
||||
tar czf ${ARCHIVE} -C ${INSTALL_DIR} system
|
||||
}
|
||||
|
||||
if [[ "${1:-}" == "--build-only" ]]; then
|
||||
build_and_install
|
||||
exit
|
||||
fi
|
||||
|
||||
rm -rf ${BUILD_DIR}
|
||||
rm -rf ${INSTALL_DIR}
|
||||
|
||||
# FIXME: Download, build and install GNU libiconv because MLSDK has an old
|
||||
# version of bionic that does not include iconv.
|
||||
ICONV_NAME=libiconv-1.16
|
||||
if [[ ! -d ${ICONV_NAME} ]]; then
|
||||
curl -O -L https://ftp.gnu.org/pub/gnu/libiconv/${ICONV_NAME}.tar.gz
|
||||
tar xzf ${ICONV_NAME}.tar.gz
|
||||
fi
|
||||
mkdir -p ${BUILD_DIR}/${ICONV_NAME}
|
||||
HOST=aarch64-linux-android
|
||||
SYSROOT=${MAGICLEAP_SDK}/lumin/usr
|
||||
|
||||
cd ${BUILD_DIR}/${ICONV_NAME}
|
||||
env CFLAGS=--sysroot=${SYSROOT} \
|
||||
CPPFLAGS=--sysroot=${SYSROOT} \
|
||||
CC=${MAGICLEAP_SDK}/tools/toolchains/bin/${HOST}-clang \
|
||||
AR=${MAGICLEAP_SDK}/tools/toolchains/bin/${HOST}-ar \
|
||||
RANLIB=${MAGICLEAP_SDK}/tools/toolchains/bin/${HOST}-ranlib \
|
||||
../../${ICONV_NAME}/configure --host=${HOST} \
|
||||
--with-sysroot=${SYSROOT} \
|
||||
--prefix /system \
|
||||
--libdir /system/lib64
|
||||
cd ../..
|
||||
make -C ${BUILD_DIR}/${ICONV_NAME}
|
||||
DESTDIR=${INSTALL_REAL_DIR} make -C ${BUILD_DIR}/${ICONV_NAME} install
|
||||
|
||||
# Clone custom repo/branch of gst-build
|
||||
if [[ ! -d ${SOURCE_DIR} ]]; then
|
||||
git clone https://gitlab.freedesktop.org/xclaesse/gst-build.git --branch magicleap ${SOURCE_DIR}
|
||||
fi
|
||||
|
||||
# Generate cross file by replacing the MLSDK location
|
||||
cat mlsdk.txt.in | sed s#@MAGICLEAP_SDK@#${MAGICLEAP_SDK}# \
|
||||
| sed s#@INSTALL_DIR@#${INSTALL_REAL_DIR}# > mlsdk.txt
|
||||
|
||||
meson --cross-file mlsdk.txt \
|
||||
--prefix /system \
|
||||
--libdir lib64 \
|
||||
--libexecdir bin \
|
||||
-Db_pie=true \
|
||||
-Dcpp_std=c++11 \
|
||||
-Dpython=disabled \
|
||||
-Dlibav=disabled \
|
||||
-Ddevtools=disabled \
|
||||
-Dges=disabled \
|
||||
-Drtsp_server=disabled \
|
||||
-Domx=disabled \
|
||||
-Dvaapi=disabled \
|
||||
-Dsharp=disabled \
|
||||
-Dexamples=disabled \
|
||||
-Dgtk_doc=disabled \
|
||||
-Dintrospection=disabled \
|
||||
-Dnls=disabled \
|
||||
-Dbad=enabled \
|
||||
-Dgst-plugins-base:gl=enabled \
|
||||
-Dgst-plugins-base:gl_platform=egl \
|
||||
-Dgst-plugins-base:gl_winsys=android \
|
||||
-Dgst-plugins-good:soup=enabled \
|
||||
-Dgst-plugins-bad:gl=enabled \
|
||||
-Dgst-plugins-bad:magicleap=enabled \
|
||||
-Dgst-plugins-bad:dash=enabled \
|
||||
-Dglib:iconv=gnu \
|
||||
-Dlibsoup:gssapi=false \
|
||||
-Dlibsoup:tls_check=false \
|
||||
-Dlibsoup:vapi=false \
|
||||
${BUILD_DIR} \
|
||||
${SOURCE_DIR}
|
||||
|
||||
build_and_install
|
|
@ -1,37 +0,0 @@
|
|||
[host_machine]
|
||||
system = 'android'
|
||||
cpu_family = 'aarch64'
|
||||
cpu = 'armv8-a'
|
||||
endian = 'little'
|
||||
|
||||
[properties]
|
||||
c_args = [
|
||||
'--sysroot=@MAGICLEAP_SDK@/lumin/usr',
|
||||
'-I@MAGICLEAP_SDK@/include',
|
||||
'-I@MAGICLEAP_SDK@/staging/include',
|
||||
'-I@INSTALL_DIR@/system/include',
|
||||
]
|
||||
cpp_args = [
|
||||
'--sysroot=@MAGICLEAP_SDK@/lumin/usr',
|
||||
'-I@MAGICLEAP_SDK@/include',
|
||||
'-I@MAGICLEAP_SDK@/staging/include',
|
||||
'-I@INSTALL_DIR@/system/include',
|
||||
]
|
||||
c_link_args = [
|
||||
'--sysroot=@MAGICLEAP_SDK@/lumin/usr',
|
||||
'-L@MAGICLEAP_SDK@/lib/lumin',
|
||||
'-L@INSTALL_DIR@/system/lib64',
|
||||
'-fuse-ld=gold'
|
||||
]
|
||||
cpp_link_args = [
|
||||
'--sysroot=@MAGICLEAP_SDK@/lumin/usr',
|
||||
'-L@MAGICLEAP_SDK@/lib/lumin',
|
||||
'-L@INSTALL_DIR@/system/lib64',
|
||||
'-fuse-ld=gold'
|
||||
]
|
||||
|
||||
[binaries]
|
||||
c = ['ccache', '@MAGICLEAP_SDK@/tools/toolchains/bin/aarch64-linux-android-clang']
|
||||
cpp = ['ccache', '@MAGICLEAP_SDK@/tools/toolchains/bin/aarch64-linux-android-clang++']
|
||||
ar = ['@MAGICLEAP_SDK@/tools/toolchains/bin/aarch64-linux-android-ar']
|
||||
strip = ['@MAGICLEAP_SDK@/tools/toolchains/bin/aarch64-linux-android-strip']
|
|
@ -1,31 +0,0 @@
|
|||
<manifest
|
||||
xmlns:ml="magicleap"
|
||||
ml:package="com.mozilla.servo"
|
||||
ml:version_code="1"
|
||||
ml:version_name="1.0">
|
||||
<application
|
||||
ml:visible_name="Servo"
|
||||
ml:sdk_version="1.0">
|
||||
<component
|
||||
ml:name=".servo2d.universe"
|
||||
ml:visible_name="Servo2D"
|
||||
ml:binary_name="bin/Servo2D"
|
||||
ml:type="Universe">
|
||||
<icon
|
||||
ml:model_folder="Icon/Model/"
|
||||
ml:portal_folder="Icon/Portal/" />
|
||||
</component>
|
||||
<component
|
||||
ml:name=".servo3d.fullscreen"
|
||||
ml:visible_name="Servo3D"
|
||||
ml:binary_name="bin/Servo3D"
|
||||
ml:type="Fullscreen">
|
||||
<icon
|
||||
ml:model_folder="Icon/Model/"
|
||||
ml:portal_folder="Icon/Portal/" />
|
||||
</component>
|
||||
<uses-privilege ml:name="ControllerPose"/>
|
||||
<uses-privilege ml:name="Internet"/>
|
||||
<uses-privilege ml:name="LowLatencyLightwear"/>
|
||||
</application>
|
||||
</manifest>
|
|
@ -1,60 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# 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 https://mozilla.org/MPL/2.0/.
|
||||
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
if [[ -z "${OPENSSL_DIR}" ]]; then
|
||||
echo "No OPENSSL_DIR."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z "${OPENSSL_VERSION}" ]]; then
|
||||
echo "No OPENSSL_VERSION."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -f "${OPENSSL_DIR}/lib/libssl.so" ]] && \
|
||||
[[ "${OPENSSL_DIR}/lib/libssl.so" -nt "${0}" ]] ; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Building ${OPENSSL_DIR}/lib/libssl.so"
|
||||
|
||||
S3_BUCKET="https://servo-deps-2.s3.amazonaws.com/android-deps"
|
||||
S3_URL="${S3_BUCKET}/openssl-${OPENSSL_VERSION}.tar.gz"
|
||||
|
||||
if [[ ! -d "${OPENSSL_DIR}/src/openssl-${OPENSSL_VERSION}" ]]; then
|
||||
mkdir -p "${OPENSSL_DIR}/src"
|
||||
curl "${S3_URL}" | tar xzf - -C "${OPENSSL_DIR}/src"
|
||||
fi
|
||||
|
||||
if [[ ! -d "${OPENSSL_DIR}/src/openssl-${OPENSSL_VERSION}" ]]; then
|
||||
echo "Failed to download ${OPENSSL_DIR}/src/openssl-${OPENSSL_VERSION}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd "${OPENSSL_DIR}/src/openssl-${OPENSSL_VERSION}"
|
||||
|
||||
./Configure shared \
|
||||
--prefix="${OPENSSL_DIR}" \
|
||||
--openssldir="${OPENSSL_DIR}" \
|
||||
-no-ssl2 -no-ssl3 -no-comp -no-engine -no-hw \
|
||||
linux-generic64 \
|
||||
-fPIC -fno-omit-frame-pointer \
|
||||
-Wall -Wno-error=macro-redefined -Wno-unknown-attributes \
|
||||
${CFLAGS:-}
|
||||
|
||||
make depend
|
||||
make all
|
||||
make install_sw
|
||||
|
||||
if [[ ! -f "${OPENSSL_DIR}/lib/libssl.so" ]]; then
|
||||
echo "Failed to build ${OPENSSL_DIR}/lib/libssl.so"
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -1 +0,0 @@
|
|||
set(CMAKE_SYSTEM_NAME Linux)
|
Loading…
Add table
Add a link
Reference in a new issue