From 36d2e5f381fab7b60eed4aee030ee8eb354b6fb0 Mon Sep 17 00:00:00 2001 From: Greg Fodor <gfodor@gmail.com> Date: Mon, 29 Oct 2018 05:34:04 +0000 Subject: [PATCH] HUD WIP --- src/assets/hud/share_camera-hover.png | Bin 0 -> 4156 bytes src/assets/hud/share_camera.png | Bin 0 -> 2998 bytes src/assets/hud/share_screen-hover.png | Bin 0 -> 4156 bytes src/assets/hud/share_screen.png | Bin 0 -> 2998 bytes src/assets/hud/share_window-hover.png | Bin 0 -> 4156 bytes src/assets/hud/share_window.png | Bin 0 -> 2998 bytes src/assets/stylesheets/2d-hud.scss | 40 +++++++++ src/react-components/2d-hud.js | 113 +++++++++++++++++++------- src/scene-entry-manager.js | 4 + 9 files changed, 126 insertions(+), 31 deletions(-) create mode 100644 src/assets/hud/share_camera-hover.png create mode 100644 src/assets/hud/share_camera.png create mode 100644 src/assets/hud/share_screen-hover.png create mode 100644 src/assets/hud/share_screen.png create mode 100644 src/assets/hud/share_window-hover.png create mode 100644 src/assets/hud/share_window.png diff --git a/src/assets/hud/share_camera-hover.png b/src/assets/hud/share_camera-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..f3ac1877a49e60780f8b0c28aa3ce22799600154 GIT binary patch literal 4156 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 literal 0 HcmV?d00001 diff --git a/src/assets/hud/share_camera.png b/src/assets/hud/share_camera.png new file mode 100644 index 0000000000000000000000000000000000000000..fd176add98ef6d8d5b4afea6f20b167581212b0a GIT binary patch literal 2998 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 literal 0 HcmV?d00001 diff --git a/src/assets/hud/share_screen-hover.png b/src/assets/hud/share_screen-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..f3ac1877a49e60780f8b0c28aa3ce22799600154 GIT binary patch literal 4156 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 literal 0 HcmV?d00001 diff --git a/src/assets/hud/share_screen.png b/src/assets/hud/share_screen.png new file mode 100644 index 0000000000000000000000000000000000000000..fd176add98ef6d8d5b4afea6f20b167581212b0a GIT binary patch literal 2998 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 literal 0 HcmV?d00001 diff --git a/src/assets/hud/share_window-hover.png b/src/assets/hud/share_window-hover.png new file mode 100644 index 0000000000000000000000000000000000000000..f3ac1877a49e60780f8b0c28aa3ce22799600154 GIT binary patch literal 4156 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 literal 0 HcmV?d00001 diff --git a/src/assets/hud/share_window.png b/src/assets/hud/share_window.png new file mode 100644 index 0000000000000000000000000000000000000000..fd176add98ef6d8d5b4afea6f20b167581212b0a GIT binary patch literal 2998 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 literal 0 HcmV?d00001 diff --git a/src/assets/stylesheets/2d-hud.scss b/src/assets/stylesheets/2d-hud.scss index 197c036f5..437852863 100644 --- a/src/assets/stylesheets/2d-hud.scss +++ b/src/assets/stylesheets/2d-hud.scss @@ -41,6 +41,24 @@ padding-left: 5px; padding-right: 45px; margin-right: -40px; + position: relative; + + :local(.video-share-extra-options) { + position: absolute; + top: 0; + left: 0; + display: flex; + flex-direction: column; + border-radius: 30px; + padding: 5px 5px 8px 5px; + background-color: rgba(79, 79, 79, 0.2); + z-index: 1; + + :local(.icon-button) { + margin-top: 4px; + background-color: $hud-panel-background; + } + } } :local(.panel.right) { @@ -68,6 +86,7 @@ justify-content: center; align-items: center; cursor: pointer; + margin: 0px 2px; } :local(.iconButton.small) { @@ -144,3 +163,24 @@ :local(.iconButton.mobile-media-picker) { background-image: url(../hud/spawn_photo.png); } + +:local(.iconButton.share_camera) { + background-image: url(../hud/share_camera.png); +} +:local(.iconButton.share_camera:hover) { + background-image: url(../hud/share_camera-hover.png); +} + +:local(.iconButton.share_screen) { + background-image: url(../hud/share_screen.png); +} +:local(.iconButton.share_screen:hover) { + background-image: url(../hud/share_screen-hover.png); +} + +:local(.iconButton.share_window) { + background-image: url(../hud/share_window.png); +} +:local(.iconButton.share_window:hover) { + background-image: url(../hud/share_window-hover.png); +} diff --git a/src/react-components/2d-hud.js b/src/react-components/2d-hud.js index 74577ff1e..2b4b37548 100644 --- a/src/react-components/2d-hud.js +++ b/src/react-components/2d-hud.js @@ -1,41 +1,92 @@ -import React from "react"; +import React, { Component } from "react"; import PropTypes from "prop-types"; import cx from "classnames"; import styles from "../assets/stylesheets/2d-hud.scss"; import uiStyles from "../assets/stylesheets/ui-root.scss"; -const TopHUD = ({ muted, frozen, onToggleMute, onToggleFreeze, onSpawnPen, onSpawnCamera }) => ( - <div className={cx(styles.container, styles.top, styles.unselectable)}> - <div className={cx(uiStyles.uiInteractive, styles.panel, styles.left)}> - <div - className={cx(styles.iconButton, styles.mute, { [styles.active]: muted })} - title={muted ? "Unmute Mic" : "Mute Mic"} - onClick={onToggleMute} - /> - </div> - <div - className={cx(uiStyles.uiInteractive, styles.iconButton, styles.large, styles.freeze, { - [styles.active]: frozen - })} - title={frozen ? "Resume" : "Pause"} - onClick={onToggleFreeze} - /> - <div className={cx(uiStyles.uiInteractive, styles.panel, styles.right)}> - <div className={cx(styles.iconButton, styles.spawn_pen)} title={"Drawing Pen"} onClick={onSpawnPen} /> - <div className={cx(styles.iconButton, styles.spawn_camera)} title={"Camera"} onClick={onSpawnCamera} /> - </div> - </div> -); +class TopHUD extends Component { + static propTypes = { + muted: PropTypes.bool, + frozen: PropTypes.bool, + videoShareSource: PropTypes.bool, + onToggleMute: PropTypes.func, + onToggleFreeze: PropTypes.func, + onSpawnPen: PropTypes.func, + onSpawnCamera: PropTypes.func, + onShareVideo: PropTypes.func + }; -TopHUD.propTypes = { - muted: PropTypes.bool, - frozen: PropTypes.bool, - onToggleMute: PropTypes.func, - onToggleFreeze: PropTypes.func, - onSpawnPen: PropTypes.func, - onSpawnCamera: PropTypes.func -}; + state = { + showVideoShareOptions: false + }; + + handleVideoShareClicked = source => {}; + + render() { + return ( + <div className={cx(styles.container, styles.top, styles.unselectable)}> + <div className={cx(uiStyles.uiInteractive, styles.panel, styles.left)}> + <div + className={cx(styles.iconButton, styles.share_screen, { + [styles.active]: this.props.videoShareSource === "screen" + })} + title={this.props.videoShareSource === "screen" ? "Stop Screen Sharing" : "Share Screen"} + onClick={() => this.handleVideoShareClicked("screen")} + > + <div className={cx(styles.videoShareExtraOptions)}> + <div + className={cx(styles.iconButton, styles.share_window, { + [styles.active]: this.props.videoShareSource === "window" + })} + title={this.props.videoShareSource === "window" ? "Stop Window Sharing" : "Share Window"} + onClick={() => this.handleVideoShareClicked("window")} + /> + <div + className={cx(styles.iconButton, styles.share_window, { + [styles.active]: this.props.videoShareSource === "window" + })} + title={this.props.videoShareSource === "window" ? "Stop Window Sharing" : "Share Window"} + onClick={() => this.handleVideoShareClicked("window")} + /> + <div + className={cx(styles.iconButton, styles.share_camera, { + [styles.active]: this.props.videoShareSource === "camera" + })} + title={this.props.videoShareSource === "camera" ? "Stop Camera Sharing" : "Share Camera"} + onClick={() => this.handleVideoShareClicked("camera")} + /> + </div> + </div> + <div + className={cx(styles.iconButton, styles.mute, { [styles.active]: this.props.muted })} + title={this.props.muted ? "Unmute Mic" : "Mute Mic"} + onClick={this.props.onToggleMute} + /> + </div> + <div + className={cx(uiStyles.uiInteractive, styles.iconButton, styles.large, styles.freeze, { + [styles.active]: this.props.frozen + })} + title={this.props.frozen ? "Resume" : "Pause"} + onClick={this.props.onToggleFreeze} + /> + <div className={cx(uiStyles.uiInteractive, styles.panel, styles.right)}> + <div + className={cx(styles.iconButton, styles.spawn_pen)} + title={"Drawing Pen"} + onClick={this.props.onSpawnPen} + /> + <div + className={cx(styles.iconButton, styles.spawn_camera)} + title={"Camera"} + onClick={this.props.onSpawnCamera} + /> + </div> + </div> + ); + } +} const BottomHUD = ({ onCreateObject, showPhotoPicker, onMediaPicked }) => ( <div className={cx(styles.container, styles.column, styles.bottom, styles.unselectable)}> diff --git a/src/scene-entry-manager.js b/src/scene-entry-manager.js index bee687599..d67266e83 100644 --- a/src/scene-entry-manager.js +++ b/src/scene-entry-manager.js @@ -255,6 +255,8 @@ export default class SceneEntryManager { NAF.connection.adapter.setLocalMediaStream(mediaStream); currentVideoShareEntity = spawnMediaInfrontOfPlayer(mediaStream, undefined); } + + this.scene.emit("share_video_enabled", { constraints }); } else { currentVideoShareEntity.parentNode.removeChild(currentVideoShareEntity); @@ -264,6 +266,8 @@ export default class SceneEntryManager { NAF.connection.adapter.setLocalMediaStream(mediaStream); currentVideoShareEntity = null; + + this.scene.emit("share_video_disabled"); } isHandlingVideoShare = false; -- GitLab