Exemple #1
0
        private void CreateSelectionIndicators(RuntimeSurfaceGeometry surface, bool isfloor)
        {
            var vertices = surface.GetComponent <MeshCollider>().sharedMesh.vertices;

            var localToWorldMatrix = surface.transform.localToWorldMatrix;

            for (var i = 0; i < vertices.Length; i++)
            {
                var     currentVertexWorldPosition = localToWorldMatrix.MultiplyPoint(vertices[i]);
                Vector3 previousVertexWorldPosition;
                Vector3 nextVertexWorldPosition;

                if (isfloor)
                {
                    previousVertexWorldPosition = localToWorldMatrix.MultiplyPoint(vertices[i >= 1 ? i - 1 : vertices.Length - 1]);
                    nextVertexWorldPosition     = localToWorldMatrix.MultiplyPoint(vertices[i < vertices.Length - 1 ? i + 1 : 0]);
                }
                else
                {
                    previousVertexWorldPosition = localToWorldMatrix.MultiplyPoint(vertices[i < vertices.Length - 1 ? i + 1 : 0]);
                    nextVertexWorldPosition     = localToWorldMatrix.MultiplyPoint(vertices[i >= 1 ? i - 1 : vertices.Length - 1]);
                }

                selectionVisualizationIndicators.Add(GeometryUtilities.CreateSurfaceSelectionIndicator($"Vertex ({i})", surface.transform, currentVertexWorldPosition, nextVertexWorldPosition, previousVertexWorldPosition));
            }
        }
Exemple #2
0
        protected override void AssembleEntity()
        {
            base.AssembleEntity();

            var floorRoot = new GameObject($"Floor (polygon: {NativeIndex})");

            FloorSurface = floorRoot.AddComponent <RuntimeSurfaceGeometry>();
            FloorSurface.InitializeRuntimeSurface(this, DataSources.Floor);
            floorRoot.transform.SetParent(transform);

            var ceilingRoot = new GameObject($"Ceiling (polygon: {NativeIndex})");

            CeilingSurface = ceilingRoot.AddComponent <RuntimeSurfaceGeometry>();
            CeilingSurface.InitializeRuntimeSurface(this, DataSources.Ceiling);
            ceilingRoot.transform.SetParent(transform);

            if (NativeObject.MediaIndex >= 0)
            {
                var mediaRoot = new GameObject($"Media (polygon: {NativeIndex})");
                MediaSurface = mediaRoot.AddComponent <RuntimeSurfaceGeometry>();
                MediaSurface.InitializeRuntimeSurface(this, DataSources.Media);
                mediaRoot.transform.SetParent(transform);
            }
        }