Ejemplo n.º 1
0
        /// <summary>
        /// Exports the GUI Sprite to disk
        /// </summary>
        /// <param name="bw"></param>
        public override void Export(PlatformBinaryWriter bw)
        {
            FourCCStack fourCCStack = new FourCCStack(bw);

            fourCCStack.Push("GBTT");

            base.Export(bw);

            bw.Write(Scene.GetUniqueTextureID(mDefaultTextureID));
            bw.Write(Scene.GetUniqueTextureID(mDownTextureID));

            bw.Write(mLabel.FontID);
            bw.Write(DefaultColor.ToArgb());
            bw.Write(DownColor.ToArgb());
            bw.Write(1.0f);
            bw.Write(1.0f);
            bw.Write((UInt32)HorizontalAlignment);
            bw.Write((UInt32)VerticalAlignment);

            bw.Write(OnClickActionList.Count);

            byte[] bytes = Utils.StringToBytes(mLabel.Text, 4);
            bw.Write(bytes.Length);
            bw.Write(bytes);

            foreach (UI.Actions.Action action in this.OnClickActionList)
            {
                action.Export(bw);
            }

            fourCCStack.Pop();
        }
Ejemplo n.º 2
0
        public void DrawNormalShapeSection(Point[] shapePoints, Point[] earsePoints, bool eraseEnable)
        {
            DefaultColor defaultColor = DefaultColor.DefaultColorEx;
            Pen          drawPen      = new Pen(defaultColor.DefaultBackGroundColor);
            Color        pointColor   = defaultColor.DefaultBackGroundColor;

            drawPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
            if (!eraseEnable)
            {
                drawPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
                pointColor        = defaultColor.DefaultShapeColor;
                drawPen.Color     = defaultColor.DefaultShapeColor;
            }
            Graphics pe = Graphics.FromImage(bitmap);

            for (int i = 1; i < shapePoints.Length; i++)
            {
                pe.DrawLine(drawPen, shapePoints[i - 1].X, shapePoints[i - 1].Y, shapePoints[i].X, shapePoints[i].Y);
            }
            if (earsePoints != null)
            {
                for (int i = 0; i < earsePoints.Length; i++)
                {
                    DrawSinglePoint(pe, earsePoints[i], pointColor);
                    if (eraseEnable)
                    {
                        DrawDottSinglePoint(pe, earsePoints[i], defaultColor.DefaultShapeColor);
                    }
                }
            }
            pe.Dispose();
        }
Ejemplo n.º 3
0
        public void ClearBitmap()
        {
            DefaultColor defaultColor = DefaultColor.DefaultColorEx;
            Graphics     pe           = Graphics.FromImage(bitmap);

            pe.Clear(defaultColor.DefaultBackGroundColor);
            pe.Dispose();
        }
Ejemplo n.º 4
0
 void IXleSerializable.WriteData(XleSerializationInfo info)
 {
     info.Write("GuardDefaultAttack", DefaultAttack);
     info.Write("GuardDefaultDefense", DefaultDefense);
     info.Write("GuardDefaultHP", DefaultHP);
     info.Write("GuardDefaultColor", DefaultColor.ToArgb());
     info.Write("Guards", mGuards);
 }
Ejemplo n.º 5
0
        public void EraseString()
        {
            DefaultColor defaultColor = DefaultColor.DefaultColorEx;
            Graphics     pe           = Graphics.FromImage(bitmap);

            if (textRect != null && textRect != Rectangle.Empty)
            {
                pe.FillRectangle(new SolidBrush(defaultColor.DefaultBackGroundColor), textRect);
            }
        }
Ejemplo n.º 6
0
        public BaseColor()
        {
            DefaultColor defaultColor = new DefaultColor(false);

            Card  = defaultColor.Cardbrush;
            Font  = defaultColor.Fontbrush;
            Fg    = defaultColor.Fgbrush;
            Bg    = defaultColor.Bgbrush;
            Fonts = defaultColor.font;
            DBg   = defaultColor.DBgbrush;
        }
