mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-18 03:55:19 -04:00
Fix mirroring and thin arms on 64x64 skins. (Thanks goodlyay)
This commit is contained in:
parent
73ed96be7e
commit
1c219447e5
@ -14,8 +14,9 @@ namespace ClassicalSharp.Model {
|
||||
bool bright;
|
||||
Vector3 minBB, maxBB;
|
||||
|
||||
public BlockModel( Game game ) : base( game ) {
|
||||
}
|
||||
public BlockModel( Game game ) : base( game ) { }
|
||||
|
||||
internal override void CreateParts() { }
|
||||
|
||||
public override bool Bobbing { get { return false; } }
|
||||
|
||||
|
@ -6,7 +6,9 @@ namespace ClassicalSharp.Model {
|
||||
|
||||
public class ChibiModel : IModel {
|
||||
|
||||
public ChibiModel( Game window ) : base( window ) {
|
||||
public ChibiModel( Game window ) : base( window ) { }
|
||||
|
||||
internal override void CreateParts() {
|
||||
vertices = new ModelVertex[boxVertices * (7 + 2)];
|
||||
|
||||
Head = BuildBox( MakeBoxBounds( -4, 12, -4, 4, 20, 4 )
|
||||
|
@ -6,7 +6,9 @@ namespace ClassicalSharp.Model {
|
||||
|
||||
public class ChickenModel : IModel {
|
||||
|
||||
public ChickenModel( Game window ) : base( window ) {
|
||||
public ChickenModel( Game window ) : base( window ) { }
|
||||
|
||||
internal override void CreateParts() {
|
||||
vertices = new ModelVertex[boxVertices * 6 + quadVertices * 2 * 2];
|
||||
Head = BuildBox( MakeBoxBounds( -2, 9, -6, 2, 15, -3 )
|
||||
.TexOrigin( 0, 0 )
|
||||
|
@ -6,7 +6,9 @@ namespace ClassicalSharp.Model {
|
||||
|
||||
public class CreeperModel : IModel {
|
||||
|
||||
public CreeperModel( Game window ) : base( window ) {
|
||||
public CreeperModel( Game window ) : base( window ) { }
|
||||
|
||||
internal override void CreateParts() {
|
||||
vertices = new ModelVertex[boxVertices * 6];
|
||||
Head = BuildBox( MakeBoxBounds( -4, 18, -4, 4, 26, 4 )
|
||||
.TexOrigin( 0, 0 )
|
||||
|
@ -6,8 +6,9 @@ namespace ClassicalSharp.Model {
|
||||
|
||||
public class CustomModel : IModel {
|
||||
|
||||
public CustomModel( Game window ) : base( window ) {
|
||||
}
|
||||
public CustomModel( Game window ) : base( window ) { }
|
||||
|
||||
internal override void CreateParts() { }
|
||||
|
||||
internal bool bobbing;
|
||||
public override bool Bobbing { get { return bobbing; } }
|
||||
|
@ -8,7 +8,9 @@ namespace ClassicalSharp.Model {
|
||||
public class HumanoidModel : IModel {
|
||||
|
||||
ModelSet Set, SetSlim, Set64;
|
||||
public HumanoidModel( Game window ) : base( window ) {
|
||||
public HumanoidModel( Game window ) : base( window ) { }
|
||||
|
||||
internal override void CreateParts() {
|
||||
vertices = new ModelVertex[boxVertices * ( 7 + 11 )];
|
||||
Set = new ModelSet();
|
||||
|
||||
@ -21,19 +23,19 @@ namespace ClassicalSharp.Model {
|
||||
|
||||
Set.Head = BuildBox( head.TexOrigin( 0, 0 ) );
|
||||
Set.Torso = BuildBox( torso.TexOrigin( 16, 16 ) );
|
||||
Set.LeftLeg = BuildBox( lLeg.MirrorX().TexOrigin( 0, 16 ) );
|
||||
Set.LeftLeg = BuildBox( lLeg.TexOrigin( 0, 16 ) );
|
||||
Set.RightLeg = BuildBox( rLeg.TexOrigin( 0, 16 ) );
|
||||
Set.Hat = BuildBox( head.TexOrigin( 32, 0 ).Expand( 0.5f ) );
|
||||
Set.LeftArm = BuildBox( lArm.MirrorX().TexOrigin( 40, 16 ) );
|
||||
Set.LeftArm = BuildBox( lArm.TexOrigin( 40, 16 ) );
|
||||
Set.RightArm = BuildBox( rArm.TexOrigin( 40, 16 ) );
|
||||
|
||||
Set64 = new ModelSet();
|
||||
Set64.Head = Set.Head;
|
||||
Set64.Torso = Set.Torso;
|
||||
Set64.LeftLeg = BuildBox( lLeg.TexOrigin( 16, 48 ) );
|
||||
Set64.LeftLeg = BuildBox( lLeg.MirrorX().TexOrigin( 16, 48 ) );
|
||||
Set64.RightLeg = Set.RightLeg;
|
||||
Set64.Hat = Set.Hat;
|
||||
Set64.LeftArm = BuildBox( lArm.TexOrigin( 32, 48 ) );
|
||||
Set64.LeftArm = BuildBox( lArm.MirrorX().TexOrigin( 32, 48 ) );
|
||||
Set64.RightArm = Set.RightArm;
|
||||
Set64.TorsoLayer = BuildBox( torso.TexOrigin( 16, 32 ).Expand( 0.5f ) );
|
||||
Set64.LeftLegLayer = BuildBox( lLeg.TexOrigin( 0, 48 ).Expand( 0.5f ) );
|
||||
@ -47,7 +49,7 @@ namespace ClassicalSharp.Model {
|
||||
SetSlim.LeftLeg = Set64.LeftLeg;
|
||||
SetSlim.RightLeg = Set.RightLeg;
|
||||
SetSlim.Hat = Set.Hat;
|
||||
lArm.BodyW -= 1; lArm.X1 += 1/16f;
|
||||
lArm.BodyW -= 1; lArm.X2 += 1/16f;
|
||||
SetSlim.LeftArm = BuildBox( lArm.TexOrigin( 32, 48 ) );
|
||||
rArm.BodyW -= 1; rArm.X2 -= 1/16f;
|
||||
SetSlim.RightArm = BuildBox( rArm.TexOrigin( 40, 16 ) );
|
||||
@ -55,7 +57,7 @@ namespace ClassicalSharp.Model {
|
||||
SetSlim.LeftLegLayer = Set64.LeftLegLayer;
|
||||
SetSlim.RightLegLayer = Set64.RightLegLayer;
|
||||
SetSlim.LeftArmLayer = BuildBox( lArm.TexOrigin( 32, 48 ).Expand( 0.5f ) );
|
||||
SetSlim.RightArmLayer = BuildBox( rArm.TexOrigin( 40, 16 ).Expand( 0.5f ) );
|
||||
SetSlim.RightArmLayer = BuildBox( rArm.TexOrigin( 40, 32 ).Expand( 0.5f ) );
|
||||
}
|
||||
|
||||
public override bool Bobbing { get { return true; } }
|
||||
|
@ -23,6 +23,8 @@ namespace ClassicalSharp.Model {
|
||||
cache = game.ModelCache;
|
||||
}
|
||||
|
||||
internal abstract void CreateParts();
|
||||
|
||||
/// <summary> Whether the entity should be slightly bobbed up and down when rendering. </summary>
|
||||
/// <remarks> e.g. for players when their legs are at the peak of their swing,
|
||||
/// the whole model will be moved slightly down. </remarks>
|
||||
|
@ -17,7 +17,9 @@ namespace ClassicalSharp.Model {
|
||||
public void InitCache() {
|
||||
vertices = new VertexPos3fTex2fCol4b[24 * 12];
|
||||
vb = api.CreateDynamicVb( VertexFormat.Pos3fTex2fCol4b, vertices.Length );
|
||||
cache["humanoid"] = new HumanoidModel( game );
|
||||
IModel model = new HumanoidModel( game );
|
||||
model.CreateParts();
|
||||
cache["humanoid"] = model;
|
||||
cache["human"] = cache["humanoid"];
|
||||
}
|
||||
|
||||
@ -36,7 +38,8 @@ namespace ClassicalSharp.Model {
|
||||
|
||||
if( !cache.TryGetValue( modelName, out model ) ) {
|
||||
model = InitModel( modelName );
|
||||
if( model == null ) model = cache["humanoid"]; // fallback to default
|
||||
if( model != null ) model.CreateParts();
|
||||
else model = cache["humanoid"]; // fallback to default
|
||||
cache[modelName] = model;
|
||||
}
|
||||
return model;
|
||||
|
@ -6,7 +6,9 @@ namespace ClassicalSharp.Model {
|
||||
|
||||
public class PigModel : IModel {
|
||||
|
||||
public PigModel( Game window ) : base( window ) {
|
||||
public PigModel( Game window ) : base( window ) { }
|
||||
|
||||
internal override void CreateParts() {
|
||||
vertices = new ModelVertex[boxVertices * 6];
|
||||
Head = BuildBox( MakeBoxBounds( -4, 8, -14, 4, 16, -6 )
|
||||
.TexOrigin( 0, 0 )
|
||||
|
@ -9,7 +9,9 @@ namespace ClassicalSharp.Model {
|
||||
|
||||
public bool Fur = true;
|
||||
|
||||
public SheepModel( Game window ) : base( window ) {
|
||||
public SheepModel( Game window ) : base( window ) { }
|
||||
|
||||
internal override void CreateParts() {
|
||||
vertices = new ModelVertex[boxVertices * 6 * ( Fur ? 2 : 1 )];
|
||||
Head = BuildBox( MakeBoxBounds( -3, 16, -14, 3, 22, -6 )
|
||||
.TexOrigin( 0, 0 )
|
||||
|
@ -6,7 +6,9 @@ namespace ClassicalSharp.Model {
|
||||
|
||||
public class SkeletonModel : IModel {
|
||||
|
||||
public SkeletonModel( Game window ) : base( window ) {
|
||||
public SkeletonModel( Game window ) : base( window ) { }
|
||||
|
||||
internal override void CreateParts() {
|
||||
vertices = new ModelVertex[boxVertices * 6];
|
||||
Head = BuildBox( MakeBoxBounds( -4, 24, -4, 4, 32, 4 )
|
||||
.TexOrigin( 0, 0 )
|
||||
|
@ -6,7 +6,9 @@ namespace ClassicalSharp.Model {
|
||||
|
||||
public class SpiderModel : IModel {
|
||||
|
||||
public SpiderModel( Game window ) : base( window ) {
|
||||
public SpiderModel( Game window ) : base( window ) { }
|
||||
|
||||
internal override void CreateParts() {
|
||||
vertices = new ModelVertex[boxVertices * 5];
|
||||
Head = BuildBox( MakeBoxBounds( -4, 4, -11, 4, 12, -3 )
|
||||
.TexOrigin( 32, 4 )
|
||||
|
@ -6,7 +6,9 @@ namespace ClassicalSharp.Model {
|
||||
|
||||
public class ZombieModel : IModel {
|
||||
|
||||
public ZombieModel( Game window ) : base( window ) {
|
||||
public ZombieModel( Game window ) : base( window ) { }
|
||||
|
||||
internal override void CreateParts() {
|
||||
vertices = new ModelVertex[boxVertices * 6];
|
||||
Head = BuildBox( MakeBoxBounds( -4, 24, -4, 4, 32, 4 )
|
||||
.TexOrigin( 0, 0 )
|
||||
|
Loading…
x
Reference in New Issue
Block a user