Exemple #1
0
        public D3DEngine(IAppWindow window, IContextState context, EngineNotificator notificator) :
            base(window, context, new D3DViewport(), notificator)
        {
            Statics.Collision = new SDXCollision();

            Graphics = new SynchronizedGraphics(window);
        }
Exemple #2
0
        public override void Hide(IContextState context)
        {
            var en = context.GetEntityManager().GetEntity(Tag);

            en.UpdateComponent(en.GetComponent <RenderableComponent>().Disable());
            IsVisible = false;
        }
Exemple #3
0
        public override void Show(IContextState context)
        {
            var en = context.GetEntityManager().GetEntity(Tag);

            en.UpdateComponent(en.GetComponent <RenderableComponent>().Enable());
            IsVisible = true;
        }
        public static VisualPolylineObject Create(IContextState context, ElementTag tag,
                                                  Vector3[] points, Vector4 color, bool isVisible = true)
        {
            var manager = context.GetEntityManager();

            var indeces = new List <int>();
            var pos     = new List <Vector3>();
            var prev    = points[0];

            for (var i = 0; i < points.Length; i++)
            {
                pos.Add(prev);
                pos.Add(points[i]);
                prev = points[i];
            }
            for (var i = 0; i < pos.Count; i++)
            {
                indeces.AddRange(new[] { i, i });
            }
            var geo = context.GetGeometryPool().AddGeometry(new ImmutableGeometryData(pos, indeces));

            manager
            .CreateEntity(tag)
            .AddComponent(geo)
            .AddComponent(TransformComponent.Identity())
            .AddComponent(ColorComponent.CreateDiffuse(color))
            .AddComponent(isVisible ? RenderableComponent.AsLineList() : RenderableComponent.AsLineList().Disable());

            return(new VisualPolylineObject(tag));
        }
Exemple #5
0
 public void RemoveVisualObject(IContextState context, ElementTag tag)
 {
     if (tags.Remove(tag))
     {
         Cleanup(tag, context);
     }
 }
        static void _Create(IContextState context, IEnumerable <IFileGeometry3D> meshes,
                            FileInfo texture, string name, LoadedVisualObject visual)
        {
            List <ElementTag> t    = new List <ElementTag>();
            var            details = new LoadedObjectDetails();
            var            baseTag = ElementTag.New();
            var            index   = 0;
            AxisAlignedBox fullBox = AxisAlignedBox.Zero;

            foreach (var geo in meshes)
            {
                var tag = Create(context, baseTag.WithPrefix(geo.Name ?? index.ToString()),
                                 new GeometryStructures <IFileGeometry3D>(geo), texture, out var box);
                t.Add(tag);
                fullBox                = fullBox.Merge(box.Bounds);
                details.VertexCount   += geo.Positions.Count;
                details.TriangleCount += (geo.Indices.Count / 3);
                index++;
            }

            visual.tags.AddRange(t);
            visual.Details = details;

            var size = fullBox.Size();

            visual.worldX = VisualPolylineObject.Create(context, baseTag.WithPrefix("WorldX"),
                                                        new[] { Vector3.Zero + Vector3.UnitX * size.X * -2f, Vector3.Zero + Vector3.UnitX * size.X * 2f }, V4Colors.Red, false);
            visual.worldX.IsVisible = false;
            visual.worldY           = VisualPolylineObject.Create(context, baseTag.WithPrefix("WorldY"),
                                                                  new[] { Vector3.Zero + Vector3.UnitY * size.Y * -2f, Vector3.Zero + Vector3.UnitY * size.Y * 2f }, V4Colors.Green, false);
            visual.worldY.IsVisible = false;
            visual.worldZ           = VisualPolylineObject.Create(context, baseTag.WithPrefix("WorldZ"),
                                                                  new[] { Vector3.Zero + Vector3.UnitZ * size.Z * -2f, Vector3.Zero + Vector3.UnitZ * size.Z * 2f }, V4Colors.Blue, false);
            visual.worldZ.IsVisible = false;
        }
Exemple #7
0
        public static GraphicEntity BuildTextured(IContextState context,
                                                  IReadOnlyCollection <Vector3> pos, IReadOnlyCollection <int> indexes, IReadOnlyCollection <Vector2> texCoor, FileInfo texture, CullMode cullMode)
        {
            if (texCoor == null)
            {
                throw new Exception("Geo must have TextCoor.");
            }
            var manager = context.GetEntityManager();
            var en      = manager.CreateEntity(new ElementTag("TexturedGeometry" + Guid.NewGuid()));

            var material = MaterialColorComponent.CreateTransparent().ApplyAlpha(1);

            var geo = context.GetGeometryPool()
                      .AddGeometry(new ImmutableGeometryData(
                                       pos,
                                       pos.ToList().CalculateNormals(indexes.ToList()).AsReadOnly(),
                                       indexes,
                                       texCoor));

            en.AddComponent(TransformComponent.Identity())
            .AddComponent(geo)
            .AddComponent(material)
            .AddComponent(new D3DTexturedMaterialSamplerComponent(texture))
            .AddComponent(RenderableComponent.AsTriangleTexturedList(cullMode));

            return(en);
        }
