DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ RefreshFireplaceVisuals()

void RefreshFireplaceVisuals ( )
protected

single stone; everything else hidden

hide stones stack completely

См. определение в файле FireplaceBase.c строка 681

682 {
683 if (IsHologram())
684 {
685 return;
686 }
687
688 // Light
689 #ifndef SERVER
690 #ifndef NO_GUI
691 if (IsBurning())
692 {
693 //turn light on
694 if (!GetLightEntity())
695 {
696 SetLightEntity(FireplaceLight.Cast(ScriptedLightBase.CreateLight(FireplaceLight, GetPosition(), 20)));
697 GetLightEntity().AttachOnMemoryPoint(this, "light");
698 }
699
700 if (GetLightEntity() && GetLightEntity().GetBrightness() > 0)
701 {
702 // change brightness based on the distance of player to the fireplace
703 Object player = g_Game.GetPlayer();
704 float lightDist = m_LightDistance;
705
706 if (IsOven())
707 {
708 lightDist = 50;
709 }
710
711 if (player)
712 {
713 if (vector.DistanceSq(player.GetPosition(), this.GetPosition()) > lightDist * lightDist)
714 {
715 GetLightEntity().FadeBrightnessTo(0, 5);
716 }
717 else
718 {
719 GetLightEntity().FadeBrightnessTo(FireplaceLight.m_FireplaceBrightness, 5);
720 }
721 }
722
723 // The following solves an issue with the light point clipping through narrow geometry
725 {
726 GetLightEntity().SetInteriorMode();
727 }
728 else
729 {
730 GetLightEntity().SetExteriorMode();
731 }
732 }
733 }
734 else
735 {
736 //turn light off
737 if (GetLightEntity())
738 {
739 GetLightEntity().FadeOut();
740 }
741 }
742 #endif
743 #endif
744
745 //set default burn parameters based on fireplace type
747 {
749 }
750 else if (HasStoneCircle())
751 {
753 }
754 else
755 {
757 }
758
759 // Oven attachments
760 if (IsOven())
761 {
762 //lock attachment slots
764 {
766 }
767 }
768 else
769 {
770 //unlock attachment slots
772 {
773 LockOvenAttachments(false);
774 }
775 }
776
777 //VISUAL STATES
778 //Fuel state
779 if (g_Game.IsServer())
780 {
781 // Sticks state
783 SetAnimationPhase(ANIMATION_STICKS, 0);
784 else
785 SetAnimationPhase(ANIMATION_STICKS, 1);
786
787 // Firewood state
789 {
790 if (IsBurning() && HasAshes())
791 {
792 SetAnimationPhase(ANIMATION_BURNT_WOOD, 0); // Because this might not be set under certain circumstances
793 SetAnimationPhase(ANIMATION_WOOD, 1);
794 }
795 else if (IsWet() || !IsBurning())
796 {
797 SetAnimationPhase(ANIMATION_BURNT_WOOD, 1);
798 SetAnimationPhase(ANIMATION_WOOD, 0);
799 }
800 else
801 {
802 SetAnimationPhase(ANIMATION_BURNT_WOOD, 1);
803 SetAnimationPhase(ANIMATION_WOOD, 0);
804 }
805 }
806 else
807 {
808 SetAnimationPhase(ANIMATION_WOOD, 1);
809 SetAnimationPhase(ANIMATION_BURNT_WOOD, 1);
810 }
811
812 // Kindling state
813 if (GetKindlingCount() != 0)
814 SetAnimationPhase(ANIMATION_KINDLING, 0);
815 else
816 SetAnimationPhase(ANIMATION_KINDLING, 1);
817
818 // Ashes state
819 if (HasAshes())
820 SetAnimationPhase(ANIMATION_ASHES, 0);
821 else
822 SetAnimationPhase(ANIMATION_ASHES, 1);
823
824 // Stone variations
825 if (HasStones())
826 {
827 if (HasStoneCircle())
828 {
829 SetAnimationPhase(ANIMATION_STONES, 0);
830 SetAnimationPhase(ANIMATION_STONE, 1);
831 }
832 else if (IsOven())
833 {
834 SetAnimationPhase(ANIMATION_OVEN, 0);
835 SetAnimationPhase(ANIMATION_STONE, 1);
836 }
837 else
838 {
840 SetAnimationPhase(ANIMATION_STONES, 1);
841 SetAnimationPhase(ANIMATION_OVEN, 1);
842 SetAnimationPhase(ANIMATION_STONE, 0);
843 }
844 }
845 else
846 {
847 SetAnimationPhase(ANIMATION_STONE, 1);
848 }
849 }
850
851 //refresh physics (with delay)
853 }
DayZGame g_Game
Определения DayZGame.c:4074
ATTACHMENT_FIREWOOD
Определения FireplaceBase.c:186
int m_OvenAttachmentsLockState
Определения FireplaceBase.c:29
const string ANIMATION_OVEN
Определения FireplaceBase.c:173
void LockOvenAttachments(bool lock)
Определения FireplaceBase.c:2716
bool IsBarrelWithHoles()
Определения FireplaceBase.c:555
ATTACHMENT_STICKS
Определения FireplaceBase.c:185
float m_LightDistance
Определения FireplaceBase.c:98
void SetFuelBurnRateMP(float value)
Определения FireplaceBase.c:1725
bool HasAshes()
Определения FireplaceBase.c:1651
FireplaceLight GetLightEntity()
Определения FireplaceBase.c:2591
bool HasStones()
Определения FireplaceBase.c:1678
const string ANIMATION_ASHES
Определения FireplaceBase.c:165
void RefreshFireplacePhysics()
const string ANIMATION_STONES
Определения FireplaceBase.c:171
ATTACHMENT_STONES
Определения FireplaceBase.c:201
const float FUEL_BURN_RATE_OVEN
Определения FireplaceBase.c:69
bool IsBurning()
Определения FireplaceBase.c:1639
bool IsWet()
Определения FireplaceBase.c:2415
bool IsIndoorOven()
Определения FireplaceBase.c:565
const string ANIMATION_WOOD
Определения FireplaceBase.c:168
const float FUEL_BURN_RATE_DEFAULT
min height of ceiling for fire to be ignited
Определения FireplaceBase.c:67
const float FUEL_BURN_RATE_STONES
Определения FireplaceBase.c:68
bool HasStoneCircle()
Определения FireplaceBase.c:1673
const string ANIMATION_KINDLING
Определения FireplaceBase.c:166
bool IsOven()
Определения FireplaceBase.c:1669
const string ANIMATION_STICKS
Определения FireplaceBase.c:167
const string ANIMATION_STONE
Определения FireplaceBase.c:170
bool IsFireplaceIndoor()
Определения FireplaceBase.c:560
bool IsItemTypeAttached(typename item_type)
Определения FireplaceBase.c:1609
const string ANIMATION_BURNT_WOOD
Определения FireplaceBase.c:169
void SetLightEntity(FireplaceLight light)
Определения FireplaceBase.c:2596
int GetKindlingCount()
Returns count of all kindling type items (define in 'm_KindlingTypes') attached to fireplace.
Определения FireplaceBase.c:1540
override bool IsHologram()
Определения ItemBase.c:920
Определения ObjectTyped.c:2
static proto native float DistanceSq(vector v1, vector v2)
Returns the square distance between tips of two 3D vectors.
Определения EnConvert.c:119
vector GetPosition()
Get the world position of the Effect.
Определения Effect.c:473
const int CALL_CATEGORY_GAMEPLAY
Определения 3_Game/DayZ/tools/tools.c:10

