mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-06-18 02:42:11 +00:00
PckStudio(SceneViewport) - Add 'Initialize' function
This commit is contained in:
@@ -58,6 +58,10 @@ namespace PckStudio.Rendering
|
||||
private Image _modelTexture;
|
||||
private Texture2D _modelRenderTexture;
|
||||
private List<GenericMesh<TextureVertex>> _rootCollection;
|
||||
private HighlightInfo _highlightingInfo;
|
||||
|
||||
private readonly Vector3 modelOffset = Vector3.UnitY * 24f;
|
||||
|
||||
private struct HighlightInfo
|
||||
{
|
||||
public static readonly HighlightInfo Empty = new HighlightInfo(Vector3.Zero, Vector3.Zero, BoundingBox.Empty);
|
||||
@@ -78,24 +82,16 @@ namespace PckStudio.Rendering
|
||||
BoundingBox = boundingBox;
|
||||
}
|
||||
}
|
||||
private HighlightInfo _highlightingInfo;
|
||||
|
||||
private readonly Vector3 modelOffset = Vector3.UnitY * 24f;
|
||||
|
||||
public ModelRenderer() : base(fov: 60f)
|
||||
{
|
||||
InitializeComponent();
|
||||
_rootCollection = new List<GenericMesh<TextureVertex>>(5);
|
||||
if (!DesignMode)
|
||||
{
|
||||
InitializeShaders();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void InitializeShaders()
|
||||
protected override void Initialize()
|
||||
{
|
||||
Debug.Assert(Context.IsCurrent);
|
||||
|
||||
// render texture
|
||||
{
|
||||
_modelRenderTexture = new Texture2D();
|
||||
@@ -172,6 +168,7 @@ namespace PckStudio.Rendering
|
||||
GL.Disable(EnableCap.Blend);
|
||||
GL.BlendFunc(BlendingFactor.One, BlendingFactor.Zero);
|
||||
}
|
||||
ResetCamera();
|
||||
_currentModelName = model.Name;
|
||||
}
|
||||
|
||||
|
||||
@@ -66,10 +66,12 @@ namespace PckStudio.Rendering
|
||||
set
|
||||
{
|
||||
base.BackColor = value;
|
||||
if (!DesignMode)
|
||||
if (!DesignMode && Context.IsCurrent)
|
||||
Renderer.SetClearColor(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsInitialized => _initialized;
|
||||
|
||||
protected new bool DesignMode => base.DesignMode || LicenseManager.UsageMode == LicenseUsageMode.Designtime;
|
||||
|
||||
@@ -147,7 +149,13 @@ namespace PckStudio.Rendering
|
||||
|
||||
Camera = new PerspectiveCamera(fov, camareaPosition);
|
||||
_shaderLibrary = new ShaderLibrary();
|
||||
}
|
||||
|
||||
protected virtual void Initialize() { }
|
||||
|
||||
protected override void OnLoad(EventArgs e)
|
||||
{
|
||||
base.OnLoad(e);
|
||||
if (!DesignMode)
|
||||
{
|
||||
_timer = new Timer();
|
||||
@@ -168,6 +176,12 @@ namespace PckStudio.Rendering
|
||||
_timer.Start();
|
||||
}
|
||||
|
||||
protected override void OnGotFocus(EventArgs e)
|
||||
{
|
||||
GetContext();
|
||||
base.OnGotFocus(e);
|
||||
}
|
||||
|
||||
private void InitializeInternal()
|
||||
{
|
||||
if (_initialized)
|
||||
@@ -175,7 +189,7 @@ namespace PckStudio.Rendering
|
||||
Debug.Fail("Already Initialized.");
|
||||
return;
|
||||
}
|
||||
MakeCurrent();
|
||||
GetContext();
|
||||
Trace.TraceInformation(GL.GetString(StringName.Version));
|
||||
GL.DebugMessageCallback(DebugProc, this.Handle);
|
||||
AddShader("Internal_colorShader", Resources.plainColorVertexShader, Resources.plainColorFragmentShader);
|
||||
@@ -206,6 +220,7 @@ namespace PckStudio.Rendering
|
||||
#endif
|
||||
InitializeDebugComponents();
|
||||
InitializeDebugShaders();
|
||||
Initialize();
|
||||
_initialized = true;
|
||||
}
|
||||
|
||||
@@ -280,6 +295,7 @@ namespace PckStudio.Rendering
|
||||
|
||||
protected void DrawBoundingBox(Matrix4 transform, Core.BoundingBox boundingBox, Color color)
|
||||
{
|
||||
GetContext();
|
||||
ShaderProgram colorShader = _shaderLibrary.GetShader("Internal_colorShader");
|
||||
colorShader.Bind();
|
||||
Matrix4 viewProjection = Camera.GetViewProjection();
|
||||
@@ -304,6 +320,7 @@ namespace PckStudio.Rendering
|
||||
{
|
||||
string dbgMessage = Marshal.PtrToStringAnsi(message, length);
|
||||
Debug.WriteLine($"{source}:{id} {type} {severity}: {dbgMessage}");
|
||||
Debugger.Break();
|
||||
}
|
||||
|
||||
[Conditional("DEBUG")]
|
||||
@@ -432,6 +449,7 @@ namespace PckStudio.Rendering
|
||||
base.OnPaint(e);
|
||||
if (DesignMode)
|
||||
return;
|
||||
GetContext();
|
||||
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
|
||||
GL.Enable(EnableCap.DepthTest); // Enable correct Z Drawings
|
||||
}
|
||||
@@ -441,13 +459,17 @@ namespace PckStudio.Rendering
|
||||
base.OnSizeChanged(e);
|
||||
if (DesignMode)
|
||||
return;
|
||||
if (Camera is not null)
|
||||
{
|
||||
Camera.ViewportSize = ClientSize;
|
||||
}
|
||||
GetContext();
|
||||
Camera?.ViewportSize = ClientSize;
|
||||
Renderer.SetViewportSize(Camera.ViewportSize);
|
||||
}
|
||||
|
||||
private void GetContext()
|
||||
{
|
||||
if (!Context.IsCurrent)
|
||||
MakeCurrent();
|
||||
}
|
||||
|
||||
protected override void OnMouseMove(MouseEventArgs e)
|
||||
{
|
||||
base.OnMouseMove(e);
|
||||
@@ -469,7 +491,7 @@ namespace PckStudio.Rendering
|
||||
goto default;
|
||||
case MouseButtons.Right:
|
||||
if (AllowCameraMovement)
|
||||
Camera.Pan(deltaX, deltaY);
|
||||
Camera.Pan(deltaX, deltaY);
|
||||
goto default;
|
||||
default:
|
||||
if (LockMousePosition)
|
||||
@@ -549,6 +571,7 @@ namespace PckStudio.Rendering
|
||||
{
|
||||
#if DEBUG
|
||||
d_debugLabel.Text = Camera.ToString();
|
||||
GetContext();
|
||||
GL.Disable(EnableCap.Blend);
|
||||
GL.DepthMask(false);
|
||||
GL.DepthFunc(DepthFunction.Always);
|
||||
@@ -601,7 +624,7 @@ namespace PckStudio.Rendering
|
||||
//
|
||||
// contextMenuStrip1
|
||||
//
|
||||
debugContextMenuStrip1.Items.AddRange(new ToolStripItem[] {});
|
||||
debugContextMenuStrip1.Items.AddRange(new ToolStripItem[] { });
|
||||
debugContextMenuStrip1.Name = "contextMenuStrip1";
|
||||
debugContextMenuStrip1.Size = new Size(159, 48);
|
||||
//
|
||||
@@ -648,4 +671,4 @@ namespace PckStudio.Rendering
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,8 +87,6 @@ namespace PckStudio.Rendering
|
||||
[Category("Appearance")]
|
||||
public Color HighlightlingColor { get; set; } = Color.Aqua;
|
||||
|
||||
public bool IsInitialized => initialized;
|
||||
|
||||
public int SelectedIndex
|
||||
{
|
||||
get => selectedIndices.Length > 0 ? selectedIndices[0] : -1;
|
||||
@@ -262,8 +260,6 @@ namespace PckStudio.Rendering
|
||||
new Vector3(-1.0f, 1.0f, -1.0f)
|
||||
};
|
||||
|
||||
private bool initialized = false;
|
||||
|
||||
public SkinRenderer() : base(fov: 60f)
|
||||
{
|
||||
InitializeSkinData();
|
||||
@@ -294,15 +290,11 @@ namespace PckStudio.Rendering
|
||||
ModelData.CollectionChanged += ModelData_CollectionChanged;
|
||||
}
|
||||
|
||||
public void Initialize(bool inflateOverlayParts)
|
||||
protected override void Initialize()
|
||||
{
|
||||
if (initialized)
|
||||
Debug.Fail("Already Initialized!");
|
||||
autoInflateOverlayParts = inflateOverlayParts;
|
||||
InitializeShaders();
|
||||
Renderer.SetClearColor(BackColor);
|
||||
GLErrorCheck();
|
||||
initialized = true;
|
||||
}
|
||||
|
||||
private const float DefaultCameraDistance = 64f;
|
||||
|
||||
Reference in New Issue
Block a user