private void readViewOptions(XmlNode node)
{
foreach (XmlNode child in node.ChildNodes)
{
if ("View".Equals(child.Name))
{
int id = int.Parse(readAttribute(child, "ID", "5"));
Canguro.View.GraphicView view = Canguro.View.GraphicViewManager.Instance.GetView(id);
if (view != null)
{
int options = int.Parse(readAttribute(child, "OptionsShown", "0"));
string rot = readAttribute(child, "Rotation");
string trans = readAttribute(child, "Translation");
string scale = readAttribute(child, "Scale");
string scaleFac = readAttribute(child, "ScaleFac", "1");
string[] vp = readAttribute(child, "Viewport").Split(",".ToCharArray());
float vpScale = 1;
if (vp.Length >= 6)
{
Microsoft.DirectX.Direct3D.Viewport vPort = new Microsoft.DirectX.Direct3D.Viewport();
vPort.X = int.Parse(vp[0]);
vPort.Width = int.Parse(vp[1]);
vPort.Y = int.Parse(vp[2]);
vPort.Height = int.Parse(vp[3]);
vPort.MinZ = float.Parse(vp[4]);
vPort.MaxZ = float.Parse(vp[5]);
Microsoft.DirectX.Direct3D.Viewport current = view.Viewport;
vpScale = (float)current.Width / (float)vPort.Width;
vpScale = (vpScale > (float)current.Height / (float)vPort.Height) ? (float)current.Height / (float)vPort.Height : vpScale;
}
view.ArcBallCtrl.RotationMatrix = GetAsMatrix(rot);
view.ArcBallCtrl.TranslationMatrix = GetAsMatrix(trans);
// view.ArcBallCtrl.Scaling = GetAsMatrix(scale);
view.ArcBallCtrl.ZoomAbsolute(Convert.ToSingle(scaleFac) * vpScale);
// view.ArcBallCtrl.ScalingFac = Convert.ToSingle(scaleFac) * vpScale;
view.ViewMatrix = view.ArcBallCtrl.ViewMatrix;
view.ModelRenderer.RenderOptions.OptionsShown = (Canguro.View.Renderer.RenderOptions.ShowOptions)options;
}
}
}
}