public CompositeGameObjectFromFile Build(Stream stream, IFileParserPlugin parser) { parser.Parse(stream, this); var colors = new Queue <Vector4>(); colors.Enqueue(V4Colors.Red); colors.Enqueue(V4Colors.Blue); colors.Enqueue(V4Colors.Green); colors.Enqueue(V4Colors.Yellow); foreach (var com in components) { var tag = new ElementTag("Obj_" + Guid.NewGuid());//DateTime.Now.Ticks var entity = manager.CreateEntity(tag); var cc = new List <IGraphicComponent>(); cc.Add(com); cc.Add(EntityBuilders.GetObjGroupsRender()); cc.Add(EntityBuilders.GetTransformation()); //var material = new PositionColorsComponent(); //material.Colors = new Vector4[com.Positions.Length]; //for (var i =0;i < com.Positions.Length; ++i) { // material.Colors[i] = V4Colors.Red; //} cc.Add(ColorComponent.CreateDiffuse(V4Colors.Red)); cc.Add(new ManipulatableComponent()); entity.AddComponents(cc); entity.AddComponents(others); gobj.AddEntity(tag); } return(gobj); //new SingleGameObject(tag, info.File.Name); }
public GameObject DrawCylinder(string key, CylinderDetails cyl) { var geo = GeometryBuilder.BuildCylinder(cyl.Start, cyl.Axis, cyl.Radius, cyl.Length); var en = EntityBuilders.BuildColored(Context, ElementTag.New(key), geo, cyl.Color, SharpDX.Direct3D11.CullMode.None); return(new SingleVisualObject(en.Tag, key)); }
public BuilderFactories(IStatFactory statFactory, IReadOnlyList <SkillDefinition> skills) { ActionBuilders = new ActionBuilders(statFactory); BuffBuilders = new BuffBuilders(statFactory, skills); ChargeTypeBuilders = new ChargeTypeBuilders(statFactory); ConditionBuilders = new ConditionBuilders(statFactory); DamageTypeBuilders = new DamageTypeBuilders(statFactory); EffectBuilders = new EffectBuilders(statFactory); EntityBuilders = new EntityBuilders(statFactory); EquipmentBuilders = new EquipmentBuilders(statFactory); FormBuilders = new FormBuilders(); KeywordBuilders = new KeywordBuilders(); SkillBuilders = new SkillBuilders(statFactory, skills); StatBuilders = new StatBuilders(statFactory); ValueBuilders = new ValueBuilders(); ItemSlotBuilders = new ItemSlotBuilders(); }
public BuilderFactories(SkillDefinitions skills) { var statFactory = new StatFactory(); ActionBuilders = new ActionBuilders(statFactory); BuffBuilders = new BuffBuilders(statFactory, skills); ChargeTypeBuilders = new ChargeTypeBuilders(statFactory); ConditionBuilders = new ConditionBuilders(statFactory); DamageTypeBuilders = new DamageTypeBuilders(statFactory); EffectBuilders = new EffectBuilders(statFactory); EntityBuilders = new EntityBuilders(statFactory); EquipmentBuilders = new EquipmentBuilders(statFactory); FormBuilders = new FormBuilders(); KeywordBuilders = new KeywordBuilders(); SkillBuilders = new SkillBuilders(statFactory, skills); StatBuilders = new StatBuilders(statFactory); ValueBuilders = new ValueBuilders(); MetaStatBuilders = new MetaStatBuilders(statFactory); MatchContexts = new MatchContexts(statFactory); }
public void LoadGameObject(IFileGeometry3D geo, FileInfo texture, string fileName) { var em = context.GetEntityManager(); var box = AxisAlignedBox.CreateFrom(geo.Positions); var center = box.Center; var c = (System.Windows.Media.Color)System.Windows.Media.ColorConverter.ConvertFromString("#B3B598"); GraphicEntity en; if (geo.TextureCoors.Any()) { en = EntityBuilders.BuildTextured(context, geo.Positions, geo.Indices, geo.TextureCoors.ToArray(), texture, SharpDX.Direct3D11.CullMode.None); } else { en = EntityBuilders.BuildColored(context, geo.Positions, geo.Indices, geo.Normals, ToVector4(c), SharpDX.Direct3D11.CullMode.Front); en.UpdateComponent(FlatShadingGeometryComponent.Create()); } en.UpdateComponent(TransformComponent.Create(Matrix4x4.CreateTranslation(Vector3.Zero - center))); GameObjects.Add(new SingleVisualObject(en.Tag, fileName)); //var boxlines = PolylineGameObject.Create( // Context, // new ElementTag("poly"), // GeometryBuilder.BuildBox( // new AxisAlignedBox(box.Minimum, box.Maximum)), // V4Colors.Blue // ); //Context.GetEntityManager().GetEntity(boxlines.Tag) // .UpdateComponent(TransformComponent.Create(Matrix4x4.CreateTranslation(Vector3.Zero - center))); //GameObjects.Add(boxlines); }
protected override void SceneInitialization(IContextState context, RenderEngine engine, ElementTag camera) { var smanager = Context.GetSystemManager(); smanager.CreateSystem <DefaultInputSystem>(); smanager.CreateSystem <ZoomToAllObjectsSystem>(); smanager.CreateSystem <MovingSystem>(); smanager.CreateSystem <CollidingSystem>(); smanager.CreateSystem <DefaultOrthographicCameraSystem>(); smanager.CreateSystem <LightsSystem>(); smanager .CreateSystem <RenderSystem>() .Init(engine.Graphics) .CreateNested <StensilTest_TriangleColoredVertexRenderTechnique <ToolkitRenderProperties> >() .CreateNested <LineVertexRenderTechnique <ToolkitRenderProperties> >() ; var manager = Context.GetEntityManager(); cameraObject = CameraObject.UpdateOrthographic <RenderSystem>(camera, Context, Surface); LightObject.CreateAmbientLight(manager, 0.2f); //0.05f LightObject.CreateFollowCameraDirectLight(manager, System.Numerics.Vector3.UnitZ, 0.8f); //0.95f InvokeLoaded(); { var pos0 = new[] { new Vector3(0, 40, 0), new Vector3(-30, -20, 0), new Vector3(30, -20, 0), }; var en0 = EntityBuilders.BuildColored(context, pos0, new int[] { 0, 1, 2 }, new[] { Vector3.UnitZ, Vector3.UnitZ, Vector3.UnitZ }, V4Colors.Red, SharpDX.Direct3D11.CullMode.Front); var dd = D3DDepthStencilDefinition.Default(0).Description; //dd.DepthComparison = Comparison.LessEqual; var _default = new D3DDepthStencilDefinition(dd, 0); en0.UpdateComponent(RenderableComponent.AsTriangleColoredList(SharpDX.Direct3D11.CullMode.None, _default)); } { var pos = new[] { new Vector3(0, 20, 0), new Vector3(-20, 0, 0), new Vector3(20, 0, 0), }; var en1 = EntityBuilders.BuildColored(context, pos, new int[] { 0, 1, 2 }, new[] { Vector3.UnitZ, Vector3.UnitZ, Vector3.UnitZ }, V4Colors.Blue, SharpDX.Direct3D11.CullMode.Front); var dd = new DepthStencilStateDescription() { IsDepthEnabled = true, IsStencilEnabled = true, DepthWriteMask = DepthWriteMask.All, DepthComparison = Comparison.LessEqual, StencilWriteMask = 0xFF, StencilReadMask = 0xFF, BackFace = new DepthStencilOperationDescription() { PassOperation = StencilOperation.Keep, Comparison = Comparison.Never, DepthFailOperation = StencilOperation.Keep, FailOperation = StencilOperation.Replace }, FrontFace = new DepthStencilOperationDescription() { PassOperation = StencilOperation.Increment, Comparison = Comparison.Never, DepthFailOperation = StencilOperation.Keep, FailOperation = StencilOperation.Replace } }; var stensilNever = new D3DDepthStencilDefinition(dd, 2); en1.UpdateComponent(RenderableComponent.AsTriangleColoredList(SharpDX.Direct3D11.CullMode.None, stensilNever)); } { var pos2 = new[] { new Vector3(20, 10, 0), new Vector3(-20, 10, 0), new Vector3(0, -10, 0), }; var en2 = EntityBuilders.BuildColored(context, pos2, new int[] { 0, 1, 2 }, new[] { Vector3.UnitZ, Vector3.UnitZ, Vector3.UnitZ }, V4Colors.Green, SharpDX.Direct3D11.CullMode.Front); var ddd = new DepthStencilStateDescription() { IsDepthEnabled = true, IsStencilEnabled = true, DepthWriteMask = DepthWriteMask.All, DepthComparison = Comparison.LessEqual, StencilWriteMask = 0xFF, StencilReadMask = 0xFF, BackFace = new DepthStencilOperationDescription() { PassOperation = StencilOperation.Replace, Comparison = Comparison.Greater, DepthFailOperation = StencilOperation.Keep, FailOperation = StencilOperation.Replace }, FrontFace = new DepthStencilOperationDescription() { PassOperation = StencilOperation.Increment, Comparison = Comparison.Greater, DepthFailOperation = StencilOperation.Keep, FailOperation = StencilOperation.Replace } }; var stensilGrater = new D3DDepthStencilDefinition(ddd, 1); en2.UpdateComponent(RenderableComponent.AsTriangleColoredList(SharpDX.Direct3D11.CullMode.None, stensilGrater)); } }