mirror of
https://github.com/4ian/GDevelop.git
synced 2025-10-15 10:19:04 +00:00

* Still to do: * Properly handle effects (disable 3D effects) for layers * Handle hot reloading properly * Avoid duplicating the configuration of the custom object inside each object created from it. Instead, only store the modified values. * Add a "Extract as a custom object ("prefab")" when selecting instances in a scene. * Add a dialog to give choice between 2D or 3D object when creating one. * Make sure "behavior shared data" are properly handled (physics, pathfinding...) * Check if we need to give an expression to translate coordinates from the parent to the local custom object. * Ensure a deleted custom object does not break the editor Co-authored-by: Davy Hélard <davy.helard@gmail.com>
42 lines
1.4 KiB
C++
42 lines
1.4 KiB
C++
/*
|
|
* GDevelop JS Platform
|
|
* Copyright 2008-2023 Florian Rival (Florian.Rival@gmail.com). All rights
|
|
* reserved. This project is released under the MIT License.
|
|
*/
|
|
#include "EventsBasedObjectDependencyFinder.h"
|
|
|
|
#include "GDCore/Project/EventsBasedObject.h"
|
|
#include "GDCore/Project/Object.h"
|
|
#include "GDCore/Project/Project.h"
|
|
|
|
namespace gd {
|
|
bool EventsBasedObjectDependencyFinder::IsDependentFromEventsBasedObject(
|
|
const gd::Project &project, const gd::EventsBasedObject &eventsBasedObject,
|
|
const gd::EventsBasedObject &dependency) {
|
|
return gd::EventsBasedObjectDependencyFinder::
|
|
IsDependentFromEventsBasedObject(project, eventsBasedObject, dependency,
|
|
0);
|
|
}
|
|
bool EventsBasedObjectDependencyFinder::IsDependentFromEventsBasedObject(
|
|
const gd::Project &project, const gd::EventsBasedObject &eventsBasedObject,
|
|
const gd::EventsBasedObject &dependency, int depth) {
|
|
|
|
if (&eventsBasedObject == &dependency) {
|
|
return true;
|
|
}
|
|
if (depth > 200) {
|
|
return false;
|
|
}
|
|
for (auto &object : eventsBasedObject.GetObjects().GetObjects()) {
|
|
const gd::String &objectType = object->GetType();
|
|
if (project.HasEventsBasedObject(objectType) &&
|
|
gd::EventsBasedObjectDependencyFinder::IsDependentFromEventsBasedObject(
|
|
project, project.GetEventsBasedObject(objectType), dependency,
|
|
depth + 1)) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
} // namespace gd
|