RigsofRods
Soft-body Physics Simulation
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
TerrainEditor.h
Go to the documentation of this file.
1 /*
2  This source file is part of Rigs of Rods
3  Copyright 2005-2012 Pierre-Michel Ricordel
4  Copyright 2007-2012 Thomas Fischer
5  Copyright 2013-2020 Petr Ohlidal
6 
7  For more information, see http://www.rigsofrods.org/
8 
9  Rigs of Rods is free software: you can redistribute it and/or modify
10  it under the terms of the GNU General Public License version 3, as
11  published by the Free Software Foundation.
12 
13  Rigs of Rods is distributed in the hope that it will be useful,
14  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  GNU General Public License for more details.
17 
18  You should have received a copy of the GNU General Public License
19  along with Rigs of Rods. If not, see <http://www.gnu.org/licenses/>.
20 */
21 
22 #pragma once
23 
24 #include "Application.h"
25 #include "RefCountingObject.h"
26 
27 #include <string>
28 
29 namespace RoR {
30 
33 
35 class TerrainEditorObject : public RefCountingObject<TerrainEditorObject>
36 {
37 public:
38  // Variables are not accessible from AngelScript
39  std::string name;
40  std::string instance_name;
41  std::string type;
42  Ogre::Vector3 position = Ogre::Vector3::ZERO;
43  Ogre::Vector3 rotation = Ogre::Vector3::ZERO;
44  Ogre::Vector3 initial_position = Ogre::Vector3::ZERO;
45  Ogre::Vector3 initial_rotation = Ogre::Vector3::ZERO;
46  int tobj_cache_id = -1;
47  std::string tobj_comments;
48  // ~ only for static objects:
49  Ogre::SceneNode* static_object_node = nullptr;
50  std::vector<int> static_collision_boxes;
51  std::vector<int> static_collision_tris;
52  bool enable_collisions = true;
53  int script_handler = -1;
54  // ~ only for preloaded actors:
57 
58  // Functions are exported to AngelScript
59  Ogre::Vector3 const& getPosition();
60  Ogre::Vector3 const& getRotation();
61  void setPosition(Ogre::Vector3 const& pos);
62  void setRotation(Ogre::Vector3 const& rot);
63  std::string const& getName();
64  std::string const& getInstanceName();
65  std::string const& getType();
66  // ~ only for preloaded actors:
70  void setActorInstanceId(ActorInstanceID_t instance_id);
71 };
72 
80 {
81 public:
82  void UpdateInputEvents(float dt);
83  void WriteOutputFile();
84  void ClearSelectedObject();
88 
89  static const TerrainEditorObjectPtr TERRAINEDITOROBJECTPTR_NULL; // Dummy value to be returned as const reference.
90 
91 private:
92  bool m_object_tracking = true;
93  int m_rotation_axis = 1;
94  std::string m_last_object_name;
95 
96  // Use Get/Set/Clear`SelectedObject()` functions.
98 };
99 
101 
102 } // namespace RoR
RoR::TerrainEditorObject::getPosition
Ogre::Vector3 const & getPosition()
Definition: TerrainEditor.cpp:371
RoR::TerrainEditor::UpdateInputEvents
void UpdateInputEvents(float dt)
Definition: TerrainEditor.cpp:43
RoR::TerrainEditor::m_object_tracking
bool m_object_tracking
Definition: TerrainEditor.h:92
RoR::TerrainEditor::SetSelectedObjectByID
void SetSelectedObjectByID(TerrainEditorObjectID_t id)
Definition: TerrainEditor.cpp:311
RoR::TerrainEditorObject::name
std::string name
Definition: TerrainEditor.h:39
RoR::TerrainEditorObject::setPosition
void setPosition(Ogre::Vector3 const &pos)
Definition: TerrainEditor.cpp:406
RoR::TerrainEditorObject::getRotation
Ogre::Vector3 const & getRotation()
Definition: TerrainEditor.cpp:376
RoR::TERRAINEDITOROBJECTID_INVALID
static const TerrainEditorObjectID_t TERRAINEDITOROBJECTID_INVALID
Definition: ForwardDeclarations.h:91
RoR::TerrainEditorObject::rotation
Ogre::Vector3 rotation
Definition: TerrainEditor.h:43
RoR::TObjSpecialObject
TObjSpecialObject
Definition: Application.h:351
RoR::TerrainEditor::TERRAINEDITOROBJECTPTR_NULL
static const TerrainEditorObjectPtr TERRAINEDITOROBJECTPTR_NULL
Definition: TerrainEditor.h:89
RoR::TerrainEditorObject::initial_rotation
Ogre::Vector3 initial_rotation
Definition: TerrainEditor.h:45
RefCountingObjectPtr
Definition: RefCountingObjectPtr.h:24
RoR::TerrainEditorObject::tobj_cache_id
int tobj_cache_id
Definition: TerrainEditor.h:46
RoR::TerrainEditorObject::getType
std::string const & getType()
Definition: TerrainEditor.cpp:443
RoR::TerrainEditor::m_rotation_axis
int m_rotation_axis
0=X, 1=Y, 2=Z
Definition: TerrainEditor.h:93
RoR::TerrainEditorObject::special_object_type
TObjSpecialObject special_object_type
Definition: TerrainEditor.h:55
RoR::ActorInstanceID_t
int ActorInstanceID_t
Unique sequentially generated ID of an actor in session. Use ActorManager::GetActorById()
Definition: ForwardDeclarations.h:38
RoR::TerrainEditorObject::static_object_node
Ogre::SceneNode * static_object_node
Definition: TerrainEditor.h:49
RoR::TerrainEditor::ClearSelectedObject
void ClearSelectedObject()
Definition: TerrainEditor.cpp:306
RoR::TerrainEditorObject::static_collision_boxes
std::vector< int > static_collision_boxes
Definition: TerrainEditor.h:50
RoR::TerrainEditor::m_last_object_name
std::string m_last_object_name
Definition: TerrainEditor.h:94
RoR::TerrainEditorObject::getActorInstanceId
ActorInstanceID_t getActorInstanceId()
Definition: TerrainEditor.cpp:458
RoR::ACTORINSTANCEID_INVALID
static const ActorInstanceID_t ACTORINSTANCEID_INVALID
Definition: ForwardDeclarations.h:39
RoR::TerrainEditor::FetchSelectedObject
const TerrainEditorObjectPtr & FetchSelectedObject()
Definition: TerrainEditor.cpp:349
RoR::TerrainEditorObject::initial_position
Ogre::Vector3 initial_position
Definition: TerrainEditor.h:44
RefCountingObject.h
Application.h
Central state/object manager and communications hub.
RoR::TerrainEditorObject::enable_collisions
bool enable_collisions
Definition: TerrainEditor.h:52
RoR::TerrainEditorObject::instance_name
std::string instance_name
Definition: TerrainEditor.h:40
RoR::TerrainEditor::GetSelectedObjectID
TerrainEditorObjectID_t GetSelectedObjectID() const
Definition: TerrainEditor.cpp:344
RoR::TerrainEditor::WriteOutputFile
void WriteOutputFile()
Definition: TerrainEditor.cpp:234
RoR::TerrainEditorObject::position
Ogre::Vector3 position
Definition: TerrainEditor.h:42
RoR::TerrainEditorObject::actor_instance_id
ActorInstanceID_t actor_instance_id
Definition: TerrainEditor.h:56
RoR::TerrainEditorObject::getInstanceName
std::string const & getInstanceName()
Definition: TerrainEditor.cpp:438
RoR::TerrainEditorObject::type
std::string type
Accepts "-" as placeholder, otherwise a surveymap icon is registered.
Definition: TerrainEditor.h:41
RoR::TerrainEditorObjectID_t
int TerrainEditorObjectID_t
Offset into RoR::TerrainObjectManager::m_editor_objects, use RoR::TERRAINEDITOROBJECTID_INVALID as em...
Definition: ForwardDeclarations.h:90
RoR::TerrainEditorObject::getSpecialObjectType
TObjSpecialObject getSpecialObjectType()
Definition: TerrainEditor.cpp:448
RoR::TerrainEditorObject::getName
std::string const & getName()
Definition: TerrainEditor.cpp:433
RoR::TerrainEditorObject::static_collision_tris
std::vector< int > static_collision_tris
Definition: TerrainEditor.h:51
RoR::TerrainEditorObject::tobj_comments
std::string tobj_comments
Definition: TerrainEditor.h:47
RoR::TObjSpecialObject::NONE
@ NONE
RoR::TerrainEditorObject::setRotation
void setRotation(Ogre::Vector3 const &rot)
Definition: TerrainEditor.cpp:419
RefCountingObject
Self reference-counting objects, as requred by AngelScript garbage collector.
Definition: RefCountingObject.h:26
RoR::TerrainEditor::m_selected_object_id
TerrainEditorObjectID_t m_selected_object_id
Definition: TerrainEditor.h:97
RoR::TerrainEditorObject::setActorInstanceId
void setActorInstanceId(ActorInstanceID_t instance_id)
Definition: TerrainEditor.cpp:463
RoR::TerrainEditorObject
Represents an instance of static terrain object (.ODEF file format)
Definition: TerrainEditor.h:35
RoR
Definition: AppContext.h:36
RoR::TerrainEditor
Minimalist editor mode; orig.
Definition: TerrainEditor.h:79
RoR::TerrainEditorObject::script_handler
int script_handler
Definition: TerrainEditor.h:53
RoR::TerrainEditorObject::setSpecialObjectType
void setSpecialObjectType(TObjSpecialObject type)
Definition: TerrainEditor.cpp:453