コード例 #1
0
ファイル: Button.cs プロジェクト: klukule/scene-editor
        public override void Draw(Scene.Scene scene)
        {
            IntPtr middleFont = Glut.GLUT_BITMAP_HELVETICA_12;

            if (hasBorder)
            {
                Gl.glBegin(Gl.GL_QUADS);

                Gl.glColor3fv(MathUtils.GetVector3Array(outerColor));
                Gl.glVertex2d(X, Y);
                Gl.glVertex2d(X + WIDTH, Y);
                Gl.glVertex2d(X + WIDTH, Y + HEIGHT);
                Gl.glVertex2d(X, Y + HEIGHT);

                if (!selected)
                {
                    Gl.glColor3fv(MathUtils.GetVector3Array(innerColor));
                }
                else
                {
                    Gl.glColor3fv(MathUtils.GetVector3Array(selectedColor));
                }
                Gl.glVertex2d(X + Margin, Y + Margin);
                Gl.glVertex2d(X + WIDTH - Margin, Y + Margin);
                Gl.glVertex2d(X + WIDTH - Margin, Y + HEIGHT - Margin);
                Gl.glVertex2d(X + Margin, Y + HEIGHT - Margin);

                Gl.glEnd();
            }
            Gl.glColor3d(0, 0, 0);
            Figure.WriteText(middleFont, Name, X + 5, Y + HEIGHT / 2 + 5);
        }
コード例 #2
0
        public static void Initialize(GlobalInit initStruct)
        {
            // subsystem initialization

            // initialize low level system
            // File System
            m_FileSystem = new Filesystem.FileSystem();
            m_FileSystem.Initialize();

            // graphic
            m_Device3d = new GraphicDevice.Direct3d11.Device3dD3d11();
            Device3dInit dev3dInit = new Device3dInit();

            dev3dInit.hWindow       = initStruct.hWindow;
            dev3dInit.iScreenWidth  = initStruct.hWindow.ClientSize.Width;
            dev3dInit.iScreenHeight = initStruct.hWindow.ClientSize.Height;
            m_Device3d.Initialize(dev3dInit);

            // input
            m_InputManager = new Input.CInputManager();
            m_InputManager.Initialize(initStruct.hWindow);

            // application time
            m_AppTimer = new CAccumTimer();
            m_AppTimer.Start();

            // initialize high level
            // world
            m_World = new World.CWorld();

            // scene
            m_Scene = new Scene.Scene();
            m_Scene.Load();
            m_Scene.CurrWorld = m_World;
        }
コード例 #3
0
 protected WorkflowFailState(SerializationInfo info, StreamingContext context)
 {
     m_SerVersion = info.GetInt32("m_SerVersion");
     m_Name       = info.GetString("m_Name");
     m_Conditions = (ObservableCollection <WorkflowCondition>)info.GetValue("m_Conditions", typeof(ObservableCollection <WorkflowCondition>));
     m_Scene      = (Scene.Scene)info.GetValue("m_Scene", typeof(Scene.Scene));
 }
コード例 #4
0
        public event PropertyChangedEventHandler PropertyChanged; // event for the databinding

        public WorkflowFailState(string pName, string pTriggerMessage, Scene.Scene pScene)
        {
            Name         = pName;
            m_Conditions = new ObservableCollection <WorkflowCondition>();
            Conditions.Add(new WorkflowCondition(pTriggerMessage));
            Scene = pScene;
        }
コード例 #5
0
ファイル: FbxImporter.cs プロジェクト: xorza/NetGL
        private Scene.Node ImportNode(Scene.Scene scene, FbxConverterTypes.Node node)
        {
            var so = new Scene.Node(scene, node.name);

            so.Transform.LocalPosition = ToVector3(node.position);
            so.Transform.LocalRotation = Quaternion.CreateFromYawPitchRoll(ToVector3(node.rotation));
            so.Transform.LocalScale    = ToVector3(node.scale);

            foreach (var child in node.nodes)
            {
                var subnode = ImportNode(scene, child);
                subnode.Transform.Parent = so.Transform;
            }

            if (node.mesh != null)
            {
                var renderable = so.AddComponent <MeshRenderable>();
                var mesh       = new Core.Types.Mesh();
                mesh.Vertices   = node.mesh.vertices.Select(_ => new Vector3(_.x, _.y, _.z)).ToArray();
                mesh.Normals    = node.mesh.normals.Select(_ => new Vector3(_.x, _.y, _.z)).ToArray();
                mesh.Tangents   = node.mesh.tangents.Select(_ => new Vector3(_.x, _.y, _.z)).ToArray();
                mesh.TexCoords  = node.mesh.uvs.Select(_ => new Vector2(_.x, _.y)).ToArray();
                renderable.Mesh = mesh;
            }

            return(so);
        }
