mysimulation/server/tso.common/Rendering/Framework/3DScene.cs
Tony Bark 22191ce648 Removed NioTSO client and server
- NioTSO client isn't needed because we're using RayLib
- Added FreeSO's API server to handle most backend operations
2024-05-01 02:55:43 -04:00

125 lines
3.5 KiB
C#
Executable file

using System;
using System.Collections.Generic;
using FSO.Common.Rendering.Framework.Camera;
using Microsoft.Xna.Framework.Graphics;
using FSO.Common.Rendering.Framework.Model;
namespace FSO.Common.Rendering.Framework
{
/// <summary>
/// A scene capable of rendering 3D elements.
/// </summary>
public class _3DScene : _3DAbstract
{
private List<_3DComponent> m_Elements = new List<_3DComponent>();
public new _3DLayer Parent;
/// <summary>
/// Creates a new _3DScene instance.
/// </summary>
/// <param name="Device">A GraphicsDevice instance used for rendering.</param>
/// <param name="camera">A camera inheriting from ICamera used for rendering.</param>
public _3DScene(GraphicsDevice Device, ICamera camera) : base(Device)
{
this.Camera = camera;
}
/// <summary>
/// Creates a new _3DScene instance.
/// </summary>
/// <param name="Device">A GraphicsDevice instance used for rendering.</param>
public _3DScene(GraphicsDevice Device) : base(Device)
{
}
/// <summary>
/// Graphics device was reset (happens when scene is updated or minimized.)
/// </summary>
void m_Device_DeviceReset(object sender, EventArgs e)
{
throw new NotImplementedException();
}
/// <summary>
/// Returns the _3DComponents that make up this scene.
/// </summary>
/// <returns>A List of _3DComponent instances.</returns>
public override List<_3DComponent> GetElements()
{
return m_Elements;
}
public override void Initialize(_3DLayer layer)
{
this.Parent = layer;
foreach (var element in m_Elements)
{
element.Initialize();
}
}
public override void Update(UpdateState state)
{
for (int i = 0; i < m_Elements.Count; i++)
{
m_Elements[i].Update(state);
}
}
/// <summary>
/// Removes a 3D element from this 3DScene.
/// </summary>
/// <param name="item">The _3DComponent instance to remove.</param>
public void Remove(_3DComponent item)
{
m_Elements.Remove(item);
}
/// <summary>
/// Adds a 3D element to this 3DScene.
/// </summary>
/// <param name="item">The _3DComponent instance to add.</param>
public override void Add(_3DComponent item)
{
m_Elements.Add(item);
item.Scene = this;
if (this.Parent != null)
{
item.Initialize();
}
}
public override void PreDraw(GraphicsDevice device){
}
public override void Draw(GraphicsDevice device)
{
for (int i = 0; i < m_Elements.Count; i++)
{
m_Elements[i].Draw(device);
}
}
public override string ToString()
{
if (ID != null)
{
return ID;
}
return base.ToString();
}
/// <summary>
/// GraphicsDevice was reset.
/// </summary>
/// <param name="Device">The GraphicsDevice instance.</param>
public override void DeviceReset(GraphicsDevice Device)
{
for (int i = 0; i < m_Elements.Count; i++)
m_Elements[i].DeviceReset(Device);
}
}
}