From 76355dc1a87f3aa5c14cfd7691f3e7fc81cde6b5 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Mon, 24 Feb 2014 19:24:45 -0800 Subject: [PATCH] add support for hiding local rendering of avatar --- examples/hideAvatarExample.js | 27 +++++++++++++++++++++++++++ interface/src/avatar/MyAvatar.cpp | 5 +++++ interface/src/avatar/MyAvatar.h | 5 +++++ 3 files changed, 37 insertions(+) create mode 100644 examples/hideAvatarExample.js diff --git a/examples/hideAvatarExample.js b/examples/hideAvatarExample.js new file mode 100644 index 0000000000..7a0ece76eb --- /dev/null +++ b/examples/hideAvatarExample.js @@ -0,0 +1,27 @@ +// +// hideAvatarExample.js +// hifi +// +// Created by Brad Hefta-Gaub on 1/28/14. +// Copyright (c) 2014 HighFidelity, Inc. All rights reserved. +// +// This is an example script that demonstrates how to enable or disable local rendering of your own avatar +// +// + +function keyReleaseEvent(event) { + if (event.text == "F2") { + MyAvatar.shouldRenderLocally = !MyAvatar.shouldRenderLocally; + } +} + +// Map keyPress and mouse move events to our callbacks +Controller.keyReleaseEvent.connect(keyReleaseEvent); + + +function scriptEnding() { + // re-enabled the standard behavior + MyAvatar.shouldRenderLocally = true; +} + +Script.scriptEnding.connect(scriptEnding); diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index ccd7524c4b..e6676de154 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -60,6 +60,7 @@ MyAvatar::MyAvatar() : _moveTarget(0,0,0), _moveTargetStepCounter(0), _lookAtTargetAvatar(), + _shouldRender(true), _billboardValid(false) { for (int i = 0; i < MAX_DRIVE_KEYS; i++) { @@ -469,6 +470,10 @@ void MyAvatar::renderDebugBodyPoints() { } void MyAvatar::render(bool forceRenderHead) { + // don't render if we've been asked to disable local rendering + if (!_shouldRender) { + return; // exit early + } // render body if (Menu::getInstance()->isOptionChecked(MenuOption::RenderSkeletonCollisionProxies)) { diff --git a/interface/src/avatar/MyAvatar.h b/interface/src/avatar/MyAvatar.h index 2e80a9408d..0d282c180a 100644 --- a/interface/src/avatar/MyAvatar.h +++ b/interface/src/avatar/MyAvatar.h @@ -26,6 +26,7 @@ enum AvatarHandState class MyAvatar : public Avatar { Q_OBJECT + Q_PROPERTY(bool shouldRenderLocally READ getShouldRenderLocally WRITE setShouldRenderLocally) public: MyAvatar(); @@ -50,6 +51,8 @@ public: void setGravity(glm::vec3 gravity); void setOrientation(const glm::quat& orientation); void setMoveTarget(const glm::vec3 moveTarget); + void setShouldRenderLocally(bool shouldRender) { _shouldRender = shouldRender; } + // getters float getSpeed() const { return _speed; } @@ -63,6 +66,7 @@ public: Transmitter& getTransmitter() { return _transmitter; } glm::vec3 getGravity() const { return _gravity; } glm::vec3 getUprightHeadPosition() const; + bool getShouldRenderLocally() const { return _shouldRender; } // get/set avatar data void saveData(QSettings* settings); @@ -116,6 +120,7 @@ private: glm::vec3 _moveTarget; int _moveTargetStepCounter; QWeakPointer _lookAtTargetAvatar; + bool _shouldRender; Transmitter _transmitter; // Gets UDP data from transmitter app used to animate the avatar glm::vec3 _transmitterPickStart;