ezEngine  Milestone 9
Todo List
Member ezApplicationFileSystemConfig::Load (const char *szPath=":project/DataDirectories.ddl")
Temp fix for backwards compatibility
Class ezArrayMapBase< KEY, VALUE >::Pair
Custom comparer
Member ezAssetDocument::InternalAfterSaveDocument () override
Should only be done for platform agnostic assets
Member ezAssetDocument::SaveThumbnail (const ezImage &img, const ezAssetFileHeader &header) const
A conversion to B8G8R8X8_UNORM currently fails
Member ezChunkStreamWriter::EndChunk ()
Write Chunk CRC
Member ezColorGradient::EvaluateAlpha (double x, ezUInt8 &alpha) const
Use a midpoint interpolation
Member ezColorGradient::EvaluateColor (double x, ezColor &rgb) const
Use a midpoint interpolation
Member ezColorGradient::EvaluateIntensity (double x, float &intensity) const
Use a midpoint interpolation
Member ezColorGradientAssetData::TickFromTime (ezTime time)
Make this a property ?
Member ezCommandHistory::MergeLastTwoTransactions ()
This would not be necessary, if hierarchical transactions would not crash
Member ezCommandHistory::StartTransaction (const ezFormatString &sDisplayString)
Allow to have a limited transaction history and clean up transactions after a while
Member ezCurve1D::CreateLinearApproximation (double fMaxError=0.01, ezUInt8 uiMaxSubDivs=8)
Since we do this, we actually don't need the linear approximation anymore and could just evaluate the full curve
Member ezCurve1DResourceDescriptor::Load (ezStreamReader &stream)
We can do this on load, or somehow ensure this is always already correctly saved
Member ezDataDirectory::FileserveType::ExistsFile (const char *szFile, bool bOneSpecificDataDir) override
Not sure whether this needs to be done here
Member ezDdsFileFormat::WriteImage (ezStreamWriter &stream, const ezImageView &image, ezLogInterface *pLog, const char *szFileExtension) const override
sub-image size
Member ezDecalAssetDocumentGenerator::GetImportModes (const char *szParentDirRelativePath, ezHybridArray< ezAssetDocumentGenerator::Info, 4 > &out_Modes) const override
Make this configurable
Member ezDocumentAction::Execute (const ezVariant &value) override
Save as
Member ezDocumentObject::IsOnHeap () const
Christopher: This crashes when the pointer is nullptr, which appears to be possible It happened for me when duplicating (CTRL+D) 2 objects 2 times then moving them and finally undoing everything
Member ezEditAction::ezEditAction (const ezActionContext &context, const char *szName, ButtonType button)
Icon
Member ezEditorGridExtractor::Extract (const ezView &view, const ezDynamicArray< const ezGameObject *> &visibleObjects, ezExtractedRenderData &extractedRenderData) override
Are these parameters correct?
Member ezEditorShapeIconsExtractor::Extract (const ezView &view, const ezDynamicArray< const ezGameObject *> &visibleObjects, ezExtractedRenderData &extractedRenderData) override
Once we have a solution for objects that only have a shape icon we can switch this loop to use visibleObjects instead.
Member ezFileserveClient::EnsureConnected (ezTime timeout=ezTime::Seconds(-5))
Somehow abstract this away ?
Member ezFileserveClient::WaitForServerInfo (ezTime timeout=ezTime::Seconds(60.0 *5))
Abstract this somehow ?
Member ezFileSystem::ResolvePath (const char *szPath, ezStringBuilder *out_sAbsolutePath, ezStringBuilder *out_sDataDirRelativePath)

We might also need the none-redirected path as an output

We might also need the none-redirected path as an output

