public virtual void StartData() { sensors = new List <Sensor>(); actuators = new List <Actuator>(); OnSetup(); foreach (Node node in GetChildren()) { if (node.GetType().IsSubclassOf(typeof(Sensor))) { Sensor s = node as Sensor; sensors.Add(s); if (s.resettable) { AddResetListener(s); } s.OnBinding(this); } if (node.GetType().IsSubclassOf(typeof(Actuator))) { Actuator a = node as Actuator; actuators.Add(a); if (a.resettable) { AddResetListener(a); } a.OnBinding(this); } } numberOfFields = sensors.Count; numberOfActions = actuators.Count; if (numberOfFields == 0) { GD.Print("The agent should have at least one sensor! Target name: " + GetParent().Name); } if (numberOfActions == 0) { GD.Print("The agent should have at least one actuator! Target name: " + GetParent().Name); } System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture; desc = new string[numberOfFields]; types = new byte[numberOfFields]; values = new string[numberOfFields]; OnSetupDone(); }