Перекрестные ссылки ANIMATION_ASHES, ANIMATION_BURNT_WOOD, ANIMATION_KINDLING, ANIMATION_OVEN, ANIMATION_STICKS, ANIMATION_STONE, ANIMATION_STONES, ANIMATION_WOOD, ATTACHMENT_FIREWOOD, ATTACHMENT_STICKS, ATTACHMENT_STONES, CALL_CATEGORY_GAMEPLAY, vector::DistanceSq(), FUEL_BURN_RATE_DEFAULT, FUEL_BURN_RATE_OVEN, FUEL_BURN_RATE_STONES, g_Game, GetKindlingCount(), GetLightEntity(), GetPosition(), HasAshes(), HasStoneCircle(), HasStones(), FireplaceBase::IsBarrelWithHoles(), IsBurning(), IsFireplaceIndoor(), IsHologram(), FireplaceBase::IsIndoorOven(), IsItemTypeAttached(), IsOven(), IsWet(), LockOvenAttachments(), m_LightDistance, m_OvenAttachmentsLockState, RefreshFireplacePhysics(), SetFuelBurnRateMP() и SetLightEntity().

Используется в EEInit(), FireplaceBase::EEItemAttached(), FireplaceIndoor::EEItemAttached(), FireplaceBase::EEItemDetached(), FireplaceIndoor::EEItemDetached(), OnVariablesSynchronized(), SetItemToConsume() и Synchronize().