コード例 #6
0
        public WorkflowBase(SerializationInfo pInfo, StreamingContext pContext)
            : base(pInfo, pContext)
        {
            // for version evaluation while deserializing
            int pSerVersion = pInfo.GetInt32("m_SerVersionWorkflowBase");

            m_X              = pInfo.GetInt32("m_X");
            m_Y              = pInfo.GetInt32("m_Y");
            m_Z              = pInfo.GetInt32("m_Z");
            m_Width          = pInfo.GetInt32("m_Width");
            m_Height         = pInfo.GetInt32("m_Height");
            m_Name           = pInfo.GetString("m_Name");
            m_TriggerMessage = pInfo.GetString("m_TriggerMessage");


            if (pSerVersion > 1)
            {
                m_CustomScene = (Scene.Scene)pInfo.GetValue("m_CustomScene", typeof(Scene.Scene));
            }

            if (pSerVersion > 2)
            {
                m_Contour = (Polygon)pInfo.GetValue("m_Contour", typeof(Polygon));
            }



            this.trigger += WorkflowManager.Instance.OnTriggered;
        }
コード例 #7
0
 public override void MouseMenuInput(Scene.Scene scene, int button, int state, int x, int y)
 {
     foreach (KeyValuePair <string, Button> entry in buttonDictionary)
     {
         entry.Value.MouseInput(scene, button, state, x, y);
     }
 }
コード例 #8
0
        private void MenuItem_EditScene(object sender, RoutedEventArgs e)
        {
            // update the EditWorkflowManager here
            Object o = m_WorkflowListview.SelectedItem;

            if (o != null)
            {
                if (o is WorkingStep)
                {
                    WorkingStep step  = (WorkingStep)o;
                    Scene.Scene scene = new Scene.Scene();
                    if (m_ComboboxAdaptivityLevel.SelectedValue != null)
                    {
                        scene = step.getAdaptiveScene((int)m_ComboboxAdaptivityLevel.SelectedValue).Scene;
                        foreach (SceneItem itemIter in scene.Items)
                        {
                            itemIter.Touchy = true;
                        }
                    }
                    SceneManager.Instance.CurrentScene = scene;
                    SceneEditorDialog dlg = new SceneEditorDialog(scene);
                    dlg.Show();
                }
            }
        }
コード例 #9
0
ファイル: SceneFactory.cs プロジェクト: D-Inventor/RayTracer
        public Scene.Scene CreateScene(SceneModel model)
        {
            IDictionary <string, Texture>  textures  = CreateTextures(model);
            IDictionary <string, Material> materials = CreateMaterials(model, textures);
            ICollection <ShapeBase>        shapes    = CreateShapes(model, materials);
            ICollection <LightBase>        lights    = CreateLights(model);
            IDictionary <string, Shader>   shaders   = CreateShaderPrograms(model);
            IDictionary <string, Mesh>     meshes    = CreateMeshes(model);
            Camera camera = CreateCamera(model, textures, materials);

            Scene.Scene result = new Scene.Scene
            {
                Textures  = textures,
                Materials = materials,
                Shapes    = shapes,
                Shaders   = shaders,
                Meshes    = meshes,
                Camera    = camera,
                Lights    = lights
            };

            result.Camera.Collider        = new ColliderCollection(result.Shapes.Cast <ICollider>());
            result.Camera.CollisionHelper = new CollisionHelper(result, result.Camera.Collider);
            result.Camera.SetRenderQueue(result.Camera.GetCollisions());

            return(result);
        }
コード例 #10
0
ファイル: InfoMenu.cs プロジェクト: klukule/scene-editor
 public override void MouseInput(Scene.Scene scene, int button, int state, int x, int y)
 {
     if (scene.SelectedFigure != null)
     {
         scene.SelectedFigure.MouseMenuInput(scene, button, state, x, y);
     }
 }
コード例 #11
0
ファイル: PBDManager.cs プロジェクト: koppor/motionEAP
        public void OnObjectWasTakenTrigger(TrackableObject obj)
        {
            ObjectDetectionZone myZone = null;

            // find the zone that the object was last seen
            foreach (ObjectDetectionZone zone in ObjectDetectionManager.Instance.CurrentLayout.ObjectDetectionZones)
            {
                if (zone.Id == obj.LastSeenZoneId)
                {
                    // found the zone
                    myZone = zone;
                }
            }

            // check if rec is running
            if (StateManager.Instance.State == AllEnums.State.RECORD && !m_BlockUntilObjectIsBackAgain)
            {
                // create a scene for displaying the picking of the object
                Scene.Scene     autoScene = new Scene.Scene();
                Scene.SceneRect rect      = ObjectDetectionManager.Instance.createSceneRectForObjectDetectionZone(myZone, true);
                autoScene.Add(rect);

                AdaptiveScene adaptiveScene = new AdaptiveScene(autoScene, AdaptivityLevel.AdaptivityLevels.FirstOrDefault());

                EditWorkflowManager.Instance.createStep(AllEnums.PBD_Mode.OBJECT_RECOGNIZED, adaptiveScene, "Benutze Objekt-" + obj.Name, obj.Name);

                m_BlockUntilObjectIsBackAgain = true;
            }
        }
