Add **Nested Animations** for compositing animation clips

This commit is contained in:
Wojtek Figat
2022-07-31 15:53:09 +02:00
parent 3a39dad30f
commit 3b52914416
15 changed files with 583 additions and 186 deletions

View File

@@ -31,6 +31,7 @@
#include "CreateParticleEmitterFunction.h"
#include "CreateAnimationGraphFunction.h"
#include "CreateVisualScript.h"
#include "CreateAnimation.h"
#include "CreateJson.h"
// Tags used to detect asset creation mode
@@ -51,6 +52,7 @@ const String AssetsImportingManager::CreateSceneAnimationTag(TEXT("SceneAnimatio
const String AssetsImportingManager::CreateMaterialFunctionTag(TEXT("MaterialFunction"));
const String AssetsImportingManager::CreateParticleEmitterFunctionTag(TEXT("ParticleEmitterFunction"));
const String AssetsImportingManager::CreateAnimationGraphFunctionTag(TEXT("AnimationGraphFunction"));
const String AssetsImportingManager::CreateAnimationTag(TEXT("Animation"));
const String AssetsImportingManager::CreateVisualScriptTag(TEXT("VisualScript"));
class AssetsImportingManagerService : public EngineService
@@ -467,6 +469,7 @@ bool AssetsImportingManagerService::Init()
{ AssetsImportingManager::CreateMaterialFunctionTag, CreateMaterialFunction::Create },
{ AssetsImportingManager::CreateParticleEmitterFunctionTag, CreateParticleEmitterFunction::Create },
{ AssetsImportingManager::CreateAnimationGraphFunctionTag, CreateAnimationGraphFunction::Create },
{ AssetsImportingManager::CreateAnimationTag, CreateAnimation::Create },
{ AssetsImportingManager::CreateVisualScriptTag, CreateVisualScript::Create },
};
AssetsImportingManager::Creators.Add(InBuildCreators, ARRAY_COUNT(InBuildCreators));

View File

@@ -108,6 +108,11 @@ public:
/// </summary>
static const String CreateAnimationGraphFunctionTag;
/// <summary>
/// The create animation asset tag.
/// </summary>
static const String CreateAnimationTag;
/// <summary>
/// The create visual script asset tag.
/// </summary>

View File

@@ -0,0 +1,52 @@
// Copyright (c) 2012-2022 Wojciech Figat. All rights reserved.
#pragma once
#include "Types.h"
#if COMPILE_WITH_ASSETS_IMPORTER
#include "Engine/Content/Assets/Animation.h"
#include "Engine/Serialization/MemoryWriteStream.h"
/// <summary>
/// Creating animation utility
/// </summary>
class CreateAnimation
{
public:
static CreateAssetResult Create(CreateAssetContext& context)
{
// Base
IMPORT_SETUP(Animation, 1);
// Serialize empty animation data to the stream
MemoryWriteStream stream(256);
{
// Info
stream.WriteInt32(102);
stream.WriteDouble(5 * 60.0);
stream.WriteDouble(60.0);
stream.WriteBool(false);
stream.WriteString(StringView::Empty, 13);
// Animation channels
stream.WriteInt32(0);
// Animation events
stream.WriteInt32(0);
// Nested animations
stream.WriteInt32(0);
}
// Copy to asset chunk
if (context.AllocateChunk(0))
return CreateAssetResult::CannotAllocateChunk;
context.Data.Header.Chunks[0]->Data.Copy(stream.GetHandle(), stream.GetPosition());
return CreateAssetResult::Ok;
}
};
#endif