zworld-em/Plugins/UnLua/Source/UnLuaEditor/Public/UnLuaIntelliSenseGenerator.h

67 lines
2.0 KiB
C
Raw Normal View History

2025-05-11 22:07:21 +08:00
// Tencent is pleased to support the open source community by making UnLua available.
//
// Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
//
// Licensed under the MIT License (the "License");
// you may not use this file except in compliance with the License. You may obtain a copy of the License at
//
// http://opensource.org/licenses/MIT
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and limitations under the License.
#pragma once
#include "CoreUObject.h"
class UBlueprint;
class UWidgetBlueprint;
class FUnLuaIntelliSenseGenerator
{
public:
FUnLuaIntelliSenseGenerator()
: bInitialized(false)
{
}
static TSharedRef<FUnLuaIntelliSenseGenerator> Get();
// Update all Blueprints from command
void UpdateAll();
void Initialize();
private:
static TSharedPtr<FUnLuaIntelliSenseGenerator> Singleton;
static bool IsBlueprint(const FAssetData& AssetData);
static bool ShouldExport(const FAssetData& AssetData, bool bLoad = false);
void Export(const UBlueprint* Blueprint);
void Export(const UField* Field);
void ExportUE(const TArray<const UField*> Types);
void ExportUnLua();
void CollectTypes(TArray<const UField*> &Types);
// File helper
void SaveFile(const FString& ModuleName, const FString& FileName, const FString& GeneratedFileContent);
void DeleteFile(const FString& ModuleName, const FString& FileName);
// Handle asset event
void OnAssetAdded(const FAssetData& AssetData);
void OnAssetRemoved(const FAssetData& AssetData);
void OnAssetRenamed(const FAssetData& AssetData, const FString& OldPath);
void OnAssetUpdated(const FAssetData& AssetData);
FString OutputDir;
bool bInitialized;
};