Member ezFmodEventComponent::SetPitch (float f)
Global pitch might better be a bus setting
Member ezGALContext::BeginStreamOut ()
Assert for streamout support
Member ezGALContext::CopyTextureReadbackResultPlatform (const ezGALTexture *pTexture, const ezArrayPtr< ezGALSystemMemoryDescription > *pData)=0
add parameters for mip level & count selection?
Member ezGALContext::Dispatch (ezUInt32 uiThreadGroupCountX, ezUInt32 uiThreadGroupCountY, ezUInt32 uiThreadGroupCountZ)
Assert for compute
Member ezGALContext::DispatchIndirect (ezGALBufferHandle hIndirectArgumentBuffer, ezUInt32 uiArgumentOffsetInBytes)

Assert for compute

Assert for indirect dispatch

Assert offset < buffer size

Assert that the buffer can be used for indirect arguments (flag in desc)

Member ezGALContext::Draw (ezUInt32 uiVertexCount, ezUInt32 uiStartVertex)
If platform indicates that non-indexed rendering is not possible bind a helper index buffer which contains continuous indices (0, 1, 2, ..)
Member ezGALContext::DrawAuto ()
Assert for draw auto support
Member ezGALContext::DrawIndexedInstanced (ezUInt32 uiIndexCountPerInstance, ezUInt32 uiInstanceCount, ezUInt32 uiStartIndex)
Assert for instancing
Member ezGALContext::DrawIndexedInstancedIndirect (ezGALBufferHandle hIndirectArgumentBuffer, ezUInt32 uiArgumentOffsetInBytes)

Assert for instancing

Assert for indirect draw

Assert offset < buffer size

Assert that the buffer can be used for indirect arguments (flag in desc)

Member ezGALContext::DrawInstanced (ezUInt32 uiVertexCountPerInstance, ezUInt32 uiInstanceCount, ezUInt32 uiStartVertex)

Assert for instancing

If platform indicates that non-indexed rendering is not possible bind a helper index buffer which contains continuous indices (0, 1, 2, ..)

Member ezGALContext::DrawInstancedIndirect (ezGALBufferHandle hIndirectArgumentBuffer, ezUInt32 uiArgumentOffsetInBytes)

Assert for instancing

Assert for indirect draw

Assert offset < buffer size

Assert that the buffer can be used for indirect arguments (flag in desc)

Member ezGALContext::SetIndexBuffer (ezGALBufferHandle hIndexBuffer)
Assert on index buffer type (if non nullptr)
Member ezGALContext::SetResourceView (ezGALShaderStage::Enum Stage, ezUInt32 uiSlot, ezGALResourceViewHandle hResourceView)
Check if the device supports the stage / the slot index
Member ezGALContext::SetShader (ezGALShaderHandle hShader)
Assert for shader capabilities (supported shader stages etc.)
Member ezGALContext::SetUnorderedAccessView (ezUInt32 uiSlot, ezGALUnorderedAccessViewHandle hUnorderedAccessView)
Check if the device supports the stage / the slot index
Member ezGALContextDX11::ReadbackTexturePlatform (const ezGALTexture *pTexture) override
Other mip levels etc?
Member ezGALContextDX11::SetConstantBufferPlatform (ezUInt32 uiSlot, const ezGALBuffer *pBuffer) override
Check if the device supports the slot index?
Member ezGALContextDX11::SetSamplerStatePlatform (ezGALShaderStage::Enum Stage, ezUInt32 uiSlot, const ezGALSamplerState *pSamplerState) override
Check if the device supports the stage / the slot index
Member ezGALDevice::CreateBuffer (const ezGALBufferCreationDescription &Description, ezArrayPtr< const ezUInt8 > pInitialData=ezArrayPtr< const ezUInt8 >())
Platform independent validation (buffer type supported)
Member ezGALDevice::CreateRenderTargetView (const ezGALRenderTargetViewCreationDescription &Description)
Platform independent validation
Member ezGALDevice::CreateSamplerState (const ezGALSamplerStateCreationDescription &Description)
Platform independent validation
Member ezGALDevice::CreateSwapChain (const ezGALSwapChainCreationDescription &Description)
Platform independent validation
Member ezGALDevice::CreateTexture (const ezGALTextureCreationDescription &Description, ezArrayPtr< ezGALSystemMemoryDescription > pInitialData=ezArrayPtr< ezGALSystemMemoryDescription >())
Platform independent validation (desc width & height < platform maximum, format, etc.)
Member ezGALDevice::CreateVertexDeclaration (const ezGALVertexDeclarationCreationDescription &Description)
Platform independent validation
Member ezGALDevice::Present (ezGALSwapChainHandle hSwapChain, bool bVSync)
Map functions to save on memcpys
Member ezGALDeviceDX11::ezGALDeviceDX11 (const ezGALDeviceCreationDescription &Description)
This shouldn't be accessible, there should be a factory instantiating the correct renderer class via RTTI for example
Member ezGALMixedRealityDeviceDX11::ezGALMixedRealityDeviceDX11 (const ezGALDeviceCreationDescription &Description)
This shouldn't be accessible, there should be a factory instantiating the correct renderer class via RTTI for example
Member ezGALResourceFormat::IsDepthFormat (ezGALResourceFormat::Enum format)
A combination of propertyflags, something like srgb, normalized, ...
Member ezGALSwapChainDX11::InitPlatform (ezGALDevice *pDevice) override