Ejemplo n.º 7
0
        //public void EraseNormalShapeSection(Point[] shapePoints,Point[] earsePoints)
        //{
        //    DefaultColor defaultColor = DefaultColor.DefaultColorEx;
        //    Pen drawPen = new Pen(defaultColor.DefaultBackGroundColor);
        //    Color pointColor = defaultColor.DefaultBackGroundColor;
        //    Graphics pe = Graphics.FromImage(bitmap);
        //    for (int i = 1; i < shapePoints.Length; i++)
        //        pe.DrawLine(drawPen, shapePoints[i - 1].X, shapePoints[i - 1].Y, shapePoints[i].X, shapePoints[i].Y);
        //    if (earsePoints != null)
        //    {
        //        for (int i = 0; i < earsePoints.Length; i++)
        //            DrawSinglePoint(pe, earsePoints[i], pointColor);
        //    }
        //    pe.Dispose();
        //}
        public void DrawNormalShape(ShapePointInfo shapePointInfos)
        {
            Point[]      shapePoints  = shapePointInfos.ShapePoints;
            DefaultColor defaultColor = DefaultColor.DefaultColorEx;

            int[]    errorPointIndexs = shapePointInfos.ErrorPointIndexs;
            int[]    warnPointIndexs  = shapePointInfos.WarnPointIndex;
            Pen      drawPen          = new Pen(defaultColor.DefaultShapeColor);
            Graphics pe         = Graphics.FromImage(bitmap);
            Color    pointColor = defaultColor.DefaultShapeColor;

            for (int i = 1; i < shapePoints.Length; i++)
            {
                pointColor    = shapePointInfos.ShapeColor;
                drawPen.Color = defaultColor.DefaultShapeColor;
                if (warnPointIndexs != null)
                {
                    if (Array.IndexOf(warnPointIndexs, i) != -1)
                    {
                        drawPen.Color = defaultColor.DefalultWarnColor;
                    }
                }
                if (errorPointIndexs != null)
                {
                    if (Array.IndexOf(errorPointIndexs, i) != -1)
                    {
                        drawPen.Color = defaultColor.DefaultIrregularColor;
                        pointColor    = defaultColor.DefaultIrregularColor;
                    }
                    else if (Array.IndexOf(errorPointIndexs, i - 1) != -1)
                    {
                        drawPen.Color = defaultColor.DefaultIrregularColor;
                    }
                }
                pe.DrawLine(drawPen, shapePoints[i - 1].X, shapePoints[i - 1].Y, shapePoints[i].X, shapePoints[i].Y);
                if (i == 1)
                {
                    if (errorPointIndexs != null)
                    {
                        if (Array.IndexOf(errorPointIndexs, i - 1) != -1)
                        {
                            pointColor = defaultColor.DefaultIrregularColor;
                        }
                    }
                    DrawSinglePoint(pe, shapePoints[0], pointColor);
                }
                DrawSinglePoint(pe, shapePoints[i], pointColor);
            }
            pe.Dispose();
        }
Ejemplo n.º 8
0
        /// <summary>
        /// info:要显示的数据
        /// color:所用的颜色
        /// 字体矩形的最低点
        /// </summary>
        /// <param name="info"></param>
        /// <param name="color"></param>
        /// <param name="bottom"></param>
        public void DrawString(String info, Color color, Point bottom)
        {
            DefaultColor defaultColor = DefaultColor.DefaultColorEx;
            Graphics     pe           = Graphics.FromImage(bitmap);
            SolidBrush   infoBrush    = new SolidBrush(color);
            Font         infoFont     = new Font(FontFamily.GenericSerif, 10, FontStyle.Regular);
            SizeF        infoSizeF    = pe.MeasureString(info, infoFont);
            Rectangle    rect         = new Rectangle(bottom.X - (int)infoSizeF.Width - 5, bottom.Y - (int)infoSizeF.Height - 5, (int)infoSizeF.Width + 10, (int)infoSizeF.Height + 10);

            if (textRect != null && textRect != Rectangle.Empty)
            {
                pe.FillRectangle(new SolidBrush(defaultColor.DefaultBackGroundColor), textRect);
            }
            textRect = rect;
            pe.DrawString(info, infoFont, infoBrush, rect);
            pe.Dispose();
        }
