UltimateZoneBuilder/Source/Core/GZBuilder/Data/ModelData.cs
MaxED deb43343bb Visual mode: "Fit Textures" action can now fit textures across multiple selected surfaces. A number of times to repeat a texture can now be specified.
Visual mode: removed "Fit Texture's Width" and "Fit Texture's Height" actions.
Visual mode: "Auto-align texture offsets" actions were incorrectly aligning double-sided middle walls in some cases.
Visual mode: "Auto-align texture offsets" actions now align non-wrapped double-sided middle walls to vertical offset closest to their initial vertical offset.
Visual mode: middle parts of double-sided walls were ignored when Shift-selecting walls.
Nodebuilders/Game configurations: GL nodes definitions were missing from game configurations.
Nodebuilders/Game configurations: "~MAP" wildcard can now be a part of a lump name. 
Nodebuilders: GL nodes were not properly handled by the editor.
Main Window: the window is now moved into the view when stored position is ouside of screen bounds. 
Classic and Visual modes: changing thing pitch was ignored in some cases.
Visual mode: raising and lowering a thing with "+SPAWNCEILING" flag now works the same way as when raising/lowering a regular thing.
Visual mode: using "Raise/Lower Floor/Ceiling to adjacent sector" actions on a thing with "+SPAWNCEILING" flag now works the same way as when using them on a regular thing.  
Rendering: even more fixes to MODELDEF and UDMF properties-related model rendering logic.
Internal, ResourceListEditor: rewritten resource validation check in a more OOP-ish way.
Configurations: fixed an infinite loop crash when a file was trying to include() itself.
UDMF thing flags: added Skill 6-8 to the flags list (because there are thing filters for these).
ZDoom_ACS.cfg: added definitions for SetTeleFog and SwapTeleFog.
ZDoom_DECORATE.cfg: added definitions for A_SetTeleFog and A_SwapTeleFog.
Updated ZDoom ACC.
Updated documentation.
2014-12-22 21:36:49 +00:00

72 lines
1.9 KiB
C#

#region ================== Namespaces
using System.Collections.Generic;
using CodeImp.DoomBuilder.GZBuilder.MD3;
using CodeImp.DoomBuilder.Rendering;
using SlimDX;
using SlimDX.Direct3D9;
#endregion
namespace CodeImp.DoomBuilder.GZBuilder.Data
{
internal sealed class ModelData
{
#region ================== Variables
private ModelLoadState loadstate;
private Vector3 scale;
private Matrix transform;
private Matrix transformstretched;
#endregion
#region ================== Properties
internal List<string> ModelNames;
internal List<string> TextureNames;
internal GZModel Model;
internal Vector3 Scale { get { return scale; } }
internal Matrix Transform { get { return (General.Settings.GZStretchView ? transformstretched : transform); } }
internal bool OverridePalette; //used for voxel models only
internal bool InheritActorPitch;
internal bool InheritActorRoll;
internal bool IsVoxel;
public ModelLoadState LoadState { get { return loadstate; } internal set { loadstate = value; } }
#endregion
#region ================== Constructor / Disposer
internal ModelData()
{
ModelNames = new List<string>();
TextureNames = new List<string>();
transform = Matrix.Identity;
transformstretched = Matrix.Identity;
}
internal void Dispose()
{
if (Model != null)
{
foreach (Mesh mesh in Model.Meshes) mesh.Dispose();
foreach (Texture t in Model.Textures) t.Dispose();
loadstate = ModelLoadState.None;
}
}
internal void SetTransform(Matrix rotation, Matrix offset, Vector3 scale)
{
this.scale = scale;
this.transform = Matrix.Scaling(scale) * rotation * offset;
this.transformstretched = Matrix.Scaling(scale.X, scale.Y, scale.Z * Renderer3D.GZDOOM_INVERTED_VERTICAL_VIEW_STRETCH) * rotation * offset;
}
#endregion
}
}