opensurgsim
TransferPropertiesBehavior.h
1 // This file is a part of the OpenSurgSim project.
2 // Copyright 2013-2016, SimQuest Solutions Inc.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 
16 #ifndef SURGSIM_FRAMEWORK_TRANSFERPROPERTIESBEHAVIOR_H
17 #define SURGSIM_FRAMEWORK_TRANSFERPROPERTIESBEHAVIOR_H
18 
19 #include <boost/thread/mutex.hpp>
20 #include <string>
21 
22 #include "SurgSim/Framework/Accessible.h"
23 #include "SurgSim/Framework/Behavior.h"
24 
25 
26 namespace SurgSim
27 {
28 namespace Framework
29 {
30 
34 {
35 public:
36 
39  explicit TransferPropertiesBehavior(const std::string& name);
40 
43 
54  bool connect(
55  std::shared_ptr<SurgSim::Framework::Accessible> sourceAccessible,
56  const std::string& sourcePropertyName,
57  std::shared_ptr<SurgSim::Framework::Accessible> tagetAccessible,
58  const std::string& targetPropertyName);
59 
68  bool connect(const Property& source, const Property& target);
69 
73  void setTargetManagerType(int managerType);
74 
75  int getTargetManagerType() const override;
76 
77  void update(double dt) override;
78 
79 private:
80 
83  bool doInitialize() override;
84  bool doWakeUp() override;
86 
88  typedef std::pair<Property, Property> Connection;
89 
91  std::vector<Connection> m_connections;
92 
94  boost::mutex m_incomingMutex;
95 
97  std::vector<Connection> m_incomingConnections;
98 
100  int m_targetManager;
101 };
102 
103 }
104 }
105 
106 #endif
Wraps glewInit() to separate the glew opengl definitions from the osg opengl definitions only imgui n...
Definition: AddRandomSphereBehavior.cpp:36
TransferPropertiesBehavior(const std::string &name)
Constructor.
Definition: TransferPropertiesBehavior.cpp:26
Public struct to pair an accessible with its appropriate property.
Definition: Accessible.h:179
int getTargetManagerType() const override
Specifies which manger will handle this behavior.
Definition: TransferPropertiesBehavior.cpp:121
virtual ~TransferPropertiesBehavior()
Destructor.
Definition: TransferPropertiesBehavior.cpp:33
Behaviors perform actions.
Definition: Behavior.h:40
Behavior to copy properties between instances of Accessible.
Definition: TransferPropertiesBehavior.h:33
void update(double dt) override
Update the behavior.
Definition: TransferPropertiesBehavior.cpp:38
bool connect(std::shared_ptr< SurgSim::Framework::Accessible > sourceAccessible, const std::string &sourcePropertyName, std::shared_ptr< SurgSim::Framework::Accessible > tagetAccessible, const std::string &targetPropertyName)
Connect two properties of two instances of accessible, once connected the value of the property will ...
Definition: TransferPropertiesBehavior.cpp:57
void setTargetManagerType(int managerType)
Sets the type of manager that this behavior should use, this cannot be done after initialization has ...
Definition: TransferPropertiesBehavior.cpp:114