mirror of
https://github.com/Heretek-AI/GDevelop.git
synced 2026-07-20 14:44:19 -04:00
a8559bfbbc
* Update all CMakeLists of extensions to use clang-format * Run clang-format on all Extensions * Update GDCore CMakeLists.txt to add clang-format * Run clang-format on GDCore files * Update GDJS and GDCpp CMakeLists.txt to add clang-format * Run clang-format on GDCpp and GDJS files
62 lines
1.8 KiB
C++
62 lines
1.8 KiB
C++
/**
|
|
|
|
GDevelop - LinkedObjects Extension
|
|
Copyright (c) 2011-2016 Florian Rival (Florian.Rival@gmail.com)
|
|
This project is released under the MIT License.
|
|
*/
|
|
|
|
#include "LinkedObjectsTools.h"
|
|
#include <iostream>
|
|
#include <string>
|
|
|
|
#include <memory>
|
|
#include "GDCpp/Runtime/RuntimeObject.h"
|
|
#include "GDCpp/Runtime/RuntimeObjectsListsTools.h"
|
|
#include "GDCpp/Runtime/RuntimeScene.h"
|
|
#include "ObjectsLinksManager.h"
|
|
|
|
using namespace std;
|
|
|
|
namespace GDpriv {
|
|
namespace LinkedObjects {
|
|
|
|
std::map<RuntimeScene*, ObjectsLinksManager> ObjectsLinksManager::managers;
|
|
|
|
bool GD_EXTENSION_API PickObjectsLinkedTo(
|
|
RuntimeScene& scene,
|
|
std::map<gd::String, std::vector<RuntimeObject*>*> pickedObjectsLists,
|
|
RuntimeObject* object) {
|
|
if (!object) return false;
|
|
|
|
std::vector<RuntimeObject*> linkedObjects =
|
|
ObjectsLinksManager::managers[&scene].GetObjectsLinkedWith(object);
|
|
return PickObjectsIf(
|
|
pickedObjectsLists, false, [&linkedObjects](RuntimeObject* obj) {
|
|
return std::find(linkedObjects.begin(), linkedObjects.end(), obj) !=
|
|
linkedObjects.end();
|
|
});
|
|
}
|
|
|
|
void GD_EXTENSION_API LinkObjects(RuntimeScene& scene,
|
|
RuntimeObject* a,
|
|
RuntimeObject* b) {
|
|
if (!a || !b) return;
|
|
ObjectsLinksManager::managers[&scene].LinkObjects(a, b);
|
|
}
|
|
|
|
void GD_EXTENSION_API RemoveLinkBetween(RuntimeScene& scene,
|
|
RuntimeObject* a,
|
|
RuntimeObject* b) {
|
|
if (!a || !b) return;
|
|
ObjectsLinksManager::managers[&scene].RemoveLinkBetween(a, b);
|
|
}
|
|
|
|
void GD_EXTENSION_API RemoveAllLinksOf(RuntimeScene& scene,
|
|
RuntimeObject* object) {
|
|
if (!object) return;
|
|
ObjectsLinksManager::managers[&scene].RemoveAllLinksOf(object);
|
|
}
|
|
|
|
} // namespace LinkedObjects
|
|
} // namespace GDpriv
|