public void Start() { //Parse the simulable objects and initialize their state indices m_numDoFs = 0; m_objs = new List <ISimulable>(SimObjects.Count); foreach (GameObject obj in SimObjects) { ISimulable simobj = obj.GetComponent <ISimulable>(); if (simobj != null) { m_objs.Add(simobj); // Initialize simulable object simobj.Initialize(m_numDoFs, this); // Retrieve pos and vel size m_numDoFs += simobj.GetNumDoFs(); } } //Parse the constraints m_numConstraints = 0; m_constraints = new List <IConstraint>(Constraints.Count); foreach (GameObject obj in Constraints) { IConstraint constraint = obj.GetComponent <IConstraint>(); if (constraint != null) { m_constraints.Add(constraint); // Initialize constraint constraint.Initialize(m_numConstraints, this); // Retrieve the number of constraints m_numConstraints += constraint.GetNumConstraints(); } } }