SuperTuxKart
check_trigger.hpp
1 // SuperTuxKart - a fun racing game with go-kart
2 // Copyright (C) 2019 SuperTuxKart-Team
3 //
4 // This program is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU General Public License
6 // as published by the Free Software Foundation; either version 3
7 // of the License, or (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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 
18 #ifndef HEADER_CHECK_TRIGGER_HPP
19 #define HEADER_CHECK_TRIGGER_HPP
20 
21 #include "tracks/check_structure.hpp"
22 #include "utils/cpp2011.hpp"
23 #include "utils/types.hpp"
24 
25 #include <functional>
26 
32 {
33 private:
35  const Vec3 m_center;
36 
38  const float m_distance2;
39 
41  const std::function<void(int)> m_triggering_function;
42 
46 
47 public:
48  CheckTrigger(const Vec3& center, float distance,
49  std::function<void(int)> triggering_function);
50  // ------------------------------------------------------------------------
51  virtual ~CheckTrigger() {}
52  // ------------------------------------------------------------------------
53  virtual bool isTriggered(const Vec3 &old_pos, const Vec3 &new_pos,
54  int kart_id) OVERRIDE;
55  // ------------------------------------------------------------------------
56  virtual void trigger(unsigned int kart_index) OVERRIDE
57  {
58  m_triggering_function(kart_index);
59  CheckStructure::trigger(kart_index);
60  }
61 }; // CheckSphere
62 
63 #endif
64 
A wrapper around bullets btVector3 to include conventient conversion functions (e....
Definition: vec3.hpp:34
const std::function< void(int)> m_triggering_function
Function to call when triggered.
Definition: check_trigger.hpp:41
uint64_t m_last_triggered_time
Time since last trigger, if any triggering between 2 seconds ignored (like items).
Definition: check_trigger.hpp:45
Declares the general types that are used by the network.
const float m_distance2
Squared of the triggering distance.
Definition: check_trigger.hpp:38
virtual void trigger(unsigned int kart_index) OVERRIDE
Is called when this check structure is triggered.
Definition: check_trigger.hpp:56
virtual bool isTriggered(const Vec3 &old_pos, const Vec3 &new_pos, int kart_id) OVERRIDE
Copied from item state.
Definition: check_trigger.cpp:41
const Vec3 m_center
Center of the trigger.
Definition: check_trigger.hpp:35
virtual void trigger(unsigned int kart_index)
Is called when this check structure is triggered.
Definition: check_structure.cpp:207
CheckTrigger(const Vec3 &center, float distance, std::function< void(int)> triggering_function)
Constructor for a check trigger.
Definition: check_trigger.cpp:29
This class implements a check point like item, but used only for scripting or sound trigger.
Definition: check_trigger.hpp:31
Virtual base class for a check structure.
Definition: check_structure.hpp:51