/************************TRICK HEADER************************* PURPOSE: (blah blah blah) LIBRARY DEPENDENCIES: ( ) *************************************************************/ #include "sim_objects/default_trick_sys.sm" ##include "Ball++/L1/include/Ball.hh" /** This class is the base ball class */ class ballSimObject : public Trick::SimObject { public: /** The actual ball object */ Ball obj ; /** Constructor to add the jobs */ ballSimObject() { ("default_data") obj.force.default_data() ; ("default_data") obj.state.default_data() ; ("initialization") obj.state_init() ; ("derivative") obj.force_field() ; ("derivative") obj.state_deriv() ; ("integration") trick_ret = obj.state_integ() ; {BLUE} (10.0, "scheduled") trick_ret = obj.state_print() ; //C1 (10.0, "scheduled") obj.state_print() ; //C2 (10.0, "scheduled") obj.state_print() ; ("freeze") obj.state_print() ; ("shutdown") obj.shutdown() ; } } ; class DerivedBallSimObject : public ballSimObject { public: int print_me() { message_publish( MSG_NORMAL , "In derived ball job\n" ) ; } DerivedBallSimObject() { (10.0, "scheduled") print_me() ; } } // Instantiations DerivedBallSimObject ball ; IntegLoop my_integ_loop (0.01) ball; // Connect objects void create_connections() { // Set the default termination time trick_sys.sched.set_terminate_time(300.0) ; trick_sys.sched.set_freeze_frame(0.10) ; ball.obj.state.add_external_force( ball.obj.force.output.force ) ; my_integ_loop.getIntegrator( Runge_Kutta_2, 4); }