Ejemplo n.º 9
0
        public bool setColor(int r, int g, int b, String bgpa, String bgps, bool DarkMode)
        {
            this.DarkMode = DarkMode;
            this.Theme    = 4;

            this.Tran.Color = Color.FromArgb(0, 0, 0, 0);
            DefaultColor defaultColor = new DefaultColor(DarkMode);

            if (DarkMode)
            {
                Card.Color = Color.FromArgb(204, 62, 62, 66);
            }
            else
            {
                Card.Color = Color.FromArgb(204, 255, 255, 255);
            }
            Main.Color = Color.FromArgb(255, byte.Parse(r.ToString()), byte.Parse(g.ToString()), byte.Parse(b.ToString()));
            if (r * 0.299 + g * 0.578 + b * 0.114 >= 192)
            { //浅色
                FontM.Color = Color.FromArgb(255, 0, 0, 0);
            }
            else
            {  //深色
                FontM.Color = Color.FromArgb(255, 255, 255, 255);
            }
            if (DarkMode)
            {
                Font.Color = Color.FromArgb(255, 255, 255, 255);
            }
            else
            {
                Font.Color = Color.FromArgb(255, 0, 0, 0);
            }
            Fg    = defaultColor.Fgbrush;
            Bg    = defaultColor.Bgbrush;
            Fonts = defaultColor.font;
            DBg   = defaultColor.DBgbrush;
            Bgp   = defaultColor.Bgp;
            Bgpa  = defaultColor.Bgpa;
            Bgps  = defaultColor.Bgps;
            return(true);
        }
Ejemplo n.º 10
0
        public virtual ExtendedMaterial Convert(PlaneImageBrush brush)
        {
#pragma warning disable 612,618
            Image image = brush.Image;
#pragma warning restore 612,618
            if (!string.IsNullOrEmpty(brush.FilePath))
            {
                image = Image.FromFile(brush.FilePath);
            }
            else if (!string.IsNullOrEmpty(brush.ResourceName))
            {
                image = (Image)Resources.ResourceManager.GetObject(brush.ResourceName);
            }
            if (image != null && brush.RotateFlipType != RotateFlipType.RotateNoneFlipNone)
            {
                image.RotateFlip(brush.RotateFlipType);
            }
            LastTextureResult = Texture.FromStream(_device, image.ToStream(ImageFormat.Jpeg));
            ExtendedMaterial m = DefaultColor.GetDirectXMaterial();
            return(m);
        }
Ejemplo n.º 11
0
        private void Redraw()
        {
            this.entityCanvas.Children.Clear();
            this.entityMap.Clear();
            this.currentlySelected.Clear();
            var supported    = SupportedPrimitiveTypes;
            var defaultColor = DefaultColor.ToColor();

            foreach (var layer in Drawing.GetLayers().Where(l => l.IsVisible))
            {
                var layerColor = layer.Color ?? defaultColor;
                foreach (var entity in layer.GetEntities())
                {
                    var entityColor = entity.Color ?? layerColor;
                    foreach (var prim in entity.GetPrimitives())
                    {
                        var primitiveColor = prim.Color ?? entityColor;
                        AddPrimitive(prim, primitiveColor, entity, supported, entityCanvas);
                    }
                }
            }
        }
