MCPcopy Create free account
hub / github.com/FlaxEngine/FlaxEngine / Do

Method Do

Source/Engine/Level/Level.cpp:607–733  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

605 }
606
607 SceneResult Do(Context& context) override
608 {
609 // Reloading scripts workflow:
610 // - save scenes (to temporary files)
611 // - unload scenes
612 // - unload user assemblies
613 // - load user assemblies
614 // - load scenes (from temporary files)
615 // Note: we don't want to override original scene files
616
617 PROFILE_CPU_NAMED("Level.ReloadScripts");
618 PROFILE_MEM(Level);
619 LOG(Info, "Scripts reloading start");
620 const auto startTime = DateTime::NowUTC();
621
622 // Cache data
623 struct SceneData
624 {
625 Guid ID;
626 String Name;
627 rapidjson_flax::StringBuffer Data;
628
629 SceneData() = default;
630
631 SceneData(const SceneData& other)
632 {
633 CRASH;
634 }
635
636 const SceneData& operator=(SceneData&) const
637 {
638 CRASH;
639 return *this;
640 }
641
642 void Init(Scene* scene)
643 {
644 ID = scene->GetID();
645 Name = scene->GetName();
646 }
647 };
648 const int32 scenesCount = Level::Scenes.Count();
649 Array<SceneData> scenes;
650 scenes.Resize(scenesCount);
651 for (int32 i = 0; i < scenesCount; i++)
652 scenes[i].Init(Level::Scenes[i]);
653
654 // Fire event
655 Level::ScriptsReloadStart();
656
657 // Save scenes (to memory)
658 for (int32 i = 0; i < scenesCount; i++)
659 {
660 const auto scene = Level::Scenes[i];
661 LOG(Info, "Caching scene {0}", scenes[i].Name);
662
663 // Serialize to json
664 if (saveScene(scene, scenes[i].Data, false))

Callers

nothing calls this directly

Calls 15

FindScriptingTypeFunction · 0.85
NewObjectFunction · 0.85
LoadFromBytesFunction · 0.85
GetIDMethod · 0.80
GetParseErrorMethod · 0.80
StringClass · 0.50
CountMethod · 0.45
ResizeMethod · 0.45
InitMethod · 0.45
HasItemsMethod · 0.45
ClearMethod · 0.45
ParseMethod · 0.45

Tested by

no test coverage detected