~ubuntu-branches/debian/sid/ember/sid

« back to all changes in this revision

Viewing changes to src/components/ogre/AvatarCameraWarper.cpp

  • Committer: Package Import Robot
  • Author(s): Olek Wojnar, Stephen M. Webb, Olek Wojnar
  • Date: 2016-08-06 18:39:19 UTC
  • mfrom: (1.1.3)
  • Revision ID: package-import@ubuntu.com-20160806183919-4g72j3flj7xe2stj
Tags: 0.7.2+dfsg-1
[ Stephen M. Webb ]
* debian/control: updated build-depends to newer minimum versions
  (closes: #704786)
* debian/control: updated Standards-Version to 3.9.4 (updated VCS-* fields)
* debian/patches/0001-ember.in-test-expr.patch: removed (fixed upstream)
* debian/patches/0002-add-update_lua_bindings.patch: removed (fixed upstream)
* debian/patches/0003-add-atlas-pkg.patch: removed (fixed upstream)
* debian/patches/0004-domain-bindings-lua-makefile.patch: refreshed
* debian/patches/0005-ember.in-prefix.patch: removed (fixed upstream)
* debian/patches/0006-spellcheck-similiar.patch: removed (fixed upstream)
* debian/patches/0007-revert-libwfut-version.patch: refreshed
* debian/patches/0008-replace-fastdeletegate-with-sigc++.patch: removed
 (fixed upstream)
* debian/patches/0009-spelling-bach.patch: removed (fixed upstream)
* debian/patches/0010-fix-ember-script-args.patch: removed (fixed upstream)
* debian/patches/0011-qualify-template-functions.patch: removed (fixed
  upstream)
* debian/patches/0012-fix-osdir-headers.patch: removed (fixed upstream)
* debian/patches/0013-remove-invalid-linker-flags.patch: removed (fixed
  upstream)
* debian/patches/0014-add-missing-ogrelodstrategy.patch: new
* debian/control: fixed Vcs-Browser URL
* debian/patches/0015-verbose-configure-errors.patch: new
* debian/patches/0016-boost-1.53.patch: new
* debian/control: bump boost build dependeny to 1.53

[ Olek Wojnar ]
* New upstream release (Closes: #799748)
* Add myself as new uploader
  - Remove Stephen Webb per his request
  - Thanks for all the contributions, Stephen!
* d/patches/0007-revert-libwfut-version.patch: removed (unnecessary)
* d/control
  - Remove pre-dependency on dpkg
  - Update standards to 3.9.8 (no changes)
  - Update Vcs lines for secure URIs
* Import patch from the wfmath package to replace MersenneTwister.h
  -- Avoids problems from ambiguous copyright of the original file
* Update dependencies for version 0.7.2
* Enable all hardening options
* Add three lintian overrides
  -- Ignore install into usr/bin (binary)
  -- Ignore .rc files needed for WIN32 build (source)
  -- Ignore false positive of spelling error (binary)
* d/copyright: Update contributors and dates
* d/rules
  -- Do not remove "sounddefinitions" directory
  -- Enable parallel build
  -- Do not install into games directories
  -- Remove dh_builddeb override since xz is now the default
* d/watch: update file extensions
* Remove three patches, add eight patches, update remaining patches
  -- 0004-domain-bindings-lua-makefile.patch (implemented upstream)
  -- 0014-add-missing-ogrelodstrategy.patch (implemented upstream)
  -- 0016-boost-1.53.patch (patch target file removed upstream)
  -- 0018-enable-subdir-objects.patch (Fix automake 1.14 warnings)
  -- 0019-update-boost-m4.patch (Fix invalid boost_major_version)
  -- 0020-remove-obsolete-includes.patch (Fix obsolete includes)
  -- 0021-GraphicalChangeAdapter-fix-for-newer-compilers.patch (Added)
  -- 0022-fix-typos.patch (Fix typos identified by lintian)
  -- 0023-add-keywords-to-desktop-file.patch (Add Keywords to .desktop file)
  -- 0024-fix-icon-location (Make icon location Icon Theme Spec-compliant)
  -- 0025-fix-duplicate-script-install.patch (Was causing build failures)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 Copyright (C) 2013 Erik Ogenvik
 
3
 
 
4
 This program is free software; you can redistribute it and/or modify
 
5
 it under the terms of the GNU General Public License as published by
 
6
 the Free Software Foundation; either version 2 of the License, or
 
7
 (at your option) any later version.
 
8
 
 
9
 This program is distributed in the hope that it will be useful,
 
10
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
12
 GNU General Public License for more details.
 
13
 
 
14
 You should have received a copy of the GNU General Public License
 
15
 along with this program; if not, write to the Free Software
 
16
 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
17
 */
 
18
 
 
19
#ifdef HAVE_CONFIG_H
 
20
#include "config.h"
 
21
#endif
 
22
 
 
23
#include "AvatarCameraWarper.h"
 
24
#include "MovementController.h"
 
25
#include "EmberEntity.h"
 
26
#include "camera/MainCamera.h"
 
27
#include "framework/MainLoopController.h"
 
28
#include "framework/Tokeniser.h"
 
29
#include "framework/LoggingInstance.h"
 
30
 
 
31
#include <Eris/View.h>
 
32
#include <OgreSceneNode.h>
 
33
 
 
34
#include <sstream>
 
35
 
 
36
namespace Ember
 
37
{
 
38
namespace OgreView
 
39
{
 
40
 
 
41
AvatarCameraWarper::AvatarCameraWarper(MovementController& movementController, const Camera::MainCamera& camera, Eris::View& view, float movementThreshold) :
 
42
                AvatarFollowsCamera("toggle_avatar_follows_camera", this, "Toggles the avatar being moved when the first person camera is moved. An optional threshold value can also be specified."), mMovementController(movementController), mCamera(camera), mView(view), mMovementThreshold(movementThreshold), mLastPosition(camera.getPosition()), mEnabled(false)
 
43
{
 
44
        MainLoopController::getSingleton().EventFrameProcessed.connect(sigc::mem_fun(*this, &AvatarCameraWarper::frameProcessed));
 
45
}
 
46
 
 
47
AvatarCameraWarper::~AvatarCameraWarper()
 
48
{
 
49
}
 
50
 
 
51
void AvatarCameraWarper::setEnabled(bool enabled)
 
52
{
 
53
        mEnabled = true;
 
54
}
 
55
 
 
56
void AvatarCameraWarper::runCommand(const std::string& command, const std::string& args)
 
57
{
 
58
        if (AvatarFollowsCamera == command) {
 
59
                mEnabled = !mEnabled;
 
60
                S_LOG_INFO("Setting avatar camera warper to " << (mEnabled ? "enabled" : "disabled") << ".");
 
61
                Tokeniser tokeniser(args);
 
62
                if (tokeniser.hasRemainingTokens()) {
 
63
                        try {
 
64
                                std::istringstream(tokeniser.nextToken()) >> mMovementThreshold;
 
65
                        } catch (const std::exception& e) {
 
66
                                S_LOG_WARNING("Could not update movement threshold in avatar camera warper." << e);
 
67
                        }
 
68
                }
 
69
        }
 
70
}
 
71
 
 
72
void AvatarCameraWarper::frameProcessed(const TimeFrame&, unsigned int)
 
73
{
 
74
        if (mEnabled && mMovementController.isCameraFreeFlying()) {
 
75
                const Ogre::Vector3& cameraPosition = mCamera.getPosition();
 
76
                if (cameraPosition.distance(mLastPosition) > mMovementThreshold) {
 
77
                        updateAvatarPosition(cameraPosition);
 
78
                        mLastPosition = cameraPosition;
 
79
                }
 
80
        }
 
81
}
 
82
 
 
83
void AvatarCameraWarper::updateAvatarPosition(const Ogre::Vector3& worldPosition)
 
84
{
 
85
        if (mView.getTopLevel()) {
 
86
                mMovementController.teleportTo(worldPosition, static_cast<EmberEntity*>(mView.getTopLevel()));
 
87
        }
 
88
}
 
89
 
 
90
}
 
91
}