cmake_minimum_required(VERSION 4.3.2)

target_sources(openclaw
    PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}/AnimationComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/Animation.h
    ${CMAKE_CURRENT_SOURCE_DIR}/AreaDamageComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/CheckpointComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/CollisionComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/ControllableComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/DestroyableComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/ExplodeableComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/GlitterComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/KinematicComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/LootComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/PhysicsComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/PositionComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/PowerupSparkleAIComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/RenderComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/RenderComponentInterface.h
    ${CMAKE_CURRENT_SOURCE_DIR}/SoundComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/Template.h
    ${CMAKE_CURRENT_SOURCE_DIR}/PredefinedMoveComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/AnimationComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/Animation.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/AreaDamageComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/CheckpointComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/CollisionComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/ControllableComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/DestroyableComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/ExplodeableComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/GlitterComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/KinematicComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/LootComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/PhysicsComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/PositionComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/PowerupSparkleAIComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/RenderComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/SoundComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/Template.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/PredefinedMoveComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/GlobalAmbientSoundComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/GlobalAmbientSoundComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/FollowableComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/FollowableComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/SingleAnimationComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/SingleAnimationComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/ProjectileSpawnerComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/ProjectileSpawnerComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/LocalAmbientSoundComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/LocalAmbientSoundComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/PathElevatorComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/PathElevatorComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/FloorSpikeComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/FloorSpikeComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/RopeComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/RopeComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/SteppingGroundComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/SteppingGroundComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/SpringBoardComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/SpringBoardComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/ActorSpawnerComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/ActorSpawnerComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/SawBladeComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/SawBladeComponent.h
    ${CMAKE_CURRENT_SOURCE_DIR}/ConveyorBeltComponent.cpp
    ${CMAKE_CURRENT_SOURCE_DIR}/ConveyorBeltComponent.h
)

add_subdirectory(AIComponents)
add_subdirectory(ControllerComponents)
add_subdirectory(EnemyAI)
add_subdirectory(PickupComponents)
add_subdirectory(TriggerComponents)
add_subdirectory(AuraComponents)
