Compare commits
65 Commits
Importer
...
AndersTest
| 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");
|
EntityWrapper firstPersonModel = m_PlayerEntity.FirstChildByName("Hands");
|
||||||
if (firstPersonModel.Valid()) {
|
if (firstPersonModel.Valid()) {
|
||||||
if (val > 0) { // Walk/Run
|
if (val > 0) { // Walk/Run
|
||||||
|
|||||||
@@ -36,6 +36,7 @@
|
|||||||
#include "Network/ESearchForServers.h"
|
#include "Network/ESearchForServers.h"
|
||||||
#include "Network/EInterpolate.h"
|
#include "Network/EInterpolate.h"
|
||||||
#include "Network/SnapshotFilter.h"
|
#include "Network/SnapshotFilter.h"
|
||||||
|
#include "Core/EWin.h"
|
||||||
|
|
||||||
class Client : public Network
|
class Client : public Network
|
||||||
{
|
{
|
||||||
@@ -107,6 +108,7 @@ private:
|
|||||||
void parseAmmoPickup(Packet& packet);
|
void parseAmmoPickup(Packet& packet);
|
||||||
void parseRemoveWorld(Packet& packet);
|
void parseRemoveWorld(Packet& packet);
|
||||||
void parseKDEvent(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 InterpolateFields(Packet& packet, const ComponentInfo & componentInfo, const EntityID & entityID, const std::string & componentType);
|
||||||
void parseSnapshot(Packet& packet);
|
void parseSnapshot(Packet& packet);
|
||||||
void identifyPacketLoss();
|
void identifyPacketLoss();
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ enum class MessageType
|
|||||||
AmmoPickup,
|
AmmoPickup,
|
||||||
RemoveWorld,
|
RemoveWorld,
|
||||||
KD,
|
KD,
|
||||||
|
Win,
|
||||||
Invalid
|
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 Width = 0;
|
||||||
unsigned int Height = 0;
|
unsigned int Height = 0;
|
||||||
ImageFormat Format = ImageFormat::Unknown;
|
ImageFormat Format = ImageFormat::Unknown;
|
||||||
|
unsigned int MipMapLevels = 0;
|
||||||
|
bool Compressed = false;
|
||||||
unsigned char* Data = nullptr;
|
unsigned char* Data = nullptr;
|
||||||
|
std::size_t ByteSize = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
#ifndef Texture_h__
|
#ifndef Texture_h__
|
||||||
#define Texture_h__
|
#define Texture_h__
|
||||||
|
|
||||||
|
#include <boost/filesystem.hpp>
|
||||||
#include "../OpenGL.h"
|
#include "../OpenGL.h"
|
||||||
#include "BaseTexture.h"
|
#include "BaseTexture.h"
|
||||||
#include "PNG.h"
|
#include "PNG.h"
|
||||||
|
#include "DDS.h"
|
||||||
|
|
||||||
class Texture : public BaseTexture
|
class Texture : public BaseTexture
|
||||||
{
|
{
|
||||||
@@ -18,8 +20,9 @@ public:
|
|||||||
void Bind(GLenum textureUnit = GL_TEXTURE0);
|
void Bind(GLenum textureUnit = GL_TEXTURE0);
|
||||||
|
|
||||||
GLuint m_Texture = 0;
|
GLuint m_Texture = 0;
|
||||||
unsigned char* Data = nullptr;
|
|
||||||
|
enum TextureType : GLint { cInvalid = 0, cDDS = 1, cPNG = 2};
|
||||||
|
TextureType m_Type;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -14,11 +14,6 @@ protected:
|
|||||||
TextureSprite(std::string path);
|
TextureSprite(std::string path);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void Bind(GLenum textureUnit = GL_TEXTURE0);
|
|
||||||
|
|
||||||
GLuint m_Texture = 0;
|
|
||||||
unsigned char* Data = nullptr;
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ private:
|
|||||||
void setSoundProperties(Source* source, ComponentWrapper* soundComponent);
|
void setSoundProperties(Source* source, ComponentWrapper* soundComponent);
|
||||||
float getDurationSeconds(Source* source);
|
float getDurationSeconds(Source* source);
|
||||||
float getTimeOffsetSeconds(Source* source);
|
float getTimeOffsetSeconds(Source* source);
|
||||||
|
void setTimeOffsetSeconds(Source* source, float timeOffset);
|
||||||
|
|
||||||
// Specific logic
|
// Specific logic
|
||||||
void playSound(Source* source);
|
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 "Input/EInputCommand.h"
|
||||||
#include "Network/ESearchForServers.h"
|
#include "Network/ESearchForServers.h"
|
||||||
#include "Network/EConnectRequest.h"
|
#include "Network/EConnectRequest.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
|
||||||
class MainMenuSystem : public ImpureSystem
|
class MainMenuSystem : public ImpureSystem
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ AutoReload=true
|
|||||||
|
|
||||||
[Debug]
|
[Debug]
|
||||||
LogLevel=1
|
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 true -> Pool allocation is not used when calling Allocate/Free, just use regular dynamic allocation.
|
||||||
; if false -> Use pool allocation.
|
; if false -> Use pool allocation.
|
||||||
DisableMemoryPool=false
|
DisableMemoryPool=false
|
||||||
RespawnTime = -1.0
|
RespawnTime=-1.0
|
||||||
EditorEnabled=false
|
EditorEnabled=false
|
||||||
OutOfBodyExperience=false
|
OutOfBodyExperience=false
|
||||||
|
|
||||||
@@ -22,7 +22,7 @@ Height=720
|
|||||||
FOV=45
|
FOV=45
|
||||||
|
|
||||||
[Networking]
|
[Networking]
|
||||||
StartNetwork=false
|
StartNetwork=true
|
||||||
IsServer=false
|
IsServer=false
|
||||||
Name=Bob
|
Name=Bob
|
||||||
Address=127.0.0.1
|
Address=127.0.0.1
|
||||||
@@ -30,7 +30,7 @@ Port=27666
|
|||||||
MaxConnections=8
|
MaxConnections=8
|
||||||
SnapshotInterval=0.05
|
SnapshotInterval=0.05
|
||||||
SendInputIntervalMs=33
|
SendInputIntervalMs=33
|
||||||
PingIntervalMs= 1000
|
PingIntervalMs=1000
|
||||||
TimeoutMs=15000
|
TimeoutMs=15000
|
||||||
|
|
||||||
[Multithreading]
|
[Multithreading]
|
||||||
@@ -43,7 +43,7 @@ AnnouncerVolume=1.0
|
|||||||
Announcer=female
|
Announcer=female
|
||||||
|
|
||||||
[SSAO]
|
[SSAO]
|
||||||
Quality=0
|
Quality=1
|
||||||
|
|
||||||
[SSAO1]
|
[SSAO1]
|
||||||
Radius=1.0
|
Radius=1.0
|
||||||
@@ -88,4 +88,4 @@ NumIterations=4
|
|||||||
NumIterations=6
|
NumIterations=6
|
||||||
|
|
||||||
[MSAA]
|
[MSAA]
|
||||||
Level = 0;
|
Level=2
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[Mouse]
|
[Mouse]
|
||||||
Sensitivity=0.5
|
Sensitivity=0.05
|
||||||
InvertPitch=false
|
InvertPitch=false
|
||||||
|
|
||||||
[Keyboard]
|
[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>
|
</Team>
|
||||||
</c:Team>
|
</c:Team>
|
||||||
<c:PlayerSpawn>
|
<c:PlayerSpawn>
|
||||||
<AssaultFile>Schema/Entities/PlayerAssaultBlue.xml</AssaultFile>
|
<AssaultFile>Schema/Entities/PlayerAssaultRed.xml</AssaultFile>
|
||||||
<DefenderFile>Schema/Entities/PlayerDefenderBlue.xml</DefenderFile>
|
<DefenderFile>Schema/Entities/PlayerDefenderRed.xml</DefenderFile>
|
||||||
<SniperFile></SniperFile>
|
<SniperFile></SniperFile>
|
||||||
</c:PlayerSpawn>
|
</c:PlayerSpawn>
|
||||||
<c:Spawner>
|
<c:Spawner>
|
||||||
@@ -115,7 +115,7 @@
|
|||||||
<Color A="1" B="1" G="0.254901975" R="0"/>
|
<Color A="1" B="1" G="0.254901975" R="0"/>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="-0.600000024" Y="0" Z="0.549540162"/>
|
<Position X="0.800000012" Y="0" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
@@ -128,7 +128,7 @@
|
|||||||
<Color A="1" B="1" G="0.254901975" R="0"/>
|
<Color A="1" B="1" G="0.254901975" R="0"/>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0.800000012" Y="0" Z="0"/>
|
<Position X="-0.600000024" Y="0" Z="0.549540162"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
|
|||||||
@@ -130,6 +130,66 @@
|
|||||||
</Entity>
|
</Entity>
|
||||||
</Children>
|
</Children>
|
||||||
</Entity>
|
</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>
|
</Children>
|
||||||
|
|
||||||
</Entity>
|
</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>
|
<c:Lifetime>
|
||||||
<Lifetime>0.079999998211860657</Lifetime>
|
<Lifetime>0.079999998211860657</Lifetime>
|
||||||
</c:Lifetime>
|
</c:Lifetime>
|
||||||
|
<c:NetworkComponent/>
|
||||||
<c:Transform/>
|
<c:Transform/>
|
||||||
</Components>
|
</Components>
|
||||||
|
|
||||||
@@ -17,10 +18,8 @@
|
|||||||
<DiffuseTexture>Textures/Effects/NewRay5.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Effects/NewRay5.png</DiffuseTexture>
|
||||||
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
||||||
<KeepRatio>true</KeepRatio>
|
<KeepRatio>true</KeepRatio>
|
||||||
<Linear>true</Linear>
|
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0" Z="-0.5"/>
|
|
||||||
<Orientation X="0" Y="-1.57099998" Z="0"/>
|
<Orientation X="0" Y="-1.57099998" Z="0"/>
|
||||||
<Scale X="1" Y="0.0700000003" Z="0"/>
|
<Scale X="1" Y="0.0700000003" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
@@ -35,10 +34,8 @@
|
|||||||
<DiffuseTexture>Textures/Effects/NewRay5.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Effects/NewRay5.png</DiffuseTexture>
|
||||||
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
||||||
<KeepRatio>true</KeepRatio>
|
<KeepRatio>true</KeepRatio>
|
||||||
<Linear>true</Linear>
|
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0" Z="-0.5"/>
|
|
||||||
<Orientation X="0" Y="4.71218538" Z="3.14199996"/>
|
<Orientation X="0" Y="4.71218538" Z="3.14199996"/>
|
||||||
<Scale X="1" Y="0.0700000003" Z="0"/>
|
<Scale X="1" Y="0.0700000003" Z="0"/>
|
||||||
</c:Transform>
|
</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>
|
<c:Lifetime>
|
||||||
<Lifetime>0.079999998211860657</Lifetime>
|
<Lifetime>0.079999998211860657</Lifetime>
|
||||||
</c:Lifetime>
|
</c:Lifetime>
|
||||||
|
<c:NetworkComponent/>
|
||||||
<c:Transform/>
|
<c:Transform/>
|
||||||
</Components>
|
</Components>
|
||||||
|
|
||||||
@@ -17,12 +18,10 @@
|
|||||||
<DiffuseTexture>Textures/Effects/NewRay7.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Effects/NewRay7.png</DiffuseTexture>
|
||||||
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
||||||
<KeepRatio>true</KeepRatio>
|
<KeepRatio>true</KeepRatio>
|
||||||
<Linear>true</Linear>
|
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0" Z="-0.5"/>
|
|
||||||
<Orientation X="0" Y="-1.57099998" Z="0"/>
|
<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>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
@@ -35,12 +34,10 @@
|
|||||||
<DiffuseTexture>Textures/Effects/NewRay7.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Effects/NewRay7.png</DiffuseTexture>
|
||||||
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
||||||
<KeepRatio>true</KeepRatio>
|
<KeepRatio>true</KeepRatio>
|
||||||
<Linear>true</Linear>
|
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0" Z="-0.5"/>
|
|
||||||
<Orientation X="0" Y="4.71218538" Z="3.14199996"/>
|
<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>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<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>
|
<Components>
|
||||||
<c:Lifetime>
|
<c:Lifetime>
|
||||||
<Lifetime>0.08</Lifetime>
|
<Lifetime>0.080000000000000002</Lifetime>
|
||||||
</c:Lifetime>
|
</c:Lifetime>
|
||||||
<c:Fade>
|
<c:Fade>
|
||||||
<FadeTime>0.08</FadeTime>
|
<FadeTime>0.080000000000000002</FadeTime>
|
||||||
</c:Fade>
|
</c:Fade>
|
||||||
|
<c:NetworkComponent/>
|
||||||
<c:Transform/>
|
<c:Transform/>
|
||||||
</Components>
|
</Components>
|
||||||
|
|
||||||
@@ -20,10 +21,8 @@
|
|||||||
<DiffuseTexture>Textures/Effects/NewRay5.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Effects/NewRay5.png</DiffuseTexture>
|
||||||
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
||||||
<KeepRatio>true</KeepRatio>
|
<KeepRatio>true</KeepRatio>
|
||||||
<Linear>true</Linear>
|
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0" Z="-0.5"/>
|
|
||||||
<Orientation X="0" Y="-1.57099998" Z="0"/>
|
<Orientation X="0" Y="-1.57099998" Z="0"/>
|
||||||
<Scale X="1" Y="0.0250000004" Z="0"/>
|
<Scale X="1" Y="0.0250000004" Z="0"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
@@ -38,10 +37,8 @@
|
|||||||
<DiffuseTexture>Textures/Effects/NewRay5.png</DiffuseTexture>
|
<DiffuseTexture>Textures/Effects/NewRay5.png</DiffuseTexture>
|
||||||
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
<Color A="1" B="2.35294127" G="1.17647064" R="0"/>
|
||||||
<KeepRatio>true</KeepRatio>
|
<KeepRatio>true</KeepRatio>
|
||||||
<Linear>true</Linear>
|
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="0" Z="-0.5"/>
|
|
||||||
<Orientation X="0" Y="4.71218538" Z="3.14199996"/>
|
<Orientation X="0" Y="4.71218538" Z="3.14199996"/>
|
||||||
<Scale X="1" Y="0.0250000004" Z="0"/>
|
<Scale X="1" Y="0.0250000004" Z="0"/>
|
||||||
</c:Transform>
|
</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" ?>
|
<?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>
|
<Components>
|
||||||
<c:Lifetime>
|
<c:Lifetime>
|
||||||
<Lifetime>2</Lifetime>
|
<Lifetime>1</Lifetime>
|
||||||
</c:Lifetime>
|
</c:Lifetime>
|
||||||
<c:ExplosionEffect>
|
<c:ExplosionEffect>
|
||||||
<ColorByDistance>true</ColorByDistance>
|
<Velocity X="0" Y="1" Z="0"/>
|
||||||
<Velocity X="3.33300018" Y="0.0320000015" Z="0"/>
|
<ExplosionOrigin X="-0.0450000018" Y="0.148000002" Z="-0.646000028"/>
|
||||||
<ExplosionOrigin X="0" Y="0.0790000036" Z="-0.329000026"/>
|
<ExplosionDuration>1</ExplosionDuration>
|
||||||
<ExponentialAccelaration>true</ExponentialAccelaration>
|
<EndColor A="0" B="3.92156863" G="0.545098066" R="1"/>
|
||||||
<EndColor A="0" B="1" G="1" R="19.6078434"/>
|
|
||||||
<Randomness>true</Randomness>
|
<Randomness>true</Randomness>
|
||||||
</c:ExplosionEffect>
|
</c:ExplosionEffect>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Weapons/Red/AssaultWeaponRed.mesh</Resource>
|
<Resource>Models/Weapons/Red/AssaultWeaponRed.mesh</Resource>
|
||||||
|
<Transparent>true</Transparent>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
<c:Transform/>
|
<c:Transform/>
|
||||||
</Components>
|
</Components>
|
||||||
|
|||||||
@@ -6,12 +6,14 @@
|
|||||||
<Lifetime>2</Lifetime>
|
<Lifetime>2</Lifetime>
|
||||||
</c:Lifetime>
|
</c:Lifetime>
|
||||||
<c:ExplosionEffect>
|
<c:ExplosionEffect>
|
||||||
<ColorByDistance>true</ColorByDistance>
|
<Velocity X="1.78000009" Y="0.0320000015" Z="0"/>
|
||||||
<Velocity X="1.63300014" Y="0.0320000015" Z="0"/>
|
<ExplosionOrigin X="0" Y="0.142000005" Z="-0.659000039"/>
|
||||||
<ExplosionOrigin X="0" Y="0.0790000036" Z="-0.329000026"/>
|
<EndColor A="0" B="19.6078434" G="0.00392156886" R="1.96078432"/>
|
||||||
<ExponentialAccelaration>true</ExponentialAccelaration>
|
<RandomnessScalar>1.3399996757507324</RandomnessScalar>
|
||||||
<EndColor A="0" B="19.6078434" G="19.6078434" R="0"/>
|
|
||||||
<Randomness>true</Randomness>
|
<Randomness>true</Randomness>
|
||||||
|
<ColorByDistance>true</ColorByDistance>
|
||||||
|
<ExponentialAccelaration>true</ExponentialAccelaration>
|
||||||
|
<ColorDistanceScalar>5.0899982452392578</ColorDistanceScalar>
|
||||||
</c:ExplosionEffect>
|
</c:ExplosionEffect>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Weapons/Blue/AssaultWeaponBlue.mesh</Resource>
|
<Resource>Models/Weapons/Blue/AssaultWeaponBlue.mesh</Resource>
|
||||||
|
|||||||
@@ -6,12 +6,14 @@
|
|||||||
<Lifetime>2</Lifetime>
|
<Lifetime>2</Lifetime>
|
||||||
</c:Lifetime>
|
</c:Lifetime>
|
||||||
<c:ExplosionEffect>
|
<c:ExplosionEffect>
|
||||||
<ColorByDistance>true</ColorByDistance>
|
<Velocity X="1.78000009" Y="0.0320000015" Z="0"/>
|
||||||
<Velocity X="1.63300014" Y="0.0320000015" Z="0"/>
|
<ExplosionOrigin X="0" Y="0.142000005" Z="-0.659000039"/>
|
||||||
<ExplosionOrigin X="0" Y="0.0790000036" Z="-0.329000026"/>
|
<EndColor A="0" B="19.6078434" G="0.00392156886" R="1.96078432"/>
|
||||||
<ExponentialAccelaration>true</ExponentialAccelaration>
|
<RandomnessScalar>1.3399996757507324</RandomnessScalar>
|
||||||
<EndColor A="0" B="1" G="1" R="19.6078434"/>
|
|
||||||
<Randomness>true</Randomness>
|
<Randomness>true</Randomness>
|
||||||
|
<ColorByDistance>true</ColorByDistance>
|
||||||
|
<ExponentialAccelaration>true</ExponentialAccelaration>
|
||||||
|
<ColorDistanceScalar>5.0899982452392578</ColorDistanceScalar>
|
||||||
</c:ExplosionEffect>
|
</c:ExplosionEffect>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Weapons/Red/AssaultWeaponRed.mesh</Resource>
|
<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">
|
<Entity name="SidearmWeapon" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||||
|
|
||||||
<Components>
|
<Components>
|
||||||
|
<c:Shielded/>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Weapons/Blue/SecondaryWeaponBlue.mesh</Resource>
|
<Resource>Models/Weapons/Blue/SecondaryWeaponBlue.mesh</Resource>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
@@ -9,16 +10,37 @@
|
|||||||
</Components>
|
</Components>
|
||||||
|
|
||||||
<Children>
|
<Children>
|
||||||
<Entity name="WeaponMuzzle">
|
<Entity name="Muzzle">
|
||||||
<Components>
|
<Components>
|
||||||
<c:Spawner>
|
|
||||||
<EntityFile>Schema/Entities/RayBlue.xml</EntityFile>
|
|
||||||
</c:Spawner>
|
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0.0123999491" Y="0.102453232" Z="-0.273824364"/>
|
<Position X="-0.0169804785" Y="-0.0188358482" Z="-0.222064406"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</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>
|
</Entity>
|
||||||
</Children>
|
</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>
|
</Components>
|
||||||
|
|
||||||
<Children>
|
<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">
|
<Entity name="AmmunitionHUD">
|
||||||
<Components>
|
<Components>
|
||||||
<c:TextFieldReader>
|
<c:TextFieldReader>
|
||||||
@@ -38,8 +27,9 @@
|
|||||||
<Entity name="AmmunitionHUDBackground">
|
<Entity name="AmmunitionHUDBackground">
|
||||||
<Components>
|
<Components>
|
||||||
<c:Sprite>
|
<c:Sprite>
|
||||||
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
<Model>Models/Core/UnitQuad.mesh</Model>
|
||||||
<GlowMap></GlowMap>
|
<GlowMap></GlowMap>
|
||||||
|
<DiffuseTexture>Textures/Core/UnitHexagon.png</DiffuseTexture>
|
||||||
<Color A="0.588235319" B="0" G="0" R="0"/>
|
<Color A="0.588235319" B="0" G="0" R="0"/>
|
||||||
</c:Sprite>
|
</c:Sprite>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
@@ -56,16 +46,16 @@
|
|||||||
<Children>
|
<Children>
|
||||||
<Entity name="MagazineAmmo">
|
<Entity name="MagazineAmmo">
|
||||||
<Components>
|
<Components>
|
||||||
<c:TextFieldReader>
|
|
||||||
<ParentEntityName>Player</ParentEntityName>
|
|
||||||
<ComponentType>SidearmWeapon</ComponentType>
|
|
||||||
<Field>MagazineAmmo</Field>
|
|
||||||
</c:TextFieldReader>
|
|
||||||
<c:Text>
|
<c:Text>
|
||||||
<Content>16</Content>
|
<Content>16</Content>
|
||||||
<Resource>Fonts/DroidSans.ttf,64</Resource>
|
<Resource>Fonts/DroidSans.ttf,64</Resource>
|
||||||
<Color A="1" B="3.92156863" G="1.17647064" R="0"/>
|
<Color A="1" B="3.92156863" G="1.17647064" R="0"/>
|
||||||
</c:Text>
|
</c:Text>
|
||||||
|
<c:TextFieldReader>
|
||||||
|
<ParentEntityName>Player</ParentEntityName>
|
||||||
|
<ComponentType>SidearmWeapon</ComponentType>
|
||||||
|
<Field>MagazineAmmo</Field>
|
||||||
|
</c:TextFieldReader>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0" Y="-0.00600000005" Z="0"/>
|
<Position X="0" Y="-0.00600000005" Z="0"/>
|
||||||
<Scale X="0.0599999987" Y="0.0599999987" Z="0.0599999987"/>
|
<Scale X="0.0599999987" Y="0.0599999987" Z="0.0599999987"/>
|
||||||
@@ -92,6 +82,37 @@
|
|||||||
</Entity>
|
</Entity>
|
||||||
</Children>
|
</Children>
|
||||||
</Entity>
|
</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>
|
</Children>
|
||||||
|
|
||||||
</Entity>
|
</Entity>
|
||||||
|
|||||||
+14365
-5767
File diff suppressed because it is too large
Load Diff
@@ -8,6 +8,7 @@
|
|||||||
</c:BlendAdditive>
|
</c:BlendAdditive>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Characters/Assault/FirstPersonAssaultBlue.mesh</Resource>
|
<Resource>Models/Characters/Assault/FirstPersonAssaultBlue.mesh</Resource>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
<c:Transform/>
|
<c:Transform/>
|
||||||
</Components>
|
</Components>
|
||||||
@@ -90,9 +91,10 @@
|
|||||||
<c:Model>
|
<c:Model>
|
||||||
<GlowIntensity>1.5</GlowIntensity>
|
<GlowIntensity>1.5</GlowIntensity>
|
||||||
<Resource>Models/Weapons/Blue/AssaultWeaponBlue.mesh</Resource>
|
<Resource>Models/Weapons/Blue/AssaultWeaponBlue.mesh</Resource>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
<c:Transform>
|
<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"/>
|
<Orientation X="0.0102799674" Y="-0.00312504289" Z="0.0428140014"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
@@ -131,7 +133,7 @@
|
|||||||
<EntityFile>Schema/Entities/RayAssaultBlue.xml</EntityFile>
|
<EntityFile>Schema/Entities/RayAssaultBlue.xml</EntityFile>
|
||||||
</c:Spawner>
|
</c:Spawner>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0.00123506912" Y="-0.00209517847" Z="-0.681198895"/>
|
<Position X="0.00179657922" Y="-0.00304772682" Z="-0.334699303"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<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">
|
<Entity name="AssaultWeapon" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||||
|
|
||||||
<Components>
|
<Components>
|
||||||
|
<c:Shielded/>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Weapons/Blue/AssaultWeaponBlue.mesh</Resource>
|
<Resource>Models/Weapons/Blue/AssaultWeaponBlue.mesh</Resource>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
@@ -9,17 +10,6 @@
|
|||||||
</Components>
|
</Components>
|
||||||
|
|
||||||
<Children>
|
<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">
|
<Entity name="ReloadSpawner">
|
||||||
<Components>
|
<Components>
|
||||||
<c:Spawner>
|
<c:Spawner>
|
||||||
@@ -29,6 +19,38 @@
|
|||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
</Entity>
|
</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>
|
</Children>
|
||||||
|
|
||||||
</Entity>
|
</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:BlendAdditive>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Characters/Defender/FirstPersonDefenderBlue.mesh</Resource>
|
<Resource>Models/Characters/Defender/FirstPersonDefenderBlue.mesh</Resource>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
<c:Transform/>
|
<c:Transform/>
|
||||||
</Components>
|
</Components>
|
||||||
@@ -154,7 +155,7 @@
|
|||||||
<InheritScale>true</InheritScale>
|
<InheritScale>true</InheritScale>
|
||||||
</c:BoneAttachment>
|
</c:BoneAttachment>
|
||||||
<c:Transform>
|
<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"/>
|
<Orientation X="0.00124507793" Y="0.077417776" Z="0.00737103401"/>
|
||||||
<Scale X="0.300000012" Y="0.300000042" Z="0.299999952"/>
|
<Scale X="0.300000012" Y="0.300000042" Z="0.299999952"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
@@ -244,9 +245,10 @@
|
|||||||
</c:BoneAttachment>
|
</c:BoneAttachment>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Weapons/Blue/DefenderWeaponBlue.mesh</Resource>
|
<Resource>Models/Weapons/Blue/DefenderWeaponBlue.mesh</Resource>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
<c:Transform>
|
<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"/>
|
<Orientation X="0.0102800643" Y="-0.00312487315" Z="0.0428144038"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
@@ -265,7 +267,7 @@
|
|||||||
<Entity name="Muzzle">
|
<Entity name="Muzzle">
|
||||||
<Components>
|
<Components>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0.137428522" Y="-0.145251781" Z="-0.590083241"/>
|
<Position X="0.119734153" Y="-0.145251781" Z="-0.564532101"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
@@ -275,7 +277,7 @@
|
|||||||
<EntityFile>Schema/Entities/RayDefenderBlue.xml</EntityFile>
|
<EntityFile>Schema/Entities/RayDefenderBlue.xml</EntityFile>
|
||||||
</c:Spawner>
|
</c:Spawner>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0.0180841181" Y="0.0252480619" Z="-0.663679719"/>
|
<Position X="0" Y="0" Z="-0.109966502"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
@@ -286,7 +288,7 @@
|
|||||||
<EntityFile>Schema/Entities/MuzzleFlashBlue.xml</EntityFile>
|
<EntityFile>Schema/Entities/MuzzleFlashBlue.xml</EntityFile>
|
||||||
</c:Spawner>
|
</c:Spawner>
|
||||||
<c:Transform>
|
<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"/>
|
<Scale X="1.5" Y="1.5" Z="1"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</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">
|
<Entity name="ThirdPersonWeaponModel" xmlns:c="components" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../Types/Entity.xsd">
|
||||||
|
|
||||||
<Components>
|
<Components>
|
||||||
|
<c:Shielded/>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Weapons/Blue/DefenderWeaponBlue.mesh</Resource>
|
<Resource>Models/Weapons/Blue/DefenderWeaponBlue.mesh</Resource>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
@@ -9,17 +10,6 @@
|
|||||||
</Components>
|
</Components>
|
||||||
|
|
||||||
<Children>
|
<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">
|
<Entity name="ThirdPersonReloadSpawner">
|
||||||
<Components>
|
<Components>
|
||||||
<c:Spawner>
|
<c:Spawner>
|
||||||
@@ -29,6 +19,38 @@
|
|||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
</Entity>
|
</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>
|
</Children>
|
||||||
|
|
||||||
</Entity>
|
</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:BlendAdditive>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Characters/Assault/FirstPersonAssaultBlue.mesh</Resource>
|
<Resource>Models/Characters/Assault/FirstPersonAssaultBlue.mesh</Resource>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
<c:Transform/>
|
<c:Transform/>
|
||||||
</Components>
|
</Components>
|
||||||
@@ -183,6 +184,7 @@
|
|||||||
<c:Model>
|
<c:Model>
|
||||||
<GlowIntensity>1.2999999523162842</GlowIntensity>
|
<GlowIntensity>1.2999999523162842</GlowIntensity>
|
||||||
<Resource>Models/Weapons/Blue/SecondaryWeaponBlue.mesh</Resource>
|
<Resource>Models/Weapons/Blue/SecondaryWeaponBlue.mesh</Resource>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0.185786247" Y="-0.21622014" Z="-0.412707269"/>
|
<Position X="0.185786247" Y="-0.21622014" Z="-0.412707269"/>
|
||||||
@@ -204,7 +206,7 @@
|
|||||||
<Entity name="Muzzle">
|
<Entity name="Muzzle">
|
||||||
<Components>
|
<Components>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0.197295129" Y="-0.116625182" Z="-0.709192753"/>
|
<Position X="0.189540595" Y="-0.114737265" Z="-0.681462705"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
@@ -213,9 +215,7 @@
|
|||||||
<c:Spawner>
|
<c:Spawner>
|
||||||
<EntityFile>Schema/Entities/RaySideArmBlue.xml</EntityFile>
|
<EntityFile>Schema/Entities/RaySideArmBlue.xml</EntityFile>
|
||||||
</c:Spawner>
|
</c:Spawner>
|
||||||
<c:Transform>
|
<c:Transform/>
|
||||||
<Position X="0" Y="0" Z="-0.155046776"/>
|
|
||||||
</c:Transform>
|
|
||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
</Entity>
|
</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:BlendAdditive>
|
||||||
<c:Model>
|
<c:Model>
|
||||||
<Resource>Models/Characters/Defender/FirstPersonDefenderBlue.mesh</Resource>
|
<Resource>Models/Characters/Defender/FirstPersonDefenderBlue.mesh</Resource>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
<c:Transform/>
|
<c:Transform/>
|
||||||
</Components>
|
</Components>
|
||||||
@@ -86,7 +87,7 @@
|
|||||||
<BoneName>R_Ammo_Joint</BoneName>
|
<BoneName>R_Ammo_Joint</BoneName>
|
||||||
</c:BoneAttachment>
|
</c:BoneAttachment>
|
||||||
<c:Transform>
|
<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"/>
|
<Orientation X="0.00118373742" Y="0.077411525" Z="0.00458352407"/>
|
||||||
<Scale X="0.400000006" Y="0.400000006" Z="0.400000006"/>
|
<Scale X="0.400000006" Y="0.400000006" Z="0.400000006"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
@@ -183,9 +184,10 @@
|
|||||||
<c:Model>
|
<c:Model>
|
||||||
<GlowIntensity>1.5</GlowIntensity>
|
<GlowIntensity>1.5</GlowIntensity>
|
||||||
<Resource>Models/Weapons/Blue/SecondaryWeaponBlue.mesh</Resource>
|
<Resource>Models/Weapons/Blue/SecondaryWeaponBlue.mesh</Resource>
|
||||||
|
<Shadow>false</Shadow>
|
||||||
</c:Model>
|
</c:Model>
|
||||||
<c:Transform>
|
<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"/>
|
<Orientation X="0.010279973" Y="-0.00312555139" Z="0.0428142436"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
@@ -204,10 +206,19 @@
|
|||||||
<Entity name="Muzzle">
|
<Entity name="Muzzle">
|
||||||
<Components>
|
<Components>
|
||||||
<c:Transform>
|
<c:Transform>
|
||||||
<Position X="0.196999997" Y="-0.116999999" Z="-0.668634355"/>
|
<Position X="0.192775041" Y="-0.117133088" Z="-0.647809923"/>
|
||||||
</c:Transform>
|
</c:Transform>
|
||||||
</Components>
|
</Components>
|
||||||
<Children>
|
<Children>
|
||||||
|
<Entity name="WeaponMuzzleRay">
|
||||||
|
<Components>
|
||||||
|
<c:Spawner>
|
||||||
|
<EntityFile>Schema/Entities/RaySideArmBlue.xml</EntityFile>
|
||||||
|
</c:Spawner>
|
||||||
|
<c:Transform/>
|
||||||
|
</Components>
|
||||||
|
<Children/>
|
||||||
|
</Entity>
|
||||||
<Entity name="WeaponMuzzleFlash">
|
<Entity name="WeaponMuzzleFlash">
|
||||||
<Components>
|
<Components>
|
||||||
<c:Spawner>
|
<c:Spawner>
|
||||||
@@ -219,17 +230,6 @@
|
|||||||
</Components>
|
</Components>
|
||||||
<Children/>
|
<Children/>
|
||||||
</Entity>
|
</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>
|
</Children>
|
||||||
</Entity>
|
</Entity>
|
||||||
</Children>
|
</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\Shaders\*"; DestDir: "{app}\Shaders\"; Flags: ignoreversion createallsubdirs recursesubdirs
|
||||||
Source: "..\..\bin\Textures\*"; DestDir: "{app}\Textures\"; Flags: ignoreversion createallsubdirs recursesubdirs
|
Source: "..\..\bin\Textures\*"; DestDir: "{app}\Textures\"; Flags: ignoreversion createallsubdirs recursesubdirs
|
||||||
Source: "..\..\bin\assimp.dll"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "..\..\bin\assimp.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\DefaultConfig.ini"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "..\..\resources\DefaultConfig.ini"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\DefaultInput.ini"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "..\..\resources\DefaultInput.ini"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\glew32.dll"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "..\..\bin\glew32.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\glfw3.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\imgui.ini"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\Input.ini"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "..\..\bin\Input.ini"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\libpng16.dll"; DestDir: "{app}"; Flags: ignoreversion
|
Source: "..\..\bin\libpng16.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\Axyz.exe"; 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\xerces-c_3_1.dll"; DestDir: "{app}"; Flags: ignoreversion
|
||||||
Source: "..\..\bin\zlib.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
|
Source: "..\..\deps\redist\VC_redist.x64.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall
|
||||||
|
|
||||||
[Icons]
|
[Icons]
|
||||||
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
|
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
|
||||||
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
|
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]
|
[INI]
|
||||||
Filename: "{app}\Config.ini"; Section: "Networking"; Key: "Name"; String: "{%USERNAME}"; Flags: createkeyifdoesntexist
|
Filename: "{app}\Config.ini"; Section: "Networking"; Key: "Name"; String: "{%USERNAME}"; Flags: createkeyifdoesntexist
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
#version 430
|
#version 430
|
||||||
|
|
||||||
|
#include "Shaders/Util/CommonNormalFunc.glsl"
|
||||||
|
|
||||||
#define MIN_AMBIENT_LIGHT 0.3
|
#define MIN_AMBIENT_LIGHT 0.3
|
||||||
#define MAX_SPLITS 4
|
#define MAX_SPLITS 4
|
||||||
|
|
||||||
uniform mat4 M;
|
uniform mat4 M;
|
||||||
uniform mat4 V;
|
uniform mat4 V;
|
||||||
uniform mat4 P;
|
uniform mat4 P;
|
||||||
@@ -16,6 +19,7 @@ uniform vec3 CameraPosition;
|
|||||||
uniform int SSAOQuality;
|
uniform int SSAOQuality;
|
||||||
uniform float FarDistance[MAX_SPLITS];
|
uniform float FarDistance[MAX_SPLITS];
|
||||||
|
|
||||||
|
uniform int NormalTextureType;
|
||||||
uniform vec2 DiffuseUVRepeat;
|
uniform vec2 DiffuseUVRepeat;
|
||||||
uniform vec2 NormalUVRepeat;
|
uniform vec2 NormalUVRepeat;
|
||||||
uniform vec2 SpecularUVRepeat;
|
uniform vec2 SpecularUVRepeat;
|
||||||
@@ -139,13 +143,6 @@ LightResult CalcDirectionalLightSource(vec4 direction, vec4 color, float intensi
|
|||||||
return result;
|
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.
|
// Returns a "random" value.
|
||||||
float Random(vec3 seed, int i)
|
float Random(vec3 seed, int i)
|
||||||
{
|
{
|
||||||
@@ -301,7 +298,7 @@ void main()
|
|||||||
vec4 diffuseTexel = texture2D(DiffuseTexture, Input.TextureCoordinate * DiffuseUVRepeat);
|
vec4 diffuseTexel = texture2D(DiffuseTexture, Input.TextureCoordinate * DiffuseUVRepeat);
|
||||||
vec4 glowTexel = texture2D(GlowMapTexture, Input.TextureCoordinate * GlowUVRepeat);
|
vec4 glowTexel = texture2D(GlowMapTexture, Input.TextureCoordinate * GlowUVRepeat);
|
||||||
vec4 specularTexel = texture2D(SpecularMapTexture, Input.TextureCoordinate * SpecularUVRepeat);
|
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);
|
normal = normalize(normal);
|
||||||
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
||||||
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#version 430
|
#version 430
|
||||||
|
|
||||||
|
#include "Shaders/Util/CommonNormalFunc.glsl"
|
||||||
|
|
||||||
#define MIN_AMBIENT_LIGHT 0.3
|
#define MIN_AMBIENT_LIGHT 0.3
|
||||||
#define MAX_SPLITS 4
|
#define MAX_SPLITS 4
|
||||||
|
|
||||||
@@ -17,6 +19,7 @@ uniform float GlowIntensity;
|
|||||||
uniform vec3 CameraPosition;
|
uniform vec3 CameraPosition;
|
||||||
uniform int SSAOQuality;
|
uniform int SSAOQuality;
|
||||||
|
|
||||||
|
uniform int NormalTextureType;
|
||||||
uniform vec2 DiffuseUVRepeat;
|
uniform vec2 DiffuseUVRepeat;
|
||||||
uniform vec2 NormalUVRepeat;
|
uniform vec2 NormalUVRepeat;
|
||||||
uniform vec2 SpecularUVRepeat;
|
uniform vec2 SpecularUVRepeat;
|
||||||
@@ -122,13 +125,6 @@ LightResult CalcDirectionalLightSource(vec4 direction, vec4 color, float intensi
|
|||||||
return result;
|
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()
|
void main()
|
||||||
{
|
{
|
||||||
float shieldDepthValue = texelFetch(ShieldBuffer, ivec2(gl_FragCoord.xy), 0).r;
|
float shieldDepthValue = texelFetch(ShieldBuffer, ivec2(gl_FragCoord.xy), 0).r;
|
||||||
@@ -142,7 +138,7 @@ void main()
|
|||||||
vec4 diffuseTexel = texture2D(DiffuseTexture, Input.TextureCoordinate * DiffuseUVRepeat);
|
vec4 diffuseTexel = texture2D(DiffuseTexture, Input.TextureCoordinate * DiffuseUVRepeat);
|
||||||
vec4 glowTexel = texture2D(GlowMapTexture, Input.TextureCoordinate * GlowUVRepeat);
|
vec4 glowTexel = texture2D(GlowMapTexture, Input.TextureCoordinate * GlowUVRepeat);
|
||||||
vec4 specularTexel = texture2D(SpecularMapTexture, Input.TextureCoordinate * SpecularUVRepeat);
|
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);
|
normal = normalize(normal);
|
||||||
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
||||||
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#version 430
|
#version 430
|
||||||
|
|
||||||
|
#include "Shaders/Util/CommonNormalFunc.glsl"
|
||||||
|
|
||||||
#define MIN_AMBIENT_LIGHT 0.3
|
#define MIN_AMBIENT_LIGHT 0.3
|
||||||
#define MAX_SPLITS 4
|
#define MAX_SPLITS 4
|
||||||
uniform mat4 M;
|
uniform mat4 M;
|
||||||
@@ -18,6 +20,10 @@ layout (binding = 0) uniform sampler2D AOTexture;
|
|||||||
layout (binding = 30) uniform sampler2DArrayShadow DepthMap;
|
layout (binding = 30) uniform sampler2DArrayShadow DepthMap;
|
||||||
|
|
||||||
//Get bineded at the same time as the textures
|
//Get bineded at the same time as the textures
|
||||||
|
uniform int NormalTextureType1;
|
||||||
|
uniform int NormalTextureType2;
|
||||||
|
uniform int NormalTextureType3;
|
||||||
|
|
||||||
uniform vec2 DiffuseUVRepeat1;
|
uniform vec2 DiffuseUVRepeat1;
|
||||||
uniform vec2 DiffuseUVRepeat2;
|
uniform vec2 DiffuseUVRepeat2;
|
||||||
uniform vec2 DiffuseUVRepeat3;
|
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,
|
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);
|
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 R_Channel = NormalMapValue(Input.TextureCoordinate * R_TileValues, R, R_TextureType);
|
||||||
vec3 G_Channel = texture(G, Input.TextureCoordinate * G_TileValues).xyz * 2.0 - vec3(1.0);
|
vec3 G_Channel = NormalMapValue(Input.TextureCoordinate * G_TileValues, G, G_TextureType);
|
||||||
vec3 B_Channel = texture(B, Input.TextureCoordinate * B_TileValues).xyz * 2.0 - vec3(1.0);
|
vec3 B_Channel = NormalMapValue(Input.TextureCoordinate * B_TileValues, B, B_TextureType);
|
||||||
|
|
||||||
float total = blendValue.r + blendValue.g + blendValue.b + blendValue.a;
|
float total = blendValue.r + blendValue.g + blendValue.b + blendValue.a;
|
||||||
float totalDiv = 1 / total;
|
float totalDiv = 1 / total;
|
||||||
@@ -363,7 +370,8 @@ void main()
|
|||||||
SpecularUVRepeat1, SpecularUVRepeat2, SpecularUVRepeat3);
|
SpecularUVRepeat1, SpecularUVRepeat2, SpecularUVRepeat3);
|
||||||
//vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate, SplatMapTexture);
|
//vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate, SplatMapTexture);
|
||||||
vec4 normal = V * CalcBlendedNormal(splatTexel, NormalMapTexture1, NormalMapTexture2, NormalMapTexture3,
|
vec4 normal = V * CalcBlendedNormal(splatTexel, NormalMapTexture1, NormalMapTexture2, NormalMapTexture3,
|
||||||
NormalUVRepeat1, NormalUVRepeat2, NormalUVRepeat3);
|
NormalUVRepeat1, NormalUVRepeat2, NormalUVRepeat3,
|
||||||
|
NormalTextureType1, NormalTextureType2, NormalTextureType3);
|
||||||
normal = normalize(normal);
|
normal = normalize(normal);
|
||||||
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
||||||
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#version 430
|
#version 430
|
||||||
|
|
||||||
|
#include "Shaders/Util/CommonNormalFunc.glsl"
|
||||||
|
|
||||||
#define MIN_AMBIENT_LIGHT 0.3
|
#define MIN_AMBIENT_LIGHT 0.3
|
||||||
#define MAX_SPLITS 4
|
#define MAX_SPLITS 4
|
||||||
uniform mat4 M;
|
uniform mat4 M;
|
||||||
@@ -14,6 +16,10 @@ uniform vec4 AmbientColor;
|
|||||||
uniform int SSAOQuality;
|
uniform int SSAOQuality;
|
||||||
|
|
||||||
//Get bineded at the same time as the textures
|
//Get bineded at the same time as the textures
|
||||||
|
uniform int NormalTextureType1;
|
||||||
|
uniform int NormalTextureType2;
|
||||||
|
uniform int NormalTextureType3;
|
||||||
|
|
||||||
uniform vec2 DiffuseUVRepeat1;
|
uniform vec2 DiffuseUVRepeat1;
|
||||||
uniform vec2 DiffuseUVRepeat2;
|
uniform vec2 DiffuseUVRepeat2;
|
||||||
uniform vec2 DiffuseUVRepeat3;
|
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,
|
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);
|
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 R_Channel = NormalMapValue(Input.TextureCoordinate * R_TileValues, R, R_TextureType);
|
||||||
vec3 G_Channel = texture(G, Input.TextureCoordinate * G_TileValues).xyz * 2.0 - vec3(1.0);
|
vec3 G_Channel = NormalMapValue(Input.TextureCoordinate * G_TileValues, G, G_TextureType);
|
||||||
vec3 B_Channel = texture(B, Input.TextureCoordinate * B_TileValues).xyz * 2.0 - vec3(1.0);
|
vec3 B_Channel = NormalMapValue(Input.TextureCoordinate * B_TileValues, B, B_TextureType);
|
||||||
|
|
||||||
float total = blendValue.r + blendValue.g + blendValue.b + blendValue.a;
|
float total = blendValue.r + blendValue.g + blendValue.b + blendValue.a;
|
||||||
float totalDiv = 1 / total;
|
float totalDiv = 1 / total;
|
||||||
@@ -194,7 +201,8 @@ void main()
|
|||||||
SpecularUVRepeat1, SpecularUVRepeat2, SpecularUVRepeat3);
|
SpecularUVRepeat1, SpecularUVRepeat2, SpecularUVRepeat3);
|
||||||
//vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate, SplatMapTexture);
|
//vec4 normal = V * CalcNormalMappedValue(Input.Normal, Input.Tangent, Input.BiTangent, Input.TextureCoordinate, SplatMapTexture);
|
||||||
vec4 normal = V * CalcBlendedNormal(splatTexel, NormalMapTexture1, NormalMapTexture2, NormalMapTexture3,
|
vec4 normal = V * CalcBlendedNormal(splatTexel, NormalMapTexture1, NormalMapTexture2, NormalMapTexture3,
|
||||||
NormalUVRepeat1, NormalUVRepeat2, NormalUVRepeat3);
|
NormalUVRepeat1, NormalUVRepeat2, NormalUVRepeat3,
|
||||||
|
NormalTextureType1, NormalTextureType2, NormalTextureType3);
|
||||||
normal = normalize(normal);
|
normal = normalize(normal);
|
||||||
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
//vec4 normal = normalize(V * vec4(Input.Normal, 0.0));
|
||||||
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
vec4 viewVec = normalize(-Input.ViewSpacePosition);
|
||||||
|
|||||||
Binary file not shown.
@@ -176,6 +176,9 @@ void Client::parseMessageType(Packet& packet)
|
|||||||
case MessageType::KD:
|
case MessageType::KD:
|
||||||
parseKDEvent(packet);
|
parseKDEvent(packet);
|
||||||
break;
|
break;
|
||||||
|
case MessageType::Win:
|
||||||
|
parseWin(packet);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -222,7 +225,7 @@ void Client::parsePing()
|
|||||||
m_IsConnected = true;
|
m_IsConnected = true;
|
||||||
// Time since last ping was received
|
// Time since last ping was received
|
||||||
m_DurationOfPingTime = 1000 * (std::clock() - m_StartPingTime) / static_cast<double>(CLOCKS_PER_SEC);
|
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();
|
m_StartPingTime = std::clock();
|
||||||
|
|
||||||
Packet packet(MessageType::Ping, m_SendPacketID);
|
Packet packet(MessageType::Ping, m_SendPacketID);
|
||||||
@@ -376,6 +379,13 @@ void Client::parseKDEvent(Packet & packet)
|
|||||||
m_EventBroker->Publish(e);
|
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)
|
void Client::updateFields(Packet& packet, const ComponentInfo& componentInfo, const EntityID& entityID)
|
||||||
{
|
{
|
||||||
for (auto field : componentInfo.FieldsInOrder) {
|
for (auto field : componentInfo.FieldsInOrder) {
|
||||||
|
|||||||
@@ -609,6 +609,9 @@ bool Server::OnWin(const Events::Win & e)
|
|||||||
{
|
{
|
||||||
// Postpone the gameover reset
|
// Postpone the gameover reset
|
||||||
m_GameIsOver = true;
|
m_GameIsOver = true;
|
||||||
|
Packet winPacket = Packet(MessageType::Win);
|
||||||
|
winPacket.WritePrimitive(e.TeamThatWon);
|
||||||
|
reliableBroadcast(winPacket);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -744,7 +747,7 @@ void Server::resetMap()
|
|||||||
reliableBroadcast(removeMap);
|
reliableBroadcast(removeMap);
|
||||||
removeWorld();
|
removeWorld();
|
||||||
// Hardcoded for now.
|
// 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);
|
entityFile->MergeInto(m_World);
|
||||||
Packet newWorld(MessageType::Snapshot);
|
Packet newWorld(MessageType::Snapshot);
|
||||||
createWorldSnapshot(newWorld);
|
createWorldSnapshot(newWorld);
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ void CubeMapPass::LoadTextures(std::string cubemapName)
|
|||||||
if (m_PreviusCubeMapTexture != cubemapName) {
|
if (m_PreviusCubeMapTexture != cubemapName) {
|
||||||
m_CubeMapTextures.clear();
|
m_CubeMapTextures.clear();
|
||||||
for (int i = 0; i < 6; i++) {
|
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);
|
m_CubeMapTextures.push_back(path);
|
||||||
}
|
}
|
||||||
GenerateCubeMapTexture();
|
GenerateCubeMapTexture();
|
||||||
@@ -21,15 +21,22 @@ void CubeMapPass::LoadTextures(std::string cubemapName)
|
|||||||
|
|
||||||
void CubeMapPass::GenerateCubeMapTexture()
|
void CubeMapPass::GenerateCubeMapTexture()
|
||||||
{
|
{
|
||||||
if (m_CubeMapTexture == -1) {
|
if (m_CubeMapTexture == 0) {
|
||||||
glGenTextures(1, &m_CubeMapTexture);
|
glGenTextures(1, &m_CubeMapTexture);
|
||||||
}
|
}
|
||||||
glBindTexture(GL_TEXTURE_CUBE_MAP, m_CubeMapTexture);
|
glBindTexture(GL_TEXTURE_CUBE_MAP, m_CubeMapTexture);
|
||||||
|
|
||||||
for (int i = 0; i < 6; i++) {
|
for (int i = 0; i < 6; i++) {
|
||||||
PNG* img = ResourceManager::Load<PNG>(m_CubeMapTextures[i]);
|
DDS* img = ResourceManager::Load<DDS>(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);
|
std::size_t bpe = 16;
|
||||||
ResourceManager::Release("PNG", m_CubeMapTextures[i]);
|
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_MAG_FILTER, GL_LINEAR);
|
||||||
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_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) {
|
if (job->NormalTexture.size() > 0 && job->NormalTexture[0]->Texture != nullptr) {
|
||||||
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[0]->Texture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[0]->Texture->m_Texture);
|
||||||
glUniform2fv(glGetUniformLocation(shaderHandle, "NormalUVRepeat"), 1, glm::value_ptr(job->NormalTexture[0]->UVRepeat));
|
glUniform2fv(glGetUniformLocation(shaderHandle, "NormalUVRepeat"), 1, glm::value_ptr(job->NormalTexture[0]->UVRepeat));
|
||||||
|
glUniform1i(glGetUniformLocation(shaderHandle, "NormalTextureType"), job->NormalTexture[0]->Texture->m_Type);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
glBindTexture(GL_TEXTURE_2D, m_NeutralNormalTexture->m_Texture);
|
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);
|
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) {
|
if (job->NormalTexture.size() > i && job->NormalTexture[i]->Texture != nullptr) {
|
||||||
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[i]->Texture->m_Texture);
|
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(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 {
|
else {
|
||||||
glBindTexture(GL_TEXTURE_2D, m_NeutralNormalTexture->m_Texture);
|
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(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++;
|
texturePosition++;
|
||||||
}
|
}
|
||||||
@@ -1641,10 +1645,12 @@ void DrawFinalPass::BindModelTextures(GLuint shaderHandle, std::shared_ptr<Model
|
|||||||
if (job->NormalTexture.size() > 0 && job->NormalTexture[0]->Texture != nullptr) {
|
if (job->NormalTexture.size() > 0 && job->NormalTexture[0]->Texture != nullptr) {
|
||||||
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[0]->Texture->m_Texture);
|
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[0]->Texture->m_Texture);
|
||||||
glUniform2fv(glGetUniformLocation(shaderHandle, "NormalUVRepeat"), 1, glm::value_ptr(job->NormalTexture[0]->UVRepeat));
|
glUniform2fv(glGetUniformLocation(shaderHandle, "NormalUVRepeat"), 1, glm::value_ptr(job->NormalTexture[0]->UVRepeat));
|
||||||
|
glUniform1i(glGetUniformLocation(shaderHandle, "NormalTextureType"), job->NormalTexture[0]->Texture->m_Type);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
glBindTexture(GL_TEXTURE_2D, m_NeutralNormalTexture->m_Texture);
|
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);
|
glActiveTexture(GL_TEXTURE3);
|
||||||
@@ -1676,57 +1682,60 @@ void DrawFinalPass::BindModelTextures(GLuint shaderHandle, std::shared_ptr<Model
|
|||||||
int texturePosition = GL_TEXTURE2;
|
int texturePosition = GL_TEXTURE2;
|
||||||
|
|
||||||
//Bind 5 diffuse textures
|
//Bind 5 diffuse textures
|
||||||
std::string UniformName = "DiffuseUVRepeat";
|
std::string UVRepeatName = "DiffuseUVRepeat";
|
||||||
for (unsigned int i = 0; i < 3; i++) {
|
for (unsigned int i = 0; i < 3; i++) {
|
||||||
glActiveTexture(texturePosition);
|
glActiveTexture(texturePosition);
|
||||||
if (job->DiffuseTexture.size() > i && job->DiffuseTexture[i]->Texture != nullptr) {
|
if (job->DiffuseTexture.size() > i && job->DiffuseTexture[i]->Texture != nullptr) {
|
||||||
glBindTexture(GL_TEXTURE_2D, job->DiffuseTexture[i]->Texture->m_Texture);
|
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 {
|
} else {
|
||||||
glBindTexture(GL_TEXTURE_2D, m_WhiteTexture->m_Texture);
|
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++;
|
texturePosition++;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Bind 5 Normal textures
|
//Bind 5 Normal textures
|
||||||
UniformName = "NormalUVRepeat";
|
std::string textureType = "NormalTextureType";
|
||||||
|
UVRepeatName = "NormalUVRepeat";
|
||||||
for (unsigned int i = 0; i < 3; i++) {
|
for (unsigned int i = 0; i < 3; i++) {
|
||||||
glActiveTexture(texturePosition);
|
glActiveTexture(texturePosition);
|
||||||
if (job->NormalTexture.size() > i && job->NormalTexture[i]->Texture != nullptr) {
|
if (job->NormalTexture.size() > i && job->NormalTexture[i]->Texture != nullptr) {
|
||||||
glBindTexture(GL_TEXTURE_2D, job->NormalTexture[i]->Texture->m_Texture);
|
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 {
|
} else {
|
||||||
glBindTexture(GL_TEXTURE_2D, m_NeutralNormalTexture->m_Texture);
|
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++;
|
texturePosition++;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Bind 5 Specular textures
|
//Bind 5 Specular textures
|
||||||
UniformName = "SpecularUVRepeat";
|
UVRepeatName = "SpecularUVRepeat";
|
||||||
for (unsigned int i = 0; i < 3; i++) {
|
for (unsigned int i = 0; i < 3; i++) {
|
||||||
glActiveTexture(texturePosition);
|
glActiveTexture(texturePosition);
|
||||||
if (job->SpecularTexture.size() > i && job->SpecularTexture[i]->Texture != nullptr) {
|
if (job->SpecularTexture.size() > i && job->SpecularTexture[i]->Texture != nullptr) {
|
||||||
glBindTexture(GL_TEXTURE_2D, job->SpecularTexture[i]->Texture->m_Texture);
|
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 {
|
} else {
|
||||||
glBindTexture(GL_TEXTURE_2D, m_GreyTexture->m_Texture);
|
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++;
|
texturePosition++;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Bind 5 Incandescence textures
|
//Bind 5 Incandescence textures
|
||||||
UniformName = "GlowUVRepeat";
|
UVRepeatName = "GlowUVRepeat";
|
||||||
for (unsigned int i = 0; i < 3; i++) {
|
for (unsigned int i = 0; i < 3; i++) {
|
||||||
glActiveTexture(texturePosition);
|
glActiveTexture(texturePosition);
|
||||||
if (job->IncandescenceTexture.size() > i && job->IncandescenceTexture[i]->Texture != nullptr) {
|
if (job->IncandescenceTexture.size() > i && job->IncandescenceTexture[i]->Texture != nullptr) {
|
||||||
glBindTexture(GL_TEXTURE_2D, job->IncandescenceTexture[i]->Texture->m_Texture);
|
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 {
|
} else {
|
||||||
glBindTexture(GL_TEXTURE_2D, m_BlackTexture->m_Texture);
|
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++;
|
texturePosition++;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,10 +96,10 @@ PNG::~PNG()
|
|||||||
|
|
||||||
void PNG::pngErrorFunction(png_structp png_ptr, png_const_charp error_msg)
|
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)
|
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 = "Textures/";
|
||||||
texture.TexturePath += (fileData + offset);
|
texture.TexturePath += (fileData + offset);
|
||||||
texture.TexturePath += ".png";
|
texture.TexturePath += ".dds";
|
||||||
offset += nameLength;
|
offset += nameLength;
|
||||||
if (offset + sizeof(glm::vec2) > fileByteSize) {
|
if (offset + sizeof(glm::vec2) > fileByteSize) {
|
||||||
throw Resource::FailedLoadingException("Reading Material texture UVTiling failed");
|
throw Resource::FailedLoadingException("Reading Material texture UVTiling failed");
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ void Renderer::InitializeWindow()
|
|||||||
//glfwWindowHint(GLFW_BLUE_BITS, mode->blueBits);
|
//glfwWindowHint(GLFW_BLUE_BITS, mode->blueBits);
|
||||||
//glfwWindowHint(GLFW_REFRESH_RATE, mode->refreshRate);
|
//glfwWindowHint(GLFW_REFRESH_RATE, mode->refreshRate);
|
||||||
glfwWindowHint(GLFW_DECORATED, false);
|
glfwWindowHint(GLFW_DECORATED, false);
|
||||||
glfwWindowHint(GLFW_AUTO_ICONIFY, false);
|
//glfwWindowHint(GLFW_AUTO_ICONIFY, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
//glfwWindowHint(GLFW_SAMPLES, 8);
|
//glfwWindowHint(GLFW_SAMPLES, 8);
|
||||||
@@ -167,17 +167,21 @@ void Renderer::Draw(RenderFrame& frame)
|
|||||||
{
|
{
|
||||||
GLERROR("PRE");
|
GLERROR("PRE");
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
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("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)");
|
ImGui::Combo("CubeMap", &m_CubeMapTexture, "Nevada(512)\0Sky(1024)");
|
||||||
|
#endif
|
||||||
if(m_CubeMapTexture == 0) {
|
if(m_CubeMapTexture == 0) {
|
||||||
m_CubeMapPass->LoadTextures("Nevada");
|
m_CubeMapPass->LoadTextures("Nevada");
|
||||||
} else if (m_CubeMapTexture == 1) {
|
} else if (m_CubeMapTexture == 1) {
|
||||||
m_CubeMapPass->LoadTextures("Sky");
|
m_CubeMapPass->LoadTextures("Sky");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
ImGui::SliderInt("SSAO Quality", &m_SSAO_Quality, 0, 3);
|
ImGui::SliderInt("SSAO Quality", &m_SSAO_Quality, 0, 3);
|
||||||
ImGui::SliderInt("Glow Quality", &m_GLOW_Quality, 0, 3);
|
ImGui::SliderInt("Glow Quality", &m_GLOW_Quality, 0, 3);
|
||||||
ImGui::SliderInt("MSAA Level", (int*)&m_MSAA_Level, 0, 16);
|
ImGui::SliderInt("MSAA Level", (int*)&m_MSAA_Level, 0, 16);
|
||||||
|
#endif
|
||||||
m_SSAOPass->ChangeQuality(m_SSAO_Quality);
|
m_SSAOPass->ChangeQuality(m_SSAO_Quality);
|
||||||
m_DrawBloomPass->ChangeQuality(m_GLOW_Quality);
|
m_DrawBloomPass->ChangeQuality(m_GLOW_Quality);
|
||||||
m_DrawFinalPass->setMSAA(m_MSAA_Level);
|
m_DrawFinalPass->setMSAA(m_MSAA_Level);
|
||||||
|
|||||||
@@ -25,11 +25,13 @@ ShadowPass::~ShadowPass()
|
|||||||
|
|
||||||
void ShadowPass::DebugGUI()
|
void ShadowPass::DebugGUI()
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
ImGui::Checkbox("EnableShadows", &m_EnableShadows);
|
ImGui::Checkbox("EnableShadows", &m_EnableShadows);
|
||||||
ImGui::DragFloat2("ShadowMapNearFar", m_NearFarPlane, 1.f, -1000.f, 1000.f);
|
ImGui::DragFloat2("ShadowMapNearFar", m_NearFarPlane, 1.f, -1000.f, 1000.f);
|
||||||
ImGui::DragFloat("ShadowClippingWeight", &m_SplitWeight, 0.001f, 0.f, 1.f);
|
ImGui::DragFloat("ShadowClippingWeight", &m_SplitWeight, 0.001f, 0.f, 1.f);
|
||||||
ImGui::Checkbox("ShadowTransparentObjects", &m_TransparentObjects);
|
ImGui::Checkbox("ShadowTransparentObjects", &m_TransparentObjects);
|
||||||
ImGui::Checkbox("ShadowOnTextureAlphas", &m_TexturedShadows);
|
ImGui::Checkbox("ShadowOnTextureAlphas", &m_TexturedShadows);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShadowPass::InitializeCameras(RenderScene & scene)
|
void ShadowPass::InitializeCameras(RenderScene & scene)
|
||||||
|
|||||||
@@ -2,11 +2,21 @@
|
|||||||
|
|
||||||
Texture::Texture(std::string path)
|
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->Width = img->Width;
|
||||||
this->Height = img->Height;
|
this->Height = img->Height;
|
||||||
this->Data = img->Data;
|
|
||||||
|
|
||||||
GLint format;
|
GLint format;
|
||||||
switch (img->Format) {
|
switch (img->Format) {
|
||||||
@@ -17,20 +27,59 @@ Texture::Texture(std::string path)
|
|||||||
format = GL_RGBA;
|
format = GL_RGBA;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Master hade PNG release here...
|
||||||
|
|
||||||
// Construct the OpenGL texture
|
// Construct the OpenGL texture
|
||||||
glGenTextures(1, &m_Texture);
|
glGenTextures(1, &m_Texture);
|
||||||
glBindTexture(GL_TEXTURE_2D, 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_S, GL_REPEAT);
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, 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);
|
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()
|
Texture::~Texture()
|
||||||
|
|||||||
@@ -417,6 +417,14 @@ bool SoundManager::OnSetCamera(const Events::SetCamera& e)
|
|||||||
alSourcei(m_CurrentBGMCombo->ALsource, AL_LOOPING, 1);
|
alSourcei(m_CurrentBGMCombo->ALsource, AL_LOOPING, 1);
|
||||||
setGain(m_CurrentBGMCombo, 0);
|
setGain(m_CurrentBGMCombo, 0);
|
||||||
playSound(m_CurrentBGMCombo);
|
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;
|
return time;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SoundManager::setTimeOffsetSeconds(Source * source, float timeOffset)
|
||||||
|
{
|
||||||
|
alSourcef(source->ALsource, AL_SEC_OFFSET, timeOffset);
|
||||||
|
}
|
||||||
|
|
||||||
void SoundManager::initOpenAL()
|
void SoundManager::initOpenAL()
|
||||||
{
|
{
|
||||||
// Initialize OpenAL
|
// Initialize OpenAL
|
||||||
|
|||||||
+2
-1
@@ -54,8 +54,9 @@ Game::Game(int argc, char* argv[])
|
|||||||
ResourceManager::RegisterType<Model>("Model");
|
ResourceManager::RegisterType<Model>("Model");
|
||||||
ResourceManager::RegisterType<RawModel>("RawModel");
|
ResourceManager::RegisterType<RawModel>("RawModel");
|
||||||
ResourceManager::RegisterType<Texture>("Texture");
|
ResourceManager::RegisterType<Texture>("Texture");
|
||||||
ResourceManager::RegisterType<TextureSprite>("TextureSprite");
|
|
||||||
ResourceManager::RegisterType<PNG>("PNG");
|
ResourceManager::RegisterType<PNG>("PNG");
|
||||||
|
ResourceManager::RegisterType<TextureSprite>("TextureSprite");
|
||||||
|
ResourceManager::RegisterType<DDS>("DDS");
|
||||||
ResourceManager::RegisterType<ShaderProgram>("ShaderProgram");
|
ResourceManager::RegisterType<ShaderProgram>("ShaderProgram");
|
||||||
ResourceManager::RegisterType<EntityFile>("EntityFile");
|
ResourceManager::RegisterType<EntityFile>("EntityFile");
|
||||||
ResourceManager::RegisterType<EntityXMLFile>("EntityXMLFile");
|
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
|
//if player has the boost from a defender, subtract the damage taken by StrengthOfEffect amount
|
||||||
auto playerBoostDefenderEntity = e.Victim.FirstChildByName("BoostDefender");
|
auto playerBoostDefenderEntity = e.Victim.FirstChildByName("BoostDefender");
|
||||||
if (playerBoostDefenderEntity.Valid()) {
|
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;
|
health -= e.Damage;
|
||||||
if (health <= 0.0) {
|
if (health <= 0.0) {
|
||||||
Events::PlayerDeath ePlayerDeath;
|
Events::PlayerDeath ePlayerDeath;
|
||||||
|
|||||||
@@ -135,6 +135,8 @@ bool MainMenuSystem::OnInputCommand(const Events::InputCommand& e)
|
|||||||
OpenSubMenu(e);
|
OpenSubMenu(e);
|
||||||
} else if (e.Command == "Resolution" && e.Value == 1) {
|
} else if (e.Command == "Resolution" && e.Value == 1) {
|
||||||
OpenDropDown(e);
|
OpenDropDown(e);
|
||||||
|
} else if (e.Command == "Quit" && e.Value == 1) {
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -10,8 +10,7 @@ PlayerDeathSystem::PlayerDeathSystem(SystemParams params)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PlayerDeathSystem::Update(double dt)
|
void PlayerDeathSystem::Update(double dt)
|
||||||
{
|
{ }
|
||||||
}
|
|
||||||
|
|
||||||
bool PlayerDeathSystem::OnPlayerDeath(Events::PlayerDeath& e)
|
bool PlayerDeathSystem::OnPlayerDeath(Events::PlayerDeath& e)
|
||||||
{
|
{
|
||||||
@@ -33,31 +32,35 @@ void PlayerDeathSystem::createDeathEffect(EntityWrapper player)
|
|||||||
auto entityFile = ResourceManager::Load<EntityFile>("Schema/Entities/PlayerDeathExplosionWithCamera.xml");
|
auto entityFile = ResourceManager::Load<EntityFile>("Schema/Entities/PlayerDeathExplosionWithCamera.xml");
|
||||||
EntityWrapper deathEffectEW = entityFile->MergeInto(m_World);
|
EntityWrapper deathEffectEW = entityFile->MergeInto(m_World);
|
||||||
|
|
||||||
//components that we need from player
|
|
||||||
auto playerModel = player.FirstChildByName("PlayerModel");
|
auto playerModel = player.FirstChildByName("PlayerModel");
|
||||||
if (!playerModel.HasComponent("Model") || !playerModel.HasComponent("Animation")) {
|
if (!playerModel.Valid()) {
|
||||||
if (player == LocalPlayer) {
|
if (player == LocalPlayer) {
|
||||||
setSpectatorCamera();
|
setSpectatorCamera();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
auto playerEntityModel = playerModel["Model"];
|
if (!playerModel.HasComponent("Model")) {
|
||||||
auto playerEntityAnimation = playerModel["Animation"];
|
return;
|
||||||
|
}
|
||||||
//copy the data from player to explosioneffectmodel
|
EntityWrapper deathEffect = playerModel.Clone();
|
||||||
playerEntityModel.Copy(deathEffectEW["Model"]);
|
for (auto& cAnim : deathEffect.ChildrenWithComponent("Animation")) {
|
||||||
playerEntityAnimation.Copy(deathEffectEW["Animation"]);
|
cAnim["Animation"]["Play"] = false;
|
||||||
|
}
|
||||||
//copy the models position,orientation
|
deathEffect.AttachComponent("ExplosionEffect");
|
||||||
deathEffectEW["Transform"]["Position"] = (glm::vec3)player["Transform"]["Position"];
|
deathEffectEW["ExplosionEffect"].Copy(deathEffect["ExplosionEffect"]);
|
||||||
deathEffectEW["Transform"]["Orientation"] = (glm::vec3)player["Transform"]["Orientation"];
|
deathEffect.AttachComponent("Lifetime");
|
||||||
//effect,camera is relative to playersPosition
|
deathEffectEW["Lifetime"].Copy(deathEffect["Lifetime"]);
|
||||||
//deathEffectEW["ExplosionEffect"]["ExplosionOrigin"] = glm::vec3(0, 0, 0);
|
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
|
//camera (with lifetime) behind the player
|
||||||
if (player == LocalPlayer) {
|
if (player == LocalPlayer) {
|
||||||
m_LocalPlayerDeathEffect = deathEffectEW;
|
m_LocalPlayerDeathEffect = deathEffect;
|
||||||
auto cam = deathEffectEW.FirstChildByName("Camera");
|
|
||||||
Events::SetCamera eSetCamera;
|
Events::SetCamera eSetCamera;
|
||||||
eSetCamera.CameraEntity = cam;
|
eSetCamera.CameraEntity = cam;
|
||||||
m_EventBroker->Publish(eSetCamera);
|
m_EventBroker->Publish(eSetCamera);
|
||||||
|
|||||||
@@ -202,12 +202,18 @@ void PlayerMovementSystem::updateMovementControllers(double dt)
|
|||||||
|
|
||||||
if (addSpeed > 0) {
|
if (addSpeed > 0) {
|
||||||
static float accel = 15.f;
|
static float accel = 15.f;
|
||||||
|
#ifdef DEBUG
|
||||||
ImGui::InputFloat("accel", &accel);
|
ImGui::InputFloat("accel", &accel);
|
||||||
|
#endif
|
||||||
static float airAccel = 0.5f;
|
static float airAccel = 0.5f;
|
||||||
|
#ifdef DEBUG
|
||||||
ImGui::InputFloat("airAccel", &airAccel);
|
ImGui::InputFloat("airAccel", &airAccel);
|
||||||
|
#endif
|
||||||
float actualAccel = isOnGround ? accel : airAccel;
|
float actualAccel = isOnGround ? accel : airAccel;
|
||||||
static float surfaceFriction = 5.f;
|
static float surfaceFriction = 5.f;
|
||||||
|
#ifdef DEBUG
|
||||||
ImGui::InputFloat("surfaceFriction", &surfaceFriction);
|
ImGui::InputFloat("surfaceFriction", &surfaceFriction);
|
||||||
|
#endif
|
||||||
float accelerationSpeed = actualAccel * (float)dt * wishSpeed * surfaceFriction;
|
float accelerationSpeed = actualAccel * (float)dt * wishSpeed * surfaceFriction;
|
||||||
//if doubleTapped do Assault Dash - but only boost maximum 50.0f
|
//if doubleTapped do Assault Dash - but only boost maximum 50.0f
|
||||||
float doubleTapDashBoost = controller->AssaultDashDoubleTapped() ? 40.0f : 1.0f;
|
float doubleTapDashBoost = controller->AssaultDashDoubleTapped() ? 40.0f : 1.0f;
|
||||||
@@ -220,7 +226,9 @@ void PlayerMovementSystem::updateMovementControllers(double dt)
|
|||||||
accelerationSpeed *= (double)player["SprintAbility"]["StrengthOfEffect"];
|
accelerationSpeed *= (double)player["SprintAbility"]["StrengthOfEffect"];
|
||||||
}
|
}
|
||||||
velocity += accelerationSpeed * (glm::vec3)wishDirection;
|
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));
|
ImGui::Text("velocity: (%f, %f, %f) |%f|", velocity.x(), velocity.y(), velocity.z(), glm::length((glm::vec3)velocity));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isOnGround) {
|
if (isOnGround) {
|
||||||
@@ -336,10 +344,14 @@ void PlayerMovementSystem::updateVelocity(EntityWrapper player, double dt)
|
|||||||
// Ground friction
|
// Ground friction
|
||||||
float speed = glm::length((glm::vec3)velocity);
|
float speed = glm::length((glm::vec3)velocity);
|
||||||
static float groundFriction = 7.f;
|
static float groundFriction = 7.f;
|
||||||
|
#ifdef DEBUG
|
||||||
ImGui::InputFloat("groundFriction", &groundFriction);
|
ImGui::InputFloat("groundFriction", &groundFriction);
|
||||||
|
#endif
|
||||||
static float airFriction = 2.f;
|
static float airFriction = 2.f;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
ImGui::InputFloat("airFriction", &airFriction);
|
ImGui::InputFloat("airFriction", &airFriction);
|
||||||
|
#endif
|
||||||
float friction = isOnGround ? groundFriction : airFriction;
|
float friction = isOnGround ? groundFriction : airFriction;
|
||||||
if (speed > 0) {
|
if (speed > 0) {
|
||||||
float drop = speed * friction * (float)dt;
|
float drop = speed * friction * (float)dt;
|
||||||
|
|||||||
@@ -87,6 +87,9 @@ bool SoundSystem::OnPlayerDamage(const Events::PlayerDamage & e)
|
|||||||
if (!e.Victim.Valid() || !e.Inflictor.Valid()) {
|
if (!e.Victim.Valid() || !e.Inflictor.Valid()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (e.Victim.ID != LocalPlayer.ID) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
auto victimTeam = m_World->GetComponent(e.Victim.ID, "Team");
|
auto victimTeam = m_World->GetComponent(e.Victim.ID, "Team");
|
||||||
auto inflictorTeam = m_World->GetComponent(e.Inflictor.ID, "Team");
|
auto inflictorTeam = m_World->GetComponent(e.Inflictor.ID, "Team");
|
||||||
if ((int)victimTeam["Team"] == (int)inflictorTeam["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
|
// Start reloading automatically if at 0 mag ammo
|
||||||
Field<int> magAmmo = cWeapon["MagazineAmmo"];
|
Field<int> magAmmo = cWeapon["MagazineAmmo"];
|
||||||
if (m_ConfigAutoReload && magAmmo <= 0) {
|
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
|
// Only start reloading once we're done firing
|
||||||
@@ -235,7 +247,8 @@ void AssaultWeaponBehaviour::fireBullet(ComponentWrapper cWeapon, WeaponInfo& wi
|
|||||||
float distance = traceRayDistance(origin, direction);
|
float distance = traceRayDistance(origin, direction);
|
||||||
EntityWrapper ray = SpawnerSystem::Spawn(tracerSpawner, tracerSpawner);
|
EntityWrapper ray = SpawnerSystem::Spawn(tracerSpawner, tracerSpawner);
|
||||||
if (ray.Valid()) {
|
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
|
//MuzzleFlash
|
||||||
|
|||||||
@@ -395,9 +395,12 @@ void DefenderWeaponBehaviour::spawnTracers(ComponentWrapper cWeapon, WeaponInfo&
|
|||||||
glm::vec3 muzzlePosition = TransformSystem::AbsolutePosition(muzzle);
|
glm::vec3 muzzlePosition = TransformSystem::AbsolutePosition(muzzle);
|
||||||
glm::quat muzzleOrientation = TransformSystem::AbsoluteOrientation(muzzle);
|
glm::quat muzzleOrientation = TransformSystem::AbsoluteOrientation(muzzle);
|
||||||
|
|
||||||
rayOrigin = muzzlePosition;
|
|
||||||
|
|
||||||
glm::vec3 muzzleToHit = hitPosition - muzzlePosition;
|
glm::vec3 muzzleToHit = hitPosition - muzzlePosition;
|
||||||
|
|
||||||
|
rayOrigin = muzzlePosition + (muzzleToHit/2.f);
|
||||||
|
|
||||||
|
|
||||||
glm::vec3 lookVector = glm::normalize(-muzzleToHit);
|
glm::vec3 lookVector = glm::normalize(-muzzleToHit);
|
||||||
float pitch = std::asin(-lookVector.y);
|
float pitch = std::asin(-lookVector.y);
|
||||||
float yaw = std::atan2(lookVector.x, lookVector.z);
|
float yaw = std::atan2(lookVector.x, lookVector.z);
|
||||||
@@ -459,8 +462,8 @@ void DefenderWeaponBehaviour::dealDamage(ComponentWrapper cWeapon, WeaponInfo& w
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Temp hit decal
|
// Temp hit decal
|
||||||
EntityWrapper hit = ResourceManager::Load<EntityFile>("Schema/Entities/HitTest.xml")->MergeInto(m_World);
|
// EntityWrapper hit = ResourceManager::Load<EntityFile>("Schema/Entities/HitTest.xml")->MergeInto(m_World);
|
||||||
(Field<glm::vec3>)hit["Transform"]["Position"] = pick.Position;
|
// (Field<glm::vec3>)hit["Transform"]["Position"] = pick.Position;
|
||||||
|
|
||||||
// Don't let us shoot ourselves in the foot somehow
|
// Don't let us shoot ourselves in the foot somehow
|
||||||
if (victim == LocalPlayer) {
|
if (victim == LocalPlayer) {
|
||||||
@@ -477,12 +480,17 @@ void DefenderWeaponBehaviour::dealDamage(ComponentWrapper cWeapon, WeaponInfo& w
|
|||||||
|
|
||||||
// Check for friendly fire
|
// Check for friendly fire
|
||||||
if ((ComponentInfo::EnumType)victim["Team"]["Team"] == (ComponentInfo::EnumType)wi.Player["Team"]["Team"]) {
|
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;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
damageSum[victim] += pelletDamage;
|
damageSum[victim] += pelletDamage;
|
||||||
((Field<glm::vec4>)hit["Model"]["Color"]).z(1.f);
|
// ((Field<glm::vec4>)hit["Model"]["Color"]).z(1.f);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Deal damage!
|
// Deal damage!
|
||||||
@@ -493,7 +501,6 @@ void DefenderWeaponBehaviour::dealDamage(ComponentWrapper cWeapon, WeaponInfo& w
|
|||||||
ePlayerDamage.Victim = kv.first;
|
ePlayerDamage.Victim = kv.first;
|
||||||
ePlayerDamage.Damage = kv.second;
|
ePlayerDamage.Damage = kv.second;
|
||||||
m_EventBroker->Publish(ePlayerDamage);
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Tracer
|
// Tracer
|
||||||
EntityWrapper tracerSpawner = weaponModelEntity.FirstChildByName("WeaponMuzzleRay");
|
EntityWrapper tracerSpawner = weaponModelEntity.FirstChildByName("WeaponMuzzleRay");
|
||||||
if (tracerSpawner.Valid()) {
|
if (tracerSpawner.Valid()) {
|
||||||
glm::vec3 origin = TransformSystem::AbsolutePosition(tracerSpawner);
|
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);
|
float distance = traceRayDistance(origin, direction);
|
||||||
EntityWrapper ray = SpawnerSystem::Spawn(tracerSpawner, tracerSpawner);
|
EntityWrapper ray = SpawnerSystem::Spawn(tracerSpawner, tracerSpawner);
|
||||||
if (ray.Valid()) {
|
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_suite;
|
||||||
using boost::unit_test_framework::test_case;
|
using boost::unit_test_framework::test_case;
|
||||||
|
|
||||||
#include "PickupSpawnTest.h"
|
#include "HealthPickupTest.h"
|
||||||
|
|
||||||
BOOST_AUTO_TEST_SUITE(PickupSpawnTestSuite)
|
BOOST_AUTO_TEST_SUITE(PickupSpawnTestSuite)
|
||||||
|
|
||||||
@@ -41,7 +41,7 @@ PickupSpawnTest::PickupSpawnTest(int runTestNumber)
|
|||||||
// Create system pipeline
|
// Create system pipeline
|
||||||
m_SystemPipeline = new SystemPipeline(m_World, m_EventBroker, false, false);
|
m_SystemPipeline = new SystemPipeline(m_World, m_EventBroker, false, false);
|
||||||
m_SystemPipeline->AddSystem<HealthSystem>(0);
|
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
|
//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");
|
auto file = ResourceManager::Load<EntityXMLFile>("Schema/Entities/HealthPickup.xml");
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
#include "Collision/CollisionSystem.h"
|
#include "Collision/CollisionSystem.h"
|
||||||
#include "Core/EntityXMLFileWriter.h"
|
#include "Core/EntityXMLFileWriter.h"
|
||||||
#include "Game/Systems/HealthSystem.h"
|
#include "Game/Systems/HealthSystem.h"
|
||||||
#include "Game/Systems/PickupSpawnSystem.h"
|
#include "Game/Systems/HealthPickupSystem.h"
|
||||||
|
|
||||||
#include "Core/ResourceManager.h"
|
#include "Core/ResourceManager.h"
|
||||||
|
|
||||||
@@ -56,9 +56,9 @@ private:
|
|||||||
EntityID m_PlayerID, m_HealthPickupID;
|
EntityID m_PlayerID, m_HealthPickupID;
|
||||||
int m_RunTestNumber;
|
int m_RunTestNumber;
|
||||||
|
|
||||||
EventRelay<PickupSpawnSystem, Events::PlayerHealthPickup> m_HP;
|
EventRelay<HealthPickupSystem, Events::PlayerHealthPickup> m_HP;
|
||||||
bool OnHealthPickup(Events::PlayerHealthPickup& e);
|
bool OnHealthPickup(Events::PlayerHealthPickup& e);
|
||||||
EventRelay<PickupSpawnSystem, Events::PickupSpawned> m_PS;
|
EventRelay<HealthPickupSystem, Events::PickupSpawned> m_PS;
|
||||||
bool OnPickupSpawned(Events::PickupSpawned& e);
|
bool OnPickupSpawned(Events::PickupSpawned& e);
|
||||||
|
|
||||||
bool m_TestStage1Success = false;
|
bool m_TestStage1Success = false;
|
||||||
Reference in New Issue
Block a user