public object GetResource(string resourceName, ResourceKind resourceKind, Dictionary <string, object> param) { if (initialized) { Vector2 position = param != null && param.ContainsKey("Position") ? (Vector2)param["Position"] : Vector2.Zero; switch (resourceKind) { case ResourceKind.Effect: var path = String.Format("Effect\\{0}", resourceName); if (EffectLoader.IsCached(path)) { return(new EffectObject(device, resourceManager, EffectLoader.Load(null, path, f => { return; }, f => null)) { Position = position }); } return(null); case ResourceKind.Image: var isCenter = (bool)param["IsCenter"]; return(new PictureObject(device, resourceManager, pathManager.Combine("Image", resourceName), isCenter) { Position = position }); case ResourceKind.Sound: soundID++; var name = String.Format("Sound\\{0}_{1}", resourceName, soundID); var soundResource = new SoundResource(sound, name, soundDict[String.Format("Sound\\{0}", resourceName)]); resourceManager.Add(name, soundResource); return(soundResource); case ResourceKind.Number: var alignment = (Alignment)param["Alignment"]; var maxDigit = (int)param["MaxDigit"]; return(new NumberPictureObject(device, resourceManager, pathManager.Combine("Image", resourceName)) { Position = position, Alignment = alignment, MaxDigit = maxDigit }); case ResourceKind.Others: return(new MemoryStream(othersDict[String.Format("Others\\{0}", resourceName)])); case ResourceKind.Rectangle: return(new RectangleComponent(device, resourceManager, (Color4)param["Color"])); case ResourceKind.VertexBuffer: var vertexInfo = device.GetModule <ShaderCommon>().CreateVertex((int)param["VertexCount"]); createdVertices.Add(vertexInfo); return(vertexInfo); case ResourceKind.Polygon: var filename = pathManager.Combine("Image", resourceName); var imageResource = resourceManager.GetResource <ImageResourceBase>(filename); if (imageResource == null) { imageResource = (ImageResourceBase)resourceManager.Add(filename, ImageResourceFactoryManager.Factory.Create(device, filename, false)); } var primitiveType = (PrimitiveType)param["PrimitiveType"]; var primitiveCount = (int)param["PrimitiveCount"]; var startIndex = (int)param["StartIndex"]; var vertexCount = (int)param["VertexCount"]; return(new PolygonObject(device, imageResource, (VertexInfo)param["Vertex"]) { PrimitiveType = primitiveType, PrimitiveCount = primitiveCount, StartIndex = startIndex, VertexCount = vertexCount, }); } } return(null); }