react in native apps - meetup react - 20150409

21
Warren Seine aerys [email protected] @warrenseine 2015/04/09 École 42 React.js Paris React in native apps

Upload: minko3d

Post on 15-Jul-2015

3.832 views

Category:

Software


0 download

TRANSCRIPT

Page 1: React in Native Apps - Meetup React - 20150409

Warren Seineaerys

[email protected]

@warrenseine

2015/04/09

École 42

React.js Paris

React in native apps

Page 2: React in Native Apps - Meetup React - 20150409

Your 3D models. Everywhere.

Page 3: React in Native Apps - Meetup React - 20150409

Network drive, web or native apps

Versioning

Access control & encryptionUpload to the cloud

Page 4: React in Native Apps - Meetup React - 20150409

Optimize

100% automated

50+ supported formats

Optimize for mobile, web…

Page 5: React in Native Apps - Meetup React - 20150409

Stream

Up to 200x faster delivery

Progressive level of detail

Enterprise-ready

Page 6: React in Native Apps - Meetup React - 20150409

Visualize & Collaborate

Mobile, web & desktop

Instant share

Web embeds

Page 7: React in Native Apps - Meetup React - 20150409

3D Annotations

Formatted text & links

Audio, photos & videos

PDF

Web / iframes

Page 8: React in Native Apps - Meetup React - 20150409

3D Annotations

Integrated Word-like editor

100% real-time & collaborative

Page 9: React in Native Apps - Meetup React - 20150409
Page 10: React in Native Apps - Meetup React - 20150409

Software Development Kit

100% x-platform native code

Free & open source

Open source 3D file format

Web, desktop, mobile & server

Business-ready

Page 11: React in Native Apps - Meetup React - 20150409

3D 2D

Page 12: React in Native Apps - Meetup React - 20150409

Bridge

Why React?

Page 13: React in Native Apps - Meetup React - 20150409

Platform-specific DOM wrap

Two-way sendMessage()

Safe eval()

Page 14: React in Native Apps - Meetup React - 20150409

Let’s see some code

How do we place annotations over the 3D model?

Page 15: React in Native Apps - Meetup React - 20150409

0. Stack

Meteor (to sync data)

Reflux (for data flow/store)

React (for UI rendering)

Minko (for 3D rendering and bridge)

Page 16: React in Native Apps - Meetup React - 20150409

1. Retrieving data (JS)

AnnotationStore subscribes to Meteor

Meteor sends data in JSON (id, node, position)

AnnotationStore receives annotations

AnnotationStore forwards « addAnnotations » to Minko

Page 17: React in Native Apps - Meetup React - 20150409

2. Updating data (C++)

AnnotationsScript listens to the overlay

AnnotationsScript receives a message « addAnnotations »

AnnotationsScript updates the local list

Annotations are projected on screen space if changed Discarding if out of viewport

Minko sends a message to the overlay « annotationUpdatePositions »

Page 18: React in Native Apps - Meetup React - 20150409

3. Positionning annotations (JS)

React components listens to Reflux stores

AnnotationStore listens to « annotationUpdatePositions »

AnnotationStore updates positions Triggering only if changed

Annotation listens to AnnotationStore

Updating state (React magic!)

Page 19: React in Native Apps - Meetup React - 20150409

4. Ordering annotations (JS)

Re-ordering annotations in Z Triggering if changed (rare)

Annotations sorts DOM tree No z-index

Sorting does not imply re-rendering the annotation Components have unique React keys

Page 20: React in Native Apps - Meetup React - 20150409

So that’s why.

Page 21: React in Native Apps - Meetup React - 20150409

Questions ?!

[email protected]

@warrenseine