public Vector3 WestOffset(ExtraApparelPartProps Entry) { if (Entry.WestOffset != Vector3.zero) { return(Entry.WestOffset + this.Props.WestOffset); } return(this.Props.WestOffset); }
public Vector3 GetOffset(Rot4 rotation, ExtraApparelPartProps partEntry) { Vector3 offset = new Vector3(); if (!partEntry.hidesBody) { offset.y = _OffsetFactor * partEntry.order; offset.y = offset.y + (_SubOffsetFactor * partEntry.sublayer); } if (!onHead || !Props.onHead || !ExtraPartEntry.OnHead) { offset.y += _BodyOffset; if (rotation == Rot4.North) { if (partEntry.northtop) { offset.y += _HairOffset; offset += NorthOffset(partEntry); } else { offset += NorthOffset(partEntry); } } else if (rotation == Rot4.West) { offset += WestOffset(partEntry); } else if (rotation == Rot4.East) { offset += EastOffset(partEntry); } else if (rotation == Rot4.South) { offset += SouthOffset(partEntry); } } else { if (rotation == Rot4.North) { offset.y += _BodyOffset; } else { offset.y += _HeadOffset; } } if (partEntry.animateExtra) { offset = AnimateExtraBit(offset); } return(offset); }
public void GeneratePart() { StringBuilder msg = new StringBuilder(); if (extraPartEntryint >= 0) { extraPartEntry = this.Props.ExtrasEntries[extraPartEntryint]; } else { List <ExtraApparelPartProps> possibles = new List <ExtraApparelPartProps>(); if (extraPartEntryint == -1) { if (Apparel.TryGetQuality(out QualityCategory quality)) { msg.AppendLine(" QualityCategory: " + quality); possibles.AddRange(this.Props.ExtrasEntries.FindAll(x => x.AcceptableForQuality(quality))); } else { msg.AppendLine(" No CompQuality"); possibles = this.Props.ExtrasEntries; } } msg.AppendLine(" possibles: " + possibles.Count); if (!possibles.NullOrEmpty()) { Rand.PushState(); extraPartEntry = possibles.RandomElementByWeight((ExtraApparelPartProps x) => x.commonality); Rand.PopState(); extraPartEntryint = this.Props.ExtrasEntries.IndexOf(extraPartEntry); } else { extraPartEntryint = -2; } } if (extraPartEntry != null) { this.shader = ShaderDatabase.LoadShader(extraPartEntry.graphicData.shaderType.shaderPath); this.useSecondaryColor = extraPartEntry.useParentSecondaryColor; this.ExtraUseBodyTexture = extraPartEntry.UseBodytypeTextures; msg.AppendLine(" Using: " + extraPartEntry + " at position: " + extraPartEntryint); msg.AppendLine(" shader: " + shader + " useSecondaryColor: " + useSecondaryColor + " ExtraUseBodyTexture: " + ExtraUseBodyTexture); partInitialized = true; } else { extraPartEntryint = -2; } }