/// <summary> /// Sets the ceiling texture to another num /// </summary> /// <param name="TextureNum"></param> /// <param name="TextureFile"></param> public void SetCeilingTexture(ushort TextureNum, BgfFile TextureFile) { string oldmaterial = MaterialNameCeiling; CeilingTexture = TextureNum; ResourceCeiling = TextureFile; if (ResourceCeiling != null && ResourceCeiling.Frames.Count > 0) { TextureCeiling = ResourceCeiling.Frames[0]; SpeedCeiling = GetSectorScrollSpeed(false, TextureCeiling.Width, TextureCeiling.Height); TextureNameCeiling = RooFile.GetNameForTexture( ResourceCeiling, 0); MaterialNameCeiling = RooFile.GetNameForMaterial( ResourceCeiling, 0, SpeedCeiling); } else { TextureCeiling = null; TextureNameCeiling = null; MaterialNameCeiling = null; SpeedCeiling = V2.ZERO; } if (TextureChanged != null) { TextureChanged(this, new SectorTextureChangedEventArgs(this, false, oldmaterial)); } }
/// <summary> /// Sets the floor texture to another num /// </summary> /// <param name="TextureNum"></param> /// <param name="TextureFile"></param> public void SetFloorTexture(ushort TextureNum, BgfFile TextureFile) { string oldmaterial = MaterialNameFloor; FloorTexture = TextureNum; ResourceFloor = TextureFile; if (ResourceFloor != null && ResourceFloor.Frames.Count > 0) { TextureFloor = ResourceFloor.Frames[0]; SpeedFloor = GetSectorScrollSpeed(true, TextureFloor.Width, TextureFloor.Height); TextureNameFloor = RooFile.GetNameForTexture( ResourceFloor, 0); MaterialNameFloor = RooFile.GetNameForMaterial( ResourceFloor, 0, SpeedFloor); } else { TextureFloor = null; TextureNameFloor = null; MaterialNameFloor = null; SpeedFloor = V2.ZERO; } if (TextureChanged != null) { TextureChanged(this, new SectorTextureChangedEventArgs(this, true, oldmaterial)); } }
/// <summary> /// Sets middle texture to another num /// </summary> /// <param name="TextureNum"></param> /// <param name="TextureFile"></param> /// <param name="ResetAnimation"></param> public void SetMiddleTexture(ushort TextureNum, BgfFile TextureFile, bool ResetAnimation = true) { ushort group = (animation != null) ? animation.CurrentGroup : (ushort)1; int frameidx = 0; string oldmaterial = MaterialNameMiddle; MiddleTexture = TextureNum; ResourceMiddle = TextureFile; if (ResourceMiddle != null && ResourceMiddle.Frames.Count > 0) { // possibly reset animation if (animation != null && ResetAnimation) { animation.SetValues(1, ResourceMiddle.FrameSets.Count, false); group = animation.CurrentGroup; } frameidx = ResourceMiddle.GetFrameIndex(group, 0); frameidx = Math.Max(frameidx, 0); if (ResourceMiddle.Frames.Count > frameidx) { TextureMiddle = ResourceMiddle.Frames[frameidx]; SpeedMiddle = GetWallScrollSpeed(TextureMiddle.Width, TextureMiddle.Height); } else { TextureMiddle = null; SpeedMiddle = V2.ZERO; } TextureNameMiddle = RooFile.GetNameForTexture( ResourceMiddle, frameidx); MaterialNameMiddle = RooFile.GetNameForMaterial( ResourceMiddle, frameidx, SpeedMiddle); } else { TextureMiddle = null; SpeedMiddle = V2.ZERO; TextureNameMiddle = null; MaterialNameMiddle = null; } if (TextureChanged != null) { TextureChanged(this, new WallTextureChangedEventArgs(this, WallPartType.Middle, oldmaterial)); } }
/// <summary> /// Sets lower texture to another num /// </summary> /// <param name="TextureNum"></param> /// <param name="TextureFile"></param> public void SetUpperTexture(ushort TextureNum, BgfFile TextureFile) { ushort group = (animation != null) ? animation.CurrentGroup : (ushort)1; int frameidx = 0; string oldmaterial = MaterialNameUpper; UpperTexture = TextureNum; ResourceUpper = TextureFile; if (ResourceUpper != null && ResourceUpper.Frames.Count > 0) { frameidx = ResourceUpper.GetFrameIndex(group, 0); frameidx = Math.Max(frameidx, 0); if (ResourceUpper.Frames.Count > frameidx) { TextureUpper = ResourceUpper.Frames[frameidx]; SpeedUpper = GetWallScrollSpeed(TextureUpper.Width, TextureUpper.Height); } else { TextureUpper = null; SpeedUpper = V2.ZERO; } TextureNameUpper = RooFile.GetNameForTexture( ResourceUpper, frameidx); MaterialNameUpper = RooFile.GetNameForMaterial( ResourceUpper, frameidx, SpeedUpper); } else { TextureUpper = null; SpeedUpper = V2.ZERO; TextureNameUpper = null; MaterialNameUpper = null; } if (TextureChanged != null) { TextureChanged(this, new WallTextureChangedEventArgs(this, WallPartType.Upper, oldmaterial)); } }
/// <summary> /// Gets references to used textures from a resource manager. /// </summary> /// <param name="M59ResourceManager"></param> /// <param name="RaiseChangedEvent"></param> public void ResolveResources(ResourceManager M59ResourceManager, bool RaiseChangedEvent) { // floor if (FloorTexture > 0) { ResourceFloor = M59ResourceManager.GetRoomTexture(FloorTexture); if (ResourceFloor != null && ResourceFloor.Frames.Count > 0) { TextureFloor = ResourceFloor.Frames[0]; SpeedFloor = GetSectorScrollSpeed(true, TextureFloor.Width, TextureFloor.Height); TextureNameFloor = RooFile.GetNameForTexture( ResourceFloor, 0); MaterialNameFloor = RooFile.GetNameForMaterial( ResourceFloor, 0, SpeedFloor); } else { TextureFloor = null; TextureNameFloor = null; MaterialNameFloor = null; SpeedFloor = V2.ZERO; } } else { TextureFloor = null; TextureNameFloor = null; MaterialNameFloor = null; SpeedFloor = V2.ZERO; } // ceiling if (CeilingTexture > 0) { ResourceCeiling = M59ResourceManager.GetRoomTexture(CeilingTexture); if (ResourceCeiling != null && ResourceCeiling.Frames.Count > 0) { TextureCeiling = ResourceCeiling.Frames[0]; SpeedCeiling = GetSectorScrollSpeed(false, TextureCeiling.Width, TextureCeiling.Height); TextureNameCeiling = RooFile.GetNameForTexture( ResourceCeiling, 0); MaterialNameCeiling = RooFile.GetNameForMaterial( ResourceCeiling, 0, SpeedCeiling); } else { TextureCeiling = null; TextureNameCeiling = null; MaterialNameCeiling = null; SpeedCeiling = V2.ZERO; } } else { TextureCeiling = null; TextureNameCeiling = null; MaterialNameCeiling = null; SpeedCeiling = V2.ZERO; } }
public void ResolveResources(ResourceManager M59ResourceManager, bool RaiseChangedEvent) { ushort group = (animation != null) ? animation.CurrentGroup : (ushort)1; int frameidx = 0; /******************************************************************************/ if (UpperTexture > 0) { ResourceUpper = M59ResourceManager.GetRoomTexture(UpperTexture); } if (MiddleTexture > 0) { ResourceMiddle = M59ResourceManager.GetRoomTexture(MiddleTexture); } if (LowerTexture > 0) { ResourceLower = M59ResourceManager.GetRoomTexture(LowerTexture); } /******************************************************************************/ if (animation != null) { // note: possibly need animation instance for each parttype? if (ResourceMiddle != null) { animation.GroupMax = ResourceMiddle.FrameSets.Count; } /*else if (ResourceLower != null) * animation.GroupMax = ResourceLower.FrameSets.Count; * * else if (ResourceUpper != null) * animation.GroupMax = ResourceUpper.FrameSets.Count;*/ } /******************************************************************************/ if (ResourceUpper != null && ResourceUpper.Frames.Count > 0) { frameidx = ResourceUpper.GetFrameIndex(group, 0); frameidx = Math.Max(frameidx, 0); if (ResourceUpper.Frames.Count > frameidx) { TextureUpper = ResourceUpper.Frames[frameidx]; SpeedUpper = GetWallScrollSpeed(TextureUpper.Width, TextureUpper.Height); } else { TextureUpper = null; SpeedUpper = V2.ZERO; } TextureNameUpper = RooFile.GetNameForTexture( ResourceUpper, frameidx); MaterialNameUpper = RooFile.GetNameForMaterial( ResourceUpper, frameidx, SpeedUpper); } else { TextureUpper = null; SpeedUpper = V2.ZERO; TextureNameUpper = null; MaterialNameUpper = null; } /******************************************************************************/ if (ResourceMiddle != null && ResourceMiddle.Frames.Count > 0) { frameidx = ResourceMiddle.GetFrameIndex(group, 0); frameidx = Math.Max(frameidx, 0); if (ResourceMiddle.Frames.Count > frameidx) { TextureMiddle = ResourceMiddle.Frames[frameidx]; SpeedMiddle = GetWallScrollSpeed(TextureMiddle.Width, TextureMiddle.Height); } else { TextureMiddle = null; SpeedMiddle = V2.ZERO; } TextureNameMiddle = RooFile.GetNameForTexture( ResourceMiddle, frameidx); MaterialNameMiddle = RooFile.GetNameForMaterial( ResourceMiddle, frameidx, SpeedMiddle); } else { TextureMiddle = null; SpeedMiddle = V2.ZERO; TextureNameMiddle = null; MaterialNameMiddle = null; } /******************************************************************************/ if (ResourceLower != null && ResourceLower.Frames.Count > 0) { frameidx = ResourceLower.GetFrameIndex(group, 0); frameidx = Math.Max(frameidx, 0); if (ResourceLower.Frames.Count > frameidx) { TextureLower = ResourceLower.Frames[frameidx]; SpeedLower = GetWallScrollSpeed(TextureLower.Width, TextureLower.Height); } else { TextureLower = null; SpeedLower = V2.ZERO; } TextureNameLower = RooFile.GetNameForTexture( ResourceLower, frameidx); MaterialNameLower = RooFile.GetNameForMaterial( ResourceLower, frameidx, SpeedLower); } else { TextureLower = null; SpeedLower = V2.ZERO; TextureNameLower = null; MaterialNameLower = null; } }