GDevelop Core
Core library for developing platforms and tools compatible with GDevelop.
ObjectRefactorer.h
1 /*
2  * GDevelop Core
3  * Copyright 2008-2016 Florian Rival ([email protected]). All rights
4  * reserved. This project is released under the MIT License.
5  */
6 #pragma once
7 
8 #include "GDCore/Project/VariablesContainer.h"
9 
10 namespace gd {
11 class EventsBasedObject;
12 class InitialInstancesContainer;
13 class Object;
14 class ObjectsContainersList;
15 class ObjectsContainer;
16 class ObjectGroup;
17 class Platform;
18 class VariablesContainer;
19 struct VariablesChangeset;
20 } // namespace gd
21 
22 namespace gd {
23 
29 class GD_CORE_API ObjectRefactorer {
30 public:
40  static void
41  FillAnyVariableBetweenObjects(gd::ObjectsContainer &globalObjectsContainer,
42  gd::ObjectsContainer &objectsContainer,
43  const gd::ObjectGroup &objectGroup);
44 
49  static gd::VariablesContainer MergeVariableContainers(
50  const gd::ObjectsContainersList &objectsContainersList,
51  const gd::ObjectGroup &objectGroup);
52 
61  static void FillMissingGroupVariablesToObjects(
62  gd::ObjectsContainer &globalObjectsContainer,
63  gd::ObjectsContainer &objectsContainer,
64  const gd::ObjectGroup &objectGroup,
65  const gd::SerializerElement &originalSerializedVariables);
66 
71  static void FillMissingGroupVariablesToObject(
72  gd::Object &object,
73  const gd::VariablesContainer &groupVariablesContainer);
74 
79  static void FillMissingGroupBehaviorToObject(
80  const gd::Platform& platform,
81  gd::ObjectsContainer &globalObjectsContainer,
82  gd::ObjectsContainer &objectsContainer, gd::Object &object,
83  const gd::ObjectGroup &objectGroup, const gd::String &behaviorName);
84 
89  static void
90  ApplyChangesToObjects(gd::ObjectsContainer &globalObjectsContainers,
91  gd::ObjectsContainer &objectsContainers,
92  const gd::VariablesContainer &groupVariablesContainer,
93  const gd::ObjectGroup &objectGroup,
94  const gd::VariablesChangeset &changeset);
95 
99  static void ApplyChangesToObjectInstances(
100  gd::VariablesContainer &objectVariablesContainer,
101  gd::InitialInstancesContainer &initialInstancesContainer,
102  const gd::String &objectName, const gd::VariablesChangeset &changeset);
103 
108  static void ApplyChangesToVariants(gd::EventsBasedObject &eventsBasedObject,
109  const gd::String &objectName,
110  const gd::VariablesChangeset &changeset);
111 };
112 
113 } // namespace gd
Represents an object that is implemented with events.
Definition: EventsBasedObject.h:32
Defines a container of gd::InitialInstances.
Definition: InitialInstancesContainer.h:39
Represents an object group.
Definition: ObjectGroup.h:28
Represent an object of a platform.
Definition: Object.h:39
Definition: ObjectRefactorer.h:29
Used as a base class for classes that will own objects (see gd::Object).
Definition: ObjectsContainer.h:38
A list of objects containers, useful for accessing objects in a scoped way, along with methods to acc...
Definition: ObjectsContainersList.h:29
Base class for implementing a platform.
Definition: Platform.h:42
A generic container that can represent a value ( containing a string, double, bool or int),...
Definition: SerializerElement.h:37
String represents an UTF8 encoded string.
Definition: String.h:33
Class defining a container for gd::Variable.
Definition: VariablesContainer.h:29
Definition: CommonTools.h:24
Definition: WholeProjectRefactorer.h:47