Compare commits
65 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 01e0e41122 | |||
| 18ea938b56 | |||
| 6c14b2a97e | |||
| 54eb3727b0 | |||
| 39e5f7b2dc | |||
| cce43ebc1a | |||
| 2a1f6cd9cf | |||
| 39da2bff27 | |||
| 28de3c716c | |||
| 003f5b14a5 | |||
| a3f215831d | |||
| 16ef09b20b | |||
| fe87aa8e90 | |||
| b9b5f4bff7 | |||
| 5db1bddd08 | |||
| b366a8c149 | |||
| 483091a1de | |||
| 0e9be1d650 | |||
| 5679a88ddb | |||
| 289bde0395 | |||
| a3fef7bcd1 | |||
| 04fbd0d517 | |||
| 9308e60932 | |||
| fc97c4e8ea | |||
| e3767996a1 | |||
| 809d164eba | |||
| 5879cb0de4 | |||
| 832a901bf6 | |||
| 8449818cb7 | |||
| 659dfed088 | |||
| 8151e9a9a4 | |||
| 8cef422ea7 | |||
| 54a03ddc0f | |||
| a65d8c86d1 | |||
| c1395355c6 | |||
| 0764c9bab2 | |||
| 1b1963e6d2 | |||
| 3994c0f7ad | |||
| 1345889e62 | |||
| 424dffd1e0 | |||
| d1c11f20f2 | |||
| 1bba40449f | |||
| f5343251c5 | |||
| 5207248a49 | |||
| 1bf65d896a | |||
| 7855cf03d2 | |||
| 4adf7dc507 | |||
| 73bcc6e382 | |||
| f393a22011 | |||
| 03dab9ca9a | |||
| 1a120ef345 | |||
| 0d823421d8 | |||
| d6f0528a87 | |||
| 0382708b85 | |||
| d8f9f15d34 | |||
| ffa9d7e607 | |||
| edf481b4d7 | |||
| 63e8fb4bc8 | |||
| 842f26d8fc | |||
| 1b2055e11a | |||
| 37996b4e18 | |||
| 37918a9c4a | |||
| 335fda47d6 | |||
| 764a3f454e | |||
| fc2d588bf9 |
+1
-1
Submodule assets updated: 9e9d799f11...902cbf2ba6
@@ -213,7 +213,6 @@ bool FirstPersonInputController<EventContext>::OnCommand(const Events::InputComm
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
EntityWrapper firstPersonModel = m_PlayerEntity.FirstChildByName("Hands");
|
||||
if (firstPersonModel.Valid()) {
|
||||
if (val > 0) { // Walk/Run
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "Network/ESearchForServers.h"
|
||||
#include "Network/EInterpolate.h"
|
||||
#include "Network/SnapshotFilter.h"
|
||||
#include "Core/EWin.h"
|
||||
|
||||
class Client : public Network
|
||||
{
|
||||
@@ -107,6 +108,7 @@ private:
|
||||
void parseAmmoPickup(Packet& packet);
|
||||
void parseRemoveWorld(Packet& packet);
|
||||
void parseKDEvent(Packet& packet);
|
||||
void parseWin(Packet& packet);
|
||||
void InterpolateFields(Packet& packet, const ComponentInfo & componentInfo, const EntityID & entityID, const std::string & componentType);
|
||||
void parseSnapshot(Packet& packet);
|
||||
void identifyPacketLoss();
|
||||
|
||||
@@ -25,6 +25,7 @@ enum class MessageType
|
||||
AmmoPickup,
|
||||
RemoveWorld,
|
||||
KD,
|
||||
Win,
|
||||
Invalid
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
#ifndef DDS_h__
|
||||
#define DDS_h__
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
#include "../Common.h"
|
||||
#include "../Core/ResourceManager.h"
|
||||
#include "Image.h"
|
||||
|
||||
// DXT5
|
||||
class DDS : public Image, public Resource
|
||||
{
|
||||
public:
|
||||
DDS(std::string path);
|
||||
~DDS();
|
||||
|
||||
void FlipY(unsigned char* data, std::size_t rowBytes, std::size_t totalSize, std::size_t numBlocksWide);
|
||||
|
||||
private:
|
||||
static const uint32_t MagicNumber = 0x20534444; // "DDS "
|
||||
|
||||
struct Header_t
|
||||
{
|
||||
uint32_t Size;
|
||||
uint32_t Flags;
|
||||
uint32_t Height;
|
||||
uint32_t Width;
|
||||
uint32_t PitchOrLinearSize;
|
||||
uint32_t Depth;
|
||||
uint32_t MipMapCount;
|
||||
uint32_t RESERVED1[11];
|
||||
struct PixelFormat_t
|
||||
{
|
||||
uint32_t Size;
|
||||
uint32_t Flags;
|
||||
uint32_t FourCC;
|
||||
uint32_t RGBBitCount;
|
||||
uint32_t RBitMask;
|
||||
uint32_t GBitMask;
|
||||
uint32_t BBitMask;
|
||||
uint32_t ABitMask;
|
||||
} PixelFormat;
|
||||
uint32_t Caps;
|
||||
uint32_t Caps2;
|
||||
uint32_t Caps3;
|
||||
uint32_t Caps4;
|
||||
uint32_t RESERVED2;
|
||||
} m_Header;
|
||||
|
||||
struct Block_t
|
||||
{
|
||||
struct Alpha_t
|
||||
{
|
||||
uint8_t Colors[2];
|
||||
uint8_t Data[6];
|
||||
} Alpha;
|
||||
struct Data_t
|
||||
{
|
||||
uint16_t Colors[2];
|
||||
uint8_t Data[4];
|
||||
} Data;
|
||||
};
|
||||
|
||||
std::size_t m_NumBlocksWide;
|
||||
std::size_t m_NumBlocksHigh;
|
||||
std::size_t m_RowBytes;
|
||||
|
||||
void flipBlock(Block_t* block);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -15,7 +15,10 @@ struct Image
|
||||
unsigned int Width = 0;
|
||||
unsigned int Height = 0;
|
||||
ImageFormat Format = ImageFormat::Unknown;
|
||||
unsigned int MipMapLevels = 0;
|
||||
bool Compressed = false;
|
||||
unsigned char* Data = nullptr;
|
||||
std::size_t ByteSize = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
#ifndef Texture_h__
|
||||
#define Texture_h__
|
||||
|
||||
#include <boost/filesystem.hpp>
|
||||
#include "../OpenGL.h"
|
||||
#include "BaseTexture.h"
|
||||
#include "PNG.h"
|
||||
#include "DDS.h"
|
||||
|
||||
class Texture : public BaseTexture
|
||||
{
|
||||
@@ -18,8 +20,9 @@ public:
|
||||
void Bind(GLenum textureUnit = GL_TEXTURE0);
|
||||
|
||||
GLuint m_Texture = 0;
|
||||
unsigned char* Data = nullptr;
|
||||
|
||||
|
||||
enum TextureType : GLint { cInvalid = 0, cDDS = 1, cPNG = 2};
|
||||
TextureType m_Type;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -14,11 +14,6 @@ protected:
|
||||
TextureSprite(std::string path);
|
||||
|
||||
public:
|
||||
void Bind(GLenum textureUnit = GL_TEXTURE0);
|
||||
|
||||
GLuint m_Texture = 0;
|
||||
unsigned char* Data = nullptr;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -81,6 +81,7 @@ private:
|
||||
void setSoundProperties(Source* source, ComponentWrapper* soundComponent);
|
||||
float getDurationSeconds(Source* source);
|
||||
float getTimeOffsetSeconds(Source* source);
|
||||
void setTimeOffsetSeconds(Source* source, float timeOffset);
|
||||
|
||||
// Specific logic
|
||||
void playSound(Source* source);
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
#ifndef HealthPickupSystem_h__
|
||||
#define HealthPickupSystem_h__
|
||||
|
||||
#include "Core/System.h"
|
||||
#include "Core/Transform.h"
|
||||
#include "Core/ResourceManager.h"
|
||||
#include "Core/EntityFileParser.h"
|
||||
#include "Core/EPickupSpawned.h"
|
||||
#include "Core/EPlayerHealthPickup.h"
|
||||
#include "Engine/Collision/ETrigger.h"
|
||||
#include "Common.h"
|
||||
#include <tuple>
|
||||
#include "Core/ConfigFile.h"
|
||||
|
||||
class HealthPickupSystem : public ImpureSystem
|
||||
{
|
||||
public:
|
||||
HealthPickupSystem(SystemParams params);
|
||||
|
||||
virtual void Update(double dt) override;
|
||||
|
||||
private:
|
||||
EventRelay<HealthPickupSystem, Events::TriggerTouch> m_ETriggerTouch;
|
||||
bool OnTriggerTouch(Events::TriggerTouch& e);
|
||||
EventRelay<HealthPickupSystem, Events::TriggerLeave> m_ETriggerLeave;
|
||||
bool OnTriggerLeave(Events::TriggerLeave& e);
|
||||
|
||||
struct NewHealthPickup {
|
||||
glm::vec3 Pos;
|
||||
double HealthGain;
|
||||
double RespawnTimer;
|
||||
double DecreaseThisRespawnTimer;
|
||||
EntityID parentID;
|
||||
};
|
||||
std::vector<NewHealthPickup> m_ETriggerTouchVector;
|
||||
struct EntityAtMaxValuePickupStruct {
|
||||
EntityWrapper player;
|
||||
NewHealthPickup pickup;
|
||||
EntityWrapper trigger;
|
||||
};
|
||||
std::vector<EntityAtMaxValuePickupStruct> m_PickupAtMaximum;
|
||||
void DoPickup(EntityWrapper &player, EntityWrapper &trigger);
|
||||
void DoPickup(EntityWrapper &player, NewHealthPickup &triggerCopy, EntityWrapper &trigger);
|
||||
};
|
||||
#endif
|
||||
@@ -13,6 +13,7 @@
|
||||
#include "Input/EInputCommand.h"
|
||||
#include "Network/ESearchForServers.h"
|
||||
#include "Network/EConnectRequest.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
class MainMenuSystem : public ImpureSystem
|
||||
|
||||
@@ -3,11 +3,11 @@ AutoReload=true
|
||||
|
||||
[Debug]
|
||||
LogLevel=1
|
||||
LoadMap=
|
||||
LoadMap=Schema/Entities/StartMenu.xml
|
||||
; if true -> Pool allocation is not used when calling Allocate/Free, just use regular dynamic allocation.
|
||||
; if false -> Use pool allocation.
|
||||
DisableMemoryPool=false
|
||||
RespawnTime = -1.0
|
||||
RespawnTime=-1.0
|
||||
EditorEnabled=false
|
||||
OutOfBodyExperience=false
|
||||
|
||||
@@ -22,7 +22,7 @@ Height=720
|
||||
FOV=45
|
||||
|
||||
[Networking]
|
||||
StartNetwork=false
|
||||
StartNetwork=true
|
||||
IsServer=false
|
||||
Name=Bob
|
||||
Address=127.0.0.1
|
||||
@@ -30,7 +30,7 @@ Port=27666
|
||||
MaxConnections=8
|
||||
SnapshotInterval=0.05
|
||||
SendInputIntervalMs=33
|
||||
PingIntervalMs= 1000
|
||||
PingIntervalMs=1000
|
||||
TimeoutMs=15000
|
||||
|
||||
[Multithreading]
|
||||
@@ -43,7 +43,7 @@ AnnouncerVolume=1.0
|
||||
Announcer=female
|
||||
|
||||
[SSAO]
|
||||
Quality=0
|
||||
Quality=1
|
||||
|
||||
[SSAO1]
|
||||
Radius=1.0
|
||||
@@ -88,4 +88,4 @@ NumIterations=4
|
||||
NumIterations=6
|
||||
|
||||
[MSAA]
|
||||
Level = 0;
|
||||
Level=2
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[Mouse]
|
||||
Sensitivity=0.5
|
||||
Sensitivity=0.05
|
||||
InvertPitch=false
|
||||
|
||||
[Keyboard]
|
||||
|
||||
Executable
+17
@@ -0,0 +1,17 @@
|
||||
To start a server
|
||||
|
||||
1. Run "Axyz Server" from the start menu or "Server.bat" in the installation directory (C:\Program Files\Axyz)
|
||||
2. Press F1 to open the editor mode
|
||||
3. Expand the Entities window if it is minimized, by double-clicking it
|
||||
4. Mark StartMenu_Origin and hit Delete twice
|
||||
5. Hit Import and choose CP_Valhalla.xml
|
||||
6. Press F1 again to leave editor mode for an acceptable framerate
|
||||
|
||||
To join a game
|
||||
|
||||
1. Run "Axyz" from the start menu or "Axyz.exe" in the installation directory (C:\Program Files\Axyz)
|
||||
2. Press Play
|
||||
3. Hit the refresh icon if no server is visible
|
||||
4. Click the server you want to join
|
||||
5. Follow on-screen directions
|
||||
6. Enjoy the game :)
|
||||
Regular → Executable
+10233
-10227
File diff suppressed because it is too large
Load Diff
Regular → Executable
+9003
-9411
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Entity xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:SceneLight>
|
||||
<AmbientColor A="1" B="1" G="1" R="1"/>
|
||||
</c:SceneLight>
|
||||
<c:Sprite>
|
||||
<DiffuseTexture>Textures/Core/UnitRaptor.png</DiffuseTexture>
|
||||
<GlowMap></GlowMap>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-1.60000002"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
|
||||
<Children/>
|
||||
|
||||
</Entity>
|
||||
@@ -0,0 +1,151 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Entity name="FriendlyBoostHUD" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:Lifetime>
|
||||
<Lifetime>0.5</Lifetime>
|
||||
</c:Lifetime>
|
||||
<c:Transform>
|
||||
<Scale X="1.20000005" Y="1.20000005" Z="1"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity name="BoostHUDBackground">
|
||||
<Components>
|
||||
<c:Sprite>
|
||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||
<GlowMap></GlowMap>
|
||||
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
||||
<Color A="0.588235319" B="0" G="0" R="0"/>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-0.00300000003"/>
|
||||
<Scale X="0.0599999987" Y="0.0599999987" Z="0.0599999987"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="BoostIcons">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="-1.47358617e-06" Y="-0.0191892758" Z="4.05375999e-07"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="AssaultBoost">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="0.0120000001" Y="0.00899999961" Z="-8.43336147e-06"/>
|
||||
<Scale X="0.0199999996" Y="0.0199999996" Z="0.0199999996"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Active">
|
||||
<Components>
|
||||
<c:Text>
|
||||
<Content>\1</Content>
|
||||
<Resource>Fonts/Hind-Edited.otf,64</Resource>
|
||||
<Color A="1" B="0.392156869" G="0.392156869" R="1.37254906"/>
|
||||
<Visible>false</Visible>
|
||||
</c:Text>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="0.0149999997"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Inactive">
|
||||
<Components>
|
||||
<c:Text>
|
||||
<Content>\1</Content>
|
||||
<Resource>Fonts/Hind-Edited.otf,64</Resource>
|
||||
<Color A="1" B="0.784313738" G="0.784313738" R="0.784313738"/>
|
||||
</c:Text>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-8.43336147e-06"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="DefenderBoost">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="-0.0120000001" Y="0.00900000054" Z="-8.43336147e-06"/>
|
||||
<Scale X="0.0199999996" Y="0.0199999996" Z="0.0199999996"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Active">
|
||||
<Components>
|
||||
<c:Text>
|
||||
<Content>\2</Content>
|
||||
<Resource>Fonts/Hind-Edited.otf,64</Resource>
|
||||
<Color A="1" B="0.392156869" G="0.392156869" R="1.17647064"/>
|
||||
<Visible>false</Visible>
|
||||
</c:Text>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="0.00999999978"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Inactive">
|
||||
<Components>
|
||||
<c:Text>
|
||||
<Content>\2</Content>
|
||||
<Resource>Fonts/Hind-Edited.otf,64</Resource>
|
||||
<Color A="1" B="0.784313738" G="0.784313738" R="0.784313738"/>
|
||||
</c:Text>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-8.43336147e-06"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="SniperBoost">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0.0310000014" Z="-1.21438188e-05"/>
|
||||
<Scale X="0.0199999996" Y="0.0199999996" Z="0.0199999996"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Active">
|
||||
<Components>
|
||||
<c:Text>
|
||||
<Content>\3</Content>
|
||||
<Resource>Fonts/Hind-Edited.otf,64</Resource>
|
||||
<Color A="1" B="0.392156869" G="0.392156869" R="1.17647064"/>
|
||||
<Visible>false</Visible>
|
||||
</c:Text>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="0.00999999978"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Inactive">
|
||||
<Components>
|
||||
<c:Text>
|
||||
<Content>\3</Content>
|
||||
<Resource>Fonts/Hind-Edited.otf,64</Resource>
|
||||
<Color A="1" B="0.784313738" G="0.784313738" R="0.784313738"/>
|
||||
</c:Text>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-8.43336147e-06"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
@@ -20,8 +20,8 @@
|
||||
</Team>
|
||||
</c:Team>
|
||||
<c:PlayerSpawn>
|
||||
<AssaultFile>Schema/Entities/PlayerAssaultBlue.xml</AssaultFile>
|
||||
<DefenderFile>Schema/Entities/PlayerDefenderBlue.xml</DefenderFile>
|
||||
<AssaultFile>Schema/Entities/PlayerAssaultRed.xml</AssaultFile>
|
||||
<DefenderFile>Schema/Entities/PlayerDefenderRed.xml</DefenderFile>
|
||||
<SniperFile></SniperFile>
|
||||
</c:PlayerSpawn>
|
||||
<c:Spawner>
|
||||
@@ -115,7 +115,7 @@
|
||||
<Color A="1" B="1" G="0.254901975" R="0"/>
|
||||
</c:Model>
|
||||
<c:Transform>
|
||||
<Position X="-0.600000024" Y="0" Z="0.549540162"/>
|
||||
<Position X="0.800000012" Y="0" Z="0"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
@@ -128,7 +128,7 @@
|
||||
<Color A="1" B="1" G="0.254901975" R="0"/>
|
||||
</c:Model>
|
||||
<c:Transform>
|
||||
<Position X="0.800000012" Y="0" Z="0"/>
|
||||
<Position X="-0.600000024" Y="0" Z="0.549540162"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
|
||||
@@ -130,6 +130,66 @@
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="Lights">
|
||||
<Components>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Light_front">
|
||||
<Components>
|
||||
<c:Model>
|
||||
<Resource>Models/Core/UnitSphere.mesh</Resource>
|
||||
<Visible>false</Visible>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:PointLight>
|
||||
<Color A="1" B="0.588235319" G="0.588235319" R="1"/>
|
||||
</c:PointLight>
|
||||
<c:Transform>
|
||||
<Position X="-0.000288648967" Y="0.000489665952" Z="0.0824639797"/>
|
||||
<Scale X="0.0299999993" Y="0.0299999993" Z="0.0299999993"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Light_Side">
|
||||
<Components>
|
||||
<c:Model>
|
||||
<Resource>Models/Core/UnitSphere.mesh</Resource>
|
||||
<Color A="1" B="1" G="1" R="0"/>
|
||||
<Visible>false</Visible>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:PointLight>
|
||||
<Color A="1" B="0.588235319" G="0.588235319" R="1"/>
|
||||
<Radius>0.40000000596046448</Radius>
|
||||
</c:PointLight>
|
||||
<c:Transform>
|
||||
<Position X="-0.0870000049" Y="0.0210000016" Z="0.186000004"/>
|
||||
<Scale X="0.0299999993" Y="0.0299999993" Z="0.0299999993"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Light_front2">
|
||||
<Components>
|
||||
<c:Model>
|
||||
<Resource>Models/Core/UnitSphere.mesh</Resource>
|
||||
<Visible>false</Visible>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:PointLight>
|
||||
<Color A="1" B="0.588235319" G="0.588235319" R="1"/>
|
||||
</c:PointLight>
|
||||
<c:Transform>
|
||||
<Position X="0.000448234321" Y="-0.000760387513" Z="-0.323961914"/>
|
||||
<Scale X="0.0299999993" Y="0.0299999993" Z="0.0299999993"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
|
||||
@@ -0,0 +1,219 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Entity name="MuzzleFlashBlueSidearm" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:Lifetime>
|
||||
<Lifetime>0.080000000000000002</Lifetime>
|
||||
</c:Lifetime>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity name="Level1">
|
||||
<Components>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Cone1Outside">
|
||||
<Components>
|
||||
<c:Fade>
|
||||
<FadeTime>0.080000000000000002</FadeTime>
|
||||
</c:Fade>
|
||||
<c:Model>
|
||||
<GlowIntensity>2</GlowIntensity>
|
||||
<Resource>Models/Effects/MuzzleFlash/Red/Cone1Outside.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
<Transparent>true</Transparent>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Cone1Inside">
|
||||
<Components>
|
||||
<c:Fade>
|
||||
<FadeTime>0.080000000000000002</FadeTime>
|
||||
</c:Fade>
|
||||
<c:Model>
|
||||
<GlowIntensity>2</GlowIntensity>
|
||||
<Resource>Models/Effects/MuzzleFlash/Red/Cone1Inside.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
<Transparent>true</Transparent>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="Level2">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="0.000134464673" Y="8.11116188e-05" Z="-0.0197895896"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Cone2Inside">
|
||||
<Components>
|
||||
<c:Fade>
|
||||
<FadeTime>0.080000000000000002</FadeTime>
|
||||
</c:Fade>
|
||||
<c:Model>
|
||||
<GlowIntensity>2</GlowIntensity>
|
||||
<Resource>Models/Effects/MuzzleFlash/Red/Cone2Inside.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
<Transparent>true</Transparent>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Cone2Outside">
|
||||
<Components>
|
||||
<c:Fade>
|
||||
<FadeTime>0.080000000000000002</FadeTime>
|
||||
</c:Fade>
|
||||
<c:Model>
|
||||
<GlowIntensity>2</GlowIntensity>
|
||||
<Resource>Models/Effects/MuzzleFlash/Red/Cone2Outside.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
<Transparent>true</Transparent>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="Level3">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="0.000216802931" Y="0.000130779619" Z="-0.0319075659"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="PlaneLeft">
|
||||
<Components>
|
||||
<c:Fade>
|
||||
<FadeTime>0.080000000000000002</FadeTime>
|
||||
</c:Fade>
|
||||
<c:Model>
|
||||
<GlowIntensity>2</GlowIntensity>
|
||||
<Resource>Models/Effects/MuzzleFlash/Red/PlaneLeft.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
<Transparent>true</Transparent>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="PlaneRight">
|
||||
<Components>
|
||||
<c:Fade>
|
||||
<FadeTime>0.080000000000000002</FadeTime>
|
||||
</c:Fade>
|
||||
<c:Model>
|
||||
<GlowIntensity>2</GlowIntensity>
|
||||
<Resource>Models/Effects/MuzzleFlash/Red/PlaneRight.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
<Transparent>true</Transparent>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="PlaneUp">
|
||||
<Components>
|
||||
<c:Fade>
|
||||
<FadeTime>0.080000000000000002</FadeTime>
|
||||
</c:Fade>
|
||||
<c:Model>
|
||||
<GlowIntensity>2</GlowIntensity>
|
||||
<Resource>Models/Effects/MuzzleFlash/Red/PlaneUp.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
<Transparent>true</Transparent>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="PlaneDown">
|
||||
<Components>
|
||||
<c:Fade>
|
||||
<FadeTime>0.080000000000000002</FadeTime>
|
||||
</c:Fade>
|
||||
<c:Model>
|
||||
<GlowIntensity>2</GlowIntensity>
|
||||
<Resource>Models/Effects/MuzzleFlash/Red/PlaneDown.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
<Transparent>true</Transparent>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="Lights">
|
||||
<Components>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Light_front">
|
||||
<Components>
|
||||
<c:Model>
|
||||
<Resource>Models/Core/UnitSphere.mesh</Resource>
|
||||
<Visible>false</Visible>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:PointLight>
|
||||
<Color A="1" B="0.588235319" G="0.588235319" R="1"/>
|
||||
</c:PointLight>
|
||||
<c:Transform>
|
||||
<Position X="-0.000288648967" Y="0.000489665952" Z="0.0824639797"/>
|
||||
<Scale X="0.0299999993" Y="0.0299999993" Z="0.0299999993"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Light_Side">
|
||||
<Components>
|
||||
<c:Model>
|
||||
<Resource>Models/Core/UnitSphere.mesh</Resource>
|
||||
<Color A="1" B="1" G="1" R="0"/>
|
||||
<Visible>false</Visible>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:PointLight>
|
||||
<Color A="1" B="0.588235319" G="0.588235319" R="1"/>
|
||||
<Radius>0.40000000596046448</Radius>
|
||||
</c:PointLight>
|
||||
<c:Transform>
|
||||
<Position X="-0.0870000049" Y="0.0210000016" Z="0.186000004"/>
|
||||
<Scale X="0.0299999993" Y="0.0299999993" Z="0.0299999993"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Light_front2">
|
||||
<Components>
|
||||
<c:Model>
|
||||
<Resource>Models/Core/UnitSphere.mesh</Resource>
|
||||
<Visible>false</Visible>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:PointLight>
|
||||
<Color A="1" B="0.588235319" G="0.588235319" R="1"/>
|
||||
</c:PointLight>
|
||||
<c:Transform>
|
||||
<Position X="0.000448234321" Y="-0.000760387513" Z="-0.323961914"/>
|
||||
<Scale X="0.0299999993" Y="0.0299999993" Z="0.0299999993"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -5,6 +5,7 @@
|
||||
<c:Lifetime>
|
||||
<Lifetime>0.079999998211860657</Lifetime>
|
||||
</c:Lifetime>
|
||||
<c:NetworkComponent/>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
@@ -17,10 +18,8 @@
|
||||
<DiffuseTexture>Textures/Effects/NewRay5.png</DiffuseTexture>
|
||||
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
||||
<KeepRatio>true</KeepRatio>
|
||||
<Linear>true</Linear>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-0.5"/>
|
||||
<Orientation X="0" Y="-1.57099998" Z="0"/>
|
||||
<Scale X="1" Y="0.0700000003" Z="0"/>
|
||||
</c:Transform>
|
||||
@@ -35,10 +34,8 @@
|
||||
<DiffuseTexture>Textures/Effects/NewRay5.png</DiffuseTexture>
|
||||
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
||||
<KeepRatio>true</KeepRatio>
|
||||
<Linear>true</Linear>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-0.5"/>
|
||||
<Orientation X="0" Y="4.71218538" Z="3.14199996"/>
|
||||
<Scale X="1" Y="0.0700000003" Z="0"/>
|
||||
</c:Transform>
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Entity name="RayBlue" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:Lifetime>
|
||||
<Lifetime>0.079999998211860657</Lifetime>
|
||||
</c:Lifetime>
|
||||
<c:NetworkComponent/>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity>
|
||||
<Components>
|
||||
<c:Sprite>
|
||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||
<GlowMap></GlowMap>
|
||||
<DiffuseTexture>Textures/Effects/NewRay5.png</DiffuseTexture>
|
||||
<Color A="1" B="0.588235319" G="0.588235319" R="2.35294127"/>
|
||||
<KeepRatio>true</KeepRatio>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Orientation X="0" Y="-1.57099998" Z="0"/>
|
||||
<Scale X="1" Y="0.0700000003" Z="0"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity>
|
||||
<Components>
|
||||
<c:Sprite>
|
||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||
<GlowMap></GlowMap>
|
||||
<DiffuseTexture>Textures/Effects/NewRay5.png</DiffuseTexture>
|
||||
<Color A="1" B="0.588235319" G="0.588235319" R="2.35294127"/>
|
||||
<KeepRatio>true</KeepRatio>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Orientation X="0" Y="4.71218538" Z="3.14199996"/>
|
||||
<Scale X="1" Y="0.0700000003" Z="0"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
@@ -5,6 +5,7 @@
|
||||
<c:Lifetime>
|
||||
<Lifetime>0.079999998211860657</Lifetime>
|
||||
</c:Lifetime>
|
||||
<c:NetworkComponent/>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
@@ -17,12 +18,10 @@
|
||||
<DiffuseTexture>Textures/Effects/NewRay7.png</DiffuseTexture>
|
||||
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
||||
<KeepRatio>true</KeepRatio>
|
||||
<Linear>true</Linear>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-0.5"/>
|
||||
<Orientation X="0" Y="-1.57099998" Z="0"/>
|
||||
<Scale X="1" Y="0.0700000003" Z="0"/>
|
||||
<Scale X="1" Y="0.0700000003" Z="1"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
@@ -35,12 +34,10 @@
|
||||
<DiffuseTexture>Textures/Effects/NewRay7.png</DiffuseTexture>
|
||||
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
||||
<KeepRatio>true</KeepRatio>
|
||||
<Linear>true</Linear>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-0.5"/>
|
||||
<Orientation X="0" Y="4.71218538" Z="3.14199996"/>
|
||||
<Scale X="1" Y="0.0700000003" Z="0"/>
|
||||
<Scale X="1" Y="0.0700000003" Z="1"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Entity name="RayBlue" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:Lifetime>
|
||||
<Lifetime>0.079999998211860657</Lifetime>
|
||||
</c:Lifetime>
|
||||
<c:NetworkComponent/>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity>
|
||||
<Components>
|
||||
<c:Sprite>
|
||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||
<GlowMap></GlowMap>
|
||||
<DiffuseTexture>Textures/Effects/NewRay7.png</DiffuseTexture>
|
||||
<Color A="1" B="0.588235319" G="0.588235319" R="2.35294127"/>
|
||||
<KeepRatio>true</KeepRatio>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Orientation X="0" Y="-1.57099998" Z="0"/>
|
||||
<Scale X="1" Y="0.0700000003" Z="1"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity>
|
||||
<Components>
|
||||
<c:Sprite>
|
||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||
<GlowMap></GlowMap>
|
||||
<DiffuseTexture>Textures/Effects/NewRay7.png</DiffuseTexture>
|
||||
<Color A="1" B="0.588235319" G="0.588235319" R="2.35294127"/>
|
||||
<KeepRatio>true</KeepRatio>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Orientation X="0" Y="4.71218538" Z="3.14199996"/>
|
||||
<Scale X="1" Y="0.0700000003" Z="1"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
@@ -3,11 +3,12 @@
|
||||
|
||||
<Components>
|
||||
<c:Lifetime>
|
||||
<Lifetime>0.08</Lifetime>
|
||||
<Lifetime>0.080000000000000002</Lifetime>
|
||||
</c:Lifetime>
|
||||
<c:Fade>
|
||||
<FadeTime>0.08</FadeTime>
|
||||
<FadeTime>0.080000000000000002</FadeTime>
|
||||
</c:Fade>
|
||||
<c:NetworkComponent/>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
@@ -20,10 +21,8 @@
|
||||
<DiffuseTexture>Textures/Effects/NewRay5.png</DiffuseTexture>
|
||||
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
||||
<KeepRatio>true</KeepRatio>
|
||||
<Linear>true</Linear>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-0.5"/>
|
||||
<Orientation X="0" Y="-1.57099998" Z="0"/>
|
||||
<Scale X="1" Y="0.0250000004" Z="0"/>
|
||||
</c:Transform>
|
||||
@@ -38,10 +37,8 @@
|
||||
<DiffuseTexture>Textures/Effects/NewRay5.png</DiffuseTexture>
|
||||
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
||||
<KeepRatio>true</KeepRatio>
|
||||
<Linear>true</Linear>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-0.5"/>
|
||||
<Orientation X="0" Y="4.71218538" Z="3.14199996"/>
|
||||
<Scale X="1" Y="0.0250000004" Z="0"/>
|
||||
</c:Transform>
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Entity name="RayBlue" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:Lifetime>
|
||||
<Lifetime>0.080000000000000002</Lifetime>
|
||||
</c:Lifetime>
|
||||
<c:Fade>
|
||||
<FadeTime>0.080000000000000002</FadeTime>
|
||||
</c:Fade>
|
||||
<c:NetworkComponent/>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity>
|
||||
<Components>
|
||||
<c:Sprite>
|
||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||
<GlowMap></GlowMap>
|
||||
<DiffuseTexture>Textures/Effects/NewRay5.png</DiffuseTexture>
|
||||
<Color A="1" B="0.588235319" G="0.588235319" R="2.35294127"/>
|
||||
<KeepRatio>true</KeepRatio>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Orientation X="0" Y="-1.57099998" Z="0"/>
|
||||
<Scale X="1" Y="0.0250000004" Z="0"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity>
|
||||
<Components>
|
||||
<c:Sprite>
|
||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||
<GlowMap></GlowMap>
|
||||
<DiffuseTexture>Textures/Effects/NewRay5.png</DiffuseTexture>
|
||||
<Color A="1" B="0.588235319" G="0.588235319" R="2.35294127"/>
|
||||
<KeepRatio>true</KeepRatio>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Orientation X="0" Y="4.71218538" Z="3.14199996"/>
|
||||
<Scale X="1" Y="0.0250000004" Z="0"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
@@ -1,20 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Entity name="WeaponModel" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
<Entity name="ReloadEffect" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:Lifetime>
|
||||
<Lifetime>2</Lifetime>
|
||||
<Lifetime>1</Lifetime>
|
||||
</c:Lifetime>
|
||||
<c:ExplosionEffect>
|
||||
<ColorByDistance>true</ColorByDistance>
|
||||
<Velocity X="3.33300018" Y="0.0320000015" Z="0"/>
|
||||
<ExplosionOrigin X="0" Y="0.0790000036" Z="-0.329000026"/>
|
||||
<ExponentialAccelaration>true</ExponentialAccelaration>
|
||||
<EndColor A="0" B="1" G="1" R="19.6078434"/>
|
||||
<Velocity X="0" Y="1" Z="0"/>
|
||||
<ExplosionOrigin X="-0.0450000018" Y="0.148000002" Z="-0.646000028"/>
|
||||
<ExplosionDuration>1</ExplosionDuration>
|
||||
<EndColor A="0" B="3.92156863" G="0.545098066" R="1"/>
|
||||
<Randomness>true</Randomness>
|
||||
</c:ExplosionEffect>
|
||||
<c:Model>
|
||||
<Resource>Models/Weapons/Red/AssaultWeaponRed.mesh</Resource>
|
||||
<Transparent>true</Transparent>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
@@ -6,12 +6,14 @@
|
||||
<Lifetime>2</Lifetime>
|
||||
</c:Lifetime>
|
||||
<c:ExplosionEffect>
|
||||
<ColorByDistance>true</ColorByDistance>
|
||||
<Velocity X="1.63300014" Y="0.0320000015" Z="0"/>
|
||||
<ExplosionOrigin X="0" Y="0.0790000036" Z="-0.329000026"/>
|
||||
<ExponentialAccelaration>true</ExponentialAccelaration>
|
||||
<EndColor A="0" B="19.6078434" G="19.6078434" R="0"/>
|
||||
<Velocity X="1.78000009" Y="0.0320000015" Z="0"/>
|
||||
<ExplosionOrigin X="0" Y="0.142000005" Z="-0.659000039"/>
|
||||
<EndColor A="0" B="19.6078434" G="0.00392156886" R="1.96078432"/>
|
||||
<RandomnessScalar>1.3399996757507324</RandomnessScalar>
|
||||
<Randomness>true</Randomness>
|
||||
<ColorByDistance>true</ColorByDistance>
|
||||
<ExponentialAccelaration>true</ExponentialAccelaration>
|
||||
<ColorDistanceScalar>5.0899982452392578</ColorDistanceScalar>
|
||||
</c:ExplosionEffect>
|
||||
<c:Model>
|
||||
<Resource>Models/Weapons/Blue/AssaultWeaponBlue.mesh</Resource>
|
||||
|
||||
@@ -6,12 +6,14 @@
|
||||
<Lifetime>2</Lifetime>
|
||||
</c:Lifetime>
|
||||
<c:ExplosionEffect>
|
||||
<ColorByDistance>true</ColorByDistance>
|
||||
<Velocity X="1.63300014" Y="0.0320000015" Z="0"/>
|
||||
<ExplosionOrigin X="0" Y="0.0790000036" Z="-0.329000026"/>
|
||||
<ExponentialAccelaration>true</ExponentialAccelaration>
|
||||
<EndColor A="0" B="1" G="1" R="19.6078434"/>
|
||||
<Velocity X="1.78000009" Y="0.0320000015" Z="0"/>
|
||||
<ExplosionOrigin X="0" Y="0.142000005" Z="-0.659000039"/>
|
||||
<EndColor A="0" B="19.6078434" G="0.00392156886" R="1.96078432"/>
|
||||
<RandomnessScalar>1.3399996757507324</RandomnessScalar>
|
||||
<Randomness>true</Randomness>
|
||||
<ColorByDistance>true</ColorByDistance>
|
||||
<ExponentialAccelaration>true</ExponentialAccelaration>
|
||||
<ColorDistanceScalar>5.0899982452392578</ColorDistanceScalar>
|
||||
</c:ExplosionEffect>
|
||||
<c:Model>
|
||||
<Resource>Models/Weapons/Red/AssaultWeaponRed.mesh</Resource>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<Entity name="SidearmWeapon" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:Shielded/>
|
||||
<c:Model>
|
||||
<Resource>Models/Weapons/Blue/SecondaryWeaponBlue.mesh</Resource>
|
||||
</c:Model>
|
||||
@@ -9,16 +10,37 @@
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity name="WeaponMuzzle">
|
||||
<Entity name="Muzzle">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/RayBlue.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0.0123999491" Y="0.102453232" Z="-0.273824364"/>
|
||||
<Position X="-0.0169804785" Y="-0.0188358482" Z="-0.222064406"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
<Children>
|
||||
<Entity name="WeaponMuzzleRay">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/RaySideArmBlue.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0.125075191" Z="-0.206788138"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="WeaponMuzzleFlash">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/MuzzleFlashSideArmBlue.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0.0240342002" Y="0.116005458" Z="-0.0419839472"/>
|
||||
<Scale X="0.5" Y="0.5" Z="0.5"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Entity name="SidearmWeapon" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:Shielded/>
|
||||
<c:Model>
|
||||
<Resource>Models/Weapons/Red/SecondaryWeaponRed.mesh</Resource>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity name="Muzzle">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="-0.0169804785" Y="-0.0188358482" Z="-0.222064406"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="WeaponMuzzleRay">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/RaySideArmRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0.125075191" Z="-0.206788138"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="WeaponMuzzleFlash">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/MuzzleFlashSideArmRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0.0240342002" Y="0.116005458" Z="-0.0419839472"/>
|
||||
<Scale X="0.5" Y="0.5" Z="0.5"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
@@ -11,17 +11,6 @@
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity name="WeaponMuzzle">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/Ray2Red.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0.105000004" Z="-0.256000012"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="AmmunitionHUD">
|
||||
<Components>
|
||||
<c:TextFieldReader>
|
||||
@@ -38,8 +27,9 @@
|
||||
<Entity name="AmmunitionHUDBackground">
|
||||
<Components>
|
||||
<c:Sprite>
|
||||
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||
<GlowMap></GlowMap>
|
||||
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
||||
<Color A="0.588235319" B="0" G="0" R="0"/>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
@@ -56,16 +46,16 @@
|
||||
<Children>
|
||||
<Entity name="MagazineAmmo">
|
||||
<Components>
|
||||
<c:TextFieldReader>
|
||||
<ParentEntityName>Player</ParentEntityName>
|
||||
<ComponentType>SidearmWeapon</ComponentType>
|
||||
<Field>MagazineAmmo</Field>
|
||||
</c:TextFieldReader>
|
||||
<c:Text>
|
||||
<Content>16</Content>
|
||||
<Resource>Fonts/DroidSans.ttf,64</Resource>
|
||||
<Color A="1" B="3.92156863" G="1.17647064" R="0"/>
|
||||
</c:Text>
|
||||
<c:TextFieldReader>
|
||||
<ParentEntityName>Player</ParentEntityName>
|
||||
<ComponentType>SidearmWeapon</ComponentType>
|
||||
<Field>MagazineAmmo</Field>
|
||||
</c:TextFieldReader>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="-0.00600000005" Z="0"/>
|
||||
<Scale X="0.0599999987" Y="0.0599999987" Z="0.0599999987"/>
|
||||
@@ -92,6 +82,37 @@
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="Muzzle">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="0.197295129" Y="-0.116625182" Z="-0.709192753"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="WeaponMuzzleRay">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/RaySideArmBlue.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-0.155046776"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="WeaponMuzzleFlash">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/MuzzleFlashSideArmBlue.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Scale X="0.5" Y="0.5" Z="0.5"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
|
||||
+14365
-5767
File diff suppressed because it is too large
Load Diff
@@ -8,6 +8,7 @@
|
||||
</c:BlendAdditive>
|
||||
<c:Model>
|
||||
<Resource>Models/Characters/Assault/FirstPersonAssaultBlue.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
@@ -90,9 +91,10 @@
|
||||
<c:Model>
|
||||
<GlowIntensity>1.5</GlowIntensity>
|
||||
<Resource>Models/Weapons/Blue/AssaultWeaponBlue.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:Transform>
|
||||
<Position X="0.120748267" Y="-0.22843127" Z="-0.181454584"/>
|
||||
<Position X="0.120748267" Y="-0.22843127" Z="-0.181454599"/>
|
||||
<Orientation X="0.0102799674" Y="-0.00312504289" Z="0.0428140014"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
@@ -131,7 +133,7 @@
|
||||
<EntityFile>Schema/Entities/RayAssaultBlue.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0.00123506912" Y="-0.00209517847" Z="-0.681198895"/>
|
||||
<Position X="0.00179657922" Y="-0.00304772682" Z="-0.334699303"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<Entity name="AssaultWeapon" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:Shielded/>
|
||||
<c:Model>
|
||||
<Resource>Models/Weapons/Blue/AssaultWeaponBlue.mesh</Resource>
|
||||
</c:Model>
|
||||
@@ -9,17 +10,6 @@
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity name="WeaponMuzzle">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/RayBlue.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0.00644115033" Y="0.096679531" Z="-0.436609417"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="ReloadSpawner">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
@@ -29,6 +19,38 @@
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Muzzle">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="0.00728808995" Y="0.0896582007" Z="-0.643795013"/>
|
||||
<Orientation X="6.27600002" Y="0.00499999989" Z="0.00600000005"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="WeaponMuzzleFlash">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/MuzzleFlashBlue.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="-8.41593719e-05" Y="-0.000816107844" Z="0.0612007342"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="WeaponMuzzleRay">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/RayAssaultBlue.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0.00179657922" Y="-0.00304772682" Z="-0.334699303"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
|
||||
@@ -0,0 +1,233 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Entity name="Hands" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:BlendAdditive>
|
||||
<Adder>MovementBlend</Adder>
|
||||
<Receiver>ActionBlend</Receiver>
|
||||
</c:BlendAdditive>
|
||||
<c:Model>
|
||||
<Resource>Models/Characters/Assault/FirstPersonAssaultRed.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity name="ActionBlend">
|
||||
<Components>
|
||||
<c:Blend>
|
||||
<Pose1>Fire</Pose1>
|
||||
<Pose2>Reload</Pose2>
|
||||
<Weight>0</Weight>
|
||||
<SubTreeRoot>true</SubTreeRoot>
|
||||
</c:Blend>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Reload">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>ReloadSwitchF</AnimationName>
|
||||
<Speed>0.5</Speed>
|
||||
<Loop>false</Loop>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Fire">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>ShootRifleF</AnimationName>
|
||||
<Loop>false</Loop>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="MovementBlend">
|
||||
<Components>
|
||||
<c:Blend>
|
||||
<Pose1>Idle</Pose1>
|
||||
<Pose2>Run</Pose2>
|
||||
<Weight>0</Weight>
|
||||
<SubTreeRoot>true</SubTreeRoot>
|
||||
</c:Blend>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Run">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>RunF</AnimationName>
|
||||
<Play>true</Play>
|
||||
<Additive>true</Additive>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Idle">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>IdleF</AnimationName>
|
||||
<Play>true</Play>
|
||||
<Additive>true</Additive>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="ViewModel">
|
||||
<Components>
|
||||
<c:BoneAttachment>
|
||||
<BoneName>R_Arm_Weapon_Joint</BoneName>
|
||||
</c:BoneAttachment>
|
||||
<c:Model>
|
||||
<GlowIntensity>1.5</GlowIntensity>
|
||||
<Resource>Models/Weapons/Red/AssaultWeaponRed.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:Transform>
|
||||
<Position X="0.120748267" Y="-0.22843127" Z="-0.181454599"/>
|
||||
<Orientation X="0.0102799674" Y="-0.00312504289" Z="0.0428140014"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="ReloadSpawner">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/WeaponAssaultReloadEffectViewRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Muzzle">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="0.00728808995" Y="0.0896582007" Z="-0.643795013"/>
|
||||
<Orientation X="6.27600002" Y="0.00499999989" Z="0.00600000005"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="WeaponMuzzleFlash">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/MuzzleFlashRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0.000221854658" Y="-0.000376355601" Z="0"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="WeaponMuzzleRay">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/RayAssaultRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0.00179657922" Y="-0.00304772682" Z="-0.334699303"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="AmmoHUD">
|
||||
<Components>
|
||||
<c:BoneAttachment>
|
||||
<BoneName>R_Ammo_Joint</BoneName>
|
||||
<ScaleOffset X="0.5" Y="0.5" Z="1"/>
|
||||
<InheritScale>true</InheritScale>
|
||||
</c:BoneAttachment>
|
||||
<c:Transform>
|
||||
<Position X="0.0540265888" Y="-0.0954296291" Z="-0.255526036"/>
|
||||
<Orientation X="0.000777846028" Y="0.0774231106" Z="0.00124278688"/>
|
||||
<Scale X="0.25000006" Y="0.250000149" Z="0.500000238"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Background">
|
||||
<Components>
|
||||
<c:Sprite>
|
||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||
<GlowMap></GlowMap>
|
||||
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
||||
<Color A="0.588235319" B="0" G="0" R="0"/>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-0.00200000009"/>
|
||||
<Scale X="0.119999997" Y="0.119999997" Z="0.119999997"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Text">
|
||||
<Components>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="MagazineAmmo">
|
||||
<Components>
|
||||
<c:Text>
|
||||
<Content>32</Content>
|
||||
<Resource>Fonts/DroidSans.ttf,64</Resource>
|
||||
<Color A="1" B="3.92156863" G="1.17647064" R="0"/>
|
||||
</c:Text>
|
||||
<c:TextFieldReader>
|
||||
<ParentEntityName></ParentEntityName>
|
||||
<ComponentType>AssaultWeapon</ComponentType>
|
||||
<Field>MagazineAmmo</Field>
|
||||
</c:TextFieldReader>
|
||||
<c:Transform>
|
||||
<Scale X="0.0599999987" Y="0.0599999987" Z="0.0599999987"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Ammo">
|
||||
<Components>
|
||||
<c:Text>
|
||||
<Content>320</Content>
|
||||
<Resource>Fonts/DroidSans.ttf,64</Resource>
|
||||
<Color A="1" B="3.92156863" G="1.17647064" R="0"/>
|
||||
</c:Text>
|
||||
<c:TextFieldReader>
|
||||
<ParentEntityName></ParentEntityName>
|
||||
<ComponentType>AssaultWeapon</ComponentType>
|
||||
<Field>Ammo</Field>
|
||||
</c:TextFieldReader>
|
||||
<c:Transform>
|
||||
<Position X="5.2833886e-05" Y="-0.0407950208" Z="0"/>
|
||||
<Scale X="0.0399999991" Y="0.0399999991" Z="0.0399999991"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="FriendlyBoostAttachment">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/FriendlyBoostRedHUD.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="-0.000110394583" Y="-0.0891034827" Z="6.07890324e-05"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
@@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Entity name="AssaultWeapon" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:Shielded/>
|
||||
<c:Model>
|
||||
<Resource>Models/Weapons/Red/AssaultWeaponRed.mesh</Resource>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity name="ReloadSpawner">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/ReloadEffectWorldRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Muzzle">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="0.00728808995" Y="0.0896582007" Z="-0.643795013"/>
|
||||
<Orientation X="6.27600002" Y="0.00499999989" Z="0.00600000005"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="WeaponMuzzleFlash">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/MuzzleFlashRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="-8.41593719e-05" Y="-0.000816107844" Z="0.0612007342"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="WeaponMuzzleRay">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/RayAssaultRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0.00179657922" Y="-0.00304772682" Z="-0.334699303"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
@@ -0,0 +1,54 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Entity name="ReloadEffect" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:Lifetime>
|
||||
<Lifetime>2</Lifetime>
|
||||
</c:Lifetime>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity name="Out">
|
||||
<Components>
|
||||
<c:ExplosionEffect>
|
||||
<Velocity X="0" Y="1" Z="0"/>
|
||||
<ExplosionOrigin X="-0.0450000018" Y="0.148000002" Z="-0.646000028"/>
|
||||
<TimeSinceDeath>1</TimeSinceDeath>
|
||||
<Delay>1</Delay>
|
||||
<Speed>-1</Speed>
|
||||
<ExplosionDuration>1</ExplosionDuration>
|
||||
<EndColor A="0" B="3.92156863" G="0.545098066" R="1"/>
|
||||
<Randomness>true</Randomness>
|
||||
</c:ExplosionEffect>
|
||||
<c:Model>
|
||||
<Resource>Models/Weapons/Red/AssaultWeaponRed.mesh</Resource>
|
||||
<Transparent>true</Transparent>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="In">
|
||||
<Components>
|
||||
<c:Lifetime>
|
||||
<Lifetime>1</Lifetime>
|
||||
</c:Lifetime>
|
||||
<c:ExplosionEffect>
|
||||
<Velocity X="0" Y="1" Z="0"/>
|
||||
<ExplosionOrigin X="-0.0450000018" Y="0.148000002" Z="-0.646000028"/>
|
||||
<ExplosionDuration>1</ExplosionDuration>
|
||||
<EndColor A="0" B="3.92156863" G="0.545098066" R="1"/>
|
||||
<Randomness>true</Randomness>
|
||||
</c:ExplosionEffect>
|
||||
<c:Model>
|
||||
<Resource>Models/Weapons/Red/AssaultWeaponRed.mesh</Resource>
|
||||
<Transparent>true</Transparent>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
@@ -8,6 +8,7 @@
|
||||
</c:BlendAdditive>
|
||||
<c:Model>
|
||||
<Resource>Models/Characters/Defender/FirstPersonDefenderBlue.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
@@ -154,7 +155,7 @@
|
||||
<InheritScale>true</InheritScale>
|
||||
</c:BoneAttachment>
|
||||
<c:Transform>
|
||||
<Position X="0.0540262833" Y="-0.0954347998" Z="-0.225546911"/>
|
||||
<Position X="0.0540262833" Y="-0.0954347998" Z="-0.225546926"/>
|
||||
<Orientation X="0.00124507793" Y="0.077417776" Z="0.00737103401"/>
|
||||
<Scale X="0.300000012" Y="0.300000042" Z="0.299999952"/>
|
||||
</c:Transform>
|
||||
@@ -244,9 +245,10 @@
|
||||
</c:BoneAttachment>
|
||||
<c:Model>
|
||||
<Resource>Models/Weapons/Blue/DefenderWeaponBlue.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:Transform>
|
||||
<Position X="0.120748043" Y="-0.228436321" Z="-0.151475549"/>
|
||||
<Position X="0.120748043" Y="-0.228436321" Z="-0.151475564"/>
|
||||
<Orientation X="0.0102800643" Y="-0.00312487315" Z="0.0428144038"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
@@ -265,7 +267,7 @@
|
||||
<Entity name="Muzzle">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="0.137428522" Y="-0.145251781" Z="-0.590083241"/>
|
||||
<Position X="0.119734153" Y="-0.145251781" Z="-0.564532101"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
@@ -275,7 +277,7 @@
|
||||
<EntityFile>Schema/Entities/RayDefenderBlue.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0.0180841181" Y="0.0252480619" Z="-0.663679719"/>
|
||||
<Position X="0" Y="0" Z="-0.109966502"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
@@ -286,7 +288,7 @@
|
||||
<EntityFile>Schema/Entities/MuzzleFlashBlue.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0.0201820824" Y="0.0212024488" Z="-0.0305794869"/>
|
||||
<Position X="0.0201820824" Y="0" Z="0"/>
|
||||
<Scale X="1.5" Y="1.5" Z="1"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
<Entity name="ThirdPersonWeaponModel" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:Shielded/>
|
||||
<c:Model>
|
||||
<Resource>Models/Weapons/Blue/DefenderWeaponBlue.mesh</Resource>
|
||||
</c:Model>
|
||||
@@ -9,17 +10,6 @@
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity name="WeaponMuzzle">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/DefenderRayBlue.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0.000284185546" Y="0.0318552479" Z="-0.193328083"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="ThirdPersonReloadSpawner">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
@@ -29,6 +19,38 @@
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Muzzle">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="-0.0100463303" Y="0.0624945536" Z="-0.372351319"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="WeaponMuzzleRay">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/RayDefenderBlue.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0.0180841181" Y="0.0252480619" Z="-0.135249734"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="WeaponMuzzleFlash">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/MuzzleFlashBlue.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0.0201820824" Y="0.0212024488" Z="-0.0305794869"/>
|
||||
<Scale X="1.5" Y="1.5" Z="1"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
|
||||
@@ -0,0 +1,303 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Entity name="Hands" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:BlendAdditive>
|
||||
<Adder>MovementBlend</Adder>
|
||||
<Receiver>FinalBlend</Receiver>
|
||||
</c:BlendAdditive>
|
||||
<c:Model>
|
||||
<Resource>Models/Characters/Defender/FirstPersonDefenderRed.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity name="FinalBlend">
|
||||
<Components>
|
||||
<c:Blend>
|
||||
<Pose1>ActionBlend</Pose1>
|
||||
<Pose2>Shield</Pose2>
|
||||
<Weight>0</Weight>
|
||||
<SubTreeRoot>true</SubTreeRoot>
|
||||
</c:Blend>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Shield">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>ActivateShieldF</AnimationName>
|
||||
<Loop>false</Loop>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="ActionBlend">
|
||||
<Components>
|
||||
<c:Blend>
|
||||
<Pose1>Fire</Pose1>
|
||||
<Pose2>ReloadBlend</Pose2>
|
||||
<Weight>0</Weight>
|
||||
</c:Blend>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Fire">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>ShootShotgunF</AnimationName>
|
||||
<Loop>false</Loop>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="ReloadBlend">
|
||||
<Components>
|
||||
<c:Blend>
|
||||
<Pose1>ReloadLoop</Pose1>
|
||||
<Pose2>ReloadTransitionBlend</Pose2>
|
||||
<Weight>1</Weight>
|
||||
</c:Blend>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="ReloadLoop">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>ShotgunReloadTwoF</AnimationName>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="ReloadTransitionBlend">
|
||||
<Components>
|
||||
<c:Blend>
|
||||
<Pose1>ReloadStart</Pose1>
|
||||
<Pose2>ReloadEnd</Pose2>
|
||||
<Weight>0</Weight>
|
||||
</c:Blend>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="ReloadStart">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>ShotgunReloadOneF</AnimationName>
|
||||
<Loop>false</Loop>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="ReloadEnd">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>ShotgunReloadThreeF</AnimationName>
|
||||
<Loop>false</Loop>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="MovementBlend">
|
||||
<Components>
|
||||
<c:Blend>
|
||||
<Pose1>Idle</Pose1>
|
||||
<Pose2>Run</Pose2>
|
||||
<Weight>0</Weight>
|
||||
<SubTreeRoot>true</SubTreeRoot>
|
||||
</c:Blend>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Idle">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>IdleF</AnimationName>
|
||||
<Play>true</Play>
|
||||
<Additive>true</Additive>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Run">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>RunF</AnimationName>
|
||||
<Play>true</Play>
|
||||
<Additive>true</Additive>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="AmmoHUD">
|
||||
<Components>
|
||||
<c:BoneAttachment>
|
||||
<BoneName>R_Ammo_Joint</BoneName>
|
||||
<ScaleOffset X="0.600000024" Y="0.600000024" Z="0.600000024"/>
|
||||
<InheritScale>true</InheritScale>
|
||||
</c:BoneAttachment>
|
||||
<c:Transform>
|
||||
<Position X="0.0540262833" Y="-0.0954347998" Z="-0.225546926"/>
|
||||
<Orientation X="0.00124507793" Y="0.077417776" Z="0.00737103401"/>
|
||||
<Scale X="0.300000012" Y="0.300000042" Z="0.299999952"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Background">
|
||||
<Components>
|
||||
<c:Sprite>
|
||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||
<GlowMap></GlowMap>
|
||||
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
||||
<Color A="0.588235319" B="0" G="0" R="0"/>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-0.00200000009"/>
|
||||
<Scale X="0.119999997" Y="0.119999997" Z="0.119999997"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Text">
|
||||
<Components>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Ammo">
|
||||
<Components>
|
||||
<c:Text>
|
||||
<Content>38</Content>
|
||||
<Resource>Fonts/DroidSans.ttf,64</Resource>
|
||||
<Color A="1" B="3.92156863" G="1.17647064" R="0"/>
|
||||
</c:Text>
|
||||
<c:TextFieldReader>
|
||||
<ParentEntityName></ParentEntityName>
|
||||
<ComponentType>DefenderWeapon</ComponentType>
|
||||
<Field>Ammo</Field>
|
||||
</c:TextFieldReader>
|
||||
<c:Transform>
|
||||
<Position X="5.2833886e-05" Y="-0.0407950208" Z="0"/>
|
||||
<Scale X="0.0399999991" Y="0.0399999991" Z="0.0399999991"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="MagazineAmmo">
|
||||
<Components>
|
||||
<c:Text>
|
||||
<Content>5</Content>
|
||||
<Resource>Fonts/DroidSans.ttf,64</Resource>
|
||||
<Color A="1" B="3.92156863" G="1.17647064" R="0"/>
|
||||
</c:Text>
|
||||
<c:TextFieldReader>
|
||||
<ParentEntityName></ParentEntityName>
|
||||
<ComponentType>DefenderWeapon</ComponentType>
|
||||
<Field>MagazineAmmo</Field>
|
||||
</c:TextFieldReader>
|
||||
<c:Transform>
|
||||
<Scale X="0.0599999987" Y="0.0599999987" Z="0.0599999987"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="FriendlyBoostAttachment">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/FriendlyBoostRedHUD.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="-0.0762779638" Y="-0.04478902" Z="6.07890324e-05"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="WeaponOrigin">
|
||||
<Components>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="ViewModel">
|
||||
<Components>
|
||||
<c:BoneAttachment>
|
||||
<BoneName>R_Arm_Weapon_Joint</BoneName>
|
||||
</c:BoneAttachment>
|
||||
<c:Model>
|
||||
<Resource>Models/Weapons/Red/DefenderWeaponRed.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:Transform>
|
||||
<Position X="0.120748043" Y="-0.228436321" Z="-0.151475564"/>
|
||||
<Orientation X="0.0102800643" Y="-0.00312487315" Z="0.0428144038"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="ReloadSpawner">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/ReloadEffectView.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="Muzzle">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="0.119734153" Y="-0.145251781" Z="-0.564532101"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="WeaponMuzzleRay">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/RayDefenderRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-0.109966502"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="WeaponMuzzleFlash">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/MuzzleFlashRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0.0201820824" Y="0" Z="0"/>
|
||||
<Scale X="1.5" Y="1.5" Z="1"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
@@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Entity name="ThirdPersonWeaponModel" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:Shielded/>
|
||||
<c:Model>
|
||||
<Resource>Models/Weapons/Red/DefenderWeaponRed.mesh</Resource>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity name="ThirdPersonReloadSpawner">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/ReloadEffectWorld.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Muzzle">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="-0.0100463303" Y="0.0624945536" Z="-0.372351319"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="WeaponMuzzleRay">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/RayDefenderRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0.0180841181" Y="0.0252480619" Z="-0.135249734"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="WeaponMuzzleFlash">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/MuzzleFlashRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0.0201820824" Y="0.0212024488" Z="-0.0305794869"/>
|
||||
<Scale X="1.5" Y="1.5" Z="1"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
@@ -8,6 +8,7 @@
|
||||
</c:BlendAdditive>
|
||||
<c:Model>
|
||||
<Resource>Models/Characters/Assault/FirstPersonAssaultBlue.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
@@ -183,6 +184,7 @@
|
||||
<c:Model>
|
||||
<GlowIntensity>1.2999999523162842</GlowIntensity>
|
||||
<Resource>Models/Weapons/Blue/SecondaryWeaponBlue.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:Transform>
|
||||
<Position X="0.185786247" Y="-0.21622014" Z="-0.412707269"/>
|
||||
@@ -204,7 +206,7 @@
|
||||
<Entity name="Muzzle">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="0.197295129" Y="-0.116625182" Z="-0.709192753"/>
|
||||
<Position X="0.189540595" Y="-0.114737265" Z="-0.681462705"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
@@ -213,9 +215,7 @@
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/RaySideArmBlue.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-0.155046776"/>
|
||||
</c:Transform>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
|
||||
@@ -0,0 +1,239 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Entity name="Hands" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:BlendAdditive>
|
||||
<Adder>MovementBlend</Adder>
|
||||
<Receiver>ActionBlend</Receiver>
|
||||
</c:BlendAdditive>
|
||||
<c:Model>
|
||||
<Resource>Models/Characters/Assault/FirstPersonAssaultRed.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity name="MovementBlend">
|
||||
<Components>
|
||||
<c:Blend>
|
||||
<Pose1>Idle</Pose1>
|
||||
<Pose2>Run</Pose2>
|
||||
<Weight>1</Weight>
|
||||
<SubTreeRoot>true</SubTreeRoot>
|
||||
</c:Blend>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Idle">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>IdleSecF</AnimationName>
|
||||
<Play>true</Play>
|
||||
<Additive>true</Additive>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Run">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>RunSecF</AnimationName>
|
||||
<Play>true</Play>
|
||||
<Additive>true</Additive>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="ActionBlend">
|
||||
<Components>
|
||||
<c:Blend>
|
||||
<Pose1>Fire</Pose1>
|
||||
<Pose2>Reload</Pose2>
|
||||
<Weight>0</Weight>
|
||||
</c:Blend>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Fire">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>ShootSecF</AnimationName>
|
||||
<Loop>false</Loop>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Reload">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>ReloadSwitchSecF</AnimationName>
|
||||
<Loop>false</Loop>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="AmmunitionHUD">
|
||||
<Components>
|
||||
<c:BoneAttachment>
|
||||
<BoneName>R_Ammo_Joint</BoneName>
|
||||
</c:BoneAttachment>
|
||||
<c:Transform>
|
||||
<Position X="0.109812237" Y="-0.0832184851" Z="-0.403451651"/>
|
||||
<Orientation X="0.000778344634" Y="0.077423349" Z="0.0012426693"/>
|
||||
<Scale X="0.400000006" Y="0.400000006" Z="0.400000006"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="AmmunitionHUDBackground">
|
||||
<Components>
|
||||
<c:Sprite>
|
||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||
<GlowMap></GlowMap>
|
||||
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
||||
<Color A="0.588235319" B="0" G="0" R="0"/>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-0.00300000003"/>
|
||||
<Scale X="0.119999997" Y="0.119999997" Z="0.119999997"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="AmmunitionText">
|
||||
<Components>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="MagazineAmmo">
|
||||
<Components>
|
||||
<c:Text>
|
||||
<Content>16</Content>
|
||||
<Resource>Fonts/DroidSans.ttf,64</Resource>
|
||||
<Color A="1" B="3.92156863" G="1.17647064" R="0"/>
|
||||
</c:Text>
|
||||
<c:TextFieldReader>
|
||||
<ParentEntityName></ParentEntityName>
|
||||
<ComponentType>SidearmWeapon</ComponentType>
|
||||
<Field>MagazineAmmo</Field>
|
||||
</c:TextFieldReader>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="-0.00600000005" Z="0"/>
|
||||
<Scale X="0.0599999987" Y="0.0599999987" Z="0.0599999987"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Infinity!">
|
||||
<Components>
|
||||
<c:Text>
|
||||
<Content>8</Content>
|
||||
<Resource>Fonts/DroidSans.ttf,64</Resource>
|
||||
<Color A="1" B="3.92156863" G="1.17647064" R="0"/>
|
||||
</c:Text>
|
||||
<c:Transform>
|
||||
<Position X="0.0150000006" Y="-0.029000001" Z="0"/>
|
||||
<Orientation X="0" Y="0" Z="1.5710001"/>
|
||||
<Scale X="0.0399999991" Y="0.0399999991" Z="0.0399999991"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="FriendlyAmmoAttachment">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/FriendlyAmmoHUD.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="-0.000110394583" Y="-0.0891034827" Z="6.07890324e-05"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="AmmoShareEffectSpawner">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/AmmoShareEffectView.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="WeaponOrigin">
|
||||
<Components>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="ViewModel">
|
||||
<Components>
|
||||
<c:BoneAttachment>
|
||||
<BoneName>R_Arm_Weapon_Joint</BoneName>
|
||||
</c:BoneAttachment>
|
||||
<c:Model>
|
||||
<GlowIntensity>1.2999999523162842</GlowIntensity>
|
||||
<Resource>Models/Weapons/Red/SecondaryWeaponRed.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:Transform>
|
||||
<Position X="0.185786247" Y="-0.21622014" Z="-0.412707269"/>
|
||||
<Orientation X="0.0102805095" Y="-0.00312478957" Z="0.0428138711"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="ReloadSpawner">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/WeaponSidearmReloadEffectViewRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="Muzzle">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="0.189540595" Y="-0.114737265" Z="-0.681462705"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="WeaponMuzzleRay">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/RaySideArmRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="WeaponMuzzleFlash">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/MuzzleFlashSideArmRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Scale X="0.5" Y="0.5" Z="0.5"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
@@ -8,6 +8,7 @@
|
||||
</c:BlendAdditive>
|
||||
<c:Model>
|
||||
<Resource>Models/Characters/Defender/FirstPersonDefenderBlue.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
@@ -86,7 +87,7 @@
|
||||
<BoneName>R_Ammo_Joint</BoneName>
|
||||
</c:BoneAttachment>
|
||||
<c:Transform>
|
||||
<Position X="0.109812573" Y="-0.0832190216" Z="-0.373473197"/>
|
||||
<Position X="0.109812573" Y="-0.0832190216" Z="-0.373473227"/>
|
||||
<Orientation X="0.00118373742" Y="0.077411525" Z="0.00458352407"/>
|
||||
<Scale X="0.400000006" Y="0.400000006" Z="0.400000006"/>
|
||||
</c:Transform>
|
||||
@@ -183,9 +184,10 @@
|
||||
<c:Model>
|
||||
<GlowIntensity>1.5</GlowIntensity>
|
||||
<Resource>Models/Weapons/Blue/SecondaryWeaponBlue.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:Transform>
|
||||
<Position X="0.18578662" Y="-0.216220587" Z="-0.382728696"/>
|
||||
<Position X="0.18578662" Y="-0.216220587" Z="-0.382728726"/>
|
||||
<Orientation X="0.010279973" Y="-0.00312555139" Z="0.0428142436"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
@@ -204,10 +206,19 @@
|
||||
<Entity name="Muzzle">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="0.196999997" Y="-0.116999999" Z="-0.668634355"/>
|
||||
<Position X="0.192775041" Y="-0.117133088" Z="-0.647809923"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="WeaponMuzzleRay">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/RaySideArmBlue.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="WeaponMuzzleFlash">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
@@ -219,17 +230,6 @@
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="WeaponMuzzleRay">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/RaySideArmBlue.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-0.155000001"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
@@ -0,0 +1,239 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Entity name="Hands" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:BlendAdditive>
|
||||
<Adder>MovementBlend</Adder>
|
||||
<Receiver>ActionBlend</Receiver>
|
||||
</c:BlendAdditive>
|
||||
<c:Model>
|
||||
<Resource>Models/Characters/Defender/FirstPersonDefenderRed.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity name="MovementBlend">
|
||||
<Components>
|
||||
<c:Blend>
|
||||
<Pose1>Idle</Pose1>
|
||||
<Pose2>Run</Pose2>
|
||||
<Weight>1</Weight>
|
||||
<SubTreeRoot>true</SubTreeRoot>
|
||||
</c:Blend>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Idle">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>IdleSecF</AnimationName>
|
||||
<Play>true</Play>
|
||||
<Additive>true</Additive>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Run">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>RunSecF</AnimationName>
|
||||
<Play>true</Play>
|
||||
<Additive>true</Additive>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="ActionBlend">
|
||||
<Components>
|
||||
<c:Blend>
|
||||
<Pose1>Fire</Pose1>
|
||||
<Pose2>Reload</Pose2>
|
||||
<Weight>0</Weight>
|
||||
</c:Blend>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="Fire">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>ShootSecF</AnimationName>
|
||||
<Loop>false</Loop>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Reload">
|
||||
<Components>
|
||||
<c:Animation>
|
||||
<AnimationName>ReloadSwitchSecF</AnimationName>
|
||||
<Loop>false</Loop>
|
||||
</c:Animation>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="AmmunitionHUD">
|
||||
<Components>
|
||||
<c:BoneAttachment>
|
||||
<BoneName>R_Ammo_Joint</BoneName>
|
||||
</c:BoneAttachment>
|
||||
<c:Transform>
|
||||
<Position X="0.109812573" Y="-0.0832190216" Z="-0.373473227"/>
|
||||
<Orientation X="0.00118373742" Y="0.077411525" Z="0.00458352407"/>
|
||||
<Scale X="0.400000006" Y="0.400000006" Z="0.400000006"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="AmmunitionHUDBackground">
|
||||
<Components>
|
||||
<c:Sprite>
|
||||
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||
<GlowMap></GlowMap>
|
||||
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
||||
<Color A="0.588235319" B="0" G="0" R="0"/>
|
||||
</c:Sprite>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="0" Z="-0.00300000003"/>
|
||||
<Scale X="0.119999997" Y="0.119999997" Z="0.119999997"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="AmmunitionText">
|
||||
<Components>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="MagazineAmmo">
|
||||
<Components>
|
||||
<c:Text>
|
||||
<Content>16</Content>
|
||||
<Resource>Fonts/DroidSans.ttf,64</Resource>
|
||||
<Color A="1" B="3.92156863" G="1.17647064" R="0"/>
|
||||
</c:Text>
|
||||
<c:TextFieldReader>
|
||||
<ParentEntityName></ParentEntityName>
|
||||
<ComponentType>SidearmWeapon</ComponentType>
|
||||
<Field>MagazineAmmo</Field>
|
||||
</c:TextFieldReader>
|
||||
<c:Transform>
|
||||
<Position X="0" Y="-0.00600000005" Z="0"/>
|
||||
<Scale X="0.0599999987" Y="0.0599999987" Z="0.0599999987"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Infinity!">
|
||||
<Components>
|
||||
<c:Text>
|
||||
<Content>8</Content>
|
||||
<Resource>Fonts/DroidSans.ttf,64</Resource>
|
||||
<Color A="1" B="3.92156863" G="1.17647064" R="0"/>
|
||||
</c:Text>
|
||||
<c:Transform>
|
||||
<Position X="0.0150000006" Y="-0.029000001" Z="0"/>
|
||||
<Orientation X="0" Y="0" Z="1.5710001"/>
|
||||
<Scale X="0.0399999991" Y="0.0399999991" Z="0.0399999991"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="FriendlyAmmoAttachment">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/FriendlyAmmoHUD.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Position X="-0.000110394583" Y="-0.0891034827" Z="6.07890324e-05"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="AmmoShareEffectSpawner">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/AmmoShareEffectView.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="WeaponOrigin">
|
||||
<Components>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="ViewModel">
|
||||
<Components>
|
||||
<c:BoneAttachment>
|
||||
<BoneName>R_Arm_Weapon_Joint</BoneName>
|
||||
</c:BoneAttachment>
|
||||
<c:Model>
|
||||
<GlowIntensity>1.5</GlowIntensity>
|
||||
<Resource>Models/Weapons/Red/SecondaryWeaponRed.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
</c:Model>
|
||||
<c:Transform>
|
||||
<Position X="0.18578662" Y="-0.216220587" Z="-0.382728726"/>
|
||||
<Orientation X="0.010279973" Y="-0.00312555139" Z="0.0428142436"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="ReloadSpawner">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/WeaponSidearmReloadEffectViewRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
<Entity name="Muzzle">
|
||||
<Components>
|
||||
<c:Transform>
|
||||
<Position X="0.192775041" Y="-0.117133088" Z="-0.647809923"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children>
|
||||
<Entity name="WeaponMuzzleRay">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/RaySideArmRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="WeaponMuzzleFlash">
|
||||
<Components>
|
||||
<c:Spawner>
|
||||
<EntityFile>Schema/Entities/MuzzleFlashSideArmRed.xml</EntityFile>
|
||||
</c:Spawner>
|
||||
<c:Transform>
|
||||
<Scale X="0.5" Y="0.5" Z="0.5"/>
|
||||
</c:Transform>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
@@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<Entity name="ReloadEffect" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||
|
||||
<Components>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
|
||||
<Children>
|
||||
<Entity name="In">
|
||||
<Components>
|
||||
<c:ExplosionEffect>
|
||||
<ExplosionOrigin X="0" Y="0.112999998" Z="-0.430000007"/>
|
||||
<TimeSinceDeath>0.5</TimeSinceDeath>
|
||||
<Delay>0.5</Delay>
|
||||
<Speed>-1</Speed>
|
||||
<ExplosionDuration>0.5</ExplosionDuration>
|
||||
<EndColor A="0" B="3.92156863" G="0.545098066" R="1"/>
|
||||
<Randomness>true</Randomness>
|
||||
</c:ExplosionEffect>
|
||||
<c:Model>
|
||||
<GlowIntensity>1.5</GlowIntensity>
|
||||
<Resource>Models/Weapons/Red/SecondaryWeaponRed.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
<Transparent>true</Transparent>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
<Entity name="Out">
|
||||
<Components>
|
||||
<c:Lifetime>
|
||||
<Lifetime>0.5</Lifetime>
|
||||
</c:Lifetime>
|
||||
<c:ExplosionEffect>
|
||||
<ExplosionOrigin X="0" Y="0.113000005" Z="-0.430000007"/>
|
||||
<ExplosionDuration>0.5</ExplosionDuration>
|
||||
<EndColor A="0" B="3.92156863" G="0.545098066" R="1"/>
|
||||
<Randomness>true</Randomness>
|
||||
</c:ExplosionEffect>
|
||||
<c:Model>
|
||||
<GlowIntensity>1.5</GlowIntensity>
|
||||
<Resource>Models/Weapons/Red/SecondaryWeaponRed.mesh</Resource>
|
||||
<Shadow>false</Shadow>
|
||||
<Transparent>true</Transparent>
|
||||
</c:Model>
|
||||
<c:Transform/>
|
||||
</Components>
|
||||
<Children/>
|
||||
</Entity>
|
||||
</Children>
|
||||
|
||||
</Entity>
|
||||
@@ -50,21 +50,26 @@ Source: "..\..\bin\Schema\*"; DestDir: "{app}\Schema\"; Flags: ignoreversion cre
|
||||
Source: "..\..\bin\Shaders\*"; DestDir: "{app}\Shaders\"; Flags: ignoreversion createallsubdirs recursesubdirs
|
||||
Source: "..\..\bin\Textures\*"; DestDir: "{app}\Textures\"; Flags: ignoreversion createallsubdirs recursesubdirs
|
||||
Source: "..\..\bin\assimp.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\..\bin\DefaultConfig.ini"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\..\bin\DefaultInput.ini"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\..\resources\DefaultConfig.ini"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\..\resources\DefaultInput.ini"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\..\bin\glew32.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\..\bin\glfw3.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\..\bin\OpenAL32.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\..\bin\imgui.ini"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\..\bin\Input.ini"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\..\bin\libpng16.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\..\bin\Axyz.exe"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\..\bin\Server.bat"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\..\bin\xerces-c_3_1.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\..\bin\zlib.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\..\resources\README.txt"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "..\..\deps\redist\VC_redist.x64.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall
|
||||
|
||||
[Icons]
|
||||
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
|
||||
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
|
||||
Name: "{commonprograms}\{#MyAppName} Server"; Filename: "{app}\{#MyAppExeName}"; Parameters: "--server"
|
||||
Name: "{commondesktop}\{#MyAppName} Server"; Filename: "{app}\{#MyAppExeName}"; Parameters: "--server"; Tasks: desktopicon
|
||||
|
||||
[INI]
|
||||
Filename: "{app}\Config.ini"; Section: "Networking"; Key: "Name"; String: "{%USERNAME}"; Flags: createkeyifdoesntexist
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
#version 430
|
||||
|
||||
#include "Shaders/Util/CommonNormalFunc.glsl"
|
||||
|
||||
#define MIN_AMBIENT_LIGHT 0.3
|
||||
#define MAX_SPLITS 4
|
||||
|
||||
uniform mat4 M;
|
||||
uniform mat4 V;
|
||||
uniform mat4 P;
|
||||
@@ -16,6 +19,7 @@ uniform vec3 CameraPosition;
|
||||
uniform int SSAOQuality;
|
||||
uniform float FarDistance[MAX_SPLITS];
|
||||
|
||||
uniform int NormalTextureType;
|
||||
uniform vec2 DiffuseUVRepeat;
|
||||
uniform vec2 NormalUVRepeat;
|
||||
uniform vec2 SpecularUVRepeat;
|
||||
@@ -139,13 +143,6 @@ LightResult CalcDirectionalLightSource(vec4 direction, vec4 color, float intensi
|
||||
return result;
|
||||
}
|
||||
|
||||
vec4 CalcNormalMappedValue(vec3 normal, vec3 tangent, vec3 bitangent, vec2 textureCoordinate, sampler2D normalMap)
|
||||
{
|
||||
mat3 TBN = mat3(tangent, bitangent, normal);
|
||||
vec3 NormalMap = texture(normalMap, textureCoordinate).xyz * 2.0 - vec3(1.0);
|
||||
return vec4(TBN * normalize(NormalMap), 0.0);
|
||||
}
|
||||
|
||||
// Returns a "random" value.
|
||||
float Random(vec3 seed, int i)
|
||||
{
|
||||
@@ -301,7 +298,7 @@ void main()
|
||||
vec4 diffuseTexel = texture2D(DiffuseTexture, Input.TextureCoordinate * DiffuseUVRepeat);
|
||||
vec4 glowTexel = texture2D(GlowMapTexture, Input.TextureCoordinate * GlowUVRepeat);
|
||||
vec4 specularTexel = texture2D(SpecularMapTexture, Input.TextureCoordinate * SpecularUVRepeat);
|
||||
vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate * NormalUVRepeat, NormalMapTexture);
|
||||
vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate * NormalUVRepeat, NormalMapTexture, NormalTextureType);
|
||||
normal = normalize(normal);
|
||||
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
||||
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#version 430
|
||||
|
||||
#include "Shaders/Util/CommonNormalFunc.glsl"
|
||||
|
||||
#define MIN_AMBIENT_LIGHT 0.3
|
||||
#define MAX_SPLITS 4
|
||||
|
||||
@@ -17,6 +19,7 @@ uniform float GlowIntensity;
|
||||
uniform vec3 CameraPosition;
|
||||
uniform int SSAOQuality;
|
||||
|
||||
uniform int NormalTextureType;
|
||||
uniform vec2 DiffuseUVRepeat;
|
||||
uniform vec2 NormalUVRepeat;
|
||||
uniform vec2 SpecularUVRepeat;
|
||||
@@ -122,13 +125,6 @@ LightResult CalcDirectionalLightSource(vec4 direction, vec4 color, float intensi
|
||||
return result;
|
||||
}
|
||||
|
||||
vec4 CalcNormalMappedValue(vec3 normal, vec3 tangent, vec3 bitangent, vec2 textureCoordinate, sampler2D normalMap)
|
||||
{
|
||||
mat3 TBN = mat3(tangent, bitangent, normal);
|
||||
vec3 NormalMap = texture(normalMap, textureCoordinate).xyz * 2.0 - vec3(1.0);
|
||||
return vec4(TBN * normalize(NormalMap), 0.0);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
float shieldDepthValue = texelFetch(ShieldBuffer, ivec2(gl_FragCoord.xy), 0).r;
|
||||
@@ -142,7 +138,7 @@ void main()
|
||||
vec4 diffuseTexel = texture2D(DiffuseTexture, Input.TextureCoordinate * DiffuseUVRepeat);
|
||||
vec4 glowTexel = texture2D(GlowMapTexture, Input.TextureCoordinate * GlowUVRepeat);
|
||||
vec4 specularTexel = texture2D(SpecularMapTexture, Input.TextureCoordinate * SpecularUVRepeat);
|
||||
vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate * NormalUVRepeat, NormalMapTexture);
|
||||
vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate * NormalUVRepeat, NormalMapTexture, NormalTextureType);
|
||||
normal = normalize(normal);
|
||||
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
||||
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#version 430
|
||||
|
||||
#include "Shaders/Util/CommonNormalFunc.glsl"
|
||||
|
||||
#define MIN_AMBIENT_LIGHT 0.3
|
||||
#define MAX_SPLITS 4
|
||||
uniform mat4 M;
|
||||
@@ -18,6 +20,10 @@ layout (binding = 0) uniform sampler2D AOTexture;
|
||||
layout (binding = 30) uniform sampler2DArrayShadow DepthMap;
|
||||
|
||||
//Get bineded at the same time as the textures
|
||||
uniform int NormalTextureType1;
|
||||
uniform int NormalTextureType2;
|
||||
uniform int NormalTextureType3;
|
||||
|
||||
uniform vec2 DiffuseUVRepeat1;
|
||||
uniform vec2 DiffuseUVRepeat2;
|
||||
uniform vec2 DiffuseUVRepeat3;
|
||||
@@ -181,11 +187,12 @@ vec4 CalcBlendedTexel(vec4 blendValue, sampler2D R, sampler2D G, sampler2D B,
|
||||
}
|
||||
|
||||
vec4 CalcBlendedNormal(vec4 blendValue, sampler2D R, sampler2D G, sampler2D B,
|
||||
vec2 R_TileValues, vec2 G_TileValues, vec2 B_TileValues){
|
||||
vec2 R_TileValues, vec2 G_TileValues, vec2 B_TileValues,
|
||||
int R_TextureType, int G_TextureType, int B_TextureType) {
|
||||
mat3 TBN = mat3(Input.Tangent, Input.BiTangent, Input.Normal);
|
||||
vec3 R_Channel = texture(R, Input.TextureCoordinate * R_TileValues).xyz * 2.0 - vec3(1.0);
|
||||
vec3 G_Channel = texture(G, Input.TextureCoordinate * G_TileValues).xyz * 2.0 - vec3(1.0);
|
||||
vec3 B_Channel = texture(B, Input.TextureCoordinate * B_TileValues).xyz * 2.0 - vec3(1.0);
|
||||
vec3 R_Channel = NormalMapValue(Input.TextureCoordinate * R_TileValues, R, R_TextureType);
|
||||
vec3 G_Channel = NormalMapValue(Input.TextureCoordinate * G_TileValues, G, G_TextureType);
|
||||
vec3 B_Channel = NormalMapValue(Input.TextureCoordinate * B_TileValues, B, B_TextureType);
|
||||
|
||||
float total = blendValue.r + blendValue.g + blendValue.b + blendValue.a;
|
||||
float totalDiv = 1 / total;
|
||||
@@ -363,7 +370,8 @@ void main()
|
||||
SpecularUVRepeat1, SpecularUVRepeat2, SpecularUVRepeat3);
|
||||
//vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate, SplatMapTexture);
|
||||
vec4 normal = V * CalcBlendedNormal(splatTexel, NormalMapTexture1, NormalMapTexture2, NormalMapTexture3,
|
||||
NormalUVRepeat1, NormalUVRepeat2, NormalUVRepeat3);
|
||||
NormalUVRepeat1, NormalUVRepeat2, NormalUVRepeat3,
|
||||
NormalTextureType1, NormalTextureType2, NormalTextureType3);
|
||||
normal = normalize(normal);
|
||||
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
||||
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#version 430
|
||||
|
||||
#include "Shaders/Util/CommonNormalFunc.glsl"
|
||||
|
||||
#define MIN_AMBIENT_LIGHT 0.3
|
||||
#define MAX_SPLITS 4
|
||||
uniform mat4 M;
|
||||
@@ -14,6 +16,10 @@ uniform vec4 AmbientColor;
|
||||
uniform int SSAOQuality;
|
||||
|
||||
//Get bineded at the same time as the textures
|
||||
uniform int NormalTextureType1;
|
||||
uniform int NormalTextureType2;
|
||||
uniform int NormalTextureType3;
|
||||
|
||||
uniform vec2 DiffuseUVRepeat1;
|
||||
uniform vec2 DiffuseUVRepeat2;
|
||||
uniform vec2 DiffuseUVRepeat3;
|
||||
@@ -160,11 +166,12 @@ vec4 CalcBlendedTexel(vec4 blendValue, sampler2D R, sampler2D G, sampler2D B,
|
||||
}
|
||||
|
||||
vec4 CalcBlendedNormal(vec4 blendValue, sampler2D R, sampler2D G, sampler2D B,
|
||||
vec2 R_TileValues, vec2 G_TileValues, vec2 B_TileValues){
|
||||
vec2 R_TileValues, vec2 G_TileValues, vec2 B_TileValues,
|
||||
int R_TextureType, int G_TextureType, int B_TextureType) {
|
||||
mat3 TBN = mat3(Input.Tangent, Input.BiTangent, Input.Normal);
|
||||
vec3 R_Channel = texture(R, Input.TextureCoordinate * R_TileValues).xyz * 2.0 - vec3(1.0);
|
||||
vec3 G_Channel = texture(G, Input.TextureCoordinate * G_TileValues).xyz * 2.0 - vec3(1.0);
|
||||
vec3 B_Channel = texture(B, Input.TextureCoordinate * B_TileValues).xyz * 2.0 - vec3(1.0);
|
||||
vec3 R_Channel = NormalMapValue(Input.TextureCoordinate * R_TileValues, R, R_TextureType);
|
||||
vec3 G_Channel = NormalMapValue(Input.TextureCoordinate * G_TileValues, G, G_TextureType);
|
||||
vec3 B_Channel = NormalMapValue(Input.TextureCoordinate * B_TileValues, B, B_TextureType);
|
||||
|
||||
float total = blendValue.r + blendValue.g + blendValue.b + blendValue.a;
|
||||
float totalDiv = 1 / total;
|
||||
@@ -194,7 +201,8 @@ void main()
|
||||
SpecularUVRepeat1, SpecularUVRepeat2, SpecularUVRepeat3);
|
||||
//vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate, SplatMapTexture);
|
||||
vec4 normal = V * CalcBlendedNormal(splatTexel, NormalMapTexture1, NormalMapTexture2, NormalMapTexture3,
|
||||
NormalUVRepeat1, NormalUVRepeat2, NormalUVRepeat3);
|
||||
NormalUVRepeat1, NormalUVRepeat2, NormalUVRepeat3,
|
||||
NormalTextureType1, NormalTextureType2, NormalTextureType3);
|
||||
normal = normalize(normal);
|
||||
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
||||
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
||||
|
||||
Binary file not shown.
@@ -176,6 +176,9 @@ void Client::parseMessageType(Packet& packet)
|
||||
case MessageType::KD:
|
||||
parseKDEvent(packet);
|
||||
break;
|
||||
case MessageType::Win:
|
||||
parseWin(packet);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -222,7 +225,7 @@ void Client::parsePing()
|
||||
m_IsConnected = true;
|
||||
// Time since last ping was received
|
||||
m_DurationOfPingTime = 1000 * (std::clock() - m_StartPingTime) / static_cast<double>(CLOCKS_PER_SEC);
|
||||
LOG_INFO("%i: response time with ctime(ms): %f", m_PacketID, m_DurationOfPingTime);
|
||||
//LOG_INFO("%i: response time with ctime(ms): %f", m_PacketID, m_DurationOfPingTime);
|
||||
m_StartPingTime = std::clock();
|
||||
|
||||
Packet packet(MessageType::Ping, m_SendPacketID);
|
||||
@@ -376,6 +379,13 @@ void Client::parseKDEvent(Packet & packet)
|
||||
m_EventBroker->Publish(e);
|
||||
}
|
||||
|
||||
void Client::parseWin(Packet& packet)
|
||||
{
|
||||
Events::Win e;
|
||||
e.TeamThatWon = packet.ReadPrimitive<int>();
|
||||
m_EventBroker->Publish(e);
|
||||
}
|
||||
|
||||
void Client::updateFields(Packet& packet, const ComponentInfo& componentInfo, const EntityID& entityID)
|
||||
{
|
||||
for (auto field : componentInfo.FieldsInOrder) {
|
||||
|
||||
@@ -609,6 +609,9 @@ bool Server::OnWin(const Events::Win & e)
|
||||
{
|
||||
// Postpone the gameover reset
|
||||
m_GameIsOver = true;
|
||||
Packet winPacket = Packet(MessageType::Win);
|
||||
winPacket.WritePrimitive(e.TeamThatWon);
|
||||
reliableBroadcast(winPacket);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -744,7 +747,7 @@ void Server::resetMap()
|
||||
reliableBroadcast(removeMap);
|
||||
removeWorld();
|
||||
// Hardcoded for now.
|
||||
auto entityFile = ResourceManager::Load<EntityFile>("Schema/Entities/CP_Rocky2.xml");
|
||||
auto entityFile = ResourceManager::Load<EntityFile>("Schema/Entities/CP_Valhalla.xml");
|
||||
entityFile->MergeInto(m_World);
|
||||
Packet newWorld(MessageType::Snapshot);
|
||||
createWorldSnapshot(newWorld);
|
||||
|
||||
@@ -11,7 +11,7 @@ void CubeMapPass::LoadTextures(std::string cubemapName)
|
||||
if (m_PreviusCubeMapTexture != cubemapName) {
|
||||
m_CubeMapTextures.clear();
|
||||
for (int i = 0; i < 6; i++) {
|
||||
std::string path = "Textures/Test/CubeMap/" + cubemapName + "/CubeMapTest0" + std::to_string(i) + ".png";
|
||||
std::string path = "Textures/Test/CubeMap/" + cubemapName + "/CubeMapTest0" + std::to_string(i) + ".dds";
|
||||
m_CubeMapTextures.push_back(path);
|
||||
}
|
||||
GenerateCubeMapTexture();
|
||||
@@ -21,15 +21,22 @@ void CubeMapPass::LoadTextures(std::string cubemapName)
|
||||
|
||||
void CubeMapPass::GenerateCubeMapTexture()
|
||||
{
|
||||
if (m_CubeMapTexture == -1) {
|
||||
if (m_CubeMapTexture == 0) {
|
||||
glGenTextures(1, &m_CubeMapTexture);
|
||||
}
|
||||
glBindTexture(GL_TEXTURE_CUBE_MAP, m_CubeMapTexture);
|
||||
|
||||
for (int i = 0; i < 6; i++) {
|
||||
PNG* img = ResourceManager::Load<PNG>(m_CubeMapTextures[i]);
|
||||
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_RGBA32F, img->Width, img->Height, 0, GL_RGBA, GL_UNSIGNED_BYTE, img->Data);
|
||||
ResourceManager::Release("PNG", m_CubeMapTextures[i]);
|
||||
DDS* img = ResourceManager::Load<DDS>(m_CubeMapTextures[i]);
|
||||
std::size_t bpe = 16;
|
||||
std::size_t numBlocksWide = std::max<std::size_t>(1, (img->Width + 3) / 4);
|
||||
std::size_t numBlocksHigh = std::max<std::size_t>(1, (img->Height + 3) / 4);
|
||||
std::size_t rowBytes = numBlocksWide * bpe;
|
||||
std::size_t numRows = numBlocksHigh;
|
||||
std::size_t numBytes = rowBytes * numBlocksHigh;
|
||||
glCompressedTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, img->Width, img->Height, 0, numBytes, img->Data);
|
||||
//glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_RGBA32F, img->Width, img->Height, 0, GL_COMPRESSED_RGBA, GL_UNSIGNED_BYTE, img->Data);
|
||||
ResourceManager::Release("DDS", m_CubeMapTextures[i]);
|
||||
}
|
||||
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
#include "Rendering/DDS.h"
|
||||
|
||||
DDS::DDS(std::string path)
|
||||
{
|
||||
std::ifstream in(path.c_str(), std::ios_base::binary | std::ios_base::ate);
|
||||
if (!in.is_open()) {
|
||||
throw Resource::FailedLoadingException("Failed to open file.");
|
||||
}
|
||||
unsigned int fileSize = static_cast<unsigned int>(in.tellg());
|
||||
in.seekg(0, std::ios_base::beg);
|
||||
|
||||
if (fileSize < sizeof(MagicNumber) + sizeof(DDS::Header_t)) {
|
||||
throw Resource::FailedLoadingException("Invalid DDS file; not even big enough to contain the DDS header!");
|
||||
}
|
||||
|
||||
// Read magic number
|
||||
uint32_t magicNumber;
|
||||
in.read(reinterpret_cast<char*>(&magicNumber), sizeof(MagicNumber));
|
||||
if (magicNumber != DDS::MagicNumber) {
|
||||
throw Resource::FailedLoadingException("Invalid DDS file; magic number doesn't match.");
|
||||
}
|
||||
|
||||
// Read header
|
||||
in.read(reinterpret_cast<char*>(&m_Header), sizeof(DDS::Header_t));
|
||||
|
||||
// Validate header
|
||||
if (m_Header.Size != sizeof(DDS::Header_t) || m_Header.PixelFormat.Size != sizeof(DDS::Header_t::PixelFormat_t)) {
|
||||
throw Resource::FailedLoadingException("Corrupt DDS file; header size doesn't match!");
|
||||
}
|
||||
|
||||
// Make sure it's DC3 (DXT5)
|
||||
char format[5];
|
||||
memcpy(&format, &m_Header.PixelFormat.FourCC, 4);
|
||||
format[4] = '\0';
|
||||
if (strcmp(format, "DXT5")) {
|
||||
std::stringstream ss;
|
||||
ss << "Invalid DDS file; Unsupported compression format \"" << format << "\"";
|
||||
throw Resource::FailedLoadingException(ss.str().c_str());
|
||||
}
|
||||
|
||||
this->Width = m_Header.Width;
|
||||
this->Height = m_Header.Height;
|
||||
this->Format = Image::ImageFormat::RGBA;
|
||||
this->Compressed = true;
|
||||
if (m_Header.MipMapCount != 0) {
|
||||
this->MipMapLevels = m_Header.MipMapCount - 1;
|
||||
}
|
||||
|
||||
// Read data
|
||||
std::size_t dataSize = fileSize - sizeof(MagicNumber) - sizeof(DDS::Header_t);
|
||||
this->Data = new unsigned char[dataSize];
|
||||
this->ByteSize = dataSize;
|
||||
in.read(reinterpret_cast<char*>(this->Data), dataSize);
|
||||
|
||||
// Flip!
|
||||
unsigned int w = this->Width;
|
||||
unsigned int h = this->Height;
|
||||
unsigned char* mipMapData = this->Data;
|
||||
for (unsigned int i = 0; i < this->MipMapLevels; ++i) {
|
||||
std::size_t bpe = 16;
|
||||
std::size_t numBlocksWide = std::max<std::size_t>(1, (w + 3) / 4);
|
||||
std::size_t numBlocksHigh = std::max<std::size_t>(1, (h + 3) / 4);
|
||||
std::size_t rowBytes = numBlocksWide * bpe;
|
||||
std::size_t numRows = numBlocksHigh;
|
||||
std::size_t numBytes = rowBytes * numBlocksHigh;
|
||||
FlipY(mipMapData, rowBytes, numBytes, numBlocksWide);
|
||||
w = w >> 1;
|
||||
h = h >> 1;
|
||||
mipMapData += numBytes;
|
||||
}
|
||||
}
|
||||
|
||||
DDS::~DDS()
|
||||
{
|
||||
if (this->Data != nullptr) {
|
||||
delete[] this->Data;
|
||||
this->Data = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
void DDS::FlipY(unsigned char* data, std::size_t rowBytes, std::size_t totalSize, std::size_t numBlocksWide)
|
||||
{
|
||||
std::size_t height = totalSize / rowBytes;
|
||||
unsigned char* topLine = data;
|
||||
unsigned char* bottomLine = data + (height - 1) * rowBytes;
|
||||
for (std::size_t line = 0; line < height / 2; ++line) {
|
||||
Block_t* topBlocks = reinterpret_cast<Block_t*>(topLine);
|
||||
Block_t* bottomBlocks = reinterpret_cast<Block_t*>(bottomLine);
|
||||
for (std::size_t block = 0; block < numBlocksWide; ++block) {
|
||||
flipBlock(&topBlocks[block]);
|
||||
flipBlock(&bottomBlocks[block]);
|
||||
std::swap(topBlocks[block], bottomBlocks[block]);
|
||||
}
|
||||
topLine += rowBytes;
|
||||
bottomLine -= rowBytes;
|
||||
}
|
||||
}
|
||||
|
||||
void DDS::flipBlock(Block_t* block)
|
||||
{
|
||||
// Extract both rows of pixel Data into a 32 bit sized values.
|
||||
uint32_t pixelRow0 = block->Alpha.Data[0] + ((block->Alpha.Data[1] + (block->Alpha.Data[2] << 8)) << 8);
|
||||
uint32_t pixelRow1 = block->Alpha.Data[3] + ((block->Alpha.Data[4] + (block->Alpha.Data[5] << 8)) << 8);
|
||||
|
||||
// Swap the extracted row Data. These values will be read from and shifted into the final block locations.
|
||||
uint32_t pixelRow0Swapped = ((pixelRow0 & 0x000fff) << 12) | ((pixelRow0 & 0xfff000) >> 12);
|
||||
uint32_t pixelRow1Swapped = ((pixelRow1 & 0x000fff) << 12) | ((pixelRow1 & 0xfff000) >> 12);
|
||||
|
||||
// Swapped Data from row 1 is written
|
||||
block->Alpha.Data[0] = static_cast<uint8_t>(pixelRow1Swapped & 0x0000ff);
|
||||
block->Alpha.Data[1] = static_cast<uint8_t>((pixelRow1Swapped & 0x00ff00) >> 8);
|
||||
block->Alpha.Data[2] = static_cast<uint8_t>((pixelRow1Swapped & 0xff0000) >> 16);
|
||||
|
||||
// Swapped Data from row 0 is written
|
||||
block->Alpha.Data[3] = static_cast<uint8_t>(pixelRow0Swapped & 0x0000ff);
|
||||
block->Alpha.Data[4] = static_cast<uint8_t>((pixelRow0Swapped & 0x00ff00) >> 8);
|
||||
block->Alpha.Data[5] = static_cast<uint8_t>((pixelRow0Swapped & 0xff0000) >> 16);
|
||||
|
||||
std::swap(block->Data.Data[0], block->Data.Data[3]);
|
||||
std::swap(block->Data.Data[1], block->Data.Data[2]);
|
||||
}
|
||||
@@ -1523,10 +1523,12 @@ void DrawFinalPass::BindExplosionTextures(GLuint shaderHandle, std::shared_ptr<E
|
||||
if (job->NormalTexture.size() > 0 && job->NormalTexture[0]->Texture != nullptr) {
|
||||
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[0]->Texture->m_Texture);
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, "NormalUVRepeat"), 1, glm::value_ptr(job->NormalTexture[0]->UVRepeat));
|
||||
glUniform1i(glGetUniformLocation(shaderHandle, "NormalTextureType"), job->NormalTexture[0]->Texture->m_Type);
|
||||
}
|
||||
else {
|
||||
glBindTexture(GL_TEXTURE_2D, m_NeutralNormalTexture->m_Texture);
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, "NormalUVRepeat"), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||
glUniform1i(glGetUniformLocation(shaderHandle, "NormalTextureType"), m_NeutralNormalTexture->m_Type);
|
||||
}
|
||||
|
||||
glActiveTexture(GL_TEXTURE3);
|
||||
@@ -1579,10 +1581,12 @@ void DrawFinalPass::BindExplosionTextures(GLuint shaderHandle, std::shared_ptr<E
|
||||
if (job->NormalTexture.size() > i && job->NormalTexture[i]->Texture != nullptr) {
|
||||
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[i]->Texture->m_Texture);
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->NormalTexture[i]->UVRepeat));
|
||||
glUniform1i(glGetUniformLocation(shaderHandle, "NormalTextureType"), job->NormalTexture[0]->Texture->m_Type);
|
||||
}
|
||||
else {
|
||||
glBindTexture(GL_TEXTURE_2D, m_NeutralNormalTexture->m_Texture);
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||
glUniform1i(glGetUniformLocation(shaderHandle, "NormalTextureType"), m_NeutralNormalTexture->m_Type);
|
||||
}
|
||||
texturePosition++;
|
||||
}
|
||||
@@ -1641,10 +1645,12 @@ void DrawFinalPass::BindModelTextures(GLuint shaderHandle, std::shared_ptr<Model
|
||||
if (job->NormalTexture.size() > 0 && job->NormalTexture[0]->Texture != nullptr) {
|
||||
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[0]->Texture->m_Texture);
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, "NormalUVRepeat"), 1, glm::value_ptr(job->NormalTexture[0]->UVRepeat));
|
||||
glUniform1i(glGetUniformLocation(shaderHandle, "NormalTextureType"), job->NormalTexture[0]->Texture->m_Type);
|
||||
}
|
||||
else {
|
||||
glBindTexture(GL_TEXTURE_2D, m_NeutralNormalTexture->m_Texture);
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, "NormalUVRepeat"), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||
//glUniform2fv(glGetUniformLocation(shaderHandle, "NormalUVRepeat"), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||
glUniform1i(glGetUniformLocation(shaderHandle, "NormalTextureType"), m_NeutralNormalTexture->m_Type);
|
||||
}
|
||||
|
||||
glActiveTexture(GL_TEXTURE3);
|
||||
@@ -1676,57 +1682,60 @@ void DrawFinalPass::BindModelTextures(GLuint shaderHandle, std::shared_ptr<Model
|
||||
int texturePosition = GL_TEXTURE2;
|
||||
|
||||
//Bind 5 diffuse textures
|
||||
std::string UniformName = "DiffuseUVRepeat";
|
||||
std::string UVRepeatName = "DiffuseUVRepeat";
|
||||
for (unsigned int i = 0; i < 3; i++) {
|
||||
glActiveTexture(texturePosition);
|
||||
if (job->DiffuseTexture.size() > i && job->DiffuseTexture[i]->Texture != nullptr) {
|
||||
glBindTexture(GL_TEXTURE_2D, job->DiffuseTexture[i]->Texture->m_Texture);
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->DiffuseTexture[i]->UVRepeat));
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UVRepeatName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->DiffuseTexture[i]->UVRepeat));
|
||||
} else {
|
||||
glBindTexture(GL_TEXTURE_2D, m_WhiteTexture->m_Texture);
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UVRepeatName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||
}
|
||||
texturePosition++;
|
||||
}
|
||||
|
||||
//Bind 5 Normal textures
|
||||
UniformName = "NormalUVRepeat";
|
||||
std::string textureType = "NormalTextureType";
|
||||
UVRepeatName = "NormalUVRepeat";
|
||||
for (unsigned int i = 0; i < 3; i++) {
|
||||
glActiveTexture(texturePosition);
|
||||
if (job->NormalTexture.size() > i && job->NormalTexture[i]->Texture != nullptr) {
|
||||
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[i]->Texture->m_Texture);
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->NormalTexture[i]->UVRepeat));
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UVRepeatName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->NormalTexture[i]->UVRepeat));
|
||||
glUniform1i(glGetUniformLocation(shaderHandle, std::string(textureType + ((char)(i + '1'))).c_str()), job->NormalTexture[i]->Texture->m_Type);
|
||||
} else {
|
||||
glBindTexture(GL_TEXTURE_2D, m_NeutralNormalTexture->m_Texture);
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UVRepeatName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||
glUniform1i(glGetUniformLocation(shaderHandle, std::string(textureType + ((char)(i + '1'))).c_str()), m_NeutralNormalTexture->m_Type);
|
||||
}
|
||||
texturePosition++;
|
||||
}
|
||||
|
||||
//Bind 5 Specular textures
|
||||
UniformName = "SpecularUVRepeat";
|
||||
UVRepeatName = "SpecularUVRepeat";
|
||||
for (unsigned int i = 0; i < 3; i++) {
|
||||
glActiveTexture(texturePosition);
|
||||
if (job->SpecularTexture.size() > i && job->SpecularTexture[i]->Texture != nullptr) {
|
||||
glBindTexture(GL_TEXTURE_2D, job->SpecularTexture[i]->Texture->m_Texture);
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->SpecularTexture[i]->UVRepeat));
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UVRepeatName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->SpecularTexture[i]->UVRepeat));
|
||||
} else {
|
||||
glBindTexture(GL_TEXTURE_2D, m_GreyTexture->m_Texture);
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UVRepeatName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||
}
|
||||
texturePosition++;
|
||||
}
|
||||
|
||||
//Bind 5 Incandescence textures
|
||||
UniformName = "GlowUVRepeat";
|
||||
UVRepeatName = "GlowUVRepeat";
|
||||
for (unsigned int i = 0; i < 3; i++) {
|
||||
glActiveTexture(texturePosition);
|
||||
if (job->IncandescenceTexture.size() > i && job->IncandescenceTexture[i]->Texture != nullptr) {
|
||||
glBindTexture(GL_TEXTURE_2D, job->IncandescenceTexture[i]->Texture->m_Texture);
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->IncandescenceTexture[i]->UVRepeat));
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UVRepeatName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(job->IncandescenceTexture[i]->UVRepeat));
|
||||
} else {
|
||||
glBindTexture(GL_TEXTURE_2D, m_BlackTexture->m_Texture);
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UniformName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||
glUniform2fv(glGetUniformLocation(shaderHandle, std::string(UVRepeatName + ((char)(i + '1'))).c_str()), 1, glm::value_ptr(glm::vec2(1.0f, 1.0f)));
|
||||
}
|
||||
texturePosition++;
|
||||
}
|
||||
|
||||
@@ -96,10 +96,10 @@ PNG::~PNG()
|
||||
|
||||
void PNG::pngErrorFunction(png_structp png_ptr, png_const_charp error_msg)
|
||||
{
|
||||
LOG_WARNING("%s", error_msg);
|
||||
LOG_WARNING("libpng error: %s", error_msg);
|
||||
}
|
||||
|
||||
void PNG::pngWarningFunction(png_structp png_ptr, png_const_charp warning_msg)
|
||||
{
|
||||
LOG_WARNING("%s", warning_msg);
|
||||
LOG_WARNING("libpng warning: %s", warning_msg);
|
||||
}
|
||||
|
||||
@@ -287,7 +287,7 @@ void RawModelCustom::ReadMaterialTextureProperties(RawModelCustom::TextureProper
|
||||
}
|
||||
texture.TexturePath = "Textures/";
|
||||
texture.TexturePath += (fileData + offset);
|
||||
texture.TexturePath += ".png";
|
||||
texture.TexturePath += ".dds";
|
||||
offset += nameLength;
|
||||
if (offset + sizeof(glm::vec2) > fileByteSize) {
|
||||
throw Resource::FailedLoadingException("Reading Material texture UVTiling failed");
|
||||
|
||||
@@ -75,7 +75,7 @@ void Renderer::InitializeWindow()
|
||||
//glfwWindowHint(GLFW_BLUE_BITS, mode->blueBits);
|
||||
//glfwWindowHint(GLFW_REFRESH_RATE, mode->refreshRate);
|
||||
glfwWindowHint(GLFW_DECORATED, false);
|
||||
glfwWindowHint(GLFW_AUTO_ICONIFY, false);
|
||||
//glfwWindowHint(GLFW_AUTO_ICONIFY, false);
|
||||
}
|
||||
|
||||
//glfwWindowHint(GLFW_SAMPLES, 8);
|
||||
@@ -167,17 +167,21 @@ void Renderer::Draw(RenderFrame& frame)
|
||||
{
|
||||
GLERROR("PRE");
|
||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||
#ifdef DEBUG
|
||||
ImGui::Combo("Draw textures", &m_DebugTextureToDraw, "Final\0Scene\0Bloom\0Gaussian\0Picking\0Ambient Occlusion\0Combined Scene Texture\0Full Blurred Texture");
|
||||
ImGui::Combo("CubeMap", &m_CubeMapTexture, "Nevada(512)\0Sky(1024)");
|
||||
#endif
|
||||
if(m_CubeMapTexture == 0) {
|
||||
m_CubeMapPass->LoadTextures("Nevada");
|
||||
} else if (m_CubeMapTexture == 1) {
|
||||
m_CubeMapPass->LoadTextures("Sky");
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
ImGui::SliderInt("SSAO Quality", &m_SSAO_Quality, 0, 3);
|
||||
ImGui::SliderInt("Glow Quality", &m_GLOW_Quality, 0, 3);
|
||||
ImGui::SliderInt("MSAA Level", (int*)&m_MSAA_Level, 0, 16);
|
||||
#endif
|
||||
m_SSAOPass->ChangeQuality(m_SSAO_Quality);
|
||||
m_DrawBloomPass->ChangeQuality(m_GLOW_Quality);
|
||||
m_DrawFinalPass->setMSAA(m_MSAA_Level);
|
||||
|
||||
@@ -25,11 +25,13 @@ ShadowPass::~ShadowPass()
|
||||
|
||||
void ShadowPass::DebugGUI()
|
||||
{
|
||||
#ifdef DEBUG
|
||||
ImGui::Checkbox("EnableShadows", &m_EnableShadows);
|
||||
ImGui::DragFloat2("ShadowMapNearFar", m_NearFarPlane, 1.f, -1000.f, 1000.f);
|
||||
ImGui::DragFloat("ShadowClippingWeight", &m_SplitWeight, 0.001f, 0.f, 1.f);
|
||||
ImGui::Checkbox("ShadowTransparentObjects", &m_TransparentObjects);
|
||||
ImGui::Checkbox("ShadowOnTextureAlphas", &m_TexturedShadows);
|
||||
#endif
|
||||
}
|
||||
|
||||
void ShadowPass::InitializeCameras(RenderScene & scene)
|
||||
|
||||
@@ -2,11 +2,21 @@
|
||||
|
||||
Texture::Texture(std::string path)
|
||||
{
|
||||
PNG* img = ResourceManager::Load<PNG, true>(path); //TODO: Make this threaded. Catch exeptions in all other load places.
|
||||
std::string ext = boost::filesystem::path(path).extension().string();
|
||||
Image* img;
|
||||
if (ext == ".png") {
|
||||
img = ResourceManager::Load<PNG, true>(path);
|
||||
m_Type = TextureType::cPNG;
|
||||
} else if (ext == ".dds") {
|
||||
img = ResourceManager::Load<DDS, true>(path);
|
||||
m_Type = TextureType::cDDS;
|
||||
} else {
|
||||
m_Type = TextureType::cInvalid;
|
||||
throw Resource::FailedLoadingException("Texture extension is not .png nor .dds");
|
||||
}
|
||||
|
||||
this->Width = img->Width;
|
||||
this->Height = img->Height;
|
||||
this->Data = img->Data;
|
||||
|
||||
GLint format;
|
||||
switch (img->Format) {
|
||||
@@ -17,20 +27,59 @@ Texture::Texture(std::string path)
|
||||
format = GL_RGBA;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
//Master hade PNG release here...
|
||||
|
||||
// Construct the OpenGL texture
|
||||
glGenTextures(1, &m_Texture);
|
||||
glBindTexture(GL_TEXTURE_2D, m_Texture);
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, format, img->Width, img->Height, 0, format, GL_UNSIGNED_BYTE, img->Data);
|
||||
glGenerateMipmap(GL_TEXTURE_2D);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
GLERROR("Texture load");
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
||||
if (!img->Compressed) {
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||
}
|
||||
unsigned int w = img->Width;
|
||||
unsigned int h = img->Width;
|
||||
unsigned char* data = img->Data;
|
||||
for (int mipLevel = 0; mipLevel < 1 + img->MipMapLevels; mipLevel++) {
|
||||
if (img->Compressed) {
|
||||
//LOG_DEBUG("mipLevel: %i", mipLevel);
|
||||
//LOG_DEBUG("w: %i", w);
|
||||
//LOG_DEBUG("h: %i", h);
|
||||
|
||||
ResourceManager::Release("PNG", path);
|
||||
std::size_t bpe = 16;
|
||||
std::size_t numBlocksWide = std::max<std::size_t>(1, (w + 3) / 4);
|
||||
std::size_t numBlocksHigh = std::max<std::size_t>(1, (h + 3) / 4);
|
||||
std::size_t rowBytes = numBlocksWide * bpe;
|
||||
std::size_t numRows = numBlocksHigh;
|
||||
std::size_t numBytes = rowBytes * numBlocksHigh;
|
||||
//LOG_DEBUG("numBytes: %i", numBytes);
|
||||
glCompressedTexImage2D(GL_TEXTURE_2D, mipLevel, GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, w, h, 0, numBytes, data);
|
||||
data += numBytes;
|
||||
} else {
|
||||
glTexImage2D(GL_TEXTURE_2D, mipLevel, format, img->Width, img->Height, 0, format, GL_UNSIGNED_BYTE, img->Data);
|
||||
}
|
||||
|
||||
w = w >> 1;
|
||||
h = h >> 1;
|
||||
}
|
||||
//LOG_DEBUG("REMAINDER: %i", img->ByteSize - (data - img->Data));
|
||||
// Generate mipmaps if the image file doesn't contain them
|
||||
if (img->MipMapLevels == 0) {
|
||||
glGenerateMipmap(GL_TEXTURE_2D);
|
||||
}
|
||||
|
||||
if (ext == ".png") {
|
||||
ResourceManager::Release("PNG", path);
|
||||
} else if (ext == ".dds") {
|
||||
ResourceManager::Release("DDS", path);
|
||||
}
|
||||
|
||||
if (GLERROR("Texture load")) {
|
||||
throw Resource::FailedLoadingException("GL texture generation failed");
|
||||
}
|
||||
}
|
||||
|
||||
Texture::~Texture()
|
||||
|
||||
@@ -417,6 +417,14 @@ bool SoundManager::OnSetCamera(const Events::SetCamera& e)
|
||||
alSourcei(m_CurrentBGMCombo->ALsource, AL_LOOPING, 1);
|
||||
setGain(m_CurrentBGMCombo, 0);
|
||||
playSound(m_CurrentBGMCombo);
|
||||
} else if (m_World->HasComponent(e.CameraEntity.ID, "EndScreen")) {
|
||||
float timeOffset = getTimeOffsetSeconds(m_CurrentBGM);
|
||||
stopSound(m_CurrentBGM);
|
||||
m_CurrentBGM = createSource("Audio/BGM/Layer3.wav");
|
||||
m_CurrentBGM->Type = SoundType::BGM;
|
||||
alSourcei(m_CurrentBGM->ALsource, AL_LOOPING, 1);
|
||||
playSound(m_CurrentBGM);
|
||||
setTimeOffsetSeconds(m_CurrentBGM, timeOffset);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -477,6 +485,11 @@ float SoundManager::getTimeOffsetSeconds(Source* source)
|
||||
return time;
|
||||
}
|
||||
|
||||
void SoundManager::setTimeOffsetSeconds(Source * source, float timeOffset)
|
||||
{
|
||||
alSourcef(source->ALsource, AL_SEC_OFFSET, timeOffset);
|
||||
}
|
||||
|
||||
void SoundManager::initOpenAL()
|
||||
{
|
||||
// Initialize OpenAL
|
||||
|
||||
+2
-1
@@ -54,8 +54,9 @@ Game::Game(int argc, char* argv[])
|
||||
ResourceManager::RegisterType<Model>("Model");
|
||||
ResourceManager::RegisterType<RawModel>("RawModel");
|
||||
ResourceManager::RegisterType<Texture>("Texture");
|
||||
ResourceManager::RegisterType<TextureSprite>("TextureSprite");
|
||||
ResourceManager::RegisterType<PNG>("PNG");
|
||||
ResourceManager::RegisterType<TextureSprite>("TextureSprite");
|
||||
ResourceManager::RegisterType<DDS>("DDS");
|
||||
ResourceManager::RegisterType<ShaderProgram>("ShaderProgram");
|
||||
ResourceManager::RegisterType<EntityFile>("EntityFile");
|
||||
ResourceManager::RegisterType<EntityXMLFile>("EntityXMLFile");
|
||||
|
||||
@@ -0,0 +1,138 @@
|
||||
#include "Systems/HealthPickupSystem.h"
|
||||
|
||||
HealthPickupSystem::HealthPickupSystem(SystemParams params)
|
||||
: System(params)
|
||||
{
|
||||
EVENT_SUBSCRIBE_MEMBER(m_ETriggerTouch, &HealthPickupSystem::OnTriggerTouch);
|
||||
EVENT_SUBSCRIBE_MEMBER(m_ETriggerLeave, &HealthPickupSystem::OnTriggerLeave);
|
||||
}
|
||||
|
||||
void HealthPickupSystem::Update(double dt)
|
||||
{
|
||||
for (auto it = m_ETriggerTouchVector.begin(); it != m_ETriggerTouchVector.end(); ++it)
|
||||
{
|
||||
auto& somePickup = *it;
|
||||
//set the double timer value (value 3)
|
||||
somePickup.DecreaseThisRespawnTimer -= dt;
|
||||
if (somePickup.DecreaseThisRespawnTimer < 0.0) {
|
||||
LOG_INFO("loading healthpickup xml");
|
||||
|
||||
//spawn and delete the vector item
|
||||
auto entityFile = ResourceManager::Load<EntityFile>("Schema/Entities/HealthPickup.xml");
|
||||
EntityFileParser parser(entityFile);
|
||||
EntityID healthPickupID = parser.MergeEntities(m_World);
|
||||
LOG_INFO("finished loading healthpickup xml");
|
||||
|
||||
//let the world know a pickup has spawned (graphics effects, etc)
|
||||
Events::PickupSpawned ePickupSpawned;
|
||||
ePickupSpawned.Pickup = EntityWrapper(m_World, healthPickupID);
|
||||
m_EventBroker->Publish(ePickupSpawned);
|
||||
LOG_INFO("event published");
|
||||
|
||||
//set values from the old entity to the new entity
|
||||
auto& newHealthPickupEntity = EntityWrapper(m_World, healthPickupID);
|
||||
LOG_INFO("healthpickup id %i", healthPickupID);
|
||||
newHealthPickupEntity["Transform"]["Position"] = somePickup.Pos;
|
||||
newHealthPickupEntity["HealthPickup"]["HealthGain"] = somePickup.HealthGain;
|
||||
newHealthPickupEntity["HealthPickup"]["RespawnTimer"] = somePickup.RespawnTimer;
|
||||
m_World->SetParent(newHealthPickupEntity.ID, somePickup.parentID);
|
||||
LOG_INFO("healthpickup parented to %i", somePickup.parentID);
|
||||
//erase the current element (somePickup)
|
||||
m_ETriggerTouchVector.erase(it);
|
||||
break;
|
||||
}
|
||||
}
|
||||
//still touching AmmoPickupAtMaxHealthAmmo?
|
||||
for (auto& it = m_PickupAtMaximum.begin(); it != m_PickupAtMaximum.end(); ++it) {
|
||||
if (!it->player.Valid()) {
|
||||
LOG_INFO("player no longer valid, erasing maxPickup");
|
||||
m_PickupAtMaximum.erase(it);
|
||||
break;
|
||||
|
||||
}
|
||||
if ((double)it->player["Health"]["Health"] < (double)it->player["Health"]["MaxHealth"]) {
|
||||
LOG_INFO("maxhealth found in pickupmax.. yada yada");
|
||||
DoPickup(it->player, it->pickup, it->trigger);
|
||||
m_PickupAtMaximum.erase(it);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool HealthPickupSystem::OnTriggerTouch(Events::TriggerTouch& e)
|
||||
{
|
||||
LOG_INFO("OnTriggerTouch");
|
||||
if (!e.Trigger.HasComponent("HealthPickup")) {
|
||||
return false;
|
||||
}
|
||||
LOG_INFO("touch start");
|
||||
|
||||
//cant pick up healthpacks if you are already at MaxHealth
|
||||
if ((double)e.Entity["Health"]["Health"] >= (double)e.Entity["Health"]["MaxHealth"]) {
|
||||
LOG_INFO("triggertouch enter at maxhealth");
|
||||
//push back a copy of the entitys data, rather than e.trigger. since the server might delete e.trigger before client can use it
|
||||
m_PickupAtMaximum.push_back({ e.Entity,{ (glm::vec3)e.Trigger["Transform"]["Position"] ,e.Trigger["HealthPickup"]["HealthGain"],
|
||||
e.Trigger["HealthPickup"]["RespawnTimer"],e.Trigger["HealthPickup"]["RespawnTimer"], m_World->GetParent(e.Trigger.ID) } , e.Trigger });
|
||||
return false;
|
||||
}
|
||||
LOG_INFO("touch doing pickup");
|
||||
|
||||
DoPickup(e.Entity, e.Trigger);
|
||||
return true;
|
||||
}
|
||||
bool HealthPickupSystem::OnTriggerLeave(Events::TriggerLeave& e) {
|
||||
//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) {
|
||||
LOG_INFO("trigger leave - erasing max");
|
||||
m_PickupAtMaximum.erase(it);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void HealthPickupSystem::DoPickup(EntityWrapper &player, EntityWrapper &trigger) {
|
||||
double healthGiven = 0.01*(double)trigger["HealthPickup"]["HealthGain"] * (double)player["Health"]["MaxHealth"];
|
||||
LOG_INFO("do pickup start");
|
||||
|
||||
//personEntered = e.Entity, thingEntered = e.Trigger
|
||||
//only the server will increase the players hp and set it in the next delta
|
||||
if (player.ID != LocalPlayer.ID && ResourceManager::Load<ConfigFile>("Config.ini")->Get("Networking.StartNetwork", false)) {
|
||||
Events::PlayerHealthPickup ePlayerHealthPickup;
|
||||
ePlayerHealthPickup.HealthAmount = healthGiven;
|
||||
ePlayerHealthPickup.Player = player;
|
||||
m_EventBroker->Publish(ePlayerHealthPickup);
|
||||
LOG_INFO("do pickup event published");
|
||||
}
|
||||
//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
|
||||
m_ETriggerTouchVector.push_back({ (glm::vec3)trigger["Transform"]["Position"] ,trigger["HealthPickup"]["HealthGain"],
|
||||
trigger["HealthPickup"]["RespawnTimer"],trigger["HealthPickup"]["RespawnTimer"], m_World->GetParent(trigger.ID) });
|
||||
LOG_INFO("pickup set id to %i", trigger.ID);
|
||||
|
||||
//delete the healthpickup
|
||||
m_World->DeleteEntity(trigger.ID);
|
||||
}
|
||||
|
||||
//to be used with at-max-health-pickup
|
||||
void HealthPickupSystem::DoPickup(EntityWrapper &player, NewHealthPickup &triggerCopy, EntityWrapper &trigger) {
|
||||
double healthGiven = 0.01*triggerCopy.HealthGain * (double)player["Health"]["MaxHealth"];
|
||||
LOG_INFO("do pickup start");
|
||||
|
||||
//only the server will increase the players hp and set it in the next delta
|
||||
if (player.ID != LocalPlayer.ID && ResourceManager::Load<ConfigFile>("Config.ini")->Get("Networking.StartNetwork", false)) {
|
||||
Events::PlayerHealthPickup ePlayerHealthPickup;
|
||||
ePlayerHealthPickup.HealthAmount = healthGiven;
|
||||
ePlayerHealthPickup.Player = player;
|
||||
m_EventBroker->Publish(ePlayerHealthPickup);
|
||||
LOG_INFO("do pickup event published");
|
||||
}
|
||||
m_ETriggerTouchVector.push_back(triggerCopy);
|
||||
//LOG_INFO("pickup set id to %i", trigger.ID);
|
||||
|
||||
//delete the healthpickup
|
||||
if (trigger.Valid()) {
|
||||
m_World->DeleteEntity(trigger.ID);
|
||||
}
|
||||
}
|
||||
@@ -25,9 +25,9 @@ bool HealthSystem::OnPlayerDamaged(Events::PlayerDamage& e)
|
||||
//if player has the boost from a defender, subtract the damage taken by StrengthOfEffect amount
|
||||
auto playerBoostDefenderEntity = e.Victim.FirstChildByName("BoostDefender");
|
||||
if (playerBoostDefenderEntity.Valid()) {
|
||||
e.Damage -= (double)playerBoostDefenderEntity["BoostDefender"]["StrengthOfEffect"];
|
||||
e.Damage -= (const double&)playerBoostDefenderEntity["BoostDefender"]["StrengthOfEffect"];
|
||||
}
|
||||
if (health > 0) {
|
||||
if (health > 0 && e.Damage > 0) {
|
||||
health -= e.Damage;
|
||||
if (health <= 0.0) {
|
||||
Events::PlayerDeath ePlayerDeath;
|
||||
|
||||
@@ -135,6 +135,8 @@ bool MainMenuSystem::OnInputCommand(const Events::InputCommand& e)
|
||||
OpenSubMenu(e);
|
||||
} else if (e.Command == "Resolution" && e.Value == 1) {
|
||||
OpenDropDown(e);
|
||||
} else if (e.Command == "Quit" && e.Value == 1) {
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -10,8 +10,7 @@ PlayerDeathSystem::PlayerDeathSystem(SystemParams params)
|
||||
}
|
||||
|
||||
void PlayerDeathSystem::Update(double dt)
|
||||
{
|
||||
}
|
||||
{ }
|
||||
|
||||
bool PlayerDeathSystem::OnPlayerDeath(Events::PlayerDeath& e)
|
||||
{
|
||||
@@ -33,31 +32,35 @@ void PlayerDeathSystem::createDeathEffect(EntityWrapper player)
|
||||
auto entityFile = ResourceManager::Load<EntityFile>("Schema/Entities/PlayerDeathExplosionWithCamera.xml");
|
||||
EntityWrapper deathEffectEW = entityFile->MergeInto(m_World);
|
||||
|
||||
//components that we need from player
|
||||
auto playerModel = player.FirstChildByName("PlayerModel");
|
||||
if (!playerModel.HasComponent("Model") || !playerModel.HasComponent("Animation")) {
|
||||
if (!playerModel.Valid()) {
|
||||
if (player == LocalPlayer) {
|
||||
setSpectatorCamera();
|
||||
}
|
||||
return;
|
||||
}
|
||||
auto playerEntityModel = playerModel["Model"];
|
||||
auto playerEntityAnimation = playerModel["Animation"];
|
||||
|
||||
//copy the data from player to explosioneffectmodel
|
||||
playerEntityModel.Copy(deathEffectEW["Model"]);
|
||||
playerEntityAnimation.Copy(deathEffectEW["Animation"]);
|
||||
|
||||
//copy the models position,orientation
|
||||
deathEffectEW["Transform"]["Position"] = (glm::vec3)player["Transform"]["Position"];
|
||||
deathEffectEW["Transform"]["Orientation"] = (glm::vec3)player["Transform"]["Orientation"];
|
||||
//effect,camera is relative to playersPosition
|
||||
//deathEffectEW["ExplosionEffect"]["ExplosionOrigin"] = glm::vec3(0, 0, 0);
|
||||
|
||||
if (!playerModel.HasComponent("Model")) {
|
||||
return;
|
||||
}
|
||||
EntityWrapper deathEffect = playerModel.Clone();
|
||||
for (auto& cAnim : deathEffect.ChildrenWithComponent("Animation")) {
|
||||
cAnim["Animation"]["Play"] = false;
|
||||
}
|
||||
deathEffect.AttachComponent("ExplosionEffect");
|
||||
deathEffectEW["ExplosionEffect"].Copy(deathEffect["ExplosionEffect"]);
|
||||
deathEffect.AttachComponent("Lifetime");
|
||||
deathEffectEW["Lifetime"].Copy(deathEffect["Lifetime"]);
|
||||
deathEffect["Transform"]["Position"] = (glm::vec3)player["Transform"]["Position"];
|
||||
deathEffect["Transform"]["Orientation"] = (glm::vec3)player["Transform"]["Orientation"];
|
||||
for (auto& cModel : deathEffect.ChildrenWithComponent("Model")) {
|
||||
EntityWrapper e(m_World, cModel.ID);
|
||||
e.AttachComponent("ExplosionEffect");
|
||||
deathEffectEW["ExplosionEffect"].Copy(e["ExplosionEffect"]);
|
||||
}
|
||||
EntityWrapper cam = deathEffectEW.FirstChildByName("Camera").Clone(deathEffect);
|
||||
//camera (with lifetime) behind the player
|
||||
if (player == LocalPlayer) {
|
||||
m_LocalPlayerDeathEffect = deathEffectEW;
|
||||
auto cam = deathEffectEW.FirstChildByName("Camera");
|
||||
m_LocalPlayerDeathEffect = deathEffect;
|
||||
Events::SetCamera eSetCamera;
|
||||
eSetCamera.CameraEntity = cam;
|
||||
m_EventBroker->Publish(eSetCamera);
|
||||
|
||||
@@ -202,12 +202,18 @@ void PlayerMovementSystem::updateMovementControllers(double dt)
|
||||
|
||||
if (addSpeed > 0) {
|
||||
static float accel = 15.f;
|
||||
#ifdef DEBUG
|
||||
ImGui::InputFloat("accel", &accel);
|
||||
#endif
|
||||
static float airAccel = 0.5f;
|
||||
#ifdef DEBUG
|
||||
ImGui::InputFloat("airAccel", &airAccel);
|
||||
#endif
|
||||
float actualAccel = isOnGround ? accel : airAccel;
|
||||
static float surfaceFriction = 5.f;
|
||||
#ifdef DEBUG
|
||||
ImGui::InputFloat("surfaceFriction", &surfaceFriction);
|
||||
#endif
|
||||
float accelerationSpeed = actualAccel * (float)dt * wishSpeed * surfaceFriction;
|
||||
//if doubleTapped do Assault Dash - but only boost maximum 50.0f
|
||||
float doubleTapDashBoost = controller->AssaultDashDoubleTapped() ? 40.0f : 1.0f;
|
||||
@@ -220,7 +226,9 @@ void PlayerMovementSystem::updateMovementControllers(double dt)
|
||||
accelerationSpeed *= (double)player["SprintAbility"]["StrengthOfEffect"];
|
||||
}
|
||||
velocity += accelerationSpeed * (glm::vec3)wishDirection;
|
||||
#ifdef DEBUG
|
||||
ImGui::Text("velocity: (%f, %f, %f) |%f|", velocity.x(), velocity.y(), velocity.z(), glm::length((glm::vec3)velocity));
|
||||
#endif
|
||||
}
|
||||
|
||||
if (isOnGround) {
|
||||
@@ -336,10 +344,14 @@ void PlayerMovementSystem::updateVelocity(EntityWrapper player, double dt)
|
||||
// Ground friction
|
||||
float speed = glm::length((glm::vec3)velocity);
|
||||
static float groundFriction = 7.f;
|
||||
#ifdef DEBUG
|
||||
ImGui::InputFloat("groundFriction", &groundFriction);
|
||||
#endif
|
||||
static float airFriction = 2.f;
|
||||
|
||||
#ifdef DEBUG
|
||||
ImGui::InputFloat("airFriction", &airFriction);
|
||||
#endif
|
||||
float friction = isOnGround ? groundFriction : airFriction;
|
||||
if (speed > 0) {
|
||||
float drop = speed * friction * (float)dt;
|
||||
|
||||
@@ -87,6 +87,9 @@ bool SoundSystem::OnPlayerDamage(const Events::PlayerDamage & e)
|
||||
if (!e.Victim.Valid() || !e.Inflictor.Valid()) {
|
||||
return false;
|
||||
}
|
||||
if (e.Victim.ID != LocalPlayer.ID) {
|
||||
return false;
|
||||
}
|
||||
auto victimTeam = m_World->GetComponent(e.Victim.ID, "Team");
|
||||
auto inflictorTeam = m_World->GetComponent(e.Inflictor.ID, "Team");
|
||||
if ((int)victimTeam["Team"] == (int)inflictorTeam["Team"]) {
|
||||
|
||||
@@ -14,7 +14,19 @@ void AssaultWeaponBehaviour::UpdateWeapon(ComponentWrapper cWeapon, WeaponInfo&
|
||||
// Start reloading automatically if at 0 mag ammo
|
||||
Field<int> magAmmo = cWeapon["MagazineAmmo"];
|
||||
if (m_ConfigAutoReload && magAmmo <= 0) {
|
||||
OnReload(cWeapon, wi);
|
||||
//OnReload(cWeapon, wi);
|
||||
// Send an input command instead of reloading immediately so the server
|
||||
// has a chance to catch up.
|
||||
if (IsClient) {
|
||||
Events::InputCommand e;
|
||||
e.Player = wi.Player;
|
||||
e.PlayerID = -1;
|
||||
e.Command = "Reload";
|
||||
e.Value = 1;
|
||||
m_EventBroker->Publish(e);
|
||||
e.Value = 0;
|
||||
m_EventBroker->Publish(e);
|
||||
}
|
||||
}
|
||||
|
||||
// Only start reloading once we're done firing
|
||||
@@ -235,7 +247,8 @@ void AssaultWeaponBehaviour::fireBullet(ComponentWrapper cWeapon, WeaponInfo& wi
|
||||
float distance = traceRayDistance(origin, direction);
|
||||
EntityWrapper ray = SpawnerSystem::Spawn(tracerSpawner, tracerSpawner);
|
||||
if (ray.Valid()) {
|
||||
((Field<glm::vec3>)ray["Transform"]["Scale"]).z(distance);
|
||||
((Field<glm::vec3>)ray["Transform"]["Scale"]).x(distance);
|
||||
((Field<glm::vec3>)ray["Transform"]["Position"]).z(-distance/2.f);
|
||||
}
|
||||
}
|
||||
//MuzzleFlash
|
||||
|
||||
@@ -395,9 +395,12 @@ void DefenderWeaponBehaviour::spawnTracers(ComponentWrapper cWeapon, WeaponInfo&
|
||||
glm::vec3 muzzlePosition = TransformSystem::AbsolutePosition(muzzle);
|
||||
glm::quat muzzleOrientation = TransformSystem::AbsoluteOrientation(muzzle);
|
||||
|
||||
rayOrigin = muzzlePosition;
|
||||
|
||||
glm::vec3 muzzleToHit = hitPosition - muzzlePosition;
|
||||
|
||||
rayOrigin = muzzlePosition + (muzzleToHit/2.f);
|
||||
|
||||
|
||||
glm::vec3 lookVector = glm::normalize(-muzzleToHit);
|
||||
float pitch = std::asin(-lookVector.y);
|
||||
float yaw = std::atan2(lookVector.x, lookVector.z);
|
||||
@@ -459,8 +462,8 @@ void DefenderWeaponBehaviour::dealDamage(ComponentWrapper cWeapon, WeaponInfo& w
|
||||
}
|
||||
|
||||
// Temp hit decal
|
||||
EntityWrapper hit = ResourceManager::Load<EntityFile>("Schema/Entities/HitTest.xml")->MergeInto(m_World);
|
||||
(Field<glm::vec3>)hit["Transform"]["Position"] = pick.Position;
|
||||
// EntityWrapper hit = ResourceManager::Load<EntityFile>("Schema/Entities/HitTest.xml")->MergeInto(m_World);
|
||||
// (Field<glm::vec3>)hit["Transform"]["Position"] = pick.Position;
|
||||
|
||||
// Don't let us shoot ourselves in the foot somehow
|
||||
if (victim == LocalPlayer) {
|
||||
@@ -477,12 +480,17 @@ void DefenderWeaponBehaviour::dealDamage(ComponentWrapper cWeapon, WeaponInfo& w
|
||||
|
||||
// Check for friendly fire
|
||||
if ((ComponentInfo::EnumType)victim["Team"]["Team"] == (ComponentInfo::EnumType)wi.Player["Team"]["Team"]) {
|
||||
// TODO: Ammo sharing
|
||||
// Give boost
|
||||
Events::PlayerDamage ePlayerDamage;
|
||||
ePlayerDamage.Inflictor = wi.Player;
|
||||
ePlayerDamage.Victim = victim;
|
||||
ePlayerDamage.Damage = 0;
|
||||
m_EventBroker->Publish(ePlayerDamage);
|
||||
continue;
|
||||
}
|
||||
|
||||
damageSum[victim] += pelletDamage;
|
||||
((Field<glm::vec4>)hit["Model"]["Color"]).z(1.f);
|
||||
// ((Field<glm::vec4>)hit["Model"]["Color"]).z(1.f);
|
||||
}
|
||||
|
||||
// Deal damage!
|
||||
@@ -493,7 +501,6 @@ void DefenderWeaponBehaviour::dealDamage(ComponentWrapper cWeapon, WeaponInfo& w
|
||||
ePlayerDamage.Victim = kv.first;
|
||||
ePlayerDamage.Damage = kv.second;
|
||||
m_EventBroker->Publish(ePlayerDamage);
|
||||
LOG_DEBUG("Dealt %f damage to #%i", kv.second, kv.first.ID);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -223,15 +223,16 @@ void SidearmWeaponBehaviour::fireBullet(ComponentWrapper cWeapon, WeaponInfo& wi
|
||||
return;
|
||||
}
|
||||
|
||||
//Tracer
|
||||
// Tracer
|
||||
EntityWrapper tracerSpawner = weaponModelEntity.FirstChildByName("WeaponMuzzleRay");
|
||||
if (tracerSpawner.Valid()) {
|
||||
glm::vec3 origin = TransformSystem::AbsolutePosition(tracerSpawner);
|
||||
glm::vec3 direction = TransformSystem::AbsoluteOrientation(tracerSpawner) * glm::vec3(0, 0, -1);
|
||||
glm::vec3 direction = glm::quat(TransformSystem::AbsoluteOrientationEuler(tracerSpawner)) * glm::vec3(0, 0, -1);
|
||||
float distance = traceRayDistance(origin, direction);
|
||||
EntityWrapper ray = SpawnerSystem::Spawn(tracerSpawner, tracerSpawner);
|
||||
if (ray.Valid()) {
|
||||
((Field<glm::vec3>)ray["Transform"]["Scale"]).z(distance);
|
||||
((Field<glm::vec3>)ray["Transform"]["Scale"]).x(distance);
|
||||
((Field<glm::vec3>)ray["Transform"]["Position"]).z(-distance/2.f);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
using boost::unit_test_framework::test_suite;
|
||||
using boost::unit_test_framework::test_case;
|
||||
|
||||
#include "PickupSpawnTest.h"
|
||||
#include "HealthPickupTest.h"
|
||||
|
||||
BOOST_AUTO_TEST_SUITE(PickupSpawnTestSuite)
|
||||
|
||||
@@ -41,7 +41,7 @@ PickupSpawnTest::PickupSpawnTest(int runTestNumber)
|
||||
// Create system pipeline
|
||||
m_SystemPipeline = new SystemPipeline(m_World, m_EventBroker, false, false);
|
||||
m_SystemPipeline->AddSystem<HealthSystem>(0);
|
||||
m_SystemPipeline->AddSystem<PickupSpawnSystem>(1);
|
||||
m_SystemPipeline->AddSystem<HealthPickupSystem>(1);
|
||||
|
||||
//must register components (Components.xsd), else you cant create entities. Easiest done by loading a test xsd file
|
||||
auto file = ResourceManager::Load<EntityXMLFile>("Schema/Entities/HealthPickup.xml");
|
||||
@@ -31,7 +31,7 @@
|
||||
#include "Collision/CollisionSystem.h"
|
||||
#include "Core/EntityXMLFileWriter.h"
|
||||
#include "Game/Systems/HealthSystem.h"
|
||||
#include "Game/Systems/PickupSpawnSystem.h"
|
||||
#include "Game/Systems/HealthPickupSystem.h"
|
||||
|
||||
#include "Core/ResourceManager.h"
|
||||
|
||||
@@ -56,9 +56,9 @@ private:
|
||||
EntityID m_PlayerID, m_HealthPickupID;
|
||||
int m_RunTestNumber;
|
||||
|
||||
EventRelay<PickupSpawnSystem, Events::PlayerHealthPickup> m_HP;
|
||||
EventRelay<HealthPickupSystem, Events::PlayerHealthPickup> m_HP;
|
||||
bool OnHealthPickup(Events::PlayerHealthPickup& e);
|
||||
EventRelay<PickupSpawnSystem, Events::PickupSpawned> m_PS;
|
||||
EventRelay<HealthPickupSystem, Events::PickupSpawned> m_PS;
|
||||
bool OnPickupSpawned(Events::PickupSpawned& e);
|
||||
|
||||
bool m_TestStage1Success = false;
|
||||
Reference in New Issue
Block a user