include_directories(public)
add_subdirectory(public)
set(KRAKEN_PUBLIC_HEADERS "${KRAKEN_PUBLIC_HEADERS}" PARENT_SCOPE)
set(KRAKEN_PRIVATE_HEADERS "${KRAKEN_PRIVATE_HEADERS}" PARENT_SCOPE)

# Private Implementation
add_sources(kraken.cpp)
add_private_headers(KREngine-common.h)
add_source_and_header(KRAmbientZone)
add_sources(resources/KRResource+blend.cpp)
# add_source(resources/KRResource+fbx.cpp) # TODO - Locate FBX SDK dependencies
add_sources(resources/KRResource+obj.cpp)
add_private_headers(resources/KRResource.h)
add_source_and_header(resources/KRResource)
add_source_and_header(resources/KRResourceManager)
add_source_and_header(resources/animation/KRAnimation)
add_source_and_header(resources/animation/KRAnimationAttribute)
add_source_and_header(resources/animation/KRAnimationLayer)
add_source_and_header(resources/animation/KRAnimationManager)
add_source_and_header(resources/animation_curve/KRAnimationCurve)
add_source_and_header(resources/animation_curve/KRAnimationCurveManager)
add_source_and_header(resources/audio/KRAudioManager)
add_source_and_header(resources/audio/KRAudioSample)
add_source_and_header(resources/bundle/KRBundle)
add_source_and_header(resources/bundle/KRBundleManager)
add_source_and_header(resources/material/KRMaterial)
add_source_and_header(resources/material/KRMaterialManager)
add_source_and_header(resources/mesh/KRMesh)
add_source_and_header(resources/mesh/KRMeshCube)
add_source_and_header(resources/mesh/KRMeshManager)
add_source_and_header(resources/mesh/KRMeshQuad)
add_source_and_header(resources/mesh/KRMeshSphere)
add_source_and_header(resources/source/KRSource)
add_source_and_header(resources/source/KRSourceManager)
add_source_and_header(resources/unknown/KRUnknown)
add_source_and_header(resources/unknown/KRUnknownManager)
add_source_and_header(KRAudioBuffer)
add_source_and_header(KRAudioSource)
add_source_and_header(KRBehavior)
add_source_and_header(KRBone)
add_source_and_header(KRCamera)
add_source_and_header(KRCollider)
add_source_and_header(KRContext)
add_source_and_header(KRUniformBuffer)
add_source_and_header(KRUniformBufferManager)
add_source_and_header(KRDevice)
add_source_and_header(KRDeviceManager)
add_source_and_header(KRRenderPass)
add_source_and_header(KRSurface)
add_source_and_header(KRSurfaceManager)
add_source_and_header(KRStreamerThread)
add_source_and_header(KRSwapchain)
add_source_and_header(KRContextObject)
add_source_and_header(KRDirectionalLight)
add_source_and_header(KRHelpers)
add_source_and_header(KRLight)
add_source_and_header(KRLocator)
add_source_and_header(KRLODGroup)
add_source_and_header(KRLODSet)
add_source_and_header(KRModel)
add_source_and_header(KRNode)
add_source_and_header(KROctree)
add_source_and_header(KROctreeNode)
add_source_and_header(KRParticleSystem)
add_source_and_header(KRParticleSystemNewtonian)
add_source_and_header(KRPointLight)
add_source_and_header(KRPresentationThread)
add_source_and_header(KRRenderGraph)
add_source_and_header(KRRenderGraphBlackFrame)
add_source_and_header(KRRenderSettings)
add_source_and_header(KRReverbZone)
add_source_and_header(KRScene)
add_source_and_header(KRSceneManager)
add_source_and_header(KRShader)
add_source_and_header(KRShaderManager)
add_source_and_header(KRPipeline)
add_source_and_header(KRPipelineManager)
add_source_and_header(KRSampler)
add_source_and_header(KRSamplerManager)
add_source_and_header(KRSpotLight)
add_source_and_header(KRSprite)
add_source_and_header(KRTexture)
add_source_and_header(KRTexture2D)
add_source_and_header(KRTextureAnimated)
add_source_and_header(KRTextureCube)
add_source_and_header(KRTextureKTX)
add_source_and_header(KRTextureKTX2)
add_source_and_header(KRTextureManager)
add_source_and_header(KRTexturePVR)
add_source_and_header(KRTextureTGA)
add_source_and_header(KRViewport)