Exemple #8
0
 public static RenderEngine Create(IRenderableWindow window,
                                   IInputManager inputManager, IContextState context, EngineNotificator notificator)
 {
     GraphicsDeviceFactory.CreateOutputHandleDevice(window);
     return(new RenderEngine(GraphicsDeviceFactory.CreateOutputHandleDevice(window),
                             window, inputManager, context, notificator));
 }
Exemple #9
0
 public WireframeComponetViewModel(LoadedVisualObject visual, IContextState context)
 {
     this.visual               = visual;
     this.context              = context;
     IsTransparent             = true;
     TransparentCheckedCommand = new WpfActionCommand(OnTransparentChecked);
 }
Exemple #10
0
 public void Release()
 {
     _entity.Release();
     _behaviour            = null;
     _cancelationOperation = null;
     IsActive = false;
 }
Exemple #11
0
 public override void Cleanup(IContextState context)
 {
     foreach (var tag in tags)
     {
         Cleanup(tag, context);
     }
     tags.Clear();
 }
Exemple #12
0
 protected EntityOctree(IContextState context, BoundingBox box, int MaximumChildren) : base(box, MaximumChildren)
 {
     _lock               = new object();
     this.context        = context;
     isActualStateDrawed = false;
     loker               = new object();
     synchronizer        = new SynchronizationContext <EntityOctree, IGraphicComponent>(this, loker);
 }
Exemple #13
0
 public DefaultEngine(IAppWindow window, IContextState context, EngineNotificator notificator)
 {
     Context          = context;
     this.Window      = window;
     this.Notificator = notificator;
     tokensource      = new CancellationTokenSource();
     token            = tokensource.Token;
 }
Exemple #14
0
        public IDisposable Execute(IContextState <IEnumerator> state,
                                   IContext context)
        {
            var routine = state.Execute(context);
            var dispose = routine.RunWithSubRoutines();

            return(dispose);
        }
Exemple #15
0
 public void ClearDrew(IContextState context)
 {
     foreach (var b in drawedDebug)
     {
         b.Cleanup(context);
     }
     drawedDebug.Clear();
 }
Exemple #16
0
 public OctreeManager(IContextState context, AxisAlignedBox box, int MaximumChildren,
                      RenderLoopSynchronizationContext syncContext) : base(box, MaximumChildren)
 {
     this.context         = context;
     IsDrawingBoxesEnable = false;
     loker      = new object();
     sync       = new SynchronizationContextAdapter <OctreeManager, SyncData>(this, syncContext);
     drawerTask = Task.CompletedTask;
 }
Exemple #17
0
        /// <summary>
        /// Default Constructor.
        /// Creates a new instance of <see cref="IStateStorage"/> class.
        /// </summary>
        /// <param name="applicationState">An instance of <see cref="IApplicationState"/> that is used to store
        /// application state data.</param>
        /// <param name="localState">An instance of <see cref="IContextState"/> that is used to store local
        /// state data.</param>
        /// <param name="sessionState">An instance of <see cref="ISessionState"/> that is used to store session
        /// state data.</param>

        public StateStorageWrapper(
            IApplicationState applicationState,
            IContextState localState,
            ISessionState sessionState)
        {
            _applicationState = applicationState;
            _localState       = localState;
            _sessionState     = sessionState;
        }
Exemple #18
0
        public ManagerContainer(IManagerChangeNotify notify, IContextState context)
        {
            EntityOrder        = new EntityOrderContainer();
            this.SystemManager = new SystemManager(notify, context);
            var encom = new EntityComponentManager(notify, EntityOrder);

            this.ComponentManager = encom;
            this.EntityManager    = encom;
        }
Exemple #19
0
        public void Initialize(IContextDataSource dataSource, IContextState <IEnumerator> behaviour)
        {
            Stop();

            //register data context
            //dataSource.Register(_entity);
            //set current behaviour
            _behaviour = behaviour;
        }
Exemple #20
0
 public EngineCore(IAppWindow window, IContextState context, IViewport viewport, EngineNotificator notificator)
 {
     Context          = context;
     this.viewport    = viewport;
     this.Window      = window;
     this.notificator = notificator;
     tokensource      = new CancellationTokenSource();
     token            = tokensource.Token;
 }
Exemple #21
0
        public override void Show(IContextState context)
        {
            var m = context.GetEntityManager();

            foreach (var tag in tags)
            {
                Show(tag, m);
            }
            IsVisible = true;
        }
        public static LoadedVisualObject Create(IContextState context, IEnumerable <IFileGeometry3D> meshes,
                                                FileInfo texture, string name)
        {
            var visual = new LoadedVisualObject(name);

            visual.CullMode = SharpDX.Direct3D11.CullMode.Front;
            _Create(context, meshes, texture, name, visual);

            return(visual);
        }