コード例 #12
0
        public NetGLControl()
        {
            if (DesignMode)
            {
                AddLabel("3D will be here");
                return;
            }

            var      time     = new SceneTime();
            Graphics graphics = null;

            try {
                graphics = new Graphics(this, time, ShadingTechnique.Forward);
            }
            catch (GLException ex) {
                Log.Exception(ex);

                AddLabel("Failed to initialize 3D: " + ex.Message);
                return;
            }
            Graphics = graphics;
            _scene   = new Scene.Scene(this, graphics, time);

            RenderDispatcher = RenderDispatcher.Current;

            SetStyle(ControlStyles.UserPaint, false);
            StartRenderLoop();
        }
コード例 #13
0
ファイル: PBDManager.cs プロジェクト: koppor/motionEAP
        // is called whenever box is triggered
        public void OnBoxTriggeredPBD(Box box)
        {
            // check if rec is running
            if (StateManager.Instance.State == AllEnums.State.RECORD && !m_BlockUntilObjectIsBackAgain)
            {
                AdminView.Instance.Dispatcher.Invoke(
                    System.Windows.Threading.DispatcherPriority.Normal,
                    new Action(
                        () =>
                {
                    // create a scene for displaying the withdrawel from the box
                    Scene.Scene autoScene = new Scene.Scene();
                    autoScene.Add(box.getDrawable(true));

                    AdaptiveScene adaptiveScene = new AdaptiveScene(autoScene, AdaptivityLevel.AdaptivityLevels.FirstOrDefault());

                    EditWorkflowManager.Instance.createStep(AllEnums.PBD_Mode.BOX_WITHDRAWEL, adaptiveScene, "Box-" + box.Id, box.TriggerMessage);

                    // temporarilly - only allow one assembly step per withdrawl
                    m_BlockAssemblyCheck = false;
                    m_LlastWithdrawlTimestampInMillis = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
                }
                        )
                    );
            }
        }
コード例 #14
0
        /// <summary>
        /// 这里统一使用弧度制作为参数
        /// </summary>
        /// <param name="shpPath"></param>
        /// <param name="scene"></param>
        public VectorLayerRender(string shpPath, Scene.Scene scene)
        {
            var shpReader = new NetTopologySuite.IO.ShapeFile.Extended.ShapeDataReader(shpPath);
            var fea       = shpReader.ReadByMBRFilter(shpReader.ShapefileBounds);

            _features = fea;
            //构建索引
            foreach (var item in _features)
            {
                if (item.Geometry is IPolygon)
                {
                    var env = item.Geometry.EnvelopeInternal;
                    _quadTree.Insert(item.Geometry.EnvelopeInternal, item);
                }
                else if (item.Geometry is IMultiPolygon)
                {
                    foreach (var child in item.Geometry as IMultiPolygon)
                    {
                        _quadTree.Insert(child.EnvelopeInternal, item);
                    }
                }
            }
            _scene = scene;
            //设置其选中的样式
            SelectedStyle.PolygonStyle.FillColor = RgbaFloat.Orange;
        }
コード例 #15
0
        /// <summary>
        /// Computes ray's collisions and bounces, casting it from it's position and direction. Repopulates Vectors with new data.
        /// </summary>
        /// <param name="scene">Scene to cast the ray on.</param>
        public void Cast(Scene.Scene scene)
        {
            //TODO: Make more complex raycasting
            _collisionVectors = new List <CollisionVector>();
            _remainingLength  = _maxLength;

            var             objects              = scene.Objects.ToList();
            Object3D        collidedObject       = null;
            CollisionVector collidedObjectVector = null;

            foreach (var obj in objects)
            {
                var collision = obj.CollidesWith(_direction, _position);

                if (collision != null)
                {
                    if (collidedObject == null || collision.Vector.Length() < collidedObjectVector.Vector.Length())
                    {
                        collidedObject       = obj;
                        collidedObjectVector = collision;
                    }
                }
            }

            if (collidedObject != null)
            {
                _collisionVectors.Add(collidedObjectVector);
            }

            _collisionVectors.Add(null);
        }
コード例 #16
0
        protected static void ClickScene(Scene.Scene scene, List <BaseMenu> menuList, int x, int y)
        {
            Gl.glDisable(Gl.GL_LIGHTING);
            Gl.glDisable(Gl.GL_TEXTURE_2D);

            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

            DrawClass.Run(scene, true, menuList);

            byte[] pixel = new byte[3];

            Gl.glReadPixels(x, scene.HEIGHT + menuList[1].HEIGHT - y, 1, 1, Gl.GL_RGB, Gl.GL_UNSIGNED_BYTE, pixel);

            if (pixel[0] != 0 || pixel[1] != 0 || pixel[2] != 0)
            {
                Figure selectedFigure = scene.FindFigure(pixel);
                if (selectedFigure != null)
                {
                    scene.SelectFigure(selectedFigure);
                }
            }

            Gl.glEnable(Gl.GL_LIGHTING);
            Gl.glEnable(Gl.GL_TEXTURE_2D);
        }
