Merge remote-tracking branch 'origin/master' into SniperSprint
This commit is contained in:
+1
-1
Submodule assets updated: 10a611659d...72530423ad
@@ -13,7 +13,8 @@ struct Captured : Event
|
|||||||
{
|
{
|
||||||
int TeamNumberThatCapturedCapturePoint;
|
int TeamNumberThatCapturedCapturePoint;
|
||||||
EntityID CapturePointTakenID;
|
EntityID CapturePointTakenID;
|
||||||
EntityWrapper NextCapturePoint;
|
EntityWrapper BlueTeamNextCapturePoint;
|
||||||
|
EntityWrapper RedTeamNextCapturePoint;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,9 @@ public:
|
|||||||
private:
|
private:
|
||||||
EventRelay<AmmoPickupSystem, Events::TriggerTouch> m_ETriggerTouch;
|
EventRelay<AmmoPickupSystem, Events::TriggerTouch> m_ETriggerTouch;
|
||||||
bool OnTriggerTouch(Events::TriggerTouch& e);
|
bool OnTriggerTouch(Events::TriggerTouch& e);
|
||||||
|
EventRelay<AmmoPickupSystem, Events::TriggerLeave> m_ETriggerLeave;
|
||||||
|
bool OnTriggerLeave(Events::TriggerLeave& e);
|
||||||
|
|
||||||
EventRelay<AmmoPickupSystem, Events::AmmoPickup> m_EAmmoPickup;
|
EventRelay<AmmoPickupSystem, Events::AmmoPickup> m_EAmmoPickup;
|
||||||
bool OnAmmoPickup(Events::AmmoPickup& e);
|
bool OnAmmoPickup(Events::AmmoPickup& e);
|
||||||
|
|
||||||
@@ -31,5 +34,11 @@ private:
|
|||||||
EntityID parentID;
|
EntityID parentID;
|
||||||
};
|
};
|
||||||
std::vector<NewAmmoPickup> m_ETriggerTouchVector;
|
std::vector<NewAmmoPickup> m_ETriggerTouchVector;
|
||||||
|
struct EntityAtMaxValuePickupStruct {
|
||||||
|
EntityWrapper player;
|
||||||
|
EntityWrapper trigger;
|
||||||
|
};
|
||||||
|
std::vector<EntityAtMaxValuePickupStruct> m_PickupAtMaximum;
|
||||||
|
void DoPickup(EntityWrapper &player, EntityWrapper &trigger);
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
#ifndef CapturePointArrowHUDSystem_h__
|
||||||
|
#define CapturePointArrowHUDSystem_h__
|
||||||
|
|
||||||
|
#include <GLFW/glfw3.h>
|
||||||
|
#include <glm/common.hpp>
|
||||||
|
#include <glm/gtx/vector_angle.hpp>
|
||||||
|
|
||||||
|
#include "Common.h"
|
||||||
|
#include "Core/System.h"
|
||||||
|
#include "Core/Transform.h"
|
||||||
|
#include "Core/ECaptured.h"
|
||||||
|
|
||||||
|
|
||||||
|
class CapturePointArrowHUDSystem : public ImpureSystem
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CapturePointArrowHUDSystem(SystemParams params);
|
||||||
|
|
||||||
|
virtual void Update(double dt) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
EventRelay<CapturePointArrowHUDSystem, Events::Captured> m_ECapturedEvent;
|
||||||
|
bool OnCapturePointCaptured(Events::Captured& e);
|
||||||
|
|
||||||
|
bool m_InitialtargetsSet = false;
|
||||||
|
glm::vec3 m_RedTeamCurrentTarget;
|
||||||
|
glm::vec3 m_BlueTeamCurrentTarget;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "Core/System.h"
|
#include "Core/System.h"
|
||||||
#include "Engine/Collision/ETrigger.h"
|
#include "Collision/ETrigger.h"
|
||||||
|
|
||||||
class CapturePointHUDSystem : public ImpureSystem
|
class CapturePointHUDSystem : public ImpureSystem
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9,7 +9,6 @@
|
|||||||
#include "Core/EPlayerHealthPickup.h"
|
#include "Core/EPlayerHealthPickup.h"
|
||||||
#include "Engine/Collision/ETrigger.h"
|
#include "Engine/Collision/ETrigger.h"
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include <tuple>
|
|
||||||
|
|
||||||
class PickupSpawnSystem : public ImpureSystem
|
class PickupSpawnSystem : public ImpureSystem
|
||||||
{
|
{
|
||||||
@@ -21,6 +20,8 @@ public:
|
|||||||
private:
|
private:
|
||||||
EventRelay<PickupSpawnSystem, Events::TriggerTouch> m_ETriggerTouch;
|
EventRelay<PickupSpawnSystem, Events::TriggerTouch> m_ETriggerTouch;
|
||||||
bool OnTriggerTouch(Events::TriggerTouch& e);
|
bool OnTriggerTouch(Events::TriggerTouch& e);
|
||||||
|
EventRelay<PickupSpawnSystem, Events::TriggerLeave> m_ETriggerLeave;
|
||||||
|
bool OnTriggerLeave(Events::TriggerLeave& e);
|
||||||
|
|
||||||
struct NewHealthPickup {
|
struct NewHealthPickup {
|
||||||
glm::vec3 Pos;
|
glm::vec3 Pos;
|
||||||
@@ -30,5 +31,11 @@ private:
|
|||||||
EntityID parentID;
|
EntityID parentID;
|
||||||
};
|
};
|
||||||
std::vector<NewHealthPickup> m_ETriggerTouchVector;
|
std::vector<NewHealthPickup> m_ETriggerTouchVector;
|
||||||
|
struct EntityAtMaxValuePickupStruct {
|
||||||
|
EntityWrapper player;
|
||||||
|
EntityWrapper trigger;
|
||||||
|
};
|
||||||
|
std::vector<EntityAtMaxValuePickupStruct> m_PickupAtMaximum;
|
||||||
|
void DoPickup(EntityWrapper &player, EntityWrapper &trigger);
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -55,4 +55,5 @@
|
|||||||
<xs:include schemaLocation="Components/WeaponAttachment.xsd"/>
|
<xs:include schemaLocation="Components/WeaponAttachment.xsd"/>
|
||||||
<xs:include schemaLocation="Components/DefenderWeapon.xsd"/>
|
<xs:include schemaLocation="Components/DefenderWeapon.xsd"/>
|
||||||
<xs:include schemaLocation="Components/CapturePointGameMode.xsd"/>
|
<xs:include schemaLocation="Components/CapturePointGameMode.xsd"/>
|
||||||
|
<xs:include schemaLocation="Components/CapturePointArrowHUD.xsd"/>
|
||||||
</xs:schema>
|
</xs:schema>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||||
|
<CapturePointArrowHUD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="CapturePointArrowHUD.xsd">
|
||||||
|
<CurrentTarget>0</CurrentTarget>
|
||||||
|
</CapturePointArrowHUD>
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:t="types">
|
||||||
|
<xs:import schemaLocation="../Types.xsd" namespace="types"/>
|
||||||
|
<xs:element name="CapturePointArrowHUD">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>HUD element for tracking next capturable Capture Point.</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
<xs:complexType>
|
||||||
|
<xs:all>
|
||||||
|
<xs:element name="CurrentTarget" type="t:int" minOccurs="0">
|
||||||
|
<xs:annotation>
|
||||||
|
<xs:documentation>Corresponds to the current capturepoint the arrow points Towards</xs:documentation>
|
||||||
|
</xs:annotation>
|
||||||
|
</xs:element>
|
||||||
|
</xs:all>
|
||||||
|
</xs:complexType>
|
||||||
|
</xs:element>
|
||||||
|
</xs:schema>
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -2,6 +2,9 @@
|
|||||||
<Entity xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
<Entity xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||||
|
|
||||||
<Components>
|
<Components>
|
||||||
|
<c:CapturePointGameMode>
|
||||||
|
<RespawnTime>4.7473226580121377</RespawnTime>
|
||||||
|
</c:CapturePointGameMode>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="-1" Z="0"/>
|
<Position X="0" Y="-1" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
@@ -40,7 +43,7 @@
|
|||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:RaptorCopter>
|
</c:RaptorCopter>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Orientation X="0" Y="8433.37305" Z="0"/>
|
<Orientation X="0" Y="9038.11328" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
@@ -81,19 +84,19 @@
|
|||||||
</Entity>
|
</Entity>
|
||||||
<Entity name="DirectionalLight">
|
<Entity name="DirectionalLight">
|
||||||
<Components>
|
<Components>
|
||||||
|
<c:RaptorCopter>
|
||||||
|
<Speed>1</Speed>
|
||||||
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
|
</c:RaptorCopter>
|
||||||
<c:DirectionalLight>
|
<c:DirectionalLight>
|
||||||
<Intensity>0.80000001192092896</Intensity>
|
<Intensity>0.80000001192092896</Intensity>
|
||||||
</c:DirectionalLight>
|
</c:DirectionalLight>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Widgets/Lights/DirectionalLightWidget.mesh</Resource>
|
<Resource>Models/Widgets/Lights/DirectionalLightWidget.mesh</Resource>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
<c:RaptorCopter>
|
|
||||||
<Speed>1</Speed>
|
|
||||||
<Axis X="0" Y="1" Z="0"/>
|
|
||||||
</c:RaptorCopter>
|
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="2.1529963" Y="6.59221172" Z="0.169116676"/>
|
<Position X="2.1529963" Y="6.59221172" Z="0.169116676"/>
|
||||||
<Orientation X="4.16300011" Y="18271.9141" Z="0"/>
|
<Orientation X="4.16300011" Y="18876.6172" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
@@ -108,7 +111,11 @@
|
|||||||
<Children>
|
<Children>
|
||||||
<Entity name="RunAnim">
|
<Entity name="RunAnim">
|
||||||
<Components>
|
<Components>
|
||||||
<c:Animation/>
|
<c:Animation>
|
||||||
|
<AnimationName1></AnimationName1>
|
||||||
|
<AnimationName2></AnimationName2>
|
||||||
|
<AnimationName3></AnimationName3>
|
||||||
|
</c:Animation>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Characters/Assault/AssaultAnimated.mesh</Resource>
|
<Resource>Models/Characters/Assault/AssaultAnimated.mesh</Resource>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
@@ -120,7 +127,11 @@
|
|||||||
</Entity>
|
</Entity>
|
||||||
<Entity name="Walkanim">
|
<Entity name="Walkanim">
|
||||||
<Components>
|
<Components>
|
||||||
<c:Animation/>
|
<c:Animation>
|
||||||
|
<AnimationName1></AnimationName1>
|
||||||
|
<AnimationName2></AnimationName2>
|
||||||
|
<AnimationName3></AnimationName3>
|
||||||
|
</c:Animation>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Characters/Assault/AssaultAnimated.mesh</Resource>
|
<Resource>Models/Characters/Assault/AssaultAnimated.mesh</Resource>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
@@ -168,13 +179,17 @@
|
|||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:RaptorCopter>
|
</c:RaptorCopter>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Orientation X="0" Y="2553.63574" Z="0"/>
|
<Orientation X="0" Y="2856.05518" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
<Entity name="Asset">
|
<Entity name="Asset">
|
||||||
<Components>
|
<Components>
|
||||||
<c:Animation/>
|
<c:Animation>
|
||||||
|
<AnimationName1></AnimationName1>
|
||||||
|
<AnimationName2></AnimationName2>
|
||||||
|
<AnimationName3></AnimationName3>
|
||||||
|
</c:Animation>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Characters/Assault/AssaultAnimated.mesh</Resource>
|
<Resource>Models/Characters/Assault/AssaultAnimated.mesh</Resource>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
@@ -213,7 +228,7 @@
|
|||||||
<Axis X="1" Y="1" Z="1"/>
|
<Axis X="1" Y="1" Z="1"/>
|
||||||
</c:RaptorCopter>
|
</c:RaptorCopter>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Orientation X="16862.3945" Y="16862.3945" Z="16862.3945"/>
|
<Orientation X="17467.0977" Y="17467.0977" Z="17467.0977"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
@@ -277,7 +292,7 @@
|
|||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:RaptorCopter>
|
</c:RaptorCopter>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Orientation X="0" Y="16658.3906" Z="0"/>
|
<Orientation X="0" Y="17263.0938" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
@@ -309,7 +324,7 @@
|
|||||||
<Axis X="0.699999988" Y="1" Z="0.300000012"/>
|
<Axis X="0.699999988" Y="1" Z="0.300000012"/>
|
||||||
</c:RaptorCopter>
|
</c:RaptorCopter>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Orientation X="12206.665" Y="17385.8008" Z="5202.3335"/>
|
<Orientation X="12630.0664" Y="17990.5039" Z="5383.80176"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
@@ -659,7 +674,7 @@
|
|||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:RaptorCopter>
|
</c:RaptorCopter>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Orientation X="0" Y="851.386902" Z="0"/>
|
<Orientation X="0" Y="1153.80225" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
@@ -706,7 +721,7 @@
|
|||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:RaptorCopter>
|
</c:RaptorCopter>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Orientation X="0" Y="851.386902" Z="0"/>
|
<Orientation X="0" Y="1153.80225" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
@@ -766,7 +781,7 @@
|
|||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:RaptorCopter>
|
</c:RaptorCopter>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Orientation X="0" Y="851.386902" Z="0"/>
|
<Orientation X="0" Y="1153.80225" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
@@ -813,7 +828,7 @@
|
|||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:RaptorCopter>
|
</c:RaptorCopter>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Orientation X="0" Y="851.386902" Z="0"/>
|
<Orientation X="0" Y="1153.80225" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
@@ -859,7 +874,7 @@
|
|||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:RaptorCopter>
|
</c:RaptorCopter>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Orientation X="0" Y="851.386902" Z="0"/>
|
<Orientation X="0" Y="1153.80225" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
@@ -906,7 +921,7 @@
|
|||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:RaptorCopter>
|
</c:RaptorCopter>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Orientation X="0" Y="851.386902" Z="0"/>
|
<Orientation X="0" Y="1153.80225" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
@@ -953,7 +968,7 @@
|
|||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:RaptorCopter>
|
</c:RaptorCopter>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Orientation X="0" Y="851.386902" Z="0"/>
|
<Orientation X="0" Y="1153.80225" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
@@ -1013,6 +1028,7 @@
|
|||||||
</HomePointForTeam>
|
</HomePointForTeam>
|
||||||
<CaptureTimer>15</CaptureTimer>
|
<CaptureTimer>15</CaptureTimer>
|
||||||
</c:CapturePoint>
|
</c:CapturePoint>
|
||||||
|
<c:Trigger/>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Core/UnitCube.mesh</Resource>
|
<Resource>Models/Core/UnitCube.mesh</Resource>
|
||||||
<Color A="0.300000012" B="0" G="0" R="1"/>
|
<Color A="0.300000012" B="0" G="0" R="1"/>
|
||||||
@@ -1027,7 +1043,6 @@
|
|||||||
<Position X="0" Y="2" Z="0"/>
|
<Position X="0" Y="2" Z="0"/>
|
||||||
<Scale X="8" Y="4" Z="8"/>
|
<Scale X="8" Y="4" Z="8"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
<c:Trigger/>
|
|
||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
</Entity>
|
</Entity>
|
||||||
@@ -1063,6 +1078,7 @@
|
|||||||
<c:CapturePoint>
|
<c:CapturePoint>
|
||||||
<CapturePointNumber>1</CapturePointNumber>
|
<CapturePointNumber>1</CapturePointNumber>
|
||||||
</c:CapturePoint>
|
</c:CapturePoint>
|
||||||
|
<c:Trigger/>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Core/UnitCube.mesh</Resource>
|
<Resource>Models/Core/UnitCube.mesh</Resource>
|
||||||
<Color A="0.300000012" B="1" G="1" R="1"/>
|
<Color A="0.300000012" B="1" G="1" R="1"/>
|
||||||
@@ -1073,7 +1089,6 @@
|
|||||||
<Position X="0" Y="2" Z="0"/>
|
<Position X="0" Y="2" Z="0"/>
|
||||||
<Scale X="8" Y="4" Z="8"/>
|
<Scale X="8" Y="4" Z="8"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
<c:Trigger/>
|
|
||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
</Entity>
|
</Entity>
|
||||||
@@ -1107,6 +1122,7 @@
|
|||||||
<c:CapturePoint>
|
<c:CapturePoint>
|
||||||
<CapturePointNumber>2</CapturePointNumber>
|
<CapturePointNumber>2</CapturePointNumber>
|
||||||
</c:CapturePoint>
|
</c:CapturePoint>
|
||||||
|
<c:Trigger/>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Core/UnitCube.mesh</Resource>
|
<Resource>Models/Core/UnitCube.mesh</Resource>
|
||||||
<Color A="0.300000012" B="1" G="1" R="1"/>
|
<Color A="0.300000012" B="1" G="1" R="1"/>
|
||||||
@@ -1117,7 +1133,6 @@
|
|||||||
<Position X="0" Y="2" Z="0"/>
|
<Position X="0" Y="2" Z="0"/>
|
||||||
<Scale X="8" Y="4" Z="8"/>
|
<Scale X="8" Y="4" Z="8"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
<c:Trigger/>
|
|
||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
</Entity>
|
</Entity>
|
||||||
@@ -1153,6 +1168,7 @@
|
|||||||
<c:CapturePoint>
|
<c:CapturePoint>
|
||||||
<CapturePointNumber>3</CapturePointNumber>
|
<CapturePointNumber>3</CapturePointNumber>
|
||||||
</c:CapturePoint>
|
</c:CapturePoint>
|
||||||
|
<c:Trigger/>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Core/UnitCube.mesh</Resource>
|
<Resource>Models/Core/UnitCube.mesh</Resource>
|
||||||
<Color A="0.300000012" B="1" G="1" R="1"/>
|
<Color A="0.300000012" B="1" G="1" R="1"/>
|
||||||
@@ -1163,7 +1179,6 @@
|
|||||||
<Position X="0" Y="2" Z="0"/>
|
<Position X="0" Y="2" Z="0"/>
|
||||||
<Scale X="8" Y="4" Z="8"/>
|
<Scale X="8" Y="4" Z="8"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
<c:Trigger/>
|
|
||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
</Entity>
|
</Entity>
|
||||||
@@ -1203,6 +1218,7 @@
|
|||||||
<CaptureTimer>-15</CaptureTimer>
|
<CaptureTimer>-15</CaptureTimer>
|
||||||
<CapturePointNumber>4</CapturePointNumber>
|
<CapturePointNumber>4</CapturePointNumber>
|
||||||
</c:CapturePoint>
|
</c:CapturePoint>
|
||||||
|
<c:Trigger/>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Core/UnitCube.mesh</Resource>
|
<Resource>Models/Core/UnitCube.mesh</Resource>
|
||||||
<Color A="0.300000012" B="1" G="0" R="0"/>
|
<Color A="0.300000012" B="1" G="0" R="0"/>
|
||||||
@@ -1217,7 +1233,6 @@
|
|||||||
<Position X="0" Y="2" Z="0"/>
|
<Position X="0" Y="2" Z="0"/>
|
||||||
<Scale X="8" Y="4" Z="8"/>
|
<Scale X="8" Y="4" Z="8"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
<c:Trigger/>
|
|
||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
</Entity>
|
</Entity>
|
||||||
@@ -1367,7 +1382,7 @@
|
|||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:RaptorCopter>
|
</c:RaptorCopter>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Orientation X="0" Y="1385.11243" Z="0"/>
|
<Orientation X="0" Y="1687.52917" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
@@ -1376,7 +1391,7 @@
|
|||||||
<c:ExplosionEffect>
|
<c:ExplosionEffect>
|
||||||
<ColorByDistance>true</ColorByDistance>
|
<ColorByDistance>true</ColorByDistance>
|
||||||
<Velocity X="0.800000012" Y="0.0379999988" Z="0"/>
|
<Velocity X="0.800000012" Y="0.0379999988" Z="0"/>
|
||||||
<TimeSinceDeath>0.8256214817261025</TimeSinceDeath>
|
<TimeSinceDeath>2.5396116058983438</TimeSinceDeath>
|
||||||
<ExplosionDuration>3.7999999523162842</ExplosionDuration>
|
<ExplosionDuration>3.7999999523162842</ExplosionDuration>
|
||||||
<EndColor A="0" B="23.5294113" G="11.7647057" R="0"/>
|
<EndColor A="0" B="23.5294113" G="11.7647057" R="0"/>
|
||||||
<Randomness>true</Randomness>
|
<Randomness>true</Randomness>
|
||||||
@@ -1423,7 +1438,7 @@
|
|||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:RaptorCopter>
|
</c:RaptorCopter>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Orientation X="0" Y="1385.11243" Z="0"/>
|
<Orientation X="0" Y="1687.52917" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
@@ -1432,7 +1447,7 @@
|
|||||||
<c:ExplosionEffect>
|
<c:ExplosionEffect>
|
||||||
<Velocity X="0.5" Y="1" Z="0"/>
|
<Velocity X="0.5" Y="1" Z="0"/>
|
||||||
<ExplosionOrigin X="0" Y="0.900000036" Z="0"/>
|
<ExplosionOrigin X="0" Y="0.900000036" Z="0"/>
|
||||||
<TimeSinceDeath>1.8641349174045843</TimeSinceDeath>
|
<TimeSinceDeath>1.5396208215609732</TimeSinceDeath>
|
||||||
</c:ExplosionEffect>
|
</c:ExplosionEffect>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Characters/Assault/AssaultTPose.mesh</Resource>
|
<Resource>Models/Characters/Assault/AssaultTPose.mesh</Resource>
|
||||||
@@ -1475,18 +1490,22 @@
|
|||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:RaptorCopter>
|
</c:RaptorCopter>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Orientation X="0" Y="1385.11243" Z="0"/>
|
<Orientation X="0" Y="1687.52917" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
<Entity name="Asset">
|
<Entity name="Asset">
|
||||||
<Components>
|
<Components>
|
||||||
<c:Animation/>
|
<c:Animation>
|
||||||
|
<AnimationName1></AnimationName1>
|
||||||
|
<AnimationName2></AnimationName2>
|
||||||
|
<AnimationName3></AnimationName3>
|
||||||
|
</c:Animation>
|
||||||
<c:ExplosionEffect>
|
<c:ExplosionEffect>
|
||||||
<ColorByDistance>true</ColorByDistance>
|
<ColorByDistance>true</ColorByDistance>
|
||||||
<Velocity X="0.300000012" Y="2" Z="0"/>
|
<Velocity X="0.300000012" Y="2" Z="0"/>
|
||||||
<ExplosionOrigin X="0" Y="1.30000007" Z="-0.200000003"/>
|
<ExplosionOrigin X="0" Y="1.30000007" Z="-0.200000003"/>
|
||||||
<TimeSinceDeath>1.8641349174045843</TimeSinceDeath>
|
<TimeSinceDeath>1.5396208215609732</TimeSinceDeath>
|
||||||
<EndColor A="0" B="0.333333343" G="0.933333337" R="3.92156863"/>
|
<EndColor A="0" B="0.333333343" G="0.933333337" R="3.92156863"/>
|
||||||
<Randomness>true</Randomness>
|
<Randomness>true</Randomness>
|
||||||
</c:ExplosionEffect>
|
</c:ExplosionEffect>
|
||||||
@@ -1531,7 +1550,7 @@
|
|||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:RaptorCopter>
|
</c:RaptorCopter>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Orientation X="0" Y="1392.89258" Z="0"/>
|
<Orientation X="0" Y="1695.30933" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
@@ -1541,7 +1560,7 @@
|
|||||||
<ColorByDistance>true</ColorByDistance>
|
<ColorByDistance>true</ColorByDistance>
|
||||||
<Velocity X="0" Y="0.699999988" Z="0"/>
|
<Velocity X="0" Y="0.699999988" Z="0"/>
|
||||||
<ExplosionOrigin X="0" Y="-1.10000002" Z="0"/>
|
<ExplosionOrigin X="0" Y="-1.10000002" Z="0"/>
|
||||||
<TimeSinceDeath>1.2301962937648341</TimeSinceDeath>
|
<TimeSinceDeath>4.4522528839264339</TimeSinceDeath>
|
||||||
<ExplosionDuration>10</ExplosionDuration>
|
<ExplosionDuration>10</ExplosionDuration>
|
||||||
<EndColor A="1" B="0" G="0" R="1"/>
|
<EndColor A="1" B="0" G="0" R="1"/>
|
||||||
<RandomnessScalar>3</RandomnessScalar>
|
<RandomnessScalar>3</RandomnessScalar>
|
||||||
@@ -1589,7 +1608,7 @@
|
|||||||
<Axis X="0" Y="1" Z="0"/>
|
<Axis X="0" Y="1" Z="0"/>
|
||||||
</c:RaptorCopter>
|
</c:RaptorCopter>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Orientation X="0" Y="991.007263" Z="0"/>
|
<Orientation X="0" Y="1293.42383" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
@@ -1599,7 +1618,7 @@
|
|||||||
<ColorByDistance>true</ColorByDistance>
|
<ColorByDistance>true</ColorByDistance>
|
||||||
<Velocity X="6" Y="0.100000001" Z="0"/>
|
<Velocity X="6" Y="0.100000001" Z="0"/>
|
||||||
<ExplosionOrigin X="0" Y="-10" Z="0"/>
|
<ExplosionOrigin X="0" Y="-10" Z="0"/>
|
||||||
<TimeSinceDeath>3.4214855659573402</TimeSinceDeath>
|
<TimeSinceDeath>3.2362842141074992</TimeSinceDeath>
|
||||||
<ExponentialAccelaration>true</ExponentialAccelaration>
|
<ExponentialAccelaration>true</ExponentialAccelaration>
|
||||||
<ExplosionDuration>5</ExplosionDuration>
|
<ExplosionDuration>5</ExplosionDuration>
|
||||||
<Randomness>true</Randomness>
|
<Randomness>true</Randomness>
|
||||||
@@ -1690,6 +1709,7 @@
|
|||||||
</c:Physics>
|
</c:Physics>
|
||||||
<c:Player>
|
<c:Player>
|
||||||
<MovementSpeed>5</MovementSpeed>
|
<MovementSpeed>5</MovementSpeed>
|
||||||
|
<CurrentWeapon></CurrentWeapon>
|
||||||
</c:Player>
|
</c:Player>
|
||||||
<c:Team>
|
<c:Team>
|
||||||
<Team>
|
<Team>
|
||||||
@@ -1712,6 +1732,7 @@
|
|||||||
<Entity name="PlayerName">
|
<Entity name="PlayerName">
|
||||||
<Components>
|
<Components>
|
||||||
<c:Text>
|
<c:Text>
|
||||||
|
<Content></Content>
|
||||||
<Resource>Fonts/DroidSans.ttf,100</Resource>
|
<Resource>Fonts/DroidSans.ttf,100</Resource>
|
||||||
<Color A="1" B="0" G="1" R="0"/>
|
<Color A="1" B="0" G="1" R="0"/>
|
||||||
</c:Text>
|
</c:Text>
|
||||||
@@ -1780,7 +1801,7 @@
|
|||||||
<c:ExplosionEffect>
|
<c:ExplosionEffect>
|
||||||
<ColorByDistance>true</ColorByDistance>
|
<ColorByDistance>true</ColorByDistance>
|
||||||
<Velocity X="0.800000012" Y="0.0379999988" Z="0"/>
|
<Velocity X="0.800000012" Y="0.0379999988" Z="0"/>
|
||||||
<TimeSinceDeath>0.8256214817261025</TimeSinceDeath>
|
<TimeSinceDeath>2.5396116058983438</TimeSinceDeath>
|
||||||
<ExplosionDuration>3.7999999523162842</ExplosionDuration>
|
<ExplosionDuration>3.7999999523162842</ExplosionDuration>
|
||||||
<EndColor A="0" B="23.5294113" G="11.7647057" R="0"/>
|
<EndColor A="0" B="23.5294113" G="11.7647057" R="0"/>
|
||||||
<Randomness>true</Randomness>
|
<Randomness>true</Randomness>
|
||||||
@@ -1823,7 +1844,11 @@
|
|||||||
</Entity>
|
</Entity>
|
||||||
<Entity name="PlayerModel">
|
<Entity name="PlayerModel">
|
||||||
<Components>
|
<Components>
|
||||||
<c:Animation/>
|
<c:Animation>
|
||||||
|
<AnimationName1></AnimationName1>
|
||||||
|
<AnimationName2></AnimationName2>
|
||||||
|
<AnimationName3></AnimationName3>
|
||||||
|
</c:Animation>
|
||||||
<c:Shielded/>
|
<c:Shielded/>
|
||||||
<c:HiddenForLocalPlayer/>
|
<c:HiddenForLocalPlayer/>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
@@ -1925,6 +1950,7 @@
|
|||||||
<Components>
|
<Components>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Props/FoliageDiff.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Props/FoliageDiff.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform/>
|
<c:Transform/>
|
||||||
</Components>
|
</Components>
|
||||||
@@ -1934,6 +1960,7 @@
|
|||||||
<Components>
|
<Components>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Props/FoliageDiff.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Props/FoliageDiff.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="-0.177861199" Y="0" Z="-1.04673338"/>
|
<Position X="-0.177861199" Y="0" Z="-1.04673338"/>
|
||||||
@@ -1954,6 +1981,7 @@
|
|||||||
<Components>
|
<Components>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
<Color A="0.300000012" B="1" G="1" R="1"/>
|
<Color A="0.300000012" B="1" G="1" R="1"/>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
@@ -1971,6 +1999,7 @@
|
|||||||
</c:Fill>
|
</c:Fill>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/UnitHexagon_Rotated.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/UnitHexagon_Rotated.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0" Z="0.00999999978"/>
|
<Position X="0" Y="0" Z="0.00999999978"/>
|
||||||
@@ -1986,6 +2015,7 @@
|
|||||||
<Components>
|
<Components>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
<Color A="0.300000012" B="1" G="1" R="1"/>
|
<Color A="0.300000012" B="1" G="1" R="1"/>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
@@ -2003,6 +2033,7 @@
|
|||||||
</c:Fill>
|
</c:Fill>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/UnitHexagon_Rotated.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/UnitHexagon_Rotated.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0" Z="0.00999999978"/>
|
<Position X="0" Y="0" Z="0.00999999978"/>
|
||||||
@@ -2018,6 +2049,7 @@
|
|||||||
<Components>
|
<Components>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
<Color A="0.699999988" B="1" G="0.200000003" R="0"/>
|
<Color A="0.699999988" B="1" G="0.200000003" R="0"/>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
@@ -2036,6 +2068,7 @@
|
|||||||
</c:Fill>
|
</c:Fill>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/UnitHexagon_Rotated.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/UnitHexagon_Rotated.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0" Z="0.00999999978"/>
|
<Position X="0" Y="0" Z="0.00999999978"/>
|
||||||
@@ -2051,6 +2084,7 @@
|
|||||||
<Components>
|
<Components>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
<Color A="0.300000012" B="1" G="1" R="1"/>
|
<Color A="0.300000012" B="1" G="1" R="1"/>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
@@ -2068,6 +2102,7 @@
|
|||||||
</c:Fill>
|
</c:Fill>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/UnitHexagon_Rotated.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/UnitHexagon_Rotated.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0" Z="0.00999999978"/>
|
<Position X="0" Y="0" Z="0.00999999978"/>
|
||||||
@@ -2083,6 +2118,7 @@
|
|||||||
<Components>
|
<Components>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
<Color A="0.699999988" B="0" G="0" R="1"/>
|
<Color A="0.699999988" B="0" G="0" R="1"/>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
@@ -2099,6 +2135,7 @@
|
|||||||
</c:Fill>
|
</c:Fill>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/UnitHexagon_Rotated.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/UnitHexagon_Rotated.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0" Z="0.00999999978"/>
|
<Position X="0" Y="0" Z="0.00999999978"/>
|
||||||
@@ -2167,6 +2204,7 @@
|
|||||||
<Components>
|
<Components>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/ErrorTexture.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/ErrorTexture.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0" Z="-1"/>
|
<Position X="0" Y="0" Z="-1"/>
|
||||||
@@ -2178,6 +2216,7 @@
|
|||||||
<c:Button/>
|
<c:Button/>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0.388422519" Z="0.0627754927"/>
|
<Position X="0" Y="0.388422519" Z="0.0627754927"/>
|
||||||
@@ -2206,6 +2245,7 @@
|
|||||||
<c:Button/>
|
<c:Button/>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0.214031488" Z="0.0627754927"/>
|
<Position X="0" Y="0.214031488" Z="0.0627754927"/>
|
||||||
@@ -2234,6 +2274,7 @@
|
|||||||
<c:Button/>
|
<c:Button/>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0.0367300175" Z="0.0627754927"/>
|
<Position X="0" Y="0.0367300175" Z="0.0627754927"/>
|
||||||
@@ -2262,6 +2303,7 @@
|
|||||||
<c:Button/>
|
<c:Button/>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="-0.148274168" Z="0.0627754927"/>
|
<Position X="0" Y="-0.148274168" Z="0.0627754927"/>
|
||||||
@@ -2290,6 +2332,7 @@
|
|||||||
<c:Button/>
|
<c:Button/>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="-0.335298717" Z="0.0627754927"/>
|
<Position X="0" Y="-0.335298717" Z="0.0627754927"/>
|
||||||
@@ -2331,6 +2374,7 @@
|
|||||||
<Components>
|
<Components>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/ErrorTexture.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/ErrorTexture.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0" Z="-1"/>
|
<Position X="0" Y="0" Z="-1"/>
|
||||||
@@ -2342,6 +2386,7 @@
|
|||||||
<c:Button/>
|
<c:Button/>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0.375197947" Z="0.0627754927"/>
|
<Position X="0" Y="0.375197947" Z="0.0627754927"/>
|
||||||
@@ -2370,6 +2415,7 @@
|
|||||||
<c:Button/>
|
<c:Button/>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0.199327558" Z="0.0627754927"/>
|
<Position X="0" Y="0.199327558" Z="0.0627754927"/>
|
||||||
@@ -2398,6 +2444,7 @@
|
|||||||
<c:Button/>
|
<c:Button/>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0.0159880854" Z="0.0627754927"/>
|
<Position X="0" Y="0.0159880854" Z="0.0627754927"/>
|
||||||
@@ -2426,6 +2473,7 @@
|
|||||||
<c:Button/>
|
<c:Button/>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
|
||||||
|
<GlowMap></GlowMap>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="-0.164955258" Z="0.0627754927"/>
|
<Position X="0" Y="-0.164955258" Z="0.0627754927"/>
|
||||||
@@ -2482,6 +2530,36 @@
|
|||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
</Entity>
|
</Entity>
|
||||||
|
<Entity>
|
||||||
|
<Components>
|
||||||
|
<c:Team/>
|
||||||
|
<c:Transform>
|
||||||
|
<Position X="9.42733288" Y="8.22214794" Z="0"/>
|
||||||
|
</c:Transform>
|
||||||
|
</Components>
|
||||||
|
<Children>
|
||||||
|
<Entity name="CapturePointArrow">
|
||||||
|
<Components>
|
||||||
|
<c:CapturePointArrowHUD>
|
||||||
|
<CurrentTarget>2</CurrentTarget>
|
||||||
|
</c:CapturePointArrowHUD>
|
||||||
|
<c:Model>
|
||||||
|
<Resource>Models/Weapons/Blue/AssaultWeaponBlue.mesh</Resource>
|
||||||
|
</c:Model>
|
||||||
|
<c:Team>
|
||||||
|
<Team>
|
||||||
|
<Red/>
|
||||||
|
</Team>
|
||||||
|
</c:Team>
|
||||||
|
<c:Transform>
|
||||||
|
<Scale X="10.7000008" Y="1.4000001" Z="5.30000019"/>
|
||||||
|
<Orientation X="-0.648448348" Y="-0.417814791" Z="0"/>
|
||||||
|
</c:Transform>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
|
</Children>
|
||||||
|
</Entity>
|
||||||
</Children>
|
</Children>
|
||||||
|
|
||||||
</Entity>
|
</Entity>
|
||||||
|
|||||||
@@ -52,6 +52,7 @@
|
|||||||
<xs:element ref="c:Button" minOccurs="0"/>
|
<xs:element ref="c:Button" minOccurs="0"/>
|
||||||
<xs:element ref="c:WeaponAttachment" minOccurs="0"/>
|
<xs:element ref="c:WeaponAttachment" minOccurs="0"/>
|
||||||
<xs:element ref="c:DefenderWeapon" minOccurs="0"/>
|
<xs:element ref="c:DefenderWeapon" minOccurs="0"/>
|
||||||
|
<xs:element ref="c:CapturePointArrowHUD" minOccurs="0"/>
|
||||||
</xs:all>
|
</xs:all>
|
||||||
</xs:complexType>
|
</xs:complexType>
|
||||||
</xs:element>
|
</xs:element>
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
#include "Rendering/AnimationSystem.h"
|
#include "Rendering/AnimationSystem.h"
|
||||||
#include "Network/MultiplayerSnapshotFilter.h"
|
#include "Network/MultiplayerSnapshotFilter.h"
|
||||||
#include "Game/Systems/AmmunitionHUDSystem.h"
|
#include "Game/Systems/AmmunitionHUDSystem.h"
|
||||||
|
#include "Game/Systems/CapturePointArrowHUDSystem.h"
|
||||||
#include "Game/Systems/KillFeedSystem.h"
|
#include "Game/Systems/KillFeedSystem.h"
|
||||||
#include "Game/Systems/BoostSystem.h"
|
#include "Game/Systems/BoostSystem.h"
|
||||||
#include "GUI/ButtonSystem.h"
|
#include "GUI/ButtonSystem.h"
|
||||||
@@ -132,6 +133,15 @@ Game::Game(int argc, char* argv[])
|
|||||||
m_SystemPipeline->AddSystem<AmmoPickupSystem>(updateOrderLevel);
|
m_SystemPipeline->AddSystem<AmmoPickupSystem>(updateOrderLevel);
|
||||||
m_SystemPipeline->AddSystem<DamageIndicatorSystem>(updateOrderLevel);
|
m_SystemPipeline->AddSystem<DamageIndicatorSystem>(updateOrderLevel);
|
||||||
m_SystemPipeline->AddSystem<AmmunitionHUDSystem>(updateOrderLevel);
|
m_SystemPipeline->AddSystem<AmmunitionHUDSystem>(updateOrderLevel);
|
||||||
|
m_SystemPipeline->AddSystem<CapturePointArrowHUDSystem>(updateOrderLevel);
|
||||||
|
m_SystemPipeline->AddSystem<KillFeedSystem>(updateOrderLevel);
|
||||||
|
m_SystemPipeline->AddSystem<LifetimeSystem>(updateOrderLevel);
|
||||||
|
m_SystemPipeline->AddSystem<CapturePointSystem>(updateOrderLevel);
|
||||||
|
m_SystemPipeline->AddSystem<CapturePointHUDSystem>(updateOrderLevel);
|
||||||
|
m_SystemPipeline->AddSystem<PickupSpawnSystem>(updateOrderLevel);
|
||||||
|
m_SystemPipeline->AddSystem<AmmoPickupSystem>(updateOrderLevel);
|
||||||
|
m_SystemPipeline->AddSystem<DamageIndicatorSystem>(updateOrderLevel);
|
||||||
|
m_SystemPipeline->AddSystem<AmmunitionHUDSystem>(updateOrderLevel);
|
||||||
m_SystemPipeline->AddSystem<KillFeedSystem>(updateOrderLevel);
|
m_SystemPipeline->AddSystem<KillFeedSystem>(updateOrderLevel);
|
||||||
m_SystemPipeline->AddSystem<BoostSystem>(updateOrderLevel);
|
m_SystemPipeline->AddSystem<BoostSystem>(updateOrderLevel);
|
||||||
m_SystemPipeline->AddSystem<ButtonSystem>(updateOrderLevel, m_Renderer);
|
m_SystemPipeline->AddSystem<ButtonSystem>(updateOrderLevel, m_Renderer);
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ AmmoPickupSystem::AmmoPickupSystem(SystemParams params)
|
|||||||
{
|
{
|
||||||
if (IsServer) {
|
if (IsServer) {
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_ETriggerTouch, &AmmoPickupSystem::OnTriggerTouch);
|
EVENT_SUBSCRIBE_MEMBER(m_ETriggerTouch, &AmmoPickupSystem::OnTriggerTouch);
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_ETriggerLeave, &AmmoPickupSystem::OnTriggerLeave);
|
||||||
}
|
}
|
||||||
if (IsClient) {
|
if (IsClient) {
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_EAmmoPickup, &AmmoPickupSystem::OnAmmoPickup);
|
EVENT_SUBSCRIBE_MEMBER(m_EAmmoPickup, &AmmoPickupSystem::OnAmmoPickup);
|
||||||
@@ -14,43 +15,51 @@ AmmoPickupSystem::AmmoPickupSystem(SystemParams params)
|
|||||||
void AmmoPickupSystem::Update(double dt)
|
void AmmoPickupSystem::Update(double dt)
|
||||||
{
|
{
|
||||||
if (IsServer) {
|
if (IsServer) {
|
||||||
for (auto it = m_ETriggerTouchVector.begin(); it != m_ETriggerTouchVector.end(); ++it) {
|
auto it = m_ETriggerTouchVector.begin();
|
||||||
auto& ammoPickupPosition = *it;
|
while (it != m_ETriggerTouchVector.end()) {
|
||||||
//set the double timer value (value 3)
|
auto& somePickup = *it;
|
||||||
ammoPickupPosition.DecreaseThisRespawnTimer -= dt;
|
somePickup.DecreaseThisRespawnTimer -= dt;
|
||||||
if (ammoPickupPosition.DecreaseThisRespawnTimer < 0.0) {
|
if (somePickup.DecreaseThisRespawnTimer < 0.0) {
|
||||||
//spawn and delete the vector item
|
|
||||||
auto entityFile = ResourceManager::Load<EntityFile>("Schema/Entities/AmmoPickup.xml");
|
auto entityFile = ResourceManager::Load<EntityFile>("Schema/Entities/AmmoPickup.xml");
|
||||||
EntityFileParser parser(entityFile);
|
EntityFileParser parser(entityFile);
|
||||||
EntityID ammoPickupID = parser.MergeEntities(m_World);
|
EntityID ammoPickupID = parser.MergeEntities(m_World);
|
||||||
|
|
||||||
//let the world know a pickup has spawned (graphics effects, etc)
|
//let the world know a pickup has spawned
|
||||||
Events::PickupSpawned ePickupSpawned;
|
Events::PickupSpawned ePickupSpawned;
|
||||||
ePickupSpawned.Pickup = EntityWrapper(m_World, ammoPickupID);
|
ePickupSpawned.Pickup = EntityWrapper(m_World, ammoPickupID);
|
||||||
m_EventBroker->Publish(ePickupSpawned);
|
m_EventBroker->Publish(ePickupSpawned);
|
||||||
|
|
||||||
//set values from the old entity to the new entity
|
//copy values from the old entity to the new entity
|
||||||
auto& newAmmoPickupEntity = EntityWrapper(m_World, ammoPickupID);
|
auto& newAmmoPickupEntity = EntityWrapper(m_World, ammoPickupID);
|
||||||
newAmmoPickupEntity["Transform"]["Position"] = ammoPickupPosition.Pos;
|
newAmmoPickupEntity["Transform"]["Position"] = somePickup.Pos;
|
||||||
newAmmoPickupEntity["AmmoPickup"]["AmmoGain"] = ammoPickupPosition.AmmoGain;
|
newAmmoPickupEntity["AmmoPickup"]["AmmoGain"] = somePickup.AmmoGain;
|
||||||
newAmmoPickupEntity["AmmoPickup"]["RespawnTimer"] = ammoPickupPosition.RespawnTimer;
|
newAmmoPickupEntity["AmmoPickup"]["RespawnTimer"] = somePickup.RespawnTimer;
|
||||||
m_World->SetParent(newAmmoPickupEntity.ID, ammoPickupPosition.parentID);
|
m_World->SetParent(newAmmoPickupEntity.ID, somePickup.parentID);
|
||||||
|
|
||||||
//erase the current element (AmmoPickupPosition)
|
//erase the current element (somePickup)
|
||||||
m_ETriggerTouchVector.erase(it);
|
it = m_ETriggerTouchVector.erase(it);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
it++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//still touching m_PickupAtMaximum?
|
||||||
|
for (auto& it = m_PickupAtMaximum.begin(); it != m_PickupAtMaximum.end(); ++it) {
|
||||||
|
if (!it->player.Valid()) {
|
||||||
|
m_PickupAtMaximum.erase(it);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ((int)it->player["AssaultWeapon"]["Ammo"] < (int)it->player["AssaultWeapon"]["MaxAmmo"]) {
|
||||||
|
DoPickup(it->player, it->trigger);
|
||||||
|
m_PickupAtMaximum.erase(it);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool AmmoPickupSystem::OnTriggerTouch(Events::TriggerTouch& e)
|
bool AmmoPickupSystem::OnTriggerTouch(Events::TriggerTouch& e)
|
||||||
{
|
{
|
||||||
/*if (e.Entity != LocalPlayer) {
|
|
||||||
return false;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
if (!e.Entity.Valid()) {
|
if (!e.Entity.Valid()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -61,30 +70,13 @@ bool AmmoPickupSystem::OnTriggerTouch(Events::TriggerTouch& e)
|
|||||||
if (!e.Trigger.HasComponent("AmmoPickup")) {
|
if (!e.Trigger.HasComponent("AmmoPickup")) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
int maxWeaponAmmo = (int)e.Entity["AssaultWeapon"]["MaxAmmo"];
|
|
||||||
int& currentAmmo = (int)e.Entity["AssaultWeapon"]["Ammo"];
|
|
||||||
|
|
||||||
int ammoGiven = 0.01*(double)e.Trigger["AmmoPickup"]["AmmoGain"] * maxWeaponAmmo;
|
//if at maxammo, save the trigger-touch to a vector since standing inside it will not re-trigger the trigger
|
||||||
//cant pick up ammopacks if you are already at MaxAmmo
|
if ((int)e.Entity["AssaultWeapon"]["Ammo"] >= (int)e.Entity["AssaultWeapon"]["MaxAmmo"]) {
|
||||||
if (currentAmmo >= maxWeaponAmmo) {
|
m_PickupAtMaximum.push_back({ e.Entity, e.Trigger });
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
DoPickup(e.Entity, e.Trigger);
|
||||||
//personEntered = e.Entity, thingEntered = e.Trigger
|
|
||||||
Events::AmmoPickup ePlayerAmmoPickup;
|
|
||||||
ePlayerAmmoPickup.AmmoGain = ammoGiven;
|
|
||||||
ePlayerAmmoPickup.Player = e.Entity;
|
|
||||||
m_EventBroker->Publish(ePlayerAmmoPickup);
|
|
||||||
//immediately give the player the ammo
|
|
||||||
//currentAmmo = std::min(currentAmmo + ammoGiven, maxWeaponAmmo);
|
|
||||||
|
|
||||||
//copy position, ammogain, respawntimer (twice since one of the values will be counted down to 0, the other will be set in the new object)
|
|
||||||
//we need to copy all values since each value can be different for each ammoPickup
|
|
||||||
m_ETriggerTouchVector.push_back({ e.Trigger["Transform"]["Position"], e.Trigger["AmmoPickup"]["AmmoGain"],
|
|
||||||
e.Trigger["AmmoPickup"]["RespawnTimer"], e.Trigger["AmmoPickup"]["RespawnTimer"], m_World->GetParent(e.Trigger.ID) });
|
|
||||||
|
|
||||||
//delete the ammopickup
|
|
||||||
m_World->DeleteEntity(e.Trigger.ID);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,3 +99,39 @@ bool AmmoPickupSystem::OnAmmoPickup(Events::AmmoPickup & e)
|
|||||||
currentAmmo = std::min(currentAmmo + e.AmmoGain, maxWeaponAmmo);
|
currentAmmo = std::min(currentAmmo + e.AmmoGain, maxWeaponAmmo);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AmmoPickupSystem::OnTriggerLeave(Events::TriggerLeave& e) {
|
||||||
|
if (!e.Trigger.HasComponent("AmmoPickup")) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
//triggerleave erases possible m_PickupAtMaximum
|
||||||
|
for (auto& it = m_PickupAtMaximum.begin(); it != m_PickupAtMaximum.end(); ++it) {
|
||||||
|
if (it->trigger.ID == e.Trigger.ID && it->player.ID == e.Entity.ID) {
|
||||||
|
m_PickupAtMaximum.erase(it);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void AmmoPickupSystem::DoPickup(EntityWrapper &player, EntityWrapper &trigger) {
|
||||||
|
int maxWeaponAmmo = (int)player["AssaultWeapon"]["MaxAmmo"];
|
||||||
|
int& currentAmmo = (int)player["AssaultWeapon"]["Ammo"];
|
||||||
|
int ammoGiven = 0.01*(double)trigger["AmmoPickup"]["AmmoGain"] * maxWeaponAmmo;
|
||||||
|
|
||||||
|
Events::AmmoPickup ePlayerAmmoPickup;
|
||||||
|
ePlayerAmmoPickup.AmmoGain = ammoGiven;
|
||||||
|
ePlayerAmmoPickup.Player = player;
|
||||||
|
m_EventBroker->Publish(ePlayerAmmoPickup);
|
||||||
|
|
||||||
|
//immediately give the player the ammo (on server)
|
||||||
|
currentAmmo = std::min(currentAmmo + ammoGiven, maxWeaponAmmo);
|
||||||
|
|
||||||
|
//copy position, ammogain, respawntimer (twice since one of the values will be counted down to 0, the other will be set in the new object)
|
||||||
|
//we need to copy all values since each value can be different for each ammoPickup
|
||||||
|
m_ETriggerTouchVector.push_back({ (glm::vec3)trigger["Transform"]["Position"], trigger["AmmoPickup"]["AmmoGain"],
|
||||||
|
trigger["AmmoPickup"]["RespawnTimer"], trigger["AmmoPickup"]["RespawnTimer"], m_World->GetParent(trigger.ID) });
|
||||||
|
|
||||||
|
//delete the ammopickup
|
||||||
|
m_World->DeleteEntity(trigger.ID);
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,183 @@
|
|||||||
|
#include "Systems/CapturePointArrowHUDSystem.h"
|
||||||
|
|
||||||
|
CapturePointArrowHUDSystem::CapturePointArrowHUDSystem(SystemParams params)
|
||||||
|
: System(params)
|
||||||
|
, ImpureSystem()
|
||||||
|
{
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_ECapturedEvent, &CapturePointArrowHUDSystem::OnCapturePointCaptured);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CapturePointArrowHUDSystem::Update(double dt)
|
||||||
|
{
|
||||||
|
bool loadCheck = true;
|
||||||
|
int redTeamEnum;
|
||||||
|
int blueTeamEnum;
|
||||||
|
int spectatorTeamEnum;
|
||||||
|
|
||||||
|
//Get list for all CapturePointArrowHUDComponents
|
||||||
|
auto arrowHUDs = m_World->GetComponents("CapturePointArrowHUD");
|
||||||
|
auto capturePoints = m_World->GetComponents("CapturePoint");
|
||||||
|
if(arrowHUDs == nullptr) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for(auto& cArrowHUD : *arrowHUDs) {
|
||||||
|
//Get what team the current arrow corresponds to
|
||||||
|
EntityWrapper arrowEntity = EntityWrapper(m_World, cArrowHUD.EntityID);
|
||||||
|
if (!arrowEntity.Valid()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(!arrowEntity.HasComponent("Team")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
auto cTeam = arrowEntity["Team"];
|
||||||
|
int currentTeam = (int)cTeam["Team"];
|
||||||
|
|
||||||
|
if (loadCheck) {
|
||||||
|
redTeamEnum = (int)cTeam["Team"].Enum("Red");
|
||||||
|
blueTeamEnum = (int)cTeam["Team"].Enum("Blue");
|
||||||
|
spectatorTeamEnum = (int)cTeam["Team"].Enum("Spectator");
|
||||||
|
loadCheck = false;
|
||||||
|
|
||||||
|
|
||||||
|
if (!m_InitialtargetsSet) {
|
||||||
|
std::unordered_map<int, glm::vec3> blueTargets, redTargets;
|
||||||
|
EntityWrapper homeBlue, homeRed;
|
||||||
|
int lastCP = -INFINITY;
|
||||||
|
int firstCP = INFINITY;
|
||||||
|
|
||||||
|
for (auto& cCP : *capturePoints) {
|
||||||
|
auto homePointTeam = (int)cCP["HomePointForTeam"];
|
||||||
|
EntityWrapper capturePointEntity = EntityWrapper(m_World, cCP.EntityID);
|
||||||
|
int capturePointID = (int)capturePointEntity["CapturePoint"]["CapturePointNumber"];
|
||||||
|
|
||||||
|
if(capturePointID < firstCP) {
|
||||||
|
firstCP = capturePointID;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(capturePointID > lastCP) {
|
||||||
|
lastCP = capturePointID;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!capturePointEntity.HasComponent("Team")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
int currentOwner = (int)capturePointEntity["Team"]["Team"];
|
||||||
|
|
||||||
|
if(currentOwner != redTeamEnum) {
|
||||||
|
//This capturePoint is not owned by the red team and is therefor an eligible target for red team
|
||||||
|
glm::vec3 targetPos = Transform::AbsolutePosition(capturePointEntity);
|
||||||
|
redTargets.insert(std::pair<int, glm::vec3>(capturePointID, targetPos));
|
||||||
|
}
|
||||||
|
if(currentOwner != blueTeamEnum) {
|
||||||
|
//This capturePoint is not owned by the blue team and is therefor an eligible target for blue team
|
||||||
|
glm::vec3 targetPos = Transform::AbsolutePosition(capturePointEntity);
|
||||||
|
blueTargets.insert(std::pair<int, glm::vec3>(capturePointID, targetPos));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(homePointTeam == blueTeamEnum) {
|
||||||
|
//CP is the home point for blue team.
|
||||||
|
homeBlue = capturePointEntity;
|
||||||
|
} else if (homePointTeam == redTeamEnum) {
|
||||||
|
//CP is the home point for red team.
|
||||||
|
homeRed = capturePointEntity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!homeRed.Valid() || !homeBlue.Valid()) {
|
||||||
|
//One or both teams have no home point, cant continue
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unordered_map<int, glm::vec3>::const_iterator got;
|
||||||
|
//Find next target for red team.
|
||||||
|
if((int)homeRed["CapturePoint"]["CapturePointNumber"] == lastCP) {
|
||||||
|
//Red home base is the last capture point, count back from lastCP and find next target
|
||||||
|
for (int i = lastCP; i >= firstCP; i--) {
|
||||||
|
got = redTargets.find(i);
|
||||||
|
if(got == redTargets.end()) {
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
m_RedTeamCurrentTarget = got->second;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if ((int)homeRed["CapturePoint"]["CapturePointNumber"] == firstCP) {
|
||||||
|
//Red home is the first capture point, count forward from firstCP and find next target.
|
||||||
|
for (int i = firstCP; i <= lastCP; i++) {
|
||||||
|
got = redTargets.find(i);
|
||||||
|
if(got == redTargets.end()) {
|
||||||
|
//Target was not found, try the next one after that.
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
m_RedTeamCurrentTarget = got->second;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Find next target for blue team
|
||||||
|
if ((int)homeBlue["CapturePoint"]["CapturePointNumber"] == lastCP) {
|
||||||
|
//Red home base is the last capture point, count back from lastCP and find next target
|
||||||
|
for (int i = lastCP; i >= firstCP; i--) {
|
||||||
|
got = blueTargets.find(i);
|
||||||
|
if (got == blueTargets.end()) {
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
m_BlueTeamCurrentTarget = got->second;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if ((int)homeBlue["CapturePoint"]["CapturePointNumber"] == firstCP) {
|
||||||
|
//Red home is the first capture point, count forward from firstCP and find next target.
|
||||||
|
for (int i = firstCP; i <= lastCP; i++) {
|
||||||
|
got = blueTargets.find(i);
|
||||||
|
if (got == blueTargets.end()) {
|
||||||
|
//Target was not found, try the next one after that.
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
m_BlueTeamCurrentTarget = got->second;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//if red team, get red team next point, otherwise blue team next point.
|
||||||
|
//Untill this is awailable we will just use the hardcoded value in the component.
|
||||||
|
//This will also give us a position, so we wont need to loop through all capturePoints.
|
||||||
|
glm::vec3 pos;
|
||||||
|
if(currentTeam == redTeamEnum) {
|
||||||
|
pos = m_RedTeamCurrentTarget;
|
||||||
|
} else if (currentTeam == blueTeamEnum) {
|
||||||
|
pos = m_BlueTeamCurrentTarget;
|
||||||
|
}
|
||||||
|
|
||||||
|
glm::vec3& arrowOri = arrowEntity["Transform"]["Orientation"];
|
||||||
|
glm::vec3 lookVector = glm::normalize(Transform::AbsolutePosition(arrowEntity) - pos); //Maybe should be player instead
|
||||||
|
float pitch = std::asin(-lookVector.y);
|
||||||
|
float yaw = std::atan2(lookVector.x, lookVector.z);
|
||||||
|
arrowOri.x = pitch;
|
||||||
|
arrowOri.y = yaw;
|
||||||
|
arrowOri.z = 0.f;
|
||||||
|
EntityWrapper parent = arrowEntity.Parent();
|
||||||
|
if (parent.Valid()) {
|
||||||
|
arrowOri -= Transform::AbsoluteOrientationEuler(parent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CapturePointArrowHUDSystem::OnCapturePointCaptured(Events::Captured& e)
|
||||||
|
{
|
||||||
|
if(!e.BlueTeamNextCapturePoint.Valid() || !e.RedTeamNextCapturePoint.Valid()) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_RedTeamCurrentTarget = Transform::AbsolutePosition(e.RedTeamNextCapturePoint);
|
||||||
|
m_BlueTeamCurrentTarget = Transform::AbsolutePosition(e.BlueTeamNextCapturePoint);
|
||||||
|
|
||||||
|
m_InitialtargetsSet = true;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
@@ -103,9 +103,8 @@ void CapturePointSystem::UpdateComponent(EntityWrapper& capturePointEntity, Comp
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_RecentlyCapturedNeedNextCapturePointNow) {
|
if (m_RecentlyCapturedNeedNextCapturePointNow) {
|
||||||
m_CapturedEvent.NextCapturePoint = m_CapturedEvent.TeamNumberThatCapturedCapturePoint == blueTeam ?
|
m_CapturedEvent.BlueTeamNextCapturePoint = m_CapturePointNumberToEntityMap[nextPossibleCapturePoint["Blue"]];
|
||||||
m_CapturePointNumberToEntityMap[nextPossibleCapturePoint["Blue"]] :
|
m_CapturedEvent.RedTeamNextCapturePoint = m_CapturePointNumberToEntityMap[nextPossibleCapturePoint["Red"]];
|
||||||
m_CapturePointNumberToEntityMap[nextPossibleCapturePoint["Red"]];
|
|
||||||
m_EventBroker->Publish(m_CapturedEvent);
|
m_EventBroker->Publish(m_CapturedEvent);
|
||||||
m_RecentlyCapturedNeedNextCapturePointNow = false;
|
m_RecentlyCapturedNeedNextCapturePointNow = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,18 +5,19 @@ PickupSpawnSystem::PickupSpawnSystem(SystemParams params)
|
|||||||
{
|
{
|
||||||
if (IsServer) {
|
if (IsServer) {
|
||||||
EVENT_SUBSCRIBE_MEMBER(m_ETriggerTouch, &PickupSpawnSystem::OnTriggerTouch);
|
EVENT_SUBSCRIBE_MEMBER(m_ETriggerTouch, &PickupSpawnSystem::OnTriggerTouch);
|
||||||
|
EVENT_SUBSCRIBE_MEMBER(m_ETriggerLeave, &PickupSpawnSystem::OnTriggerLeave);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PickupSpawnSystem::Update(double dt)
|
void PickupSpawnSystem::Update(double dt)
|
||||||
{
|
{
|
||||||
if (IsServer) {
|
if (IsServer) {
|
||||||
for (auto it = m_ETriggerTouchVector.begin(); it != m_ETriggerTouchVector.end(); ++it) {
|
auto it = m_ETriggerTouchVector.begin();
|
||||||
auto& healthPickupPosition = *it;
|
while (it != m_ETriggerTouchVector.end()) {
|
||||||
//set the double timer value (value 3)
|
auto& somePickup = *it;
|
||||||
healthPickupPosition.DecreaseThisRespawnTimer -= dt;
|
somePickup.DecreaseThisRespawnTimer -= dt;
|
||||||
if (healthPickupPosition.DecreaseThisRespawnTimer < 0) {
|
if (somePickup.DecreaseThisRespawnTimer < 0.0) {
|
||||||
//spawn and delete the vector item
|
//spawn the new healthPickup
|
||||||
auto entityFile = ResourceManager::Load<EntityFile>("Schema/Entities/HealthPickup.xml");
|
auto entityFile = ResourceManager::Load<EntityFile>("Schema/Entities/HealthPickup.xml");
|
||||||
EntityFileParser parser(entityFile);
|
EntityFileParser parser(entityFile);
|
||||||
EntityID healthPickupID = parser.MergeEntities(m_World);
|
EntityID healthPickupID = parser.MergeEntities(m_World);
|
||||||
@@ -26,45 +27,76 @@ void PickupSpawnSystem::Update(double dt)
|
|||||||
ePickupSpawned.Pickup = EntityWrapper(m_World, healthPickupID);
|
ePickupSpawned.Pickup = EntityWrapper(m_World, healthPickupID);
|
||||||
m_EventBroker->Publish(ePickupSpawned);
|
m_EventBroker->Publish(ePickupSpawned);
|
||||||
|
|
||||||
//set values from the old entity to the new entity
|
//copy values from the old entity to the new entity
|
||||||
auto& newHealthPickupEntity = EntityWrapper(m_World, healthPickupID);
|
auto& newHealthPickupEntity = EntityWrapper(m_World, healthPickupID);
|
||||||
newHealthPickupEntity["Transform"]["Position"] = healthPickupPosition.Pos;
|
newHealthPickupEntity["Transform"]["Position"] = somePickup.Pos;
|
||||||
newHealthPickupEntity["HealthPickup"]["HealthGain"] = healthPickupPosition.HealthGain;
|
newHealthPickupEntity["HealthPickup"]["HealthGain"] = somePickup.HealthGain;
|
||||||
newHealthPickupEntity["HealthPickup"]["RespawnTimer"] = healthPickupPosition.RespawnTimer;
|
newHealthPickupEntity["HealthPickup"]["RespawnTimer"] = somePickup.RespawnTimer;
|
||||||
m_World->SetParent(newHealthPickupEntity.ID, healthPickupPosition.parentID);
|
m_World->SetParent(newHealthPickupEntity.ID, somePickup.parentID);
|
||||||
|
|
||||||
//erase the current element (healthPickupPosition)
|
//erase the current element (somePickup)
|
||||||
m_ETriggerTouchVector.erase(it);
|
it = m_ETriggerTouchVector.erase(it);
|
||||||
|
} else {
|
||||||
|
it++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//still touching PickupAtMaximum?
|
||||||
|
for (auto& it = m_PickupAtMaximum.begin(); it != m_PickupAtMaximum.end(); ++it) {
|
||||||
|
if (!it->player.Valid()) {
|
||||||
|
m_PickupAtMaximum.erase(it);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ((double)it->player["Health"]["Health"] < (double)it->player["Health"]["MaxHealth"]) {
|
||||||
|
DoPickup(it->player, it->trigger);
|
||||||
|
m_PickupAtMaximum.erase(it);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool PickupSpawnSystem::OnTriggerTouch(Events::TriggerTouch& e)
|
bool PickupSpawnSystem::OnTriggerTouch(Events::TriggerTouch& e)
|
||||||
{
|
{
|
||||||
if (!e.Trigger.HasComponent("HealthPickup")) {
|
if (!e.Trigger.HasComponent("HealthPickup")) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
double healthGiven = 0.01*(double)e.Trigger["HealthPickup"]["HealthGain"] * (double)e.Entity["Health"]["MaxHealth"];
|
//if at maxhealth, save the trigger-touch to a vector since standing inside it will not re-trigger the trigger
|
||||||
//cant pick up healthpacks if you are already at MaxHealth
|
|
||||||
if ((double)e.Entity["Health"]["Health"] >= (double)e.Entity["Health"]["MaxHealth"]) {
|
if ((double)e.Entity["Health"]["Health"] >= (double)e.Entity["Health"]["MaxHealth"]) {
|
||||||
|
m_PickupAtMaximum.push_back({ e.Entity, e.Trigger });
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//personEntered = e.Entity, thingEntered = e.Trigger
|
DoPickup(e.Entity, e.Trigger);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
bool PickupSpawnSystem::OnTriggerLeave(Events::TriggerLeave& e)
|
||||||
|
{
|
||||||
|
if (!e.Trigger.HasComponent("HealthPickup")) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
//triggerleave erases possible m_PickupAtMaximum
|
||||||
|
for (auto& it = m_PickupAtMaximum.begin(); it != m_PickupAtMaximum.end(); ++it) {
|
||||||
|
if (it->trigger.ID == e.Trigger.ID && it->player.ID == e.Entity.ID) {
|
||||||
|
m_PickupAtMaximum.erase(it);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
void PickupSpawnSystem::DoPickup(EntityWrapper &player, EntityWrapper &trigger)
|
||||||
|
{
|
||||||
|
double healthGiven = 0.01*(double)trigger["HealthPickup"]["HealthGain"] * (double)player["Health"]["MaxHealth"];
|
||||||
|
|
||||||
|
//only the server will increase the players hp and set it in the next delta
|
||||||
Events::PlayerHealthPickup ePlayerHealthPickup;
|
Events::PlayerHealthPickup ePlayerHealthPickup;
|
||||||
ePlayerHealthPickup.HealthAmount = healthGiven;
|
ePlayerHealthPickup.HealthAmount = healthGiven;
|
||||||
ePlayerHealthPickup.Player = e.Entity;
|
ePlayerHealthPickup.Player = player;
|
||||||
m_EventBroker->Publish(ePlayerHealthPickup);
|
m_EventBroker->Publish(ePlayerHealthPickup);
|
||||||
|
|
||||||
//copy position, healthgain, respawntimer (twice since one of the values will be counted down to 0, the other will be set in the new object)
|
//copy position, healthgain, respawntimer (twice since one of the values will be counted down to 0, the other will be set in the new object)
|
||||||
//we need to copy all values since each value can be different for each healthPickup
|
//we need to copy all values since each value can be different for each healthPickup
|
||||||
m_ETriggerTouchVector.push_back({ (glm::vec3)e.Trigger["Transform"]["Position"], e.Trigger["HealthPickup"]["HealthGain"],
|
m_ETriggerTouchVector.push_back({ (glm::vec3)trigger["Transform"]["Position"], trigger["HealthPickup"]["HealthGain"],
|
||||||
e.Trigger["HealthPickup"]["RespawnTimer"], e.Trigger["HealthPickup"]["RespawnTimer"], m_World->GetParent(e.Trigger.ID) });
|
trigger["HealthPickup"]["RespawnTimer"], trigger["HealthPickup"]["RespawnTimer"], m_World->GetParent(trigger.ID) });
|
||||||
|
|
||||||
//delete the healthpickup
|
//delete the healthpickup
|
||||||
m_World->DeleteEntity(e.Trigger.ID);
|
m_World->DeleteEntity(trigger.ID);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user