Exemple #23
0
        public override void Hide(IContextState context)
        {
            var m = context.GetEntityManager();

            foreach (var tag in tags)
            {
                Hide(tag, m);
            }
            IsVisible = false;
        }
Exemple #24
0
 public void HideBoundingBox(IContextState context)
 {
     if (boxComponent == null)
     {
         throw new InvalidOperationException();
     }
     Visual.HideBoundingBox(context);
     ActiveComponents.Remove(boxComponent);
     boxComponent = null;
 }
Exemple #25
0
        public void ActivateStaticComponents(IContextState context)
        {
            if (cullComponent != null)
            {
                throw new InvalidOperationException();
            }

            cullComponent = new CullModesComponentViewModel(Visual, context);
            ActiveComponents.Add(cullComponent);
        }
Exemple #26
0
        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<MovementSystem>();
            //  smanager.CreateSystem<EmptyAnimationSystem>();
            //  smanager.CreateSystem<MeshAnimationSystem>();
            //  smanager.CreateSystem<StickOnHeightMapSystem>();
            //     smanager.CreateSystem<ObjectMovementSystem>();
            //    smanager.CreateSystem<Systems.TerrainGeneratorSystem>();
            //   smanager.CreateSystem<Physics.Engine.PhysicalSystem>();

            smanager
            .CreateSystem <RenderSystem>()
            .Init(engine.Graphics)
            // .CreateNested<SkyGradientColoringRenderTechnique>()
            //  .CreateNested<SkyPlaneWithParallaxRenderTechnique>()
            //   .CreateNested<TerrainRenderTechnique>()//
            //.CreateNested<Toolkit.D3D.CameraViews.CameraViewsRenderTechnique<CustomRenderProperties>>()
            //.CreateNested<OITTriangleColoredVertexRenderTechnique<ToolkitRenderProperties>>()
            .CreateNested <TriangleColoredVertexRenderTechnique <ToolkitRenderProperties> >()
            .CreateNested <TriangleTexturedVertexRenderTechnique <ToolkitRenderProperties> >()
            .CreateNested <LineVertexRenderTechnique <ToolkitRenderProperties> >()
            //.CreateNested<CudaTestTechniques<ToolkitRenderProperties>>()
            .CreateNested <SpherePointRenderTechnique <ToolkitRenderProperties> >()
            //.CreateNested<AminRenderTechniqueSystem>()
            ;

            //smanager
            //    .CreateSystem<AminRenderSystem>()
            //    .Init(device);Context
            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

            CoordinateSystem = CoordinateSystemLinesGameObject.Create(context, false);

            Loaded?.Invoke();


            //VisualSphereObject.SphereGeo(Context, ElementTag.New($"Point"), new VisualSphereObject.Data {
            //    Center = new Vector3(10, 20, 10),
            //    Color = V4Colors.Yellow,
            //    Radius = 10
            //});
        }
Exemple #27
0
        public static GraphicEntity BuildColored(IContextState context,
                                                 IReadOnlyCollection <Vector3> pos, IReadOnlyCollection <int> indexes,
                                                 IReadOnlyCollection <Vector3> norm, Vector4 v4color, CullMode cullMode)
        {
            var mormals = norm ?? pos.ToList().CalculateNormals(indexes.ToList()).AsReadOnly();

            return(BuildColored(context, ElementTag.New("TriangleColored"), new ImmutableGeometryData(
                                    pos,
                                    mormals,
                                    indexes), v4color, cullMode));
        }
        public bool Execute(ISceneSnapshot snapshot, IContextState context)
        {
            var p1 = InputState.ButtonsStates[type].PointV2;

            var manager = context.GetEntityManager();
            var world   = manager.GetEntity(snapshot.WorldTag);

            world.UpdateComponent(CaptureTargetUnderMouseComponent.Create(p1));

            return(true);
        }
Exemple #29
0
        RenderEngine(GraphicsDevice device, IRenderableSurface surface,
                     IInputManager inputManager, IContextState context, EngineNotificator notificator)
            : base(surface, inputManager, context, notificator)
        {
            Graphics = new SynchronizedGraphics(surface, device);

            var includes = new System.Collections.Generic.Dictionary <string, IIncludeResourse>();

            includes.Add("Common", new IncludeResourse("Common", "D3DLab.Toolkit._CommonShaders.Common.hlsl"));

            Graphics.Device.Compilator.AddInclude(new D3DLab.SDX.Engine.Shader.D3DIncludeAdapter(includes));
        }
Exemple #30
0
        public bool Execute(ISceneSnapshot snapshot, IContextState context)
        {
            var entity = context.GetEntityManager().GetEntity(snapshot.CurrentCameraTag);

            if (entity.TryGetComponent <CameraMovementComponent>(out var com) &&
                com.MovementType != CameraMovementComponent.MovementTypes.ChangeRotationCenter)
            {
                entity.RemoveComponent <CameraMovementComponent>();
            }

            return(true);
        }