コード例 #17
0
ファイル: PBDManager.cs プロジェクト: koppor/motionEAP
        /*public void saveToCSV(string step)
         * {
         *  var csv = new StringBuilder();
         *
         *  // check if scnes dir exists
         *  if (!Directory.Exists(ProjectConstants.STUDY_DIR))
         *  {
         *      // if not create it
         *      Directory.CreateDirectory(ProjectConstants.STUDY_DIR);
         *  }
         *  string path = ProjectConstants.STUDY_DIR+ "\\PBD_"+ this.m_CsvNameTime +".csv";
         *
         *
         *  //var newLine = string.Format("{0},{1},{2}{3}", PBDManager.Instance.StartTime.ToString(), PBDManager.Instance.EndTime.ToString(), PBDManager.Instance.DurationTime.ToString(), Environment.NewLine);
         *  long now = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
         *  var newLine = string.Format("{0},{1},{2}{3}", step, now, now - m_CsvNameTime, Environment.NewLine);
         *  csv.Append(newLine);
         *
         *  // File.WriteAllText( path, csv.ToString());
         *  File.AppendAllText(path, csv.ToString());
         * }*/

        public void checkAutomaticallyForAssemblyStep()
        {
            // PDB active?
            if (StateManager.Instance.State == AllEnums.State.RECORD && !m_BlockAssemblyCheck && !m_BlockUntilObjectIsBackAgain)
            {
                long now = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;

                if (now - m_LlastWithdrawlTimestampInMillis > 10000) // was last withdrawl at least 10 seconds ago?
                {
                    if (now - m_lastWorkingTimestampInMillis > 3000) //threshold
                    {
                        //did we already take a snapshot of this period
                        if (!m_AlreadyDetectedAssembly)
                        {
                            // user might be waiting for automatically created step
                            // check if something happened
                            AssemblyZone z = AssemblyZoneManager.Instance.createAssemblyZoneFromChanges();

                            if (z != null)
                            {
                                // block assembly until next pick
                                m_BlockAssemblyCheck = true;

                                // create a scene for displaying assemblyzone and add it to workflow
                                Scene.Scene autoScene = new Scene.Scene();
                                autoScene.Add(z.getDrawable(true));
                                AdaptiveScene adaptiveScene = new AdaptiveScene(autoScene, AdaptivityLevel.AdaptivityLevels.FirstOrDefault());
                                EditWorkflowManager.Instance.createStep(AllEnums.PBD_Mode.ASSEMBLY_DONE, adaptiveScene, "Zone-" + z.Id, z.TriggerMessage);
                                AssemblyZoneManager.Instance.CurrentLayout.AssemblyZones.Add(z);
                                m_AlreadyDetectedAssembly = true;

                                // temporarilty display feedback that zone was detected
                                Scene.Scene     feedbackScene = new Scene.Scene();
                                Scene.SceneText text          = new Scene.SceneText(0.5 * KinectManager.Instance.ImageSize.Width, 0.5 * KinectManager.Instance.ImageSize.Height, "Step created", System.Windows.Media.Color.FromRgb(255, 255, 255), 10.0, new System.Windows.Media.FontFamily("Arial"));
                                feedbackScene.Add(text);
                                SceneManager.Instance.TemporaryFeedbackScene = feedbackScene;
                                SceneManager.Instance.DisplayTempFeedback    = true;
                                m_CreatedFeedbackTimestampInMillis           = now;
                            }

                            // create a new snapshot
                            if (!m_IsUserWorking)
                            {
                                AssemblyZoneManager.Instance.createDepthSnapshot();
                            }
                        }
                    }
                }
            }

            // maybe find a better place for this:
            // check if the feedback should still be displayed
            long nower = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;

            if (nower - m_CreatedFeedbackTimestampInMillis > m_FeedbackShow_Time)
            {
                SceneManager.Instance.DisplayTempFeedback = false;
                SceneManager.Instance.TemporaryFeedbackScene.Clear();
            }
        }
コード例 #18
0
ファイル: Menu.cs プロジェクト: andywonderly/AtpRunner
 public Menu(Scene.Scene scene)
 {
     ParentScene = scene;
     MenuItems   = new List <MenuItem>();
     LoadMenuItems();
     SelectedMenuItem = MenuItems.FirstOrDefault();
     _firstLoad       = true;
 }
