public bool Different(SceneEntity entity) { if (entity.Center != Center) return true; if (entity.Position != Position) return true; if (entity.PrimitiveCount != PrimitiveCount) return true; if(entity.ControlVertices.Count != VertData.Count) return true; if (entity.ControlEdges.Count != EdgeData.Count) return true; if(entity.ControlTriangles.Count != TrianData.Count) return true; if(entity.VertexData.Length != VertexData.Length) return true; if(entity.VertexPositions.Length != VertexPositions.Length) return true; for (int i = 0; i < VertData.Count; i++) if (VertData[i].Position != entity.ControlVertices[i].Position) return true; for (int i = 0; i < EdgeData.Count; i++) if (EdgeData[i].FirstVertex != entity.ControlEdges[i].FirstVertex && EdgeData[i].SecondVertex != entity.ControlEdges[i].SecondVertex) return true; for (int i = 0; i < TrianData.Count; i++) if (TrianData[i].FirstVertex != entity.ControlTriangles[i].FirstVertex && TrianData[i].SecondVertex != entity.ControlTriangles[i].SecondVertex && TrianData[i].ThirdVertex != entity.ControlTriangles[i].ThirdVertex) return true; for (int i = 0; i < VertexData.Length; i++) if (VertexData[i].Position != entity.VertexData[i].Position) return true; for (int i = 0; i < VertexPositions.Length; i++) if (VertexPositions[i] != entity.VertexPositions[i]) return true; return false; }
public SceneEntityData(SceneEntity entity) { Id = entity.Id; Center = entity.Center; Position = entity.Position; VertData = entity.ControlVertices.Select(x => new Vert(x.Position)).ToList(); EdgeData = entity.ControlEdges.Select(x => new Edge(x.FirstVertex, x.SecondVertex)).ToList(); TrianData = entity.ControlTriangles.Select(x => new Trian(x.FirstVertex, x.SecondVertex, x.ThirdVertex)).ToList(); PrimitiveCount = entity.PrimitiveCount; VertexData = entity.VertexData.ToArray(); VertexPositions = entity.VertexPositions.ToArray(); }
public void Attach(SceneEntity entity) { _primitiveCount += entity.PrimitiveCount; var vertData = _vertexData.ToList(); vertData.AddRange(entity.VertexData); _vertexData = vertData.ToArray(); var posData = _vertexPositions.ToList(); posData.AddRange(entity.VertexPositions); _vertexPositions = posData.ToArray(); ControlVertices.AddRange(entity.ControlVertices); ControlEdges.AddRange(entity.ControlEdges); ControlTriangles.AddRange(entity.ControlTriangles); RecalcBoundingBox(); RecalcCenter(); Engine.ActiveControlAxis.Position = _center; }