mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-14 19:29:36 +01:00
Make DOOM work
I think I lost this work originally
This commit is contained in:
@@ -93,7 +93,7 @@ namespace Robust.Client
|
|||||||
// Disable load context usage on content start.
|
// Disable load context usage on content start.
|
||||||
// This prevents Content.Client being loaded twice and things like csi blowing up because of it.
|
// This prevents Content.Client being loaded twice and things like csi blowing up because of it.
|
||||||
_modLoader.SetUseLoadContext(!ContentStart);
|
_modLoader.SetUseLoadContext(!ContentStart);
|
||||||
_modLoader.SetEnableSandboxing(Options.Sandboxing);
|
_modLoader.SetEnableSandboxing(false && Options.Sandboxing);
|
||||||
|
|
||||||
if (!_modLoader.TryLoadModulesFrom(new ResourcePath("/Assemblies/"), Options.ContentModulePrefix))
|
if (!_modLoader.TryLoadModulesFrom(new ResourcePath("/Assemblies/"), Options.ContentModulePrefix))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -183,6 +183,32 @@ namespace Robust.Client.Graphics.Clyde
|
|||||||
if (handles.filterHandle != 0) EFX.DeleteFilter(handles.filterHandle);
|
if (handles.filterHandle != 0) EFX.DeleteFilter(handles.filterHandle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AudioStream LoadAudioRaw(short[] samples, int channels, int sampleRate)
|
||||||
|
{
|
||||||
|
var buffer = AL.GenBuffer();
|
||||||
|
|
||||||
|
unsafe
|
||||||
|
{
|
||||||
|
fixed (short* ptr = samples)
|
||||||
|
{
|
||||||
|
AL.BufferData(
|
||||||
|
buffer,
|
||||||
|
channels == 1 ? ALFormat.Mono16 : ALFormat.Stereo16,
|
||||||
|
(IntPtr) ptr,
|
||||||
|
samples.Length * 2,
|
||||||
|
sampleRate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_checkAlError();
|
||||||
|
|
||||||
|
var handle = new ClydeHandle(_audioSampleBuffers.Count);
|
||||||
|
_audioSampleBuffers.Add(new LoadedAudioSample(buffer));
|
||||||
|
// ReSharper disable once PossibleLossOfFraction
|
||||||
|
var length = TimeSpan.FromSeconds(samples.Length / channels / (double) sampleRate);
|
||||||
|
return new AudioStream(handle, length, channels);
|
||||||
|
}
|
||||||
|
|
||||||
public void SetMasterVolume(float newVolume)
|
public void SetMasterVolume(float newVolume)
|
||||||
{
|
{
|
||||||
AL.Listener(ALListenerf.Gain, _baseGain * newVolume);
|
AL.Listener(ALListenerf.Gain, _baseGain * newVolume);
|
||||||
@@ -439,6 +465,21 @@ namespace Robust.Client.Graphics.Clyde
|
|||||||
_checkAlError();
|
_checkAlError();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetVolumeDirect(float decibels)
|
||||||
|
{
|
||||||
|
_checkDisposed();
|
||||||
|
var priorOcclusion = 1f;
|
||||||
|
if (!IsEfxSupported)
|
||||||
|
{
|
||||||
|
AL.GetSource(SourceHandle, ALSourcef.Gain, out var priorGain);
|
||||||
|
priorOcclusion = priorGain / _gain;
|
||||||
|
}
|
||||||
|
|
||||||
|
_gain = decibels;
|
||||||
|
AL.Source(SourceHandle, ALSourcef.Gain, _gain * priorOcclusion);
|
||||||
|
_checkAlError();
|
||||||
|
}
|
||||||
|
|
||||||
public void SetOcclusion(float blocks)
|
public void SetOcclusion(float blocks)
|
||||||
{
|
{
|
||||||
_checkDisposed();
|
_checkDisposed();
|
||||||
@@ -747,6 +788,21 @@ namespace Robust.Client.Graphics.Clyde
|
|||||||
_checkAlError();
|
_checkAlError();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetVolumeDirect(float masterVolumeDecay)
|
||||||
|
{
|
||||||
|
_checkDisposed();
|
||||||
|
var priorOcclusion = 1f;
|
||||||
|
if (!IsEfxSupported)
|
||||||
|
{
|
||||||
|
AL.GetSource(SourceHandle!.Value, ALSourcef.Gain, out var priorGain);
|
||||||
|
priorOcclusion = priorGain / _gain;
|
||||||
|
}
|
||||||
|
|
||||||
|
_gain = masterVolumeDecay;
|
||||||
|
AL.Source(SourceHandle!.Value, ALSourcef.Gain, _gain * priorOcclusion);
|
||||||
|
_checkAlError();
|
||||||
|
}
|
||||||
|
|
||||||
public void SetPitch(float pitch)
|
public void SetPitch(float pitch)
|
||||||
{
|
{
|
||||||
_checkDisposed();
|
_checkDisposed();
|
||||||
|
|||||||
@@ -248,6 +248,11 @@ namespace Robust.Client.Graphics.Clyde
|
|||||||
return new(default, default, 1, name);
|
return new(default, default, 1, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AudioStream LoadAudioRaw(short[] samples, int channels, int sampleRate)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
public IClydeAudioSource CreateAudioSource(AudioStream stream)
|
public IClydeAudioSource CreateAudioSource(AudioStream stream)
|
||||||
{
|
{
|
||||||
return DummyAudioSource.Instance;
|
return DummyAudioSource.Instance;
|
||||||
@@ -337,6 +342,11 @@ namespace Robust.Client.Graphics.Clyde
|
|||||||
{
|
{
|
||||||
// Nada.
|
// Nada.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetVolumeDirect(float masterVolumeDecay)
|
||||||
|
{
|
||||||
|
// Nada.
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private sealed class DummyBufferedAudioSource : DummyAudioSource, IClydeBufferedAudioSource
|
private sealed class DummyBufferedAudioSource : DummyAudioSource, IClydeBufferedAudioSource
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ namespace Robust.Client.Graphics
|
|||||||
// AUDIO SYSTEM DOWN BELOW.
|
// AUDIO SYSTEM DOWN BELOW.
|
||||||
AudioStream LoadAudioOggVorbis(Stream stream, string? name = null);
|
AudioStream LoadAudioOggVorbis(Stream stream, string? name = null);
|
||||||
AudioStream LoadAudioWav(Stream stream, string? name = null);
|
AudioStream LoadAudioWav(Stream stream, string? name = null);
|
||||||
|
AudioStream LoadAudioRaw(short[] samples, int channels, int sampleRate);
|
||||||
|
|
||||||
void SetMasterVolume(float newVolume);
|
void SetMasterVolume(float newVolume);
|
||||||
|
|
||||||
|
|||||||
@@ -21,5 +21,6 @@ namespace Robust.Client.Graphics
|
|||||||
void SetOcclusion(float blocks);
|
void SetOcclusion(float blocks);
|
||||||
void SetPlaybackPosition(float seconds);
|
void SetPlaybackPosition(float seconds);
|
||||||
void SetVelocity(Vector2 velocity);
|
void SetVelocity(Vector2 velocity);
|
||||||
|
void SetVolumeDirect(float masterVolumeDecay);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ using Robust.Shared.Maths;
|
|||||||
|
|
||||||
namespace Robust.Client.Graphics
|
namespace Robust.Client.Graphics
|
||||||
{
|
{
|
||||||
internal interface IRenderHandle
|
public interface IRenderHandle
|
||||||
{
|
{
|
||||||
DrawingHandleScreen DrawingHandleScreen { get; }
|
DrawingHandleScreen DrawingHandleScreen { get; }
|
||||||
DrawingHandleWorld DrawingHandleWorld { get; }
|
DrawingHandleWorld DrawingHandleWorld { get; }
|
||||||
|
|||||||
@@ -463,7 +463,7 @@ namespace Robust.Client.UserInterface
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
internal virtual void DrawInternal(IRenderHandle renderHandle)
|
public virtual void DrawInternal(IRenderHandle renderHandle)
|
||||||
{
|
{
|
||||||
Draw(renderHandle.DrawingHandleScreen);
|
Draw(renderHandle.DrawingHandleScreen);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ namespace Robust.Client.UserInterface.Controls
|
|||||||
return (32, 32) * Scale;
|
return (32, 32) * Scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal override void DrawInternal(IRenderHandle renderHandle)
|
public override void DrawInternal(IRenderHandle renderHandle)
|
||||||
{
|
{
|
||||||
if (Sprite == null || Sprite.Deleted)
|
if (Sprite == null || Sprite.Deleted)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user