コード例 #19
0
        public override Scene.Scene Triangulate(float density)
        {
            // gestosc 1 - 360 krokow
            // gestosc 0 - 4 kroki
            uint step = minStep + (uint)((maxStep - minStep) * density);

            if (step < 1)
            {
                step = 1;
            }

            float           density_deg = 360.0f / step;
            List <Vector3D> vertices    = new List <Vector3D>();
            List <Triangle> triangles   = new List <Triangle>();

            // Tworzenie wierzchołków dolnej i górnej oraz dodawanie ich do listy
            float x, z;
            float deg = density_deg;

            for (int i = 0; i < step; i++)
            {
                x    = (float)Math.Cos(Utilities.DegToRad(deg));
                z    = (float)Math.Sin(Utilities.DegToRad(deg));
                deg += density_deg;
                vertices.Add(new Vector3D(x, -1, z));
                vertices.Add(new Vector3D(x, 1, z));
            }

            uint idxDown = (uint)vertices.Count;

            vertices.Add(new Vector3D(0, -1, 0));
            uint idxUp = (uint)vertices.Count;

            vertices.Add(new Vector3D(0, 1, 0));

            // Łączenie trójkątów w górnej i dolnej podstawie walca
            for (uint i = 0; i < step; i++)
            {
                triangles.Add(new Triangle((2 * i + 1) % (2 * step), (2 * i + 3) % (2 * step), idxUp));
                triangles.Add(new Triangle((2 * i + 2) % (2 * step), 2 * i, idxDown));
            }

            // Łączenie trójkątów między podstawami walca
            uint tmp = step + step;

            for (uint i = 0; i < step; i++)
            {
                uint k = 2 * i;
                triangles.Add(new Triangle(k, (k + 2) % tmp, (k + 1) % tmp));
                triangles.Add(new Triangle((k + 2) % tmp, (k + 3) % tmp, (k + 1) % tmp));
            }

            Scene.Scene scene = new Scene.Scene();
            scene.points    = vertices;
            scene.triangles = triangles;

            return(scene);
        }
コード例 #20
0
 public void Change(Scene.Scene name)
 {
     if (CurrentScene != null)
     {
         CurrentScene.Shutdown();
     }
     CurrentScene = scenes[name];
     CurrentScene.Initialize();
 }
コード例 #21
0
ファイル: InfoMenu.cs プロジェクト: klukule/scene-editor
        public override void Draw(Scene.Scene scene)
        {
            DrawMenuBox();

            if (scene.SelectedFigure != null)
            {
                scene.SelectedFigure.Print(scene, 5 * Margin, 20 * Margin);
            }
        }
コード例 #22
0
ファイル: RenderService.cs プロジェクト: D-Inventor/RayTracer
        public void RenderScene(Scene.Scene scene)
        {
            GL.Clear(ClearBufferMask.ColorBufferBit);

            scene.Shaders[shader].Use();
            scene.Textures[texture].Use();

            scene.Meshes[mesh].Draw();
        }
コード例 #23
0
 public static void test_servNet_1()
 {
     ServNet.ServNet servNet = new ServNet.ServNet();
     DataMgr.DataMgr dataMgr = new DataMgr.DataMgr();
     servNet.proto = new ProtocolPbprotobuf();
     Scene.Scene scene = new Scene.Scene();
     servNet.Start("127.0.0.1", 6666);
     Console.ReadLine();
 }
コード例 #24
0
ファイル: Player.cs プロジェクト: cribin/GameLab2017
        public Player(PlayerIndex index, InputMapper mapper, Scene.Scene scene = null) : base()
        {
            this.playerIndex = index;
            this.inputMapper = mapper;

            oldKeyboardState = new KeyboardState();
            oldGamePadState  = new GamePadState();

            this.scene = scene;
        }
コード例 #25
0
        public PointVectorLayerRender(string shpPath, Scene.Scene scene)
        {
            _scene = scene;
            var shpReader = new NetTopologySuite.IO.ShapeFile.Extended.ShapeDataReader(shpPath);
            var fea       = shpReader.ReadByMBRFilter(shpReader.ShapefileBounds);

            _meshPoints = FeatureTrianglator.PointFeatureToPoints(fea, _scene.Ellipsoid);
            //这里可以强制释放相关资源了
            shpReader.Dispose();
        }
コード例 #26
0
        public void LaunchLayer(string key, Scene.Scene scene)
        {
            if (_allUILayers.ContainsKey(key) && !_activeUILayers.ContainsKey(key))
            {
                _activeUILayers.Add(key, _allUILayers[key]);
                _allUILayers[key].Start(scene);

                BuildUILayer(key);
            }
        }
コード例 #27
0
        public SceneMidiPlayer(XmlNode pElement)
            : base()
        {
            string ScenePath = pElement.Attributes["Scene"].InnerText;

            mScene = Framework.Fixtures.GetScene(ScenePath);
            mScene.OnScenePlayed       += new OnScenePlayedHandler(mScene_OnScenePlayed);
            mScene.OnSceneRemoved      += new OnSceneRemovedHandler(mScene_OnSceneRemoved);
            mScene.OnSceneStateChanged += new OnSceneStateChangeHandler(mScene_OnSceneStateChanged);
        }
