Dayz Explorer 1.29.162510
Loading...
Searching...
No Matches
tlrlight.c
Go to the documentation of this file.
1class TLRLight extends Switchable_Base
2{
3 PistollightLight m_Light;
4
5 static int REFLECTOR_ID = 1;
6 static int GLASS_ID = 0;
7
8 static string LIGHT_OFF_GLASS = "dz\\gear\\tools\\data\\flashlight_glass.rvmat";
9 static string LIGHT_OFF_REFLECTOR = "dz\\weapons\\attachments\\data\\TLS3.rvmat";
10 static string LIGHT_ON_GLASS = "dz\\gear\\tools\\data\\flashlight_glass_on.rvmat";
11 static string LIGHT_ON_REFLECTOR = "dz\\weapons\\attachments\\data\\TLS3_on.rvmat";
12
13 override ScriptedLightBase GetLight()
14 {
15 return m_Light;
16 }
17
18 override bool CanPutAsAttachment( EntityAI parent )
19 {
20 if(!super.CanPutAsAttachment(parent)) {return false;}
21 if ( !parent.IsKindOf("PlateCarrierHolster") && !parent.IsKindOf("PlateCarrierComplete") && !parent.IsKindOf("CarrierHolsterSolo") && !parent.IsKindOf("ChestHolster") )
22 {
23 return true;
24 }
25
26 return false;
27 }
28
29 override void OnWorkStart()
30 {
31 if ( !g_Game.IsServer() || !g_Game.IsMultiplayer() ) // Client side
32 {
33 m_Light = PistollightLight.Cast( ScriptedLightBase.CreateLight(PistollightLight, "0 0 0", 0.08) ); // Position is zero because light is attached on parent immediately.
34 m_Light.AttachOnMemoryPoint(this, "beamStart", "beamEnd");
35 SetObjectMaterial(GLASS_ID, LIGHT_ON_GLASS);
36 SetObjectMaterial(REFLECTOR_ID, LIGHT_ON_REFLECTOR);
37 }
38 }
39
40 override void OnWork( float consumed_energy )
41 {
42 if ( !g_Game.IsServer() || !g_Game.IsMultiplayer() ) // Client side
43 {
44 Battery9V battery = Battery9V.Cast( GetCompEM().GetEnergySource() );
45
46 if (battery && m_Light)
47 {
48 float efficiency = battery.GetEfficiency0To1();
49
50 if ( efficiency < 1 )
51 {
52 m_Light.SetIntensity( efficiency, GetCompEM().GetUpdateInterval() );
53 }
54 else
55 {
56 m_Light.SetIntensity( 1, 0 );
57 }
58 }
59 }
60 }
61
62 override void OnWorkStop()
63 {
64 if ( !g_Game.IsServer() || !g_Game.IsMultiplayer() ) // Client side
65 {
66 if (m_Light)
67 m_Light.FadeOut();
68
69 m_Light = NULL;
70
71 SetObjectMaterial(GLASS_ID, LIGHT_OFF_GLASS);
72 SetObjectMaterial(REFLECTOR_ID, LIGHT_OFF_REFLECTOR);
73 }
74 }
75
76 // Inventory manipulation
77 override void OnInventoryExit(Man player)
78 {
79 super.OnInventoryExit(player);
80
81 if ( GetCompEM().IsWorking() )
82 {
83 if (player)
84 {
85 vector ori_rotate = player.GetOrientation();
86 ori_rotate = ori_rotate + Vector(270,0,0);
87 SetOrientation(ori_rotate);
88 }
89 }
90 }
91
92 override void SetActions()
93 {
94 super.SetActions();
95 AddAction(ActionTurnOnWhileInHands);
96 AddAction(ActionTurnOffWhileInHands);
97 }
98
99 override bool IsLightSource()
100 {
101 return true;
102 }
103}
class LogManager EntityAI
void AddAction(typename actionName)
void SetActions()
DayZGame g_Game
Definition dayzgame.c:3942
proto native vector Vector(float x, float y, float z)
Vector constructor from components.
void OnInventoryExit(Man player)
Event called on item when it is removed from the player(Man) inventory, passes the old owner as a par...
Definition itembase.c:8825
override bool CanPutAsAttachment(EntityAI parent)
Definition itembase.c:9066
class Land_Buoy extends House m_Light
override void OnWorkStop()
override void OnWork(float consumed_energy)
override void OnWorkStart()