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

◆ RefreshFireplaceVisuals()

void RefreshFireplaceVisuals ( )
protected

single stone; everything else hidden

hide stones stack completely

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

668 {
669 if (IsHologram())
670 {
671 return;
672 }
673
674 // Light
675 #ifndef SERVER
676 if (IsBurning())
677 {
678 //turn light on
679 if (!GetLightEntity())
680 {
681 SetLightEntity(FireplaceLight.Cast(ScriptedLightBase.CreateLight(FireplaceLight, GetPosition(), 20)));
682 GetLightEntity().AttachOnMemoryPoint(this, "light");
683 }
684
685 if (GetLightEntity() && GetLightEntity().GetBrightness() > 0)
686 {
687 // change brightness based on the distance of player to the fireplace
688 Object player = g_Game.GetPlayer();
689 float lightDist = m_LightDistance;
690
691 if (IsOven())
692 {
693 lightDist = 50;
694 }
695
696 if (player)
697 {
698 if (vector.DistanceSq(player.GetPosition(), this.GetPosition()) > lightDist * lightDist)
699 {
700 GetLightEntity().FadeBrightnessTo(0, 5);
701 }
702 else
703 {
704 GetLightEntity().FadeBrightnessTo(FireplaceLight.m_FireplaceBrightness, 5);
705 }
706 }
707
708 // The following solves an issue with the light point clipping through narrow geometry
710 {
711 GetLightEntity().SetInteriorMode();
712 }
713 else
714 {
715 GetLightEntity().SetExteriorMode();
716 }
717 }
718 }
719 else
720 {
721 //turn light off
722 if (GetLightEntity())
723 {
724 GetLightEntity().FadeOut();
725 }
726 }
727 #endif
728
729 //set default burn parameters based on fireplace type
731 {
733 }
734 else if (HasStoneCircle())
735 {
737 }
738 else
739 {
741 }
742
743 // Oven attachments
744 if (IsOven())
745 {
746 //lock attachment slots
748 {
750 }
751 }
752 else
753 {
754 //unlock attachment slots
756 {
757 LockOvenAttachments(false);
758 }
759 }
760
761 //VISUAL STATES
762 //Fuel state
763 if (g_Game.IsServer())
764 {
765 // Sticks state
767 SetAnimationPhase(ANIMATION_STICKS, 0);
768 else
769 SetAnimationPhase(ANIMATION_STICKS, 1);
770
771 // Firewood state
773 {
774 if (IsBurning() && HasAshes())
775 {
776 SetAnimationPhase(ANIMATION_BURNT_WOOD, 0); // Because this might not be set under certain circumstances
777 SetAnimationPhase(ANIMATION_WOOD, 1);
778 }
779 else if (IsWet() || !IsBurning())
780 {
781 SetAnimationPhase(ANIMATION_BURNT_WOOD, 1);
782 SetAnimationPhase(ANIMATION_WOOD, 0);
783 }
784 else
785 {
786 SetAnimationPhase(ANIMATION_BURNT_WOOD, 1);
787 SetAnimationPhase(ANIMATION_WOOD, 0);
788 }
789 }
790 else
791 {
792 SetAnimationPhase(ANIMATION_WOOD, 1);
793 SetAnimationPhase(ANIMATION_BURNT_WOOD, 1);
794 }
795
796 // Kindling state
797 if (GetKindlingCount() != 0)
798 SetAnimationPhase(ANIMATION_KINDLING, 0);
799 else
800 SetAnimationPhase(ANIMATION_KINDLING, 1);
801
802 // Ashes state
803 if (HasAshes())
804 SetAnimationPhase(ANIMATION_ASHES, 0);
805 else
806 SetAnimationPhase(ANIMATION_ASHES, 1);
807
808 // Stone variations
809 if (HasStones())
810 {
811 if (HasStoneCircle())
812 {
813 SetAnimationPhase(ANIMATION_STONES, 0);
814 SetAnimationPhase(ANIMATION_STONE, 1);
815 }
816 else if (IsOven())
817 {
818 SetAnimationPhase(ANIMATION_OVEN, 0);
819 SetAnimationPhase(ANIMATION_STONE, 1);
820 }
821 else
822 {
824 SetAnimationPhase(ANIMATION_STONES, 1);
825 SetAnimationPhase(ANIMATION_OVEN, 1);
826 SetAnimationPhase(ANIMATION_STONE, 0);
827 }
828 }
829 else
830 {
831 SetAnimationPhase(ANIMATION_STONE, 1);
832 }
833 }
834
835 //refresh physics (with delay)
837 }
DayZGame g_Game
Определения DayZGame.c:3942
ATTACHMENT_FIREWOOD
Определения FireplaceBase.c:186
int m_OvenAttachmentsLockState
Определения FireplaceBase.c:29
const string ANIMATION_OVEN
Определения FireplaceBase.c:173
void LockOvenAttachments(bool lock)
Определения FireplaceBase.c:2705
bool IsBarrelWithHoles()
Определения FireplaceBase.c:541
ATTACHMENT_STICKS
Определения FireplaceBase.c:185
float m_LightDistance
Определения FireplaceBase.c:98
void SetFuelBurnRateMP(float value)
Определения FireplaceBase.c:1709
bool HasAshes()
Определения FireplaceBase.c:1635
FireplaceLight GetLightEntity()
Определения FireplaceBase.c:2575
bool HasStones()
Определения FireplaceBase.c:1662
const string ANIMATION_ASHES
Определения FireplaceBase.c:165
void RefreshFireplacePhysics()
const string ANIMATION_STONES
Определения FireplaceBase.c:171
ATTACHMENT_STONES
Определения FireplaceBase.c:200
const float FUEL_BURN_RATE_OVEN
Определения FireplaceBase.c:69
bool IsBurning()
Определения FireplaceBase.c:1623
bool IsWet()
Определения FireplaceBase.c:2399
bool IsIndoorOven()
Определения FireplaceBase.c:551
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:1657
const string ANIMATION_KINDLING
Определения FireplaceBase.c:166
bool IsOven()
Определения FireplaceBase.c:1653
const string ANIMATION_STICKS
Определения FireplaceBase.c:167
const string ANIMATION_STONE
Определения FireplaceBase.c:170
bool IsFireplaceIndoor()
Определения FireplaceBase.c:546
bool IsItemTypeAttached(typename item_type)
Определения FireplaceBase.c:1593
const string ANIMATION_BURNT_WOOD
Определения FireplaceBase.c:169
void SetLightEntity(FireplaceLight light)
Определения FireplaceBase.c:2580
int GetKindlingCount()
Returns count of all kindling type items (define in 'm_KindlingTypes') attached to fireplace.
Определения FireplaceBase.c:1524
override bool IsHologram()
Определения ItemBase.c:5885
Определения 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().