bool Cylinder::SetData(const std::string &strDataType, const std::string &strValue, bool bThrowError) { std::string strType = Std_CheckString(strDataType); if(RigidBody::SetData(strType, strValue, false)) return true; if(strType == "RADIUS") { Radius((float) atof(strValue.c_str())); return true; } if(strType == "HEIGHT") { Height((float) atof(strValue.c_str())); return true; } if(strType == "SIDES") { Sides(atoi(strValue.c_str())); return true; } //If it was not one of those above then we have a problem. if(bThrowError) THROW_PARAM_ERROR(Al_Err_lInvalidDataType, Al_Err_strInvalidDataType, "Data Type", strDataType); return false; }
//-------------------------------------------------------------------- Real ZFace::Area (const ZVectorCacheArray& v) // Returns the area of the face { Real* ss = Sides(v); Real p = Perimeter(v)/2; // Heron's formula return sqrt (p*(p-ss[0])*(p-ss[1])*(p-ss[2])); }
//-------------------------------------------------------------------- Real ZFace::Perimeter (const ZVectorCacheArray& v) // Returns the perimeter of the face { Real out = 0; Real* ss = Sides(v); for (int i=0; i<=3-1; ++i) out += ss[i]; return out; }
void Cylinder::Load(CStdXml &oXml) { RigidBody::Load(oXml); oXml.IntoElem(); //Into RigidBody Element Radius(oXml.GetChildFloat("Radius", m_fltRadius)); Height(oXml.GetChildFloat("Height"), m_fltHeight); Sides(oXml.GetChildInt("Sides", m_iSides)); oXml.OutOfElem(); //OutOf RigidBody Element }
void VScroller::Update() { IntCoord oldbottom, oldtop, newbottom, newtop; int oldheight, newheight; Perspective* p; if (canvas == nil) { return; } p = view; GetBarInfo(shown, oldbottom, oldheight); GetBarInfo(p, newbottom, newheight); if (oldbottom != newbottom || oldheight != newheight) { oldtop = oldbottom+oldheight-1; newtop = newbottom+newheight-1; if (oldtop >= newbottom && newtop >= oldbottom) { if (oldtop > newtop) { Background(inset, newtop+1, xmax-inset, oldtop); Border(newtop); } else if (oldtop < newtop) { Bar(oldtop, newtop-oldtop); Sides(oldtop, newtop); Border(newtop); } if (oldbottom > newbottom) { Bar(newbottom+1, oldbottom-newbottom); Sides(newbottom, oldbottom); Border(newbottom); } else if (oldbottom < newbottom) { Background(inset, oldbottom, xmax-inset, newbottom-1); Border(newbottom); } } else { Background(inset, oldbottom, xmax-inset, oldtop); Bar(newbottom, newheight); Outline(newbottom, newheight); } } *shown = *p; }
void HScroller::Update() { IntCoord oldleft, oldright, newleft, newright; int oldwidth, newwidth; Perspective* p; if (canvas == nil) { return; } p = view; GetBarInfo(shown, oldleft, oldwidth); GetBarInfo(p, newleft, newwidth); if (oldleft != newleft || oldwidth != newwidth) { oldright = oldleft+oldwidth-1; newright = newleft+newwidth-1; if (oldright >= newleft && newright >= oldleft) { if (oldright > newright) { Background(newright+1, inset, oldright, ymax-inset); Border(newright); } else if (oldright < newright) { Bar(oldright, newright-oldright); Sides(oldright, newright); Border(newright); } if (oldleft > newleft) { Bar(newleft+1, oldleft-newleft); Sides(newleft, oldleft); Border(newleft); } else if (oldleft < newleft) { Background(oldleft, inset, newleft-1, ymax-inset); Border(newleft); } } else { Background(oldleft, inset, oldright, ymax-inset); Bar(newleft, newwidth); Outline(newleft, newwidth); } } *shown = *p; }
void Cone::Load(CStdXml &oXml) { RigidBody::Load(oXml); oXml.IntoElem(); //Into RigidBody Element LowerRadius(oXml.GetChildFloat("LowerRadius", m_fltLowerRadius)); UpperRadius(oXml.GetChildFloat("UpperRadius", m_fltUpperRadius)); Height(oXml.GetChildFloat("Height"), m_fltHeight); Sides(oXml.GetChildInt("Sides", m_iSides)); oXml.OutOfElem(); //OutOf RigidBody Element }