The mode switch needs to be handled (ResizeBuffers + communication with engine)

Get from MSAA value of the m_Description

Get from enumeration of available modes

Member ezGALTextureDX11::InitPlatform (ezGALDevice *pDevice, ezArrayPtr< ezGALSystemMemoryDescription > pInitialData) override
Validation if interface of corresponding texture object exists
Member ezGALVertexDeclarationDX11::InitPlatform (ezGALDevice *pDevice) override
Expose step rate?
Member ezGameApplication::FindProjectDirectory () const override
Fix this comment
Member ezGameApplication::Init_SetupDefaultResources () override
Loading Cubemap Texture
Member ezGameObjectDocument::InvalidateGlobalTransformValue (const ezDocumentObject *pObject) const
If all parents are always inserted as well, we can stop once an object is found that is not in the list
Member ezGameObjectGizmoEditTool::UpdateGizmoTransformation ()
Pivot point
Class ezGenericId< InstanceIndexBits, GenerationBits >
Document this better.
Member ezGizmoRenderer::RenderBatch (const ezRenderViewContext &renderContext, ezRenderPipelinePass *pPass, const ezRenderDataBatch &batch) override
This pattern looks like it is inefficient. Should it use the GPU pool instead somehow?
Member ezMaterialAnimComponent::SerializeComponent (ezWorldWriter &stream) const override
Somehow store the animation state (not necessary for new scenes, but for quicksaves)
Member ezMaterialAnimComponent::Update ()
IsFallbackResource ...
Member ezMaterialAssetDocument::InternalTransformAsset (const char *szTargetFile, const char *szOutputTag, const ezPlatformProfile *pAssetProfile, const ezAssetFileHeader &AssetHeader, bool bTriggeredManually) override
Rendering platform is currently hardcoded
Member ezMaterialAssetDocument::UpdateAssetDocumentInfo (ezAssetDocumentInfo *pInfo) const override
The Visual Shader node configuration files would need to be a dependency of the auto-generated shader.
Member ezMaterialResource::ezMaterialResource ()
Should be done on any thread, but currently crashes when deleting custom loaders in the resource manager
Member ezMeshResourceDescriptor::Load (ezStreamReader &stream)

Material Path (relative to mesh file)

load from file

