\hypertarget{group__EPhysics__Constraint}{\section{E\+Physics Constraint}
\label{group__EPhysics__Constraint}\index{E\+Physics Constraint@{E\+Physics Constraint}}
}


Constraints can be used to limit bodies movements, between bodies or between bodies and the world.  


\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \+\_\+\+E\+Physics\+\_\+\+Constraint \hyperlink{group__EPhysics__Constraint_ga6cdc4a630836a63a51489b885c09c7e3}{E\+Physics\+\_\+\+Constraint}
\begin{DoxyCompactList}\small\item\em Constraint handle, used to limit bodies movements. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__EPhysics__Constraint_ga6cdc4a630836a63a51489b885c09c7e3}{E\+Physics\+\_\+\+Constraint} $\ast$ \hyperlink{group__EPhysics__Constraint_ga49d1bce8073380c8e085caed3465d7e8}{ephysics\+\_\+constraint\+\_\+linked\+\_\+add} (\hyperlink{group__EPhysics__Body_gaf39ad724f8a2f81f9139c63263900bf1}{E\+Physics\+\_\+\+Body} $\ast$body1, \hyperlink{group__EPhysics__Body_gaf39ad724f8a2f81f9139c63263900bf1}{E\+Physics\+\_\+\+Body} $\ast$body2)
\begin{DoxyCompactList}\small\item\em Create a new constraint between 2 bodies(\+Point to Point constraint). \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__EPhysics__Constraint_gac70dbb237de696e0356fc9d7722ba835}{ephysics\+\_\+constraint\+\_\+anchor\+\_\+set} (\hyperlink{group__EPhysics__Constraint_ga6cdc4a630836a63a51489b885c09c7e3}{E\+Physics\+\_\+\+Constraint} $\ast$constraint, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} anchor\+\_\+b1\+\_\+x, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} anchor\+\_\+b1\+\_\+y, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} anchor\+\_\+b1\+\_\+z, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} anchor\+\_\+b2\+\_\+x, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} anchor\+\_\+b2\+\_\+y, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} anchor\+\_\+b2\+\_\+z)
\begin{DoxyCompactList}\small\item\em Change the constraints anchors values on both constrained bodies. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__EPhysics__Constraint_ga9ebbbae51adaa1f366b09ea8de2411bc}{ephysics\+\_\+constraint\+\_\+anchor\+\_\+get} (const \hyperlink{group__EPhysics__Constraint_ga6cdc4a630836a63a51489b885c09c7e3}{E\+Physics\+\_\+\+Constraint} $\ast$constraint, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} $\ast$anchor\+\_\+b1\+\_\+x, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} $\ast$anchor\+\_\+b1\+\_\+y, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} $\ast$anchor\+\_\+b1\+\_\+z, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} $\ast$anchor\+\_\+b2\+\_\+x, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} $\ast$anchor\+\_\+b2\+\_\+y, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} $\ast$anchor\+\_\+b2\+\_\+z)
\begin{DoxyCompactList}\small\item\em Get the constraints anchors values on both constrained bodies. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} \hyperlink{group__EPhysics__Constraint_ga6cdc4a630836a63a51489b885c09c7e3}{E\+Physics\+\_\+\+Constraint} $\ast$ \hyperlink{group__EPhysics__Constraint_ga50ab20f0f16d79325b9d4377314d8777}{ephysics\+\_\+constraint\+\_\+add} (\hyperlink{group__EPhysics__Body_gaf39ad724f8a2f81f9139c63263900bf1}{E\+Physics\+\_\+\+Body} $\ast$body)
\begin{DoxyCompactList}\small\item\em Create a new constraint. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__EPhysics__Constraint_gae526a49233832ea1fad8437fc9aae82b}{ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+set} (\hyperlink{group__EPhysics__Constraint_ga6cdc4a630836a63a51489b885c09c7e3}{E\+Physics\+\_\+\+Constraint} $\ast$constraint, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} lower\+\_\+x, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} upper\+\_\+x, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} lower\+\_\+y, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} upper\+\_\+y, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} lower\+\_\+z, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} upper\+\_\+z)
\begin{DoxyCompactList}\small\item\em Define the linear moving limits of a {\ttfamily constraint}. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__EPhysics__Constraint_ga4b052963235ce41ed3d4f3227393ed1b}{ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+get} (const \hyperlink{group__EPhysics__Constraint_ga6cdc4a630836a63a51489b885c09c7e3}{E\+Physics\+\_\+\+Constraint} $\ast$constraint, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} $\ast$lower\+\_\+x, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} $\ast$upper\+\_\+x, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} $\ast$lower\+\_\+y, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} $\ast$upper\+\_\+y, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} $\ast$lower\+\_\+z, \hyperlink{Evas__Common_8h_a2453e92182bad3b0e0d84e5aff433b07}{Evas\+\_\+\+Coord} $\ast$upper\+\_\+z)
\begin{DoxyCompactList}\small\item\em Get the linear moving limits of a {\ttfamily constraint}. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__EPhysics__Constraint_ga2e6b2b6ede8bb0ae2199c4f2b9fbc8a1}{ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+set} (\hyperlink{group__EPhysics__Constraint_ga6cdc4a630836a63a51489b885c09c7e3}{E\+Physics\+\_\+\+Constraint} $\ast$constraint, double counter\+\_\+clock\+\_\+x, double clock\+\_\+wise\+\_\+x, double counter\+\_\+clock\+\_\+y, double clock\+\_\+wise\+\_\+y, double counter\+\_\+clock\+\_\+z, double clock\+\_\+wise\+\_\+z)
\begin{DoxyCompactList}\small\item\em Set the angular moving limits of a {\ttfamily constraint}. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__EPhysics__Constraint_ga0bb752b6e1c20a094b279be1be1c9a15}{ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+get} (const \hyperlink{group__EPhysics__Constraint_ga6cdc4a630836a63a51489b885c09c7e3}{E\+Physics\+\_\+\+Constraint} $\ast$constraint, double $\ast$counter\+\_\+clock\+\_\+x, double $\ast$clock\+\_\+wise\+\_\+x, double $\ast$counter\+\_\+clock\+\_\+y, double $\ast$clock\+\_\+wise\+\_\+y, double $\ast$counter\+\_\+clock\+\_\+z, double $\ast$clock\+\_\+wise\+\_\+z)
\begin{DoxyCompactList}\small\item\em Get the angular moving limits of a {\ttfamily constraint}. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3db3556eec8ef18cb8ddb43816974ac8}{E\+A\+P\+I} void \hyperlink{group__EPhysics__Constraint_ga9108a722eb302109e47dd086a1db1fd4}{ephysics\+\_\+constraint\+\_\+del} (\hyperlink{group__EPhysics__Constraint_ga6cdc4a630836a63a51489b885c09c7e3}{E\+Physics\+\_\+\+Constraint} $\ast$constraint)
\begin{DoxyCompactList}\small\item\em Deletes a physics constraint. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Constraints can be used to limit bodies movements, between bodies or between bodies and the world. 

Constraints can limit movement angle, translation, or work like a motor.

Constraints can be created with \hyperlink{group__EPhysics__Constraint_ga49d1bce8073380c8e085caed3465d7e8}{ephysics\+\_\+constraint\+\_\+linked\+\_\+add()} or \hyperlink{group__EPhysics__Constraint_ga50ab20f0f16d79325b9d4377314d8777}{ephysics\+\_\+constraint\+\_\+add()} and removed with \hyperlink{group__EPhysics__Constraint_ga9108a722eb302109e47dd086a1db1fd4}{ephysics\+\_\+constraint\+\_\+del()}. Can be applied between two bodies or between a body and the world. 

\subsection{Typedef Documentation}
\hypertarget{group__EPhysics__Constraint_ga6cdc4a630836a63a51489b885c09c7e3}{\index{E\+Physics Constraint@{E\+Physics Constraint}!E\+Physics\+\_\+\+Constraint@{E\+Physics\+\_\+\+Constraint}}
\index{E\+Physics\+\_\+\+Constraint@{E\+Physics\+\_\+\+Constraint}!E\+Physics Constraint@{E\+Physics Constraint}}
\subsubsection[{E\+Physics\+\_\+\+Constraint}]{\setlength{\rightskip}{0pt plus 5cm}typedef struct \+\_\+\+E\+Physics\+\_\+\+Constraint {\bf E\+Physics\+\_\+\+Constraint}}}\label{group__EPhysics__Constraint_ga6cdc4a630836a63a51489b885c09c7e3}


Constraint handle, used to limit bodies movements. 

Created with \hyperlink{group__EPhysics__Constraint_ga49d1bce8073380c8e085caed3465d7e8}{ephysics\+\_\+constraint\+\_\+linked\+\_\+add()} or \hyperlink{group__EPhysics__Constraint_ga50ab20f0f16d79325b9d4377314d8777}{ephysics\+\_\+constraint\+\_\+add()} and deleted with \hyperlink{group__EPhysics__Constraint_ga9108a722eb302109e47dd086a1db1fd4}{ephysics\+\_\+constraint\+\_\+del()}. 

\subsection{Function Documentation}
\hypertarget{group__EPhysics__Constraint_ga49d1bce8073380c8e085caed3465d7e8}{\index{E\+Physics Constraint@{E\+Physics Constraint}!ephysics\+\_\+constraint\+\_\+linked\+\_\+add@{ephysics\+\_\+constraint\+\_\+linked\+\_\+add}}
\index{ephysics\+\_\+constraint\+\_\+linked\+\_\+add@{ephysics\+\_\+constraint\+\_\+linked\+\_\+add}!E\+Physics Constraint@{E\+Physics Constraint}}
\subsubsection[{ephysics\+\_\+constraint\+\_\+linked\+\_\+add}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf E\+Physics\+\_\+\+Constraint}$\ast$ ephysics\+\_\+constraint\+\_\+linked\+\_\+add (
\begin{DoxyParamCaption}
\item[{{\bf E\+Physics\+\_\+\+Body} $\ast$}]{body1, }
\item[{{\bf E\+Physics\+\_\+\+Body} $\ast$}]{body2}
\end{DoxyParamCaption}
)}}\label{group__EPhysics__Constraint_ga49d1bce8073380c8e085caed3465d7e8}


Create a new constraint between 2 bodies(\+Point to Point constraint). 

The constraint will join two bodies({\ttfamily body1} and {\ttfamily body2}) with angular and linear movements limited by calling \hyperlink{group__EPhysics__Constraint_gae526a49233832ea1fad8437fc9aae82b}{ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+set()} and \hyperlink{group__EPhysics__Constraint_ga2e6b2b6ede8bb0ae2199c4f2b9fbc8a1}{ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+set()}. Anchors values can be defined with \hyperlink{group__EPhysics__Constraint_gac70dbb237de696e0356fc9d7722ba835}{ephysics\+\_\+constraint\+\_\+anchor\+\_\+set()}.


\begin{DoxyParams}{Parameters}
{\em body1} & The first body to apply the constraint. \\
\hline
{\em body2} & The second body to apply the constraint. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A new linked(joining 2 bodies) constraint or {\ttfamily N\+U\+L\+L}, on errors.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__EPhysics__Constraint_ga9108a722eb302109e47dd086a1db1fd4}{ephysics\+\_\+constraint\+\_\+del()}. 
\end{DoxySeeAlso}
\begin{Desc}
\item[Examples\+: ]\par
\hyperlink{test_constraint_8c-example}{test\+\_\+constraint.\+c}.\end{Desc}
\hypertarget{group__EPhysics__Constraint_gac70dbb237de696e0356fc9d7722ba835}{\index{E\+Physics Constraint@{E\+Physics Constraint}!ephysics\+\_\+constraint\+\_\+anchor\+\_\+set@{ephysics\+\_\+constraint\+\_\+anchor\+\_\+set}}
\index{ephysics\+\_\+constraint\+\_\+anchor\+\_\+set@{ephysics\+\_\+constraint\+\_\+anchor\+\_\+set}!E\+Physics Constraint@{E\+Physics Constraint}}
\subsubsection[{ephysics\+\_\+constraint\+\_\+anchor\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void ephysics\+\_\+constraint\+\_\+anchor\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf E\+Physics\+\_\+\+Constraint} $\ast$}]{constraint, }
\item[{{\bf Evas\+\_\+\+Coord}}]{anchor\+\_\+b1\+\_\+x, }
\item[{{\bf Evas\+\_\+\+Coord}}]{anchor\+\_\+b1\+\_\+y, }
\item[{{\bf Evas\+\_\+\+Coord}}]{anchor\+\_\+b1\+\_\+z, }
\item[{{\bf Evas\+\_\+\+Coord}}]{anchor\+\_\+b2\+\_\+x, }
\item[{{\bf Evas\+\_\+\+Coord}}]{anchor\+\_\+b2\+\_\+y, }
\item[{{\bf Evas\+\_\+\+Coord}}]{anchor\+\_\+b2\+\_\+z}
\end{DoxyParamCaption}
)}}\label{group__EPhysics__Constraint_gac70dbb237de696e0356fc9d7722ba835}


Change the constraints anchors values on both constrained bodies. 

\begin{DoxyNote}{Note}
By default the anchors are in the middle of a body, if a body of 20, 20 is positioned at (10, 10) then its anchor is set to (20, 20).

There`s no need to inform {\ttfamily anchor\+\_\+b2\+\_\+x}, {\ttfamily anchor\+\_\+b2\+\_\+y} and {\ttfamily anchor\+\_\+b2\+\_\+z} if the constraint has been created using \hyperlink{group__EPhysics__Constraint_ga50ab20f0f16d79325b9d4377314d8777}{ephysics\+\_\+constraint\+\_\+add()}.
\end{DoxyNote}

\begin{DoxyParams}{Parameters}
{\em constraint} & The constraint to be set. \\
\hline
{\em anchor\+\_\+b1\+\_\+x} & The first body X anchor. \\
\hline
{\em anchor\+\_\+b1\+\_\+y} & The first body Y anchor. \\
\hline
{\em anchor\+\_\+b1\+\_\+z} & The first body Z anchor. \\
\hline
{\em anchor\+\_\+b2\+\_\+x} & The second body X anchor. \\
\hline
{\em anchor\+\_\+b2\+\_\+y} & The second body Y anchor. \\
\hline
{\em anchor\+\_\+b2\+\_\+z} & The second body Z anchor.\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__EPhysics__Constraint_ga9ebbbae51adaa1f366b09ea8de2411bc}{ephysics\+\_\+constraint\+\_\+anchor\+\_\+get()}. 

\hyperlink{group__EPhysics__Constraint_ga49d1bce8073380c8e085caed3465d7e8}{ephysics\+\_\+constraint\+\_\+linked\+\_\+add()}. 
\end{DoxySeeAlso}
\begin{Desc}
\item[Examples\+: ]\par
\hyperlink{test_constraint_8c-example}{test\+\_\+constraint.\+c}.\end{Desc}
\hypertarget{group__EPhysics__Constraint_ga9ebbbae51adaa1f366b09ea8de2411bc}{\index{E\+Physics Constraint@{E\+Physics Constraint}!ephysics\+\_\+constraint\+\_\+anchor\+\_\+get@{ephysics\+\_\+constraint\+\_\+anchor\+\_\+get}}
\index{ephysics\+\_\+constraint\+\_\+anchor\+\_\+get@{ephysics\+\_\+constraint\+\_\+anchor\+\_\+get}!E\+Physics Constraint@{E\+Physics Constraint}}
\subsubsection[{ephysics\+\_\+constraint\+\_\+anchor\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void ephysics\+\_\+constraint\+\_\+anchor\+\_\+get (
\begin{DoxyParamCaption}
\item[{const {\bf E\+Physics\+\_\+\+Constraint} $\ast$}]{constraint, }
\item[{{\bf Evas\+\_\+\+Coord} $\ast$}]{anchor\+\_\+b1\+\_\+x, }
\item[{{\bf Evas\+\_\+\+Coord} $\ast$}]{anchor\+\_\+b1\+\_\+y, }
\item[{{\bf Evas\+\_\+\+Coord} $\ast$}]{anchor\+\_\+b1\+\_\+z, }
\item[{{\bf Evas\+\_\+\+Coord} $\ast$}]{anchor\+\_\+b2\+\_\+x, }
\item[{{\bf Evas\+\_\+\+Coord} $\ast$}]{anchor\+\_\+b2\+\_\+y, }
\item[{{\bf Evas\+\_\+\+Coord} $\ast$}]{anchor\+\_\+b2\+\_\+z}
\end{DoxyParamCaption}
)}}\label{group__EPhysics__Constraint_ga9ebbbae51adaa1f366b09ea8de2411bc}


Get the constraints anchors values on both constrained bodies. 


\begin{DoxyParams}{Parameters}
{\em constraint} & The constraint to get anchor values from. \\
\hline
{\em anchor\+\_\+b1\+\_\+x} & Pointer to an Evas\+\_\+\+Coord in which to store the first body X anchor value. \\
\hline
{\em anchor\+\_\+b1\+\_\+y} & Pointer to an Evas\+\_\+\+Coord in which to store the first body Y anchor value. \\
\hline
{\em anchor\+\_\+b1\+\_\+z} & Pointer to an Evas\+\_\+\+Coord in which to store the first body Z anchor value. \\
\hline
{\em anchor\+\_\+b2\+\_\+x} & Pointer to an Evas\+\_\+\+Coord in which to store the second body X anchor value. \\
\hline
{\em anchor\+\_\+b2\+\_\+y} & Pointer to an Evas\+\_\+\+Coord in which to store the second body Y anchor value. \\
\hline
{\em anchor\+\_\+b2\+\_\+z} & Pointer to an Evas\+\_\+\+Coord in which to store the second body Z anchor value.\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__EPhysics__Constraint_gac70dbb237de696e0356fc9d7722ba835}{ephysics\+\_\+constraint\+\_\+anchor\+\_\+set()}. 

\hyperlink{group__EPhysics__Constraint_ga49d1bce8073380c8e085caed3465d7e8}{ephysics\+\_\+constraint\+\_\+linked\+\_\+add()}. 
\end{DoxySeeAlso}
\hypertarget{group__EPhysics__Constraint_ga50ab20f0f16d79325b9d4377314d8777}{\index{E\+Physics Constraint@{E\+Physics Constraint}!ephysics\+\_\+constraint\+\_\+add@{ephysics\+\_\+constraint\+\_\+add}}
\index{ephysics\+\_\+constraint\+\_\+add@{ephysics\+\_\+constraint\+\_\+add}!E\+Physics Constraint@{E\+Physics Constraint}}
\subsubsection[{ephysics\+\_\+constraint\+\_\+add}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} {\bf E\+Physics\+\_\+\+Constraint}$\ast$ ephysics\+\_\+constraint\+\_\+add (
\begin{DoxyParamCaption}
\item[{{\bf E\+Physics\+\_\+\+Body} $\ast$}]{body}
\end{DoxyParamCaption}
)}}\label{group__EPhysics__Constraint_ga50ab20f0f16d79325b9d4377314d8777}


Create a new constraint. 

The constraint will limit the linear and angular moving of a body. This simple constraint is designated to constraint a single body.


\begin{DoxyParams}{Parameters}
{\em body} & The body to apply the constraint.\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__EPhysics__Constraint_gae526a49233832ea1fad8437fc9aae82b}{ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+set()} for linear moving limit configuration. 

\hyperlink{group__EPhysics__Constraint_ga2e6b2b6ede8bb0ae2199c4f2b9fbc8a1}{ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+set()} for angular moving limit configuration. 
\end{DoxySeeAlso}
\begin{DoxyReturn}{Returns}
A new constraint or {\ttfamily N\+U\+L\+L} on erros.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__EPhysics__Constraint_ga9108a722eb302109e47dd086a1db1fd4}{ephysics\+\_\+constraint\+\_\+del()}. 
\end{DoxySeeAlso}
\begin{Desc}
\item[Examples\+: ]\par
\hyperlink{test_slider_8c-example}{test\+\_\+slider.\+c}.\end{Desc}
\hypertarget{group__EPhysics__Constraint_gae526a49233832ea1fad8437fc9aae82b}{\index{E\+Physics Constraint@{E\+Physics Constraint}!ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+set@{ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+set}}
\index{ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+set@{ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+set}!E\+Physics Constraint@{E\+Physics Constraint}}
\subsubsection[{ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf E\+Physics\+\_\+\+Constraint} $\ast$}]{constraint, }
\item[{{\bf Evas\+\_\+\+Coord}}]{lower\+\_\+x, }
\item[{{\bf Evas\+\_\+\+Coord}}]{upper\+\_\+x, }
\item[{{\bf Evas\+\_\+\+Coord}}]{lower\+\_\+y, }
\item[{{\bf Evas\+\_\+\+Coord}}]{upper\+\_\+y, }
\item[{{\bf Evas\+\_\+\+Coord}}]{lower\+\_\+z, }
\item[{{\bf Evas\+\_\+\+Coord}}]{upper\+\_\+z}
\end{DoxyParamCaption}
)}}\label{group__EPhysics__Constraint_gae526a49233832ea1fad8437fc9aae82b}


Define the linear moving limits of a {\ttfamily constraint}. 

The linear limits are defined from the body's position on. The user will want to limit the movements on X, Y and Z axis where lower == upper axis will be locked, lower $>$ upper axis is free, lower $<$ upper axis is limited to the range.

The unit for every limits are defined on Evas coordinates.


\begin{DoxyParams}{Parameters}
{\em constraint} & The constraint to be set. \\
\hline
{\em lower\+\_\+x} & The lower linear moving limit on X axis. \\
\hline
{\em upper\+\_\+x} & The upper linear moving limit on X axis. \\
\hline
{\em lower\+\_\+y} & The lower linear moving limit on Y axis. \\
\hline
{\em upper\+\_\+y} & The upper linear moving limit on Y axis. \\
\hline
{\em lower\+\_\+z} & The lower linear moving limit on Z axis. \\
\hline
{\em upper\+\_\+z} & The upper linear moving limit on Z axis.\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__EPhysics__Constraint_ga4b052963235ce41ed3d4f3227393ed1b}{ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+get()} 
\end{DoxySeeAlso}
\begin{Desc}
\item[Examples\+: ]\par
\hyperlink{test_slider_8c-example}{test\+\_\+slider.\+c}.\end{Desc}
\hypertarget{group__EPhysics__Constraint_ga4b052963235ce41ed3d4f3227393ed1b}{\index{E\+Physics Constraint@{E\+Physics Constraint}!ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+get@{ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+get}}
\index{ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+get@{ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+get}!E\+Physics Constraint@{E\+Physics Constraint}}
\subsubsection[{ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+get (
\begin{DoxyParamCaption}
\item[{const {\bf E\+Physics\+\_\+\+Constraint} $\ast$}]{constraint, }
\item[{{\bf Evas\+\_\+\+Coord} $\ast$}]{lower\+\_\+x, }
\item[{{\bf Evas\+\_\+\+Coord} $\ast$}]{upper\+\_\+x, }
\item[{{\bf Evas\+\_\+\+Coord} $\ast$}]{lower\+\_\+y, }
\item[{{\bf Evas\+\_\+\+Coord} $\ast$}]{upper\+\_\+y, }
\item[{{\bf Evas\+\_\+\+Coord} $\ast$}]{lower\+\_\+z, }
\item[{{\bf Evas\+\_\+\+Coord} $\ast$}]{upper\+\_\+z}
\end{DoxyParamCaption}
)}}\label{group__EPhysics__Constraint_ga4b052963235ce41ed3d4f3227393ed1b}


Get the linear moving limits of a {\ttfamily constraint}. 


\begin{DoxyParams}{Parameters}
{\em constraint} & The constraint to get linear limits from. \\
\hline
{\em lower\+\_\+x} & Pointer to set with the lower limit to the X axis. \\
\hline
{\em upper\+\_\+x} & Pointer to set with the upper limit to the X axis. \\
\hline
{\em lower\+\_\+y} & Pointer to set with the lower limit to the Y axis. \\
\hline
{\em upper\+\_\+y} & Pointer to set with the upper limit to the Y axis. \\
\hline
{\em lower\+\_\+z} & Pointer to set with the lower limit to the Z axis. \\
\hline
{\em upper\+\_\+z} & Pointer to set with the upper limit to the Z axis.\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__EPhysics__Constraint_gae526a49233832ea1fad8437fc9aae82b}{ephysics\+\_\+constraint\+\_\+linear\+\_\+limit\+\_\+set()} 
\end{DoxySeeAlso}
\hypertarget{group__EPhysics__Constraint_ga2e6b2b6ede8bb0ae2199c4f2b9fbc8a1}{\index{E\+Physics Constraint@{E\+Physics Constraint}!ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+set@{ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+set}}
\index{ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+set@{ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+set}!E\+Physics Constraint@{E\+Physics Constraint}}
\subsubsection[{ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+set}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf E\+Physics\+\_\+\+Constraint} $\ast$}]{constraint, }
\item[{double}]{counter\+\_\+clock\+\_\+x, }
\item[{double}]{clock\+\_\+wise\+\_\+x, }
\item[{double}]{counter\+\_\+clock\+\_\+y, }
\item[{double}]{clock\+\_\+wise\+\_\+y, }
\item[{double}]{counter\+\_\+clock\+\_\+z, }
\item[{double}]{clock\+\_\+wise\+\_\+z}
\end{DoxyParamCaption}
)}}\label{group__EPhysics__Constraint_ga2e6b2b6ede8bb0ae2199c4f2b9fbc8a1}


Set the angular moving limits of a {\ttfamily constraint}. 

The angular moving limits is defined in degrees and will limit the moving on Z axis -\/ counter clockwise and clockwise directions.


\begin{DoxyParams}{Parameters}
{\em constraint} & The constraint to be set. \\
\hline
{\em counter\+\_\+clock\+\_\+x} & Amount of degrees from 0.\+0 to 360.\+0 to limit counter clockwise rotation on X axis. \\
\hline
{\em clock\+\_\+wise\+\_\+x} & Amount of degrees from 0.\+0 to 360.\+0 to limit clockwise rotation on X axis. \\
\hline
{\em counter\+\_\+clock\+\_\+y} & Amount of degrees from 0.\+0 to 360.\+0 to limit counter clockwise rotation o Y axis. \\
\hline
{\em clock\+\_\+wise\+\_\+y} & Amount of degrees from 0.\+0 to 360.\+0 to limit clockwise rotation on Y axis. \\
\hline
{\em counter\+\_\+clock\+\_\+z} & Amount of degrees from 0.\+0 to 360.\+0 to limit counter clockwise rotation on Z axis. \\
\hline
{\em clock\+\_\+wise\+\_\+z} & Amount of degrees from 0.\+0 to 360.\+0 to limit clockwise rotation on Z axis.\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__EPhysics__Constraint_ga0bb752b6e1c20a094b279be1be1c9a15}{ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+get()} 
\end{DoxySeeAlso}
\begin{Desc}
\item[Examples\+: ]\par
\hyperlink{test_slider_8c-example}{test\+\_\+slider.\+c}.\end{Desc}
\hypertarget{group__EPhysics__Constraint_ga0bb752b6e1c20a094b279be1be1c9a15}{\index{E\+Physics Constraint@{E\+Physics Constraint}!ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+get@{ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+get}}
\index{ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+get@{ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+get}!E\+Physics Constraint@{E\+Physics Constraint}}
\subsubsection[{ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+get}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+get (
\begin{DoxyParamCaption}
\item[{const {\bf E\+Physics\+\_\+\+Constraint} $\ast$}]{constraint, }
\item[{double $\ast$}]{counter\+\_\+clock\+\_\+x, }
\item[{double $\ast$}]{clock\+\_\+wise\+\_\+x, }
\item[{double $\ast$}]{counter\+\_\+clock\+\_\+y, }
\item[{double $\ast$}]{clock\+\_\+wise\+\_\+y, }
\item[{double $\ast$}]{counter\+\_\+clock\+\_\+z, }
\item[{double $\ast$}]{clock\+\_\+wise\+\_\+z}
\end{DoxyParamCaption}
)}}\label{group__EPhysics__Constraint_ga0bb752b6e1c20a094b279be1be1c9a15}


Get the angular moving limits of a {\ttfamily constraint}. 


\begin{DoxyParams}{Parameters}
{\em constraint} & The constraint to get the angular limits from. \\
\hline
{\em counter\+\_\+clock\+\_\+x} & Pointer to set with the counter clockwise limmit degrees on X axis. \\
\hline
{\em clock\+\_\+wise\+\_\+x} & Pointer to set with the clockwise limit degrees on X axis. \\
\hline
{\em counter\+\_\+clock\+\_\+y} & Pointer to set with the counter clockwise limit degrees on Y axis. \\
\hline
{\em clock\+\_\+wise\+\_\+y} & Pointer to set with the clockwise limit degrees on Y axis. \\
\hline
{\em counter\+\_\+clock\+\_\+z} & Pointer to set with the counter clockwise limit degrees on Z axis. \\
\hline
{\em clock\+\_\+wise\+\_\+z} & Pointer to set with the clockwise limit degrees on Z axis.\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__EPhysics__Constraint_ga2e6b2b6ede8bb0ae2199c4f2b9fbc8a1}{ephysics\+\_\+constraint\+\_\+angular\+\_\+limit\+\_\+set()} 
\end{DoxySeeAlso}
\hypertarget{group__EPhysics__Constraint_ga9108a722eb302109e47dd086a1db1fd4}{\index{E\+Physics Constraint@{E\+Physics Constraint}!ephysics\+\_\+constraint\+\_\+del@{ephysics\+\_\+constraint\+\_\+del}}
\index{ephysics\+\_\+constraint\+\_\+del@{ephysics\+\_\+constraint\+\_\+del}!E\+Physics Constraint@{E\+Physics Constraint}}
\subsubsection[{ephysics\+\_\+constraint\+\_\+del}]{\setlength{\rightskip}{0pt plus 5cm}{\bf E\+A\+P\+I} void ephysics\+\_\+constraint\+\_\+del (
\begin{DoxyParamCaption}
\item[{{\bf E\+Physics\+\_\+\+Constraint} $\ast$}]{constraint}
\end{DoxyParamCaption}
)}}\label{group__EPhysics__Constraint_ga9108a722eb302109e47dd086a1db1fd4}


Deletes a physics constraint. 


\begin{DoxyParams}{Parameters}
{\em constraint} & The constraint to be deleted.\\
\hline
\end{DoxyParams}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__EPhysics__Constraint_ga49d1bce8073380c8e085caed3465d7e8}{ephysics\+\_\+constraint\+\_\+linked\+\_\+add()} for more details. 

ephysics\+\_\+constraint\+\_\+slider\+\_\+add() for more details. 
\end{DoxySeeAlso}
