revival/game/Assets/Plugins/FMOD/addons/ResonanceAudio/Scripts/FmodResonanceAudioRoom.cs

109 lines
4.5 KiB
C#

// Copyright 2017 Google Inc. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
using UnityEngine;
using System.Collections;
namespace FMODUnityResonance
{
/// Resonance Audio room component that simulates environmental effects of a room with respect to
/// the properties of the attached game object.
[AddComponentMenu("ResonanceAudio/FmodResonanceAudioRoom")]
public class FmodResonanceAudioRoom : MonoBehaviour
{
/// Material type that determines the acoustic properties of a room surface.
public enum SurfaceMaterial
{
Transparent = 0, ///< Transparent
AcousticCeilingTiles = 1, ///< Acoustic ceiling tiles
BrickBare = 2, ///< Brick, bare
BrickPainted = 3, ///< Brick, painted
ConcreteBlockCoarse = 4, ///< Concrete block, coarse
ConcreteBlockPainted = 5, ///< Concrete block, painted
CurtainHeavy = 6, ///< Curtain, heavy
FiberglassInsulation = 7, ///< Fiberglass insulation
GlassThin = 8, ///< Glass, thin
GlassThick = 9, ///< Glass, thick
Grass = 10, ///< Grass
LinoleumOnConcrete = 11, ///< Linoleum on concrete
Marble = 12, ///< Marble
Metal = 13, ///< Galvanized sheet metal
ParquetOnConcrete = 14, ///< Parquet on concrete
PlasterRough = 15, ///< Plaster, rough
PlasterSmooth = 16, ///< Plaster, smooth
PlywoodPanel = 17, ///< Plywood panel
PolishedConcreteOrTile = 18, ///< Polished concrete or tile
Sheetrock = 19, ///< Sheetrock
WaterOrIceSurface = 20, ///< Water or ice surface
WoodCeiling = 21, ///< Wood ceiling
WoodPanel = 22 ///< Wood panel
}
/// Room surface material in negative x direction.
public SurfaceMaterial leftWall = SurfaceMaterial.ConcreteBlockCoarse;
/// Room surface material in positive x direction.
public SurfaceMaterial rightWall = SurfaceMaterial.ConcreteBlockCoarse;
/// Room surface material in negative y direction.
public SurfaceMaterial floor = SurfaceMaterial.ParquetOnConcrete;
/// Room surface material in positive y direction.
public SurfaceMaterial ceiling = SurfaceMaterial.PlasterRough;
/// Room surface material in negative z direction.
public SurfaceMaterial backWall = SurfaceMaterial.ConcreteBlockCoarse;
/// Room surface material in positive z direction.
public SurfaceMaterial frontWall = SurfaceMaterial.ConcreteBlockCoarse;
/// Reflectivity scalar for each surface of the room.
public float reflectivity = 1.0f;
/// Reverb gain modifier in decibels.
public float reverbGainDb = 0.0f;
/// Reverb brightness modifier.
public float reverbBrightness = 0.0f;
/// Reverb time modifier.
public float reverbTime = 1.0f;
/// Size of the room (normalized with respect to scale of the game object).
public Vector3 size = Vector3.one;
void OnEnable()
{
FmodResonanceAudio.UpdateAudioRoom(this, FmodResonanceAudio.IsListenerInsideRoom(this));
}
void OnDisable()
{
FmodResonanceAudio.UpdateAudioRoom(this, false);
}
void Update()
{
FmodResonanceAudio.UpdateAudioRoom(this, FmodResonanceAudio.IsListenerInsideRoom(this));
}
void OnDrawGizmosSelected()
{
// Draw shoebox model wireframe of the room.
Gizmos.color = Color.yellow;
Gizmos.matrix = transform.localToWorldMatrix;
Gizmos.DrawWireCube(Vector3.zero, size);
}
}
}