Member ezMeshResourceDescriptor::Save (ezStreamWriter &stream)
Material Path (relative to mesh file)
Member ezOpenDdlParser::OnPrimitiveBool (ezUInt32 count, const bool *pData, bool bThisIsAll)=0
Currently not supported
Member ezParticleBehavior_ColorGradient::Process (ezUInt64 uiNumElements) override
Use level of detail to reduce the update interval further up close, with a high interval, animations appear choppy, especially when fading stuff out at the end
Member ezParticleBehavior_FadeOut::Process (ezUInt64 uiNumElements) override
Use level of detail to reduce the update interval further up close, with a high interval, animations appear choppy, especially when fading stuff out at the end
Member ezParticleBehavior_Raycast::Process (ezUInt64 uiNumElements) override
Get current element index from iterator ?
Member ezParticleComponent::SerializeComponent (ezWorldWriter &stream) const override
store effect state
Member ezParticleEmitter_OnEvent::InitializeElements (ezUInt64 uiStartIndex, ezUInt64 uiNumElements) override
whatever
Member ezParticleFinalizer_Age::Process (ezUInt64 uiNumElements) override
Get current element index from iterator ?
Member ezParticleTypeLight::CreateRequiredStreams () override
Initialize (instead of during extraction)
Member ezParticleTypePoint::ExtractTypeRenderData (const ezView &view, ezExtractedRenderData &extractedRenderData, const ezTransform &instanceTransform, ezUInt64 uiExtractedFrame) const override
Is this batch ID correct?
Member ezParticleTypeQuad::AddParticleRenderData (ezExtractedRenderData &extractedRenderData, const ezTransform &instanceTransform) const
Is this batch ID correct?
Member ezParticleTypeTrail::ExtractTypeRenderData (const ezView &view, ezExtractedRenderData &extractedRenderData, const ezTransform &instanceTransform, ezUInt64 uiExtractedFrame) const override

This loop could be done without a condition

Is this batch ID correct?

Member ezParticleTypeTrail::GetMaxParticleRadius (float fParticleSize) const override
This is a hacky guess, one would actually need to inspect the trail positions
Member ezParticleTypeTrail::m_TrailPoints64
Use a shared freelist across effects instead
Member ezParticleTypeTrail::Process (ezUInt64 uiNumElements) override
Get around the modulo
Member ezPhantomRttiManager::RegisterType (ezReflectedTypeDescriptor &desc)
Had to increase the recursion depth to allow registering phantom types that are based on actual types coming from the engine process
Member ezPhysXActions::MapMenuActions ()
Is there a way to integrate into ALL document types in a specific menu (ie. project settings)
Member ezPlugin::ReloadPlugins (bool bForceReload=false)
Set "copy dll" back to true again, when we know which plugins may be copied
Member ezProcessingStream::SetSize (ezUInt64 uiNumElements)
Allow to reuse memory from a pool ?
Member ezProjectileComponent::Update ()

Should reflect around the actual hit position

Should preserve travel distance while reflecting

Member ezPropertyAnimComponent::SerializeComponent (ezWorldWriter &stream) const override
Somehow store the animation state (not necessary for new scenes, but for quicksaves)
Member ezPxCharacterControllerComponent::Update ()
allow other gravity directions
Member ezPxCharacterProxyComponent::Move (const ezVec3 &vMotion, bool bCrouch)
support different gravity directions
Member ezPxDynamicActorComponent::AddLinearForce (const ezVec3 &vForce)
Turn these into messages ?
Member ezQtDataWidget::ezQtDataWidget (QWidget *parent=0)
Improve Data Transfer UI
Member ezQtDuplicateDlg::ezQtDuplicateDlg (QWidget *parent=nullptr)

Boundingbox helper not implemented yet (get bbox size from selection)

Grouping of duplicates not implemented yet

Member ezQtEngineViewWidget::UpdateCameraInterpolation ()
Hard coded up vector
Member ezQtReflectionWidget::ProcessTelemetry (void *pUnuseed)
should read the message handlers here
Member ezQtShortcutEditorDlg::ezQtShortcutEditorDlg (QWidget *parent)
Instead of removing &, replace it by underlined text (requires formatted text output)
Member ezRandom::DoubleMinMax (double fMinValue, double fMaxValue)
Probably not correct
Member ezRandom::DoubleVariance (double fValue, double fVariance)
Test whether this is actually correct
Member ezRandom::DoubleVarianceAroundZero (double fAbsMaxValue)
Test whether this is actually correct
Member ezRcAgentComponent::FindNavMeshPolyAt (const ezVec3 &vPosition, dtPolyRef &out_PolyRef, ezVec3 *out_vAdjustedPosition=nullptr, float fPlaneEpsilon=0.01f, float fHeightEpsilon=1.0f) const
Hard-coded filter
Member ezRcAgentComponent::HasReachedPosition (const ezVec3 &pos, float fMaxDistance) const
The comment below may not always be true
Class ezRemoteMessage
Add move semantics for ezRemoteMessage
Member ezResourceFlags::ResourceHasFallback
implement NoFileAccessRequired
Member ezRotorComponent::Update ()

Scripting integration

Scripting integration

This will probably give precision issues pretty quickly

Member ezSceneActions::MapToolbarActions ()
This works incorrectly with value 6.0f -> it places the action inside the snap category
Member ezSelectionContext::DoKeyPressEvent (QKeyEvent *e) override
Handle the current cursor (icon) across all active input contexts
Member ezShadowPool::AddPointLight (const ezPointLightComponent *pPointLight, float fScreenSpaceSize)
expose somewhere
Member ezShadowPool::AddSpotLight (const ezSpotLightComponent *pSpotLight, float fScreenSpaceSize)
expose somewhere
Member ezSimdMat4f::Invert (const ezSimdFloat &fEpsilon=ezMath::BasicType< float >::SmallEpsilon())
optimize
Member ezSimdQuat::GetRotationAxisAndAngle (ezSimdVec4f &vAxis, ezSimdFloat &angle) const
optimize
Member ezSimdQuat::SetFromAxisAndAngle (const ezSimdVec4f &vRotationAxis, const ezSimdFloat &angle)
optimize
Member ezSimdQuat::SetShortestRotation (const ezSimdVec4f &vDirFrom, const ezSimdVec4f &vDirTo)
optimize these methods if needed
Member ezSingletonRegistry::GetSingletonInstance (const char *szSingletonClassType)
Events for new/deleted singletons -> ezInspector integration
Member ezSoundBankAssetDocument::InternalTransformAsset (ezStreamWriter &stream, const char *szOutputTag, const ezPlatformProfile *pAssetProfile, const ezAssetFileHeader &AssetHeader, bool bTriggeredManually) override
For platform specific sound banks, adjust the path to point to the correct file
Member ezSurfaceResource::InteractWithSurface (ezWorld *pWorld, ezGameObjectHandle hObject, const ezVec3 &vPosition, const ezVec3 &vSurfaceNormal, const ezVec3 &vIncomingDirection, const ezTempHashedString &sInteraction, const ezUInt16 *pOverrideTeamID)
do random deviation, make sure to clamp max deviation angle
Member ezTaskSystem::WaitForTask (ezTask *pTask)
It is currently unclear whether bAllowDefaultWork should be false here as well (in which case the whole fall back mechanism could be removed)
Class ezTelemetry
document and test (and finish)
Member ezTextureCubeAssetDocumentGenerator::GetImportModes (const char *szParentDirRelativePath, ezHybridArray< ezAssetDocumentGenerator::Info, 4 > &out_Modes) const override
Make this configurable
Member ezTextureResourceLoader::OpenDataStream (const ezResource *pResource) override
A conversion to B8G8R8X8_UNORM currently fails
Member ezTextureUtils::ImageFormatToGalFormat (ezImageFormat::Enum format, bool bSRGB)
Not supported by some GPUs ?
Member ezTokenizer::GetNextLine (ezUInt32 &uiFirstToken, ezHybridArray< const ezToken *, 32 > &Tokens) const
Theoretically, if the line ends with an identifier, and the next directly starts with one again,
Class ezTransformTemplate< Type >
Fix docs and unit tests
Member ezVisualScriptComponent::DeserializeComponent (ezWorldReader &stream) override
Read script state
Member ezVisualScriptComponent::SerializeComponent (ezWorldWriter &stream) const override
Store the current script state
Member ezVisualScriptComponent::Update ()
Do we really need to tick scripts every frame?
Member ezWindow::Initialize ()

Expose icon functionality somehow

test & support for multiple windows

Member ezWindowOutputTargetGAL::CaptureImage (ezImage &out_Image) override
Make this more efficient