Add **Behavior Tree** asset type and editing

This commit is contained in:
Wojtek Figat
2023-08-16 13:26:33 +02:00
parent f8dc59d670
commit 18b47257fd
23 changed files with 1417 additions and 3 deletions

View File

@@ -33,6 +33,7 @@
#include "CreateAnimationGraphFunction.h"
#include "CreateVisualScript.h"
#include "CreateAnimation.h"
#include "CreateBehaviorTree.h"
#include "CreateJson.h"
// Tags used to detect asset creation mode
@@ -54,6 +55,7 @@ const String AssetsImportingManager::CreateMaterialFunctionTag(TEXT("MaterialFun
const String AssetsImportingManager::CreateParticleEmitterFunctionTag(TEXT("ParticleEmitterFunction"));
const String AssetsImportingManager::CreateAnimationGraphFunctionTag(TEXT("AnimationGraphFunction"));
const String AssetsImportingManager::CreateAnimationTag(TEXT("Animation"));
const String AssetsImportingManager::CreateBehaviorTreeTag(TEXT("BehaviorTree"));
const String AssetsImportingManager::CreateVisualScriptTag(TEXT("VisualScript"));
class AssetsImportingManagerService : public EngineService
@@ -485,6 +487,7 @@ bool AssetsImportingManagerService::Init()
{ AssetsImportingManager::CreateParticleEmitterFunctionTag, CreateParticleEmitterFunction::Create },
{ AssetsImportingManager::CreateAnimationGraphFunctionTag, CreateAnimationGraphFunction::Create },
{ AssetsImportingManager::CreateAnimationTag, CreateAnimation::Create },
{ AssetsImportingManager::CreateBehaviorTreeTag, CreateBehaviorTree::Create },
{ AssetsImportingManager::CreateVisualScriptTag, CreateVisualScript::Create },
};
AssetsImportingManager::Creators.Add(InBuildCreators, ARRAY_COUNT(InBuildCreators));

View File

@@ -118,6 +118,11 @@ public:
/// </summary>
static const String CreateAnimationTag;
/// <summary>
/// The create Behavior Tree asset tag.
/// </summary>
static const String CreateBehaviorTreeTag;
/// <summary>
/// The create visual script asset tag.
/// </summary>

View File

@@ -0,0 +1,36 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
#pragma once
#include "Types.h"
#if COMPILE_WITH_ASSETS_IMPORTER
#include "Engine/AI/BehaviorTree.h"
/// <summary>
/// Creating animation utility
/// </summary>
class CreateBehaviorTree
{
public:
static CreateAssetResult Create(CreateAssetContext& context)
{
// Base
IMPORT_SETUP(BehaviorTree, 1);
// Chunk 0 - Visject Surface
if (context.AllocateChunk(0))
return CreateAssetResult::CannotAllocateChunk;
{
const BehaviorTreeGraph graph;
MemoryWriteStream stream(64);
graph.Save(&stream, true);
context.Data.Header.Chunks[0]->Data.Copy(stream.GetHandle(), stream.GetPosition());
}
return CreateAssetResult::Ok;
}
};
#endif