private void UpdatePrimitive()
        {
            if (!IsInitialized)
            {
                return;
            }

            var primitiveType = (PrimitiveMeshType)primitiveTypeComboBox.SelectedItem;
            var info          = new ContentToolsAPIStructs.PrimitiveInitInfo()
            {
                Type = primitiveType
            };
            var smoothingAngle = 0;

            switch (primitiveType)
            {
            case PrimitiveMeshType.Plane:
                info.SegmentX = (int)xSliderPlane.Value;
                info.SegmentZ = (int)zSliderPlane.Value;
                info.Size.X   = Value(widthScalarBoxPlane, 0.001f);
                info.Size.Z   = Value(lengthScalarBoxPlane, 0.001f);
                break;

            case PrimitiveMeshType.Cube:
                return;

            case PrimitiveMeshType.UvSphere:
                info.SegmentX  = (int)xSliderUvSphere.Value;
                info.SegmentY  = (int)ySliderUvSphere.Value;
                info.Size.X    = Value(XScalarBoxUvSphere, 0.001f);
                info.Size.Y    = Value(YScalarBoxUvSphere, 0.001f);
                info.Size.Z    = Value(ZScalarBoxUvSphere, 0.001f);
                smoothingAngle = (int)angleSliderUvSphere.Value;
                break;

            case PrimitiveMeshType.IcoSphere:
                return;

            case PrimitiveMeshType.Cylinder:
                return;

            case PrimitiveMeshType.Capsule:
                return;

            default:
                break;
            }

            var geometry = new Geometry();

            geometry.ImportSettings.SmoothingAngle = smoothingAngle;
            EngineWrappers.ContentToolsAPI.CreatePrimitiveMesh(geometry, info);
            (DataContext as Editors.GeometryEditor).SetAsset(geometry);
            OnTexture_CheckBox_Click(textureCheckBox, null);
        }
Exemple #2
0
 public static void CreatePrimitiveMesh(Content.Geometry geometry, ContentToolsAPIStructs.PrimitiveInitInfo info)
 {
     Debug.Assert(geometry != null);
     using var sceneData = new ContentToolsAPIStructs.SceneData();
     try
     {
         sceneData.ImportSettings.FromContentSettings(geometry);
         CreatePrimitiveMesh(sceneData, info);
         Debug.Assert(sceneData.Data != IntPtr.Zero && sceneData.DataSize > 0);
         var data = new byte[sceneData.DataSize];
         Marshal.Copy(sceneData.Data, data, 0, sceneData.DataSize);
         geometry.FromRawData(data);
     }
     catch (Exception ex)
     {
         Utils.Logger.Log(Utils.MessageTypes.Error, $"Failed to create {info.Type} primitive mesh");
         Debug.WriteLine(ex.Message);
     }
 }
Exemple #3
0
 private static extern void CreatePrimitiveMesh([In, Out] ContentToolsAPIStructs.SceneData data, ContentToolsAPIStructs.PrimitiveInitInfo info);