コード例 #28
0
        public void createEndScene(string pName, string pEndcondition)
        {
            // create a scene for displaying the withdrawel from the box
            Scene.Scene     autoScene = new Scene.Scene();
            Scene.SceneText text      = new Scene.SceneText(0.5 * KinectManager.Instance.ImageSize.Width, 0.5 * KinectManager.Instance.ImageSize.Height, "Fertig", System.Windows.Media.Color.FromRgb(255, 255, 255), 10.0, new System.Windows.Media.FontFamily("Arial"));
            autoScene.Add(text);

            AdaptiveScene adaptiveScene = new AdaptiveScene(autoScene, AdaptivityLevel.AdaptivityLevels.FirstOrDefault());

            createStep(AllEnums.PBD_Mode.END_CONDITION, adaptiveScene, pName, pEndcondition);
        }
コード例 #29
0
        public void StartLayer(string key, Scene.Scene scene)
        {
            StopLayers();

            if (_allUILayers.ContainsKey(key))
            {
                _activeUILayers.Add(key, _allUILayers[key]);
                _allUILayers[key].Start(scene);

                BuildUILayer(key);
            }
        }
コード例 #30
0
        public override Scene.Scene Triangulate(float density)
        {
            // gestosc 1 - 360 krokow
            // gestosc 0 - 4 kroki
            uint step = minStep + (uint)((maxStep - minStep) * density);

            if (step < 1)
                step = 1;

            float density_deg = 360.0f / step;
            List<Vector3D> vertices = new List<Vector3D>();
            List<Triangle> triangles = new List<Triangle>();

            // Tworzenie wierzchołków dolnej i górnej oraz dodawanie ich do listy
            float x, z;
            float deg = density_deg;
            for (int i = 0; i < step; i++)
            {
                x = (float)Math.Cos(Utilities.DegToRad(deg));
                z = (float)Math.Sin(Utilities.DegToRad(deg));
                deg += density_deg;
                vertices.Add(new Vector3D(x, -1, z));
                vertices.Add(new Vector3D(x, 1, z));

            }

            uint idxDown = (uint)vertices.Count;
            vertices.Add(new Vector3D(0, -1, 0));
            uint idxUp = (uint)vertices.Count;
            vertices.Add(new Vector3D(0, 1, 0));

            // Łączenie trójkątów w górnej i dolnej podstawie walca
            for (uint i = 0; i < step; i++)
            {
                triangles.Add(new Triangle((2 * i + 1) % (2 * step), (2 * i + 3) % (2 * step), idxUp));
                triangles.Add(new Triangle((2 * i + 2) % (2 * step), 2 * i, idxDown));
            }

            // Łączenie trójkątów między podstawami walca
            uint tmp = step + step;
            for (uint i = 0; i < step; i++)
            {
                uint k = 2 * i;
                triangles.Add(new Triangle(k, (k + 2) % tmp, (k + 1) % tmp));
                triangles.Add(new Triangle((k + 2) % tmp, (k + 3) % tmp, (k + 1) % tmp));
            }

            Scene.Scene scene = new Scene.Scene();
            scene.points = vertices;
            scene.triangles = triangles;

            return scene;
        }
コード例 #31
0
ファイル: Hud.cs プロジェクト: cribin/GameLab2017
        public Hud(ContentManager content, Director.Director director, Scene.Scene scene)
        {
            this.director = director;
            this.scene    = scene;

            hudElements = new List <HudElement>();
            defaultFont = content.Load <SpriteFont>(MainConfig.PIPELINE_FONTS_DIRECTORY + "default");
            fonts       = new List <SpriteFont>();
            fonts.Add(defaultFont);
            //TODO get from config
            fonts.Add(content.Load <SpriteFont>(MainConfig.PIPELINE_FONTS_DIRECTORY + "dimbo"));
            fonts.Add(content.Load <SpriteFont>(MainConfig.PIPELINE_FONTS_DIRECTORY + "ventura"));
        }
コード例 #32
0
ファイル: SceneTest.cs プロジェクト: galaktor/ngin
        public void AddEntityRequiredSystems_EntityHasNoExtensions_RequiredSystemsCountUnchanged()
        {
            // arrange
            IEntityExtensionManager eem = this.mocks.NewMock<IEntityExtensionManager>();
            ILogManager lm = this.mocks.NewMock<ILogManager>();
            Stub.On( lm ).Method( "Trace" ).WithAnyArguments();
            Scene.Scene s = new Scene.Scene( "test", eem, lm );

            IEntity e = this.CreateEntityMock( "testEntity" );

            // act
            s.AddEntityRequiredSystem( e );

            // assert
            Assert.AreEqual( 0, s.RequiredSystems.Count<string>() );
        }
コード例 #33
0
        public override Scene.Scene Triangulate(float density)
        {
            Scene.Scene scene = new Scene.Scene();
            List<Vector3D> vertices = new List<Vector3D>();
            List<Triangle> triangles = new List<Triangle>();

            vertices.Add(new Vector3D(-1, 0, -1));
            vertices.Add(new Vector3D(1, 0, -1));
            vertices.Add(new Vector3D(-1, 0, 1));
            vertices.Add(new Vector3D(1, 0, 1));

            triangles.Add(new Triangle(0, 1, 3));
            triangles.Add(new Triangle(3, 2, 0));

            int step = (int)(maxStep * density);

            Vector3D midAB;
            int vertIdx = 0;
            List<Triangle> newTriangles;
            for (int i = 0; i < step; i++)
            {
                newTriangles = new List<Triangle>();
                foreach (Triangle triangle in triangles)
                {
                    midAB = new Vector3D();
                    midAB.x = (vertices[(int)triangle.p2].x + vertices[(int)triangle.p3].x) / 2.0f;
                    midAB.y = (vertices[(int)triangle.p2].y + vertices[(int)triangle.p3].y) / 2.0f;
                    midAB.z = (vertices[(int)triangle.p2].z + vertices[(int)triangle.p3].z) / 2.0f;

                    vertIdx = vertices.Count;
                    vertices.Add(midAB);

                    newTriangles.Add(new Triangle((uint)vertIdx, triangle.p1, triangle.p2));
                    newTriangles.Add(new Triangle((uint)vertIdx, triangle.p3, triangle.p1));
                }
                triangles = null;
                triangles = newTriangles;
            }

            scene.points = vertices;
            scene.triangles = triangles;

            return scene;
        }
コード例 #34
0
ファイル: Global.cs プロジェクト: aik6980/GameFramework
        public static void Initialize(GlobalInit initStruct)
        {
            // subsystem initialization

            // initialize low level system
            // File System
            m_FileSystem = new Filesystem.FileSystem();
            m_FileSystem.Initialize();

            // graphic
            m_Device3d = new GraphicDevice.Direct3d11.Device3dD3d11();
            Device3dInit dev3dInit = new Device3dInit();
            dev3dInit.hWindow = initStruct.hWindow;
            dev3dInit.iScreenWidth = initStruct.hWindow.ClientSize.Width;
            dev3dInit.iScreenHeight = initStruct.hWindow.ClientSize.Height;
            m_Device3d.Initialize(dev3dInit);

            // input
            m_InputManager = new Input.CInputManager();
            m_InputManager.Initialize(initStruct.hWindow);

            // application time
            m_AppTimer = new CAccumTimer();
            m_AppTimer.Start();

            // initialize high level
            // world
            m_World = new World.CWorld();

            // scene
            m_Scene = new Scene.Scene();
            m_Scene.Load();
            m_Scene.CurrWorld = m_World;
        }
コード例 #35
0
ファイル: Application.cs プロジェクト: r-bel/glorg2
 private void StartInternal()
 {
     running = true;
     graphic_invoke = new Queue<Action>();
     physics_invoke = new Queue<Action>();
     logic_invoke = new Queue<Action>();
     resource_invoke = new Queue<Action>();
     scene = new Glorg2.Scene.Scene(this);
     RenderThread = new System.Threading.Thread(new System.Threading.ThreadStart(RenderLoop));
     RenderThread.Name = "Rendering thread";
     target.Show();
     target.HandleDestroyed += (sender, e) => { running = false; System.Windows.Forms.Application.Exit(); };
     Scene.ParentNode.InternalPostSerialize();
 }
コード例 #36
0
        public override Scene.Scene Triangulate(float density)
        {
            Scene.Scene scene = new Scene.Scene();

            n = minTria + (int)((maxTria - minTria) * density);
            selectedPointIdx = -1;
            OutputPoints = new Vector3D[n * n];
            triangles = new List<Triangle>((n - 1) * (n - 1) * 2);
            //SampleSurface();
            CreateTriangleMesh();
            CalculateSurfacePoints();

            scene.points = OutputPoints.ToList();
            scene.triangles = triangles;

            return scene;
        }
コード例 #37
0
ファイル: SceneTest.cs プロジェクト: galaktor/ngin
        public void RemoveEntityRequiredSystems_EntityNull_ThrowArgumentNullException()
        {
            // arrange
            IEntityExtensionManager eem = this.mocks.NewMock<IEntityExtensionManager>();
            ILogManager lm = this.mocks.NewMock<ILogManager>();
            Stub.On( lm ).Method( "Trace" ).WithAnyArguments();
            Scene.Scene s = new Scene.Scene( "test", eem, lm );
            ISystem sys1 = this.CreateSystemMock( "sys1" );
            ISystem sys2 = this.CreateSystemMock( "sys2" );
            ISystem sys3 = this.CreateSystemMock( "sys3" );
            ISystem sys4 = this.CreateSystemMock( "sys4" );
            ISystem sys5 = this.CreateSystemMock( "sys5" );

            IEntity e = null;

            // act
            s.RemoveEntityRequiredSystem( e );

            // assert
        }
コード例 #38
0
ファイル: SceneTest.cs プロジェクト: galaktor/ngin
        public void RemoveEntityRequiredSystem_EntityExtensionsHave5UnknownSystems_RequiredSystemsUnchanged()
        {
            // arrange
            IEntityExtensionManager eem = this.mocks.NewMock<IEntityExtensionManager>();
            ILogManager lm = this.mocks.NewMock<ILogManager>();
            Stub.On( lm ).Method( "Trace" ).WithAnyArguments();
            Scene.Scene s = new Scene.Scene( "test", eem, lm );
            ISystem sys1 = this.CreateSystemMock( "sys1" );
            ISystem sys2 = this.CreateSystemMock( "sys2" );
            ISystem sys3 = this.CreateSystemMock( "sys3" );
            ISystem sys4 = this.CreateSystemMock( "sys4" );
            ISystem sys5 = this.CreateSystemMock( "sys5" );

            IEntity e = this.CreateEntityMock( "testEntity", new EntityExtension( "ext1", sys1, lm ),
                                                             new EntityExtension( "ext2", sys2, lm ),
                                                             new EntityExtension( "ext3", sys3, lm ),
                                                             new EntityExtension( "ext4", sys4, lm ),
                                                             new EntityExtension( "ext5", sys5, lm ) );
            s.AddEntityRequiredSystem( e );

            // act
            s.RemoveEntityRequiredSystem( e );

            // assert
            Assert.AreEqual( 0, s.RequiredSystems.Count<string>() );
        }
コード例 #39
0
ファイル: SceneTest.cs プロジェクト: galaktor/ngin
        public void RemoveEntity_EntityNotFound_ThrowsArgumentException()
        {
            // arrange
            ILogManager lm = this.mocks.NewMock<ILogManager>();
            Stub.On( lm ).Method( "Trace" ).WithAnyArguments();
            IEntityExtensionManager eem = this.mocks.NewMock<IEntityExtensionManager>();
            Scene.Scene s = new Scene.Scene( "test", eem, lm );
            IEntity e = this.CreateEntityMock( "testEntity" );

            // act
            s.RemoveEntity( e );

            // assert
        }
コード例 #40
0
ファイル: SceneTest.cs プロジェクト: galaktor/ngin
        public void RemoveEntity_ValidEntityName_EntitiesEmtpy()
        {
            // arrange
            IEntityExtensionManager eem = this.mocks.NewMock<IEntityExtensionManager>();
            ILogManager lm = this.mocks.NewMock<ILogManager>();
            Stub.On( lm ).Method( "Trace" ).WithAnyArguments();
            Scene.Scene s = new Scene.Scene( "test", eem, lm );
            IEntity e = this.CreateEntityMock( "testEntity" );
            s.AddEntity( e );

            // act

            // assert
            Assert.Fail("ToDo");
        }
コード例 #41
0
ファイル: SceneTest.cs プロジェクト: galaktor/ngin
        public void RemoveEntity_ValidEntity_EntitiesEmpty()
        {
            // arrange
            IEntityExtensionManager eem = this.mocks.NewMock<IEntityExtensionManager>();
            ILogManager lm = this.mocks.NewMock<ILogManager>();
            Stub.On( lm ).Method( "Trace" ).WithAnyArguments();
            Scene.Scene s = new Scene.Scene( "test", eem, lm );
            IEntity e = this.CreateEntityMock( "testEntity" );
            s.AddEntity( e );

            // act
            s.RemoveEntity( e );

            // assert
            Assert.AreEqual( 0, s.Entities.Count<IEntity>() );
        }
コード例 #42
0
ファイル: SceneTest.cs プロジェクト: galaktor/ngin
        public void Scene_CreateInstance_Success()
        {
            // arrange
            ILogManager lm = this.mocks.NewMock<ILogManager>();
            Stub.On( lm ).Method( "Trace" ).WithAnyArguments();
            IEntityExtensionManager eem = this.mocks.NewMock<IEntityExtensionManager>();
            Scene.Scene s;

            // act
            s = new Scene.Scene( "test", eem, lm );

            // assert
            Assert.IsNotNull( s );
            Assert.IsInstanceOf<Scene.Scene>( s );
        }
コード例 #43
0
ファイル: SceneTest.cs プロジェクト: galaktor/ngin
        public void AddEntityRequiredSystems_EntityNull_ThrowArgumentNullException()
        {
            // arrange
            IEntityExtensionManager eem = this.mocks.NewMock<IEntityExtensionManager>();
            ILogManager lm = this.mocks.NewMock<ILogManager>();
            Stub.On( lm ).Method( "Trace" ).WithAnyArguments();
            Scene.Scene s = new Scene.Scene( "test", eem, lm );

            IEntity e = null;

            // act
            s.AddEntityRequiredSystem( e );

            // assert
        }