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); }
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); } }
private static extern void CreatePrimitiveMesh([In, Out] ContentToolsAPIStructs.SceneData data, ContentToolsAPIStructs.PrimitiveInitInfo info);