first commit

This commit is contained in:
rayd1o
2026-03-05 11:46:58 +08:00
commit e7033775d8
20657 changed files with 1988940 additions and 0 deletions

126
unreal/setup.sh Normal file
View File

@@ -0,0 +1,126 @@
#!/bin/bash
# UE5 项目设置脚本
# 此脚本用于初始化 UE5 项目的 Cesium 配置
set -e
echo "=========================================="
echo "智能星球计划 - UE5 项目初始化"
echo "=========================================="
echo ""
# 检查是否安装了 UE5
if ! command -v ue5 &> /dev/null && ! command -v UnrealEditor &> /dev/null; then
echo "⚠️ 未检测到 UE5 安装"
echo "请从 Epic Games Launcher 安装 Unreal Engine 5.3+"
echo ""
fi
# 创建配置文件
CONFIG_FILE="Config/PlanetConfig.ini"
if [ ! -f "$CONFIG_FILE" ]; then
echo "📝 创建配置文件..."
cat > "$CONFIG_FILE" << 'EOF'
# UE5 项目配置文件
# Cesium ion 访问令牌
# Cesium ion Token
# 请从 https://cesium.com/ion/ 获取你的 token
CESIUM_ION_TOKEN=YOUR_TOKEN_HERE
# Cesium ion 默认服务器
CESIUM_ION_DEFAULT_SERVER=https://ion.cesium.com
# 后端 API 地址
BACKEND_API_URL=http://localhost:8000
BACKEND_WS_URL=ws://localhost:8000
EOF
echo "✅ 已创建 $CONFIG_FILE"
echo ""
else
echo "✅ 配置文件已存在"
fi
# 创建蓝图占位符
echo ""
echo "📦 创建蓝图脚本..."
# BP_GlobeController.py (占位符)
cat > "Source/PlanetAPI/Private/PlanetAPIClient.cpp" << 'CPP'
// Planet API Client
// 用于连接后端 WebSocket 服务
#include "PlanetAPIClient.h"
#include "IWebSocket.h"
#include "WebSocketsModule.h"
void UPlanetAPIClient::Connect(FString URL)
{
if (!FModuleManager::Get().IsModuleLoaded("WebSockets"))
{
FModuleManager::Get().LoadModule("WebSockets");
}
Socket = FWebSocketsModule::Get().CreateWebSocket(URL);
Socket->OnConnected().AddLambda([](){
UE_LOG(LogTemp, Log, TEXT("WebSocket Connected!"));
});
Socket->OnMessage().AddLambda([this](FString Message){
HandleMessage(Message);
});
Socket->OnClosed().AddLambda([](int32 StatusCode, const FString& Reason, bool bWasClean){
UE_LOG(LogTemp, Warning, TEXT("WebSocket Closed: %d - %s"), StatusCode, *Reason);
});
Socket->Connect();
}
void UPlanetAPIClient::Disconnect()
{
if (Socket.IsValid())
{
Socket->Close();
}
}
void UPlanetAPIClient::HandleMessage(FString Message)
{
// 解析 JSON 消息
TSharedPtr<FJsonObject> JsonParsed;
TSharedRef<TJsonReader<>> Reader = TJsonReaderFactory<>::Create(Message);
if (FJsonSerializer::Deserialize(Reader, JsonParsed) && JsonParsed.IsValid())
{
FString Type = JsonParsed->GetStringField("type");
if (Type == "update")
{
OnDataReceived.Broadcast(JsonParsed);
}
else if (Type == "alarm")
{
OnAlarmReceived.Broadcast(JsonParsed);
}
}
}
CPP
echo "✅ 已创建 PlanetAPIClient.cpp"
echo ""
echo "=========================================="
echo "✅ UE5 项目初始化完成!"
echo "=========================================="
echo ""
echo "📋 下一步操作:"
echo "1. 打开 Unreal Engine 5"
echo "2. 打开项目目录中的 Planet.uproject"
echo "3. 从 Marketplace 安装 Cesium for Unreal 插件"
echo "4. 在项目设置中配置 Cesium ion Token"
echo "5. 开始开发蓝图和可视化组件"
echo ""
echo "📖 详细文档请查看docs/ue5_development_plan.md"
echo ""