+ // Constraints
+
+ /**
+ * @brief Constrain one of the properties of an Actor.
+ *
+ * @note The constraint will be copied by the Actor. This means that modifying the apply-time etc.
+ * of the constraint, will not affect actors which are already being constrained.
+ * @pre The Actor has been initialized.
+ * @param[in] constraint The constraint to apply.
+ * @return The active-constraint being applied to the actor.
+ */
+ ActiveConstraint ApplyConstraint( Constraint constraint );
+
+ /**
+ * @brief Constrain one of the properties of an Actor, using a custom weight property.
+ *
+ * This overload is intended to allow a single weight property to be shared by many constraints
+ * e.g. call WeightObject::New() once, and pass the return value into every call to ApplyConstraint().
+ * @pre The Actor has been initialized.
+ * @param[in] constraint The constraint to apply.
+ * @param[in] weightObject An object which is expected to have a float property named "weight".
+ * @return The active-constraint being applied to the actor.
+ */
+ ActiveConstraint ApplyConstraint( Constraint constraint, Handle weightObject );
+
+ /**
+ * @brief Remove one constraint from an Object.
+ *
+ * @pre The Object has been initialized.
+ * @param[in] activeConstraint The active-constraint to remove.
+ */
+ void RemoveConstraint( ActiveConstraint activeConstraint );
+
+ /**
+ * @brief Remove all constraints from an Object.
+ *
+ * @pre The object has been initialized.
+ */
+ void RemoveConstraints();
+
+ /**
+ * @brief Remove all the constraint from the Object with a matching tag.
+ *
+ * @pre The Object has been intialized.
+ * @param[in] tag The tag of the constraints which will be removed
+ */
+ void RemoveConstraints( unsigned int tag );