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); }
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; }
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)); }
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; }
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); }
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; }
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); } }
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(); } } }
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); }
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); } }
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; } }
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(); }
// 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; } ) ); } }
/// <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; }
/// <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); }
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); }
/*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(); } }
public Menu(Scene.Scene scene) { ParentScene = scene; MenuItems = new List <MenuItem>(); LoadMenuItems(); SelectedMenuItem = MenuItems.FirstOrDefault(); _firstLoad = true; }
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); }
public void Change(Scene.Scene name) { if (CurrentScene != null) { CurrentScene.Shutdown(); } CurrentScene = scenes[name]; CurrentScene.Initialize(); }
public override void Draw(Scene.Scene scene) { DrawMenuBox(); if (scene.SelectedFigure != null) { scene.SelectedFigure.Print(scene, 5 * Margin, 20 * Margin); } }
public void RenderScene(Scene.Scene scene) { GL.Clear(ClearBufferMask.ColorBufferBit); scene.Shaders[shader].Use(); scene.Textures[texture].Use(); scene.Meshes[mesh].Draw(); }
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(); }
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; }
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(); }
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); } }
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); }
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); }
public void StartLayer(string key, Scene.Scene scene) { StopLayers(); if (_allUILayers.ContainsKey(key)) { _activeUILayers.Add(key, _allUILayers[key]); _allUILayers[key].Start(scene); BuildUILayer(key); } }
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; }
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")); }
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>() ); }
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; }
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(); }
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; }
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 }
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>() ); }
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 }
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"); }
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>() ); }
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 ); }
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 }