Ejemplo n.º 12
0
        private void SetDefaultColor(DefaultColor color)
        {
            switch (color)
            {
            case DefaultColor.Gray:
                defaultColor.Front = Brushes.LightGray.Color;
                defaultColor.Top   = Brushes.DarkGray.Color;
                defaultColor.Right = Brushes.DarkGray.Color;
                break;

            case DefaultColor.Yellow:
                defaultColor.Front = Brushes.LightYellow.Color;
                defaultColor.Top   = Brushes.LightGoldenrodYellow.Color;
                defaultColor.Right = Brushes.LightGoldenrodYellow.Color;

                break;

            case DefaultColor.Red:
                defaultColor.Front = Brushes.Red.Color;
                defaultColor.Top   = Brushes.DarkRed.Color;
                defaultColor.Right = Brushes.DarkRed.Color;
                break;

            case DefaultColor.Blue:
                defaultColor.Front = Brushes.LightBlue.Color;
                defaultColor.Top   = Brushes.CadetBlue.Color;
                defaultColor.Right = Brushes.CadetBlue.Color;
                break;

            case DefaultColor.Black:
                defaultColor.Front = Brushes.DarkGray.Color;
                defaultColor.Top   = Brushes.Black.Color;
                defaultColor.Right = Brushes.Black.Color;
                break;
            }

            // SetBoxColor(defaultColor);
        }
Ejemplo n.º 13
0
        async Task ProcessSurface(SpatialSurfaceInfo surface, bool convertToLH)
        {
            var mesh = await surface.TryComputeLatestMeshAsync(trianglesPerCubicMeter, options).AsTask().ConfigureAwait(false);

            if (observer == null || mesh == null)
            {
                RemoveSurfaceFromCache(surface.Id);
                return;
            }

            var bounds = mesh.SurfaceInfo.TryGetBounds(currentCoordinateSystem);

            if (bounds == null)
            {
                RemoveSurfaceFromCache(surface.Id);
                return;
            }

            var transform = mesh.CoordinateSystem.TryGetTransformTo(currentCoordinateSystem);

            if (transform == null)
            {
                RemoveSurfaceFromCache(surface.Id);
                return;
            }

            // convert from RH to LH coordinate system
            int rhToLh = convertToLH ? -1 : 1;

            //1. TriangleIndices
            var trianglesBytes = mesh.TriangleIndices.Data.ToArray();
            var indeces        = new short[mesh.TriangleIndices.ElementCount];
            int indexOffset    = 0;

            for (int i = 0; i < mesh.TriangleIndices.ElementCount; i++)
            {
                //DirectXPixelFormat.R16UInt
                var index = BitConverter.ToInt16(trianglesBytes, indexOffset);
                indexOffset += 2;
                indeces[i]   = index;
            }

            var vertexCount    = mesh.VertexPositions.ElementCount;
            var vertexRawData  = mesh.VertexPositions.Data.ToArray();
            var vertexScale    = mesh.VertexPositionScale;
            var normalsRawData = mesh.VertexNormals.Data.ToArray();

            var vertexColor = DefaultColor.ToUInt();
            var vertexData  = new SpatialVertex[vertexCount];

            //2,3 - VertexPositions and Normals
            for (int i = 0; i < vertexCount; i++)
            {
                //VertexPositions: DirectXPixelFormat.R16G16B16A16IntNormalized
                short x = BitConverter.ToInt16(vertexRawData, i * 8 + 0);
                short y = BitConverter.ToInt16(vertexRawData, i * 8 + 2);
                short z = BitConverter.ToInt16(vertexRawData, i * 8 + 4);

                //short to float:
                float xx = (x == -32768) ? -1.0f : x * 1.0f / (32767.0f);
                float yy = (y == -32768) ? -1.0f : y * 1.0f / (32767.0f);
                float zz = (z == -32768) ? -1.0f : z * 1.0f / (32767.0f);

                //Normals: DirectXPixelFormat.R8G8B8A8IntNormalized
                var normalX = normalsRawData[i * 4 + 0];
                var normalY = normalsRawData[i * 4 + 1];
                var normalZ = normalsRawData[i * 4 + 2];

                //merge vertex+normals for Urho3D (also, change RH to LH coordinate systems)
                vertexData[i].PositionX = xx * vertexScale.X;
                vertexData[i].PositionY = yy * vertexScale.Y;
                vertexData[i].PositionZ = rhToLh * zz * vertexScale.Z;
                vertexData[i].NormalX   = normalX == 0 ? 0 :  255 / normalX;
                vertexData[i].NormalY   = normalY == 0 ? 0 :  255 / normalY;
                vertexData[i].NormalZ   = normalZ == 0 ? 0 : rhToLh * 255 / normalZ;

                //Vertex color
                vertexData[i].ColorUint = vertexColor;
            }

            var boundsRotation = new Quaternion(rhToLh * bounds.Value.Orientation.X, rhToLh * bounds.Value.Orientation.Y, bounds.Value.Orientation.Z, bounds.Value.Orientation.W);
            var boundsCenter   = new Vector3(bounds.Value.Center.X, bounds.Value.Center.Y, rhToLh * bounds.Value.Center.Z);
            var boundsExtents  = new Vector3(bounds.Value.Extents.X, bounds.Value.Extents.Y, bounds.Value.Extents.Z);

            var     transformValue = transform.Value;
            Matrix4 transformUrhoMatrix;

            unsafe { transformUrhoMatrix = *(Matrix4 *)(void *)&transformValue; }

            var surfaceInfo = new HoloLens.SpatialMeshInfo
            {
                SurfaceId      = surface.Id.ToString(),
                Date           = surface.UpdateTime,
                VertexData     = vertexData,
                IndexData      = indeces,
                BoundsCenter   = boundsCenter,
                BoundsRotation = boundsRotation,
                Extents        = boundsExtents,
                Transform      = transformUrhoMatrix,
            };

            currentHoloApp.HandleSurfaceUpdated(surfaceInfo);
        }
Ejemplo n.º 14
0
        private static Color ParseColor(PluginConfiguration config, DefaultColor color)
        {
            string configValue = config.GetValue(color.ConfigurationName(), Colors.ToString(color.DefaultValue()));

            return(Colors.Parse(configValue, color.DefaultValue()));
        }
Ejemplo n.º 15
0
 /// <summary>
 /// Gets a constant-color source.
 /// </summary>
 /// <param name="color"></param>
 /// <returns></returns>
 public static IColorSource Constant(DefaultColor color)
 {
     return(new ConstantColorSource(color));
 }
Ejemplo n.º 16
0
 public ConstantColorSource(DefaultColor color)
 {
     this.color = color.Value();
     this.id    = Colors.ToString(color);
 }
Ejemplo n.º 17
0
        /// <summary>
        /// Gets the value for this color, as specified in the configuration file.
        /// </summary>
        /// <param name="defaultColor"></param>
        /// <returns></returns>
        public static Color Value(this DefaultColor defaultColor)
        {
            switch (defaultColor)
            {
            case DefaultColor.Off:
                return(defaultColor.DefaultValue());

            case DefaultColor.ToggleLED:
                return(Configuration.toggleLEDColor);

            case DefaultColor.HighResource:
                return(Configuration.highResourceColor);

            case DefaultColor.MediumResource:
                return(Configuration.mediumResourceColor);

            case DefaultColor.LowResource:
                return(Configuration.lowResourceColor);

            case DefaultColor.ReactionWheelNormal:
                return(Configuration.reactionWheelNormalColor);

            case DefaultColor.ReactionWheelPilotOnly:
                return(Configuration.reactionWheelPilotOnlyColor);

            case DefaultColor.ReactionWheelSASOnly:
                return(Configuration.reactionWheelSasOnlyColor);

            case DefaultColor.DockingCrossfeedOn:
                return(Configuration.dockingCrossfeedOnColor);

            case DefaultColor.DockingCrossfeedOff:
                return(Configuration.dockingCrossfeedOffColor);

            case DefaultColor.CrewPilot:
                return(Configuration.crewPilotColor);

            case DefaultColor.CrewEngineer:
                return(Configuration.crewEngineerColor);

            case DefaultColor.CrewScientist:
                return(Configuration.crewScientistColor);

            case DefaultColor.CrewTourist:
                return(Configuration.crewTouristColor);

            case DefaultColor.ResourceLFO:
                return(Configuration.lfoColor);

            case DefaultColor.ResourceLiquidFuel:
                return(Configuration.liquidFuelColor);

            case DefaultColor.ResourceOxidizer:
                return(Configuration.oxidizerColor);

            case DefaultColor.ResourceMonopropellant:
                return(Configuration.monopropellantColor);

            case DefaultColor.HighScience:
                return(Configuration.highScienceColor);

            case DefaultColor.MediumScience:
                return(Configuration.mediumScienceColor);

            case DefaultColor.LowScience:
                return(Configuration.lowScienceColor);

            case DefaultColor.Warning:
                return(Configuration.warningColor);

            case DefaultColor.Unknown:
                return(Configuration.unknownColor);

            default:
                return(defaultColor.DefaultValue());
            }
        }
Ejemplo n.º 18
0
 protected override void SetDefaultStyle()
 {
     SmoothOpacity.ValueToGo  = DefaultOpacity;
     ColorChanger.MyColorToGo = DefaultColor.Duplicate();
 }
Ejemplo n.º 19
0
 protected virtual void SetDefaultStyle()
 {
     ColorChanger.MyColorToGo = DefaultColor.Duplicate();
 }
Ejemplo n.º 20
0
 /// <summary>
 /// Get the name of the enum as listed in the configuration file.
 /// </summary>
 /// <param name="defaultColor"></param>
 /// <returns></returns>
 public static string ConfigurationName(this DefaultColor defaultColor)
 {
     return(defaultColor.ToString() + "Color");
 }
Ejemplo n.º 21
0
 private void Rectangle_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e)
 {
     DefaultColor?.Invoke(this, new EventArgs());
     f = false;
 }
Ejemplo n.º 22
0
 /// <summary>
 /// Given a default color, produce a string of it that is parseable via Parse.
 /// </summary>
 /// <param name="id"></param>
 /// <returns></returns>
 public static string ToString(DefaultColor id)
 {
     return("$" + id.ToString());
 }
Ejemplo n.º 23
0
        public bool setColor(int ColorID, bool DarkMode)
        {
            this.DarkMode = DarkMode;
            this.Theme    = ColorID;

            this.Tran.Color = Color.FromArgb(0, 0, 0, 0);
            switch (ColorID)
            {
            case 1:
            default:
            {
                DefaultColor defaultColor = new DefaultColor(DarkMode);
                Card  = defaultColor.Cardbrush;
                Main  = defaultColor.Mainbrush;
                Font  = defaultColor.Fontbrush;
                FontM = defaultColor.FontMbrush;
                Fg    = defaultColor.Fgbrush;
                Bg    = defaultColor.Bgbrush;
                Fonts = defaultColor.font;
                DBg   = defaultColor.DBgbrush;
                Bgp   = defaultColor.Bgp;
                Bgpa  = defaultColor.Bgpa;
                Bgps  = defaultColor.Bgps;
            }
            break;

            case 2:
            {
                BLCOrange defaultColor = new BLCOrange(DarkMode);
                Card  = defaultColor.Cardbrush;
                Main  = defaultColor.Mainbrush;
                Font  = defaultColor.Fontbrush;
                FontM = defaultColor.FontMbrush;
                Fg    = defaultColor.Fgbrush;
                Bg    = defaultColor.Bgbrush;
                Fonts = defaultColor.font;
                DBg   = defaultColor.DBgbrush;
                Bgp   = defaultColor.Bgp;
                Bgpa  = defaultColor.Bgpa;
                Bgps  = defaultColor.Bgps;
            }
            break;

            case 3:
            {
                LTCatBlue defaultColor = new LTCatBlue(DarkMode);
                Card  = defaultColor.Cardbrush;
                Main  = defaultColor.Mainbrush;
                Font  = defaultColor.Fontbrush;
                FontM = defaultColor.FontMbrush;
                Fg    = defaultColor.Fgbrush;
                Bg    = defaultColor.Bgbrush;
                Fonts = defaultColor.font;
                DBg   = defaultColor.DBgbrush;
                Bgp   = defaultColor.Bgp;
                Bgpa  = defaultColor.Bgpa;
                Bgps  = defaultColor.Bgps;
            }
            break;
            }
            return(true);
        }
Ejemplo n.º 24
0
        async Task ProcessSurface(SpatialSurfaceInfo surface)
        {
            var mesh = await surface.TryComputeLatestMeshAsync(trianglesPerCubicMeter, options).AsTask().ConfigureAwait(false);

            if (observer == null || mesh == null)
            {
                RemoveSurfaceFromCache(surface.Id);
                return;
            }

            var bounds = mesh.SurfaceInfo.TryGetBounds(currentCoordinateSystem);

            if (bounds == null)
            {
                RemoveSurfaceFromCache(surface.Id);
                return;
            }

            var transform = mesh.CoordinateSystem.TryGetTransformTo(currentCoordinateSystem);

            if (transform == null)
            {
                RemoveSurfaceFromCache(surface.Id);
                return;
            }

            //1. TriangleIndices
            var trianglesBytes = mesh.TriangleIndices.Data.ToArray();
            var indeces        = new short[mesh.TriangleIndices.ElementCount];
            int indexOffset    = 0;

            for (int i = 0; i < mesh.TriangleIndices.ElementCount; i++)
            {
                //DirectXPixelFormat.R16UInt
                var index = BitConverter.ToInt16(trianglesBytes, indexOffset);
                indexOffset += 2;
                indeces[i]   = index;
            }

            var vertexCount    = mesh.VertexPositions.ElementCount;
            var vertexRawData  = mesh.VertexPositions.Data.ToArray();
            var vertexScale    = mesh.VertexPositionScale;
            var normalsRawData = mesh.VertexNormals.Data.ToArray();

            var vertexColor = DefaultColor.ToUInt();
            var vertexData  = new SpatialVertex[vertexCount];

            var boundsRotation = new Quaternion(-bounds.Value.Orientation.X, -bounds.Value.Orientation.Y, bounds.Value.Orientation.Z, bounds.Value.Orientation.W);
            var boundsCenter   = new Vector3(bounds.Value.Center.X, bounds.Value.Center.Y, -bounds.Value.Center.Z);
            var boundsExtents  = new Vector3(bounds.Value.Extents.X, bounds.Value.Extents.Y, bounds.Value.Extents.Z);

            var     transformValue = transform.Value;
            Matrix4 transformUrhoMatrix;

            unsafe { transformUrhoMatrix = *(Matrix4 *)(void *)&transformValue; }

            //these values won't change, let's declare them as consts
            const int vertexStride = 16;             // (int) mesh.VertexPositions.Stride;
            const int normalStride = 16;             // (int) mesh.VertexNormals.Stride;

            //2,3 - VertexPositions and Normals
            for (int i = 0; i < vertexCount; i++)
            {
                var positionX = BitConverter.ToSingle(vertexRawData, i * vertexStride + 0);
                var positionY = BitConverter.ToSingle(vertexRawData, i * vertexStride + 4);                 //4 per X,Y,Z,W (stride is 16)
                var positionZ = BitConverter.ToSingle(vertexRawData, i * vertexStride + 8);                 //also, we don't need the W component.

                var normalX = BitConverter.ToSingle(normalsRawData, i * normalStride + 0);
                var normalY = BitConverter.ToSingle(normalsRawData, i * normalStride + 4);
                var normalZ = BitConverter.ToSingle(normalsRawData, i * normalStride + 8);

                //merge vertex+normals for Urho3D (also, change RH to LH coordinate systems)
                vertexData[i].PositionX = positionX * vertexScale.X;
                vertexData[i].PositionY = positionY * vertexScale.Y;
                vertexData[i].PositionZ = -positionZ * vertexScale.Z;
                vertexData[i].NormalX   = normalX;
                vertexData[i].NormalY   = normalY;
                vertexData[i].NormalZ   = -normalZ;

                //Vertex color (for VCol techniques)
                vertexData[i].ColorUint = vertexColor;
            }

            var surfaceInfo = new SharpReality.SpatialMeshInfo
            {
                SurfaceId      = surface.Id.ToString(),
                Date           = surface.UpdateTime,
                VertexData     = vertexData,
                IndexData      = indeces,
                BoundsCenter   = boundsCenter,
                BoundsRotation = boundsRotation,
                Extents        = boundsExtents,
                Transform      = transformUrhoMatrix,
            };

            currentHoloApp.HandleSurfaceUpdated(surfaceInfo);
        }
Ejemplo n.º 25
0
        /// <summary>
        /// Gets the default value to use for this color if no configuration is available.
        /// </summary>
        /// <param name="defaultColor"></param>
        /// <returns></returns>
        public static Color DefaultValue(this DefaultColor defaultColor)
        {
            switch (defaultColor)
            {
            case DefaultColor.Off:
                return(Color.black);

            case DefaultColor.ToggleLED:
                return(Color.green);

            case DefaultColor.HighResource:
                return(Color.green);

            case DefaultColor.MediumResource:
                return(Color.yellow * 0.7f);

            case DefaultColor.LowResource:
                return(Color.red * 0.5f);

            case DefaultColor.ReactionWheelNormal:
                return(Color.green);

            case DefaultColor.ReactionWheelPilotOnly:
                return(Color.blue);

            case DefaultColor.ReactionWheelSASOnly:
                return(Color.yellow * 0.7f);

            case DefaultColor.DockingCrossfeedOn:
                return(Color.green * 0.7f);

            case DefaultColor.DockingCrossfeedOff:
                return(Color.red * 0.6f);

            case DefaultColor.CrewPilot:
                return(Color.Lerp(new Color(0.5f, 0.3f, 0, 1), Color.gray, 0.1f));

            case DefaultColor.CrewEngineer:
                return(Color.Lerp(Color.green * 0.6f, Color.gray, 0.1f));

            case DefaultColor.CrewScientist:
                return(Color.Lerp(Color.blue, Color.gray, 0.1f));

            case DefaultColor.CrewTourist:
                return(Color.gray);

            case DefaultColor.ResourceLFO:
                return(Color.Lerp(DefaultColor.ResourceLiquidFuel.DefaultValue(), DefaultColor.ResourceOxidizer.DefaultValue(), 0.5f));

            case DefaultColor.ResourceLiquidFuel:
                return(Color.green);

            case DefaultColor.ResourceOxidizer:
                return(new Color(0.1f, 0.4f, 1, 1));

            case DefaultColor.ResourceMonopropellant:
                return(0.9f * new Color(0.9f, 0.76f, 0, 1));

            case DefaultColor.HighScience:
                return(new Color(0f, 0.85f, 0.15f));

            case DefaultColor.MediumScience:
                return(Color.yellow * 0.6f);

            case DefaultColor.LowScience:
                return(Color.red * 0.45f);

            case DefaultColor.Warning:
                return(Color.red);

            case DefaultColor.Unknown:
                return(Color.magenta);

            default:
                // this should only happen if there's a bug...
                return(DefaultValue(DefaultColor.Unknown));
            }
        }