/// <summary/> public SceneTestObjects(Variation v) : base(v) { visual3Ds = FactoryParser.MakeScene(v); camera = FactoryParser.MakeCamera(v); camera.Transform = TransformFactory.MakeTransform(v["CameraTransform"]); ObjectUtils.NameObjects(visual3Ds); }
private static Model3DCollection MakeModelCollection(Variation v, string namePrefix) { // Meta-symbology: // { }* == Klene star, or 0 or more occurrances of the stuff inside the brackets // { }? == Optional, the stuff inside the brackets may or may not exist // < > == Description of what's parsed, the stuff inside the brackets is not a literal string // You can specify up to 10 children per model group (0-9) // namePrefix has format: "Child{n}*" Model3DCollection collection = new Model3DCollection(); for (int i = 0; i < 10; i++) { string modelName = namePrefix + i.ToString(); string modelValue = v[modelName]; if (modelValue == null) { break; } string materialName = modelName.Replace("Child", "Material"); string backMaterialName = modelName.Replace("Child", "BackMaterial"); string transformName = modelName.Replace("Child", "ModelTransform"); try { Model3D model = ModelFactory.MakeModel(modelValue); if (model is GeometryModel3D) { Material front = MakeMaterial(v, materialName); Material back = MakeMaterial(v, backMaterialName); if (front != null) { ((GeometryModel3D)model).Material = front; } ((GeometryModel3D)model).BackMaterial = back; } model.Transform = TransformFactory.MakeTransform(v[transformName]); if (model is Model3DGroup && v[modelName + "0"] != null) { ((Model3DGroup)model).Children = MakeModelCollection(v, modelName); } collection.Add(model); } catch (ArgumentException) { throw new ApplicationException("Confused by attribute (" + modelName + " = " + modelValue + ")"); } } return(collection); }
private static Model3D MakeCustomModel3D(Variation v, string visualName) { string visualContent = v[visualName]; string materialName = visualName.Replace("Visual", "Material"); string backMaterialName = visualName.Replace("Visual", "BackMaterial"); string modelTransformName = visualName.Replace("Visual", "ModelTransform"); string modelChildrenName = visualName.Replace("Visual", "Child"); Model3D model = ModelFactory.MakeModel(visualContent); if (model is GeometryModel3D) { // Material syntax is going to look a little wacky, but it's the easiest way to do this. // // Material0="255,255,255,255" // Material0Type="Specular" // Material0Color="255,255,255,255" // Material0AmbientColor="255,255,255,255" // Material0SpecularPower="20" // Material front = MakeMaterial(v, materialName); if (front != null) { ((GeometryModel3D)model).Material = front; } Material back = MakeMaterial(v, backMaterialName); if (back != null) { ((GeometryModel3D)model).BackMaterial = back; } } model.Transform = TransformFactory.MakeTransform(v[modelTransformName]); if (model is Model3DGroup && v[modelChildrenName + "0"] != null) { ((Model3DGroup)model).Children = MakeModelCollection(v, modelChildrenName); } return(model); }
private static Visual3D MakeVisual3D(Variation v, string visualName) { string skipName = visualName.Replace("Visual", "Skip"); string skipType = v[skipName] == null ? string.Empty : v[skipName]; string visualType = v[visualName.Replace("Visual", "VisualType")]; string visualTransformName = visualName.Replace("Visual", "VisualTransform"); Visual3D visual = null; if (visualType == null || visualType == "ModelVisual3D") { //Default V1 test codepath visual = MakeModelVisual3D(v, visualName); ((ModelVisual3D)visual).Transform = TransformFactory.MakeTransform(v[visualTransformName]); } #if TARGET_NET3_5 else if (visualType == "ModelUIElement3D") { visual = MakeModelUIElement3D(v, visualName); visual.Transform = TransformFactory.MakeTransform(v[visualTransformName]); } else if (visualType == "ViewportVisual3D") { visual = MakeViewportVisual3D(v, visualName); visual.Transform = TransformFactory.MakeTransform(v[visualTransformName]); } #endif else { throw new ArgumentException("Unable to create VisualType (" + visualType + ")." + "Supported types are ModelVisual3D (+V3.5 ModelUIElement3D and ViewportVisual3D)."); } visual.SetValue(Const.SkipProperty, skipType); return(visual); }
private static Visual3D MakeViewportVisual3D(Variation v, string visualName) { Viewport2DVisual3D visual = new Viewport2DVisual3D(); string visualContent = v[visualName]; string materialName = visualName.Replace("Visual", "Material"); //Back Material is intentionally omitted string modelTransformName = visualName.Replace("Visual", "VisualTransform"); string modelChildName = visualName.Replace("Visual", "Child"); //Only Geometry, Material and child are accepted, not general Model3D's. visual.Geometry = MeshFactory.MakeMesh(visualContent); Material material = MakeMaterial(v, materialName); //Material can be null. if (material != null) { // material.SetValue(Viewport2DVisual3D.IsVisualHostMaterialProperty, true); visual.Material = material; } visual.Transform = TransformFactory.MakeTransform(v[modelTransformName]); // //This operates at the same tree level as the parent, as it has //a one-to-one parent relationship. if (v[modelChildName] != null) { Visual childVisual = VisualFactory.MakeVisual(v[modelChildName]); if (childVisual != null) { visual.Visual = childVisual; } } return(visual); }