/*
 * Derived from Epic Fight (https://github.com/Epic-Fight/epicfight)
 * by the Epic Fight Team, licensed under GPLv3.
 * Modifications © 2026 TiedUp! Remake Contributors, distributed under GPLv3.
 */

package com.tiedup.remake.rig.physics.ik;

import com.tiedup.remake.rig.physics.SimulationProvider;
import com.tiedup.remake.rig.physics.ik.InverseKinematicsSimulator.InverseKinematicsBuilder;
import com.tiedup.remake.rig.physics.ik.InverseKinematicsSimulator.InverseKinematicsObject;

/**
 * RIG stub. Upstream EF : interface implémentée par les providers
 * d'inverse kinematics pour attacher une IK chain à une animation
 * (typiquement pour forcer les mains à rester sur la poignée d'arme
 * pendant une attaque, ou les pieds au sol pendant un coup de pied).
 *
 * <p>Non utilisé en TiedUp (pas de combat, pas de weapon IK).
 * Conservé comme interface vide pour que {@code StaticAnimation
 * implements InverseKinematicsProvider} compile.</p>
 */
public interface InverseKinematicsProvider
		extends SimulationProvider<InverseKinematicsSimulatable, InverseKinematicsObject, InverseKinematicsBuilder, InverseKinematicsProvider> {

	/**
	 * Crée les données de simulation IK. Stub par défaut : no-op.
	 * Surchargé dans les classes qui auraient réellement de l'IK (aucune
	 * en TiedUp).
	 */
	@Override
	default InverseKinematicsObject createSimulationData(
			InverseKinematicsProvider provider,
			InverseKinematicsSimulatable simOwner,
			InverseKinematicsBuilder simBuilder) {
		return new InverseKinematicsObject(simBuilder);
	}
}
