public Joint(AnimatTools.Framework.DataObject doParent)
            : base(doParent)
        {
            try
            {
                m_thLinkedPart = new AnimatTools.TypeHelpers.LinkedBodyPartTree(this);

                System.Reflection.Assembly myAssembly = System.Reflection.Assembly.Load("VortexAnimatTools");

                this.Size = new System.Drawing.SizeF(75, 70);
                this.Image = AnimatTools.Framework.ImageManager.LoadImage(ref myAssembly, "VortexAnimatTools.Graphics.Hinge.gif", false);
                this.DragImage = AnimatTools.Framework.ImageManager.LoadImage(ref myAssembly, "VortexAnimatTools.Graphics.DragHinge.gif", false);
                this.Name = "Joint";
                this.Description = "This node allows the user to collect data directly from a joint or to control a motorized joint.";
                this.Alignment = enumAlignment.CenterBottom;

                m_tpBodyPartType = typeof(AnimatTools.DataObjects.Physical.Joint);
            }
            catch(System.Exception ex)
            {
                AnimatTools.Framework.Util.DisplayError(ex);
            }
        }
        public RigidBody(AnimatTools.Framework.DataObject doParent)
            : base(doParent)
        {
            try
            {
                m_thLinkedPart = new AnimatTools.TypeHelpers.LinkedBodyPartTree(this);

                System.Reflection.Assembly myAssembly = System.Reflection.Assembly.Load("VortexAnimatTools");

                this.Size = new System.Drawing.SizeF(50, 50);
                this.Image = AnimatTools.Framework.ImageManager.LoadImage(ref myAssembly, "VortexAnimatTools.Graphics.Bone.gif", false);
                this.DragImage = AnimatTools.Framework.ImageManager.LoadImage(ref myAssembly, "VortexAnimatTools.Graphics.DragBone.gif", false);
                this.Name = "Rigid Body";
                this.Description = "This node allows the user to collect data directly from a rigid body.";
                this.Shape = AnimatTools.DataObjects.Behavior.Node.enumShape.Hexagon;
                this.FillColor = Color.LightBlue;

                m_tpBodyPartType = typeof(AnimatTools.DataObjects.Physical.RigidBody);
            }
            catch(System.Exception ex)
            {
                AnimatTools.Framework.Util.DisplayError(ex);
            }
        }
        public override void InitializeAfterLoad(int iAttempt)
        {
            try
            {
                base.InitializeAfterLoad(iAttempt);

                if(m_bInitialized)
                {
                    AnimatTools.DataObjects.Physical.BodyPart bpPart = null;
                    if(m_strLinkedBodyPartID.Length > 0)
                        bpPart = m_doOrganism.FindBodyPart(m_strLinkedBodyPartID, false);

                    m_thLinkedPart = new AnimatTools.TypeHelpers.LinkedBodyPartTree(m_doOrganism, bpPart, m_tpBodyPartType);
                    SetDataType();
                }
            }
            catch(System.Exception ex)
            {
                m_bInitialized = false;
                if(iAttempt == 1)
                        AnimatTools.Framework.Util.DisplayError(ex);
            }
        }