Compare commits

...

23 Commits

Author SHA1 Message Date
William Moberg 407149fbb0 Merge branch 'master' into Importer 2016-03-14 03:23:08 +01:00
William Moberg 4c52f55bf0 Any collision meshes we have should be working, and RawModels should be released after being loaded. 2016-03-14 03:20:36 +01:00
maqu14 94a10c3a8f New polished map 2016-03-14 03:07:58 +01:00
Jace cbb2eee003 Merge branch 'master' of github.com:teamfisk/TacticalZ 2016-03-14 02:53:18 +01:00
Jace f6d85c86c4 Added new team pick 2016-03-14 02:53:02 +01:00
maqu14 8a24a16232 Merge branch 'master' of github.com:teamfisk/TacticalZ
# Conflicts:
#	resources/DefaultConfig.ini
#	resources/Schema/Entities/CP_Rocky2.xml
2016-03-14 02:51:09 +01:00
maqu14 d850e116fb New map, Some new assets 2016-03-14 02:50:24 +01:00
Teejoon a4c35e5908 Lower Glow intensity on players 2016-03-14 02:38:26 +01:00
Teejoon ff881e1f78 Merge branch 'master' of https://github.com/teamfisk/TacticalZ 2016-03-14 02:16:07 +01:00
Teejoon eb2e79e4cb Players now got lights on them 2016-03-14 02:15:56 +01:00
William Moberg f632b45c9b Merge branch 'MemoryOptimization' into Importer
# Conflicts:
#	include/Engine/Rendering/Model.h
#	src/Engine/Collision/Collision.cpp
#	src/Engine/Collision/CollisionSystem.cpp
#	src/Engine/Collision/TriggerSystem.cpp
#	src/Game/Systems/SpawnerSystem.cpp
2016-03-14 02:06:53 +01:00
Tleety 788d80f721 Merge branch 'master' of github.com:teamfisk/TacticalZ 2016-03-14 01:59:41 +01:00
Tleety 0b485163c9 Changes to menu 2016-03-14 01:59:33 +01:00
Jace e527badab4 Executable name updated to "Axyz" 2016-03-14 01:53:20 +01:00
William Moberg 7e6830af35 Merge branch 'master' into Importer 2016-03-14 01:09:18 +01:00
William Moberg dea57b4872 Fixes after merge. 2016-03-14 01:00:58 +01:00
William Moberg 562afac9d1 Merge branch 'master' into Importer
# Conflicts:
#	src/Engine/Collision/Collision.cpp
#	src/Engine/Collision/CollisionSystem.cpp
#	src/Engine/Rendering/DrawFinalPass.cpp
#	src/Game/Systems/SpawnerSystem.cpp
2016-03-14 00:42:07 +01:00
Jace 0516794db6 Separating RawModel from Model 2016-03-13 14:47:11 +01:00
Teejoon 7b32d92170 Merge with master 2016-03-02 13:45:56 +01:00
Teejoon 46eaedb186 Merge remote-tracking branch 'origin/master' into Importer
Conflicts:
	resources/Schema/Entities/Player.xml
	src/Engine/Collision/CollisionSystem.cpp
	src/Engine/Rendering/DrawFinalPass.cpp
2016-03-02 13:19:40 +01:00
Teejoon bb6e491eed Fix for GLERROR in DrawModelRenderQueues 2016-02-25 16:00:27 +01:00
Teejoon 669a7d13cf We can now export and import collision meshes :D 2016-02-25 15:39:42 +01:00
Teejoon 9229b77893 Export Collision mesh 2016-02-25 13:19:35 +01:00
36 changed files with 52873 additions and 12041 deletions
+1 -1
Submodule assets updated: b6027bf49f...9e9d799f11
+6 -6
View File
@@ -48,13 +48,13 @@ bool RayVsTriangle(const Ray& ray,
bool trueOnNegativeDistance = false); bool trueOnNegativeDistance = false);
//Return true if the ray hits any of the triangles in the model. Stops checking when a hit is detected. //Return true if the ray hits any of the triangles in the model. Stops checking when a hit is detected.
bool RayVsModel(const Ray& ray, bool RayVsModel(const Ray& ray,
const RawModel::Vertex* modelVertices, const std::vector<glm::vec3>& modelVertices,
const std::vector<unsigned int>& modelIndices, const std::vector<unsigned int>& modelIndices,
const glm::mat4& modelMatrix); const glm::mat4& modelMatrix);
//Return true if the ray hits any of the triangles in the model. //Return true if the ray hits any of the triangles in the model.
//Also returns the position of the intersection point. Will loop through all the whole model indices. //Also returns the position of the intersection point. Will loop through all the whole model indices.
bool RayVsModel(const Ray& ray, bool RayVsModel(const Ray& ray,
const RawModel::Vertex* modelVertices, const std::vector<glm::vec3>& modelVertices,
const std::vector<unsigned int>& modelIndices, const std::vector<unsigned int>& modelIndices,
const glm::mat4& modelMatrix, const glm::mat4& modelMatrix,
glm::vec3& outHitPosition); glm::vec3& outHitPosition);
@@ -62,7 +62,7 @@ bool RayVsModel(const Ray& ray,
//Also returns the distance from the ray origin to the closest //Also returns the distance from the ray origin to the closest
//intersection point, and the barycentric u,v-coordinates. Will loop through all the whole model indices. //intersection point, and the barycentric u,v-coordinates. Will loop through all the whole model indices.
bool RayVsModel(const Ray& ray, bool RayVsModel(const Ray& ray,
const RawModel::Vertex* modelVertices, const std::vector<glm::vec3>& modelVertices,
const std::vector<unsigned int>& modelIndices, const std::vector<unsigned int>& modelIndices,
const glm::mat4& modelMatrix, const glm::mat4& modelMatrix,
float& outDistance, float& outDistance,
@@ -70,7 +70,7 @@ bool RayVsModel(const Ray& ray,
float& outVCoord); float& outVCoord);
bool AABBvsTriangles(const AABB& box, bool AABBvsTriangles(const AABB& box,
const RawModel::Vertex* modelVertices, const std::vector<glm::vec3>& modelVertices,
const std::vector<unsigned int>& modelIndices, const std::vector<unsigned int>& modelIndices,
const glm::mat4& modelMatrix, const glm::mat4& modelMatrix,
glm::vec3& boxVelocity, glm::vec3& boxVelocity,
@@ -80,7 +80,7 @@ bool AABBvsTriangles(const AABB& box,
//Detects collision, but does not resolve. //Detects collision, but does not resolve.
bool AABBvsTriangles(const AABB& box, bool AABBvsTriangles(const AABB& box,
const RawModel::Vertex* modelVertices, const std::vector<glm::vec3>& modelVertices,
const std::vector<unsigned int>& modelIndices, const std::vector<unsigned int>& modelIndices,
const glm::mat4& modelMatrix); const glm::mat4& modelMatrix);
@@ -92,7 +92,7 @@ enum Output
}; };
//Detects intersection and containment. //Detects intersection and containment.
Output AABBvsTrianglesWContainment(const AABB& box, Output AABBvsTrianglesWContainment(const AABB& box,
const RawModel::Vertex* modelVertices, const std::vector<glm::vec3>& modelVertices,
const std::vector<unsigned int>& modelIndices, const std::vector<unsigned int>& modelIndices,
const glm::mat4& modelMatrix); const glm::mat4& modelMatrix);
+12 -6
View File
@@ -16,15 +16,18 @@ private:
public: public:
~Model(); ~Model();
const std::vector<RawModel::MaterialProperties>& MaterialGroups() const { return m_RawModel->m_Materials; } const std::vector<RawModel::MaterialProperties>& MaterialGroups() const { return m_Materials; }
const glm::mat4& Matrix() const { return m_RawModel->m_Matrix; } unsigned int NumberOfVertices() const { return m_Vertices.size(); }
const RawModel::Vertex* Vertices() const { return m_RawModel->Vertices(); }
unsigned int NumberOfVertices() const { return m_RawModel->NumVertices(); }
const AABB& Box() const { return m_Box; } const AABB& Box() const { return m_Box; }
bool IsSkinned() const { return m_RawModel->IsSkinned(); } bool IsSkinned() const { return m_IsSkinned; }
GLuint VAO; GLuint VAO;
GLuint ElementBuffer; GLuint ElementBuffer;
RawModel* m_RawModel; //RawModel* m_RawModel;
Skeleton* m_Skeleton = nullptr;
std::vector<glm::vec3> m_Vertices;
std::vector<unsigned int> m_Indices;
private: private:
AABB m_Box; AABB m_Box;
@@ -34,6 +37,9 @@ private:
GLuint TangentNormalsBuffer; GLuint TangentNormalsBuffer;
GLuint BiTangentNormalsBuffer; GLuint BiTangentNormalsBuffer;
GLuint TextureCoordBuffer; GLuint TextureCoordBuffer;
std::vector<RawModel::MaterialProperties> m_Materials;
bool m_IsSkinned;
}; };
#endif #endif
+1 -1
View File
@@ -110,7 +110,7 @@ struct ModelJob : RenderJob
} }
if (model->IsSkinned()) { if (model->IsSkinned()) {
Skeleton = Model->m_RawModel->m_Skeleton; Skeleton = Model->m_Skeleton;
if (Skeleton != nullptr) { if (Skeleton != nullptr) {
EntityWrapper entityWrapper = EntityWrapper(world, modelComponent.EntityID); EntityWrapper entityWrapper = EntityWrapper(world, modelComponent.EntityID);
+39 -16
View File
@@ -13,6 +13,7 @@
#include <boost/filesystem/path.hpp> #include <boost/filesystem/path.hpp>
#include <boost/endian/buffers.hpp>
#include "../Common.h" #include "../Common.h"
#include "../GLM.h" #include "../GLM.h"
#include "../Core/ResourceManager.h" #include "../Core/ResourceManager.h"
@@ -20,22 +21,17 @@
#include "Skeleton.h" #include "Skeleton.h"
#include "ShaderProgram.h" #include "ShaderProgram.h"
#include "boost\endian\buffers.hpp"
class RawModelCustom : public Resource class RawModelCustom : public Resource
{ {
friend class ResourceManager; friend class ResourceManager;
friend class Model;
protected: protected:
RawModelCustom(std::string fileName); RawModelCustom(std::string fileName);
public: public:
~RawModelCustom(); ~RawModelCustom();
struct Vertex struct RenderVertex {
{
glm::vec3 Position; glm::vec3 Position;
glm::vec3 Normal; glm::vec3 Normal;
glm::vec3 Tangent; glm::vec3 Tangent;
@@ -43,7 +39,7 @@ public:
glm::vec2 TextureCoords; glm::vec2 TextureCoords;
}; };
struct SkinedVertex : public Vertex { struct SkinedVertex : public RenderVertex {
glm::vec4 BoneIndices; glm::vec4 BoneIndices;
glm::vec4 BoneWeights; glm::vec4 BoneWeights;
}; };
@@ -91,7 +87,7 @@ public:
unsigned int ShaderID = 0; unsigned int ShaderID = 0;
}; };
const Vertex* Vertices() const { const RenderVertex* Vertices() const {
if (hasSkin) { if (hasSkin) {
return m_SkinedVertices.data(); return m_SkinedVertices.data();
} else { } else {
@@ -99,16 +95,16 @@ public:
} }
}; };
unsigned int VertexSize() const { unsigned int VertexSize() const {
if (hasSkin) { if (hasSkin) {
return sizeof(SkinedVertex); return sizeof(SkinedVertex);
} }
else { else {
return sizeof(Vertex); return sizeof(RenderVertex);
} }
}; };
unsigned int NumVertices() const { size_t NumVertices() const {
if (hasSkin) { if (hasSkin) {
return m_SkinedVertices.size(); return m_SkinedVertices.size();
} else { } else {
@@ -116,17 +112,39 @@ public:
} }
}; };
const std::vector<unsigned int>& Indices() const {
return m_Indices;
}
bool IsSkinned() const { return hasSkin; }; bool IsSkinned() const { return hasSkin; };
const std::vector<glm::vec3>& CollisionVertices();
size_t NumCollisionVertices() const {
return m_CollisionVertices.size();
};
const std::vector<unsigned int>& CollisionIndices() const {
if (hasCollisionMesh) {
return m_CollisionIndices;
} else {
return m_Indices;
}
};
std::vector<MaterialProperties> m_Materials; std::vector<MaterialProperties> m_Materials;
std::vector<unsigned int> m_Indices;
Skeleton* m_Skeleton = nullptr; Skeleton* m_Skeleton = nullptr;
glm::mat4 m_Matrix; glm::mat4 m_Matrix;
private: private:
bool hasSkin; bool hasSkin;
std::vector<Vertex> m_Vertices; bool hasCollisionMesh = false;
std::vector<unsigned int> m_Indices;
std::vector<unsigned int> m_CollisionIndices;
std::vector<glm::vec3> m_CollisionVertices;
std::vector<RenderVertex> m_Vertices;
std::vector<SkinedVertex> m_SkinedVertices; std::vector<SkinedVertex> m_SkinedVertices;
void ReadMeshFile(std::string filePath); void ReadMeshFile(std::string filePath);
@@ -149,7 +167,12 @@ private:
void ReadAnimationClips(std::size_t& offset, char* fileData, const unsigned int& fileByteSize, unsigned int numberOfClips); void ReadAnimationClips(std::size_t& offset, char* fileData, const unsigned int& fileByteSize, unsigned int numberOfClips);
void ReadAnimationClipSingle(std::size_t& offset, char* fileData, const unsigned int& fileByteSize, unsigned int clipIndex); void ReadAnimationClipSingle(std::size_t& offset, char* fileData, const unsigned int& fileByteSize, unsigned int clipIndex);
void ReadAnimationKeyFrame(std::size_t& offset, char* fileData, const unsigned int& fileByteSize, std::vector<Skeleton::Animation::Keyframe>& animation); void ReadAnimationKeyFrame(std::size_t& offset, char* fileData, const unsigned int& fileByteSize, std::vector<Skeleton::Animation::Keyframe>& animation);
void ReadCollisionFile(std::string filePath);
void ReadCollisionFileData(std::size_t& offset, char* fileData, const unsigned int& fileByteSize);
const std::vector<glm::vec3>& ConstructCollisionList();
//void CreateSkeleton(std::vector<std::tuple<std::string, glm::mat4>> &boneInfo, std::map<std::string, int> &boneNameMapping, aiNode* node, int parentID); //void CreateSkeleton(std::vector<std::tuple<std::string, glm::mat4>> &boneInfo, std::map<std::string, int> &boneNameMapping, aiNode* node, int parentID);
}; };
+1
View File
@@ -8,6 +8,7 @@
#include "Events/ESpawnerSpawn.h" #include "Events/ESpawnerSpawn.h"
#include "Core/TransformSystem.h" #include "Core/TransformSystem.h"
#include "Core/EntityFile.h" #include "Core/EntityFile.h"
#include "Rendering/Model.h"
class SpawnerSystem : public System class SpawnerSystem : public System
{ {
+1 -3
View File
@@ -29,6 +29,4 @@ K=TakeDamage,1500
F2=PerformanceTimingResetAllTimers F2=PerformanceTimingResetAllTimers
F3=PerformanceTimingCreateExcelData F3=PerformanceTimingCreateExcelData
Comma=SwapToClassPick Comma=SwapToClassPick
Period=SwapToTeamPick Period=SwapToTeamPick
Enter=PickClass,1
F5=DisconnectFromServer
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
+265 -159
View File
@@ -3,7 +3,7 @@
<Components> <Components>
<c:CapturePointGameMode> <c:CapturePointGameMode>
<RespawnTime>0.35657206405745967</RespawnTime> <RespawnTime>0.10012471663946698</RespawnTime>
<MaxRespawnTime>0.5</MaxRespawnTime> <MaxRespawnTime>0.5</MaxRespawnTime>
</c:CapturePointGameMode> </c:CapturePointGameMode>
<c:Transform> <c:Transform>
@@ -19,7 +19,11 @@
<Red/> <Red/>
</Team> </Team>
</c:Team> </c:Team>
<c:PlayerSpawn/> <c:PlayerSpawn>
<AssaultFile>Schema/Entities/PlayerAssaultBlue.xml</AssaultFile>
<DefenderFile>Schema/Entities/PlayerDefenderBlue.xml</DefenderFile>
<SniperFile></SniperFile>
</c:PlayerSpawn>
<c:Spawner> <c:Spawner>
<EntityFile>Schema/Entities/PlayerDefenderBlue.xml</EntityFile> <EntityFile>Schema/Entities/PlayerDefenderBlue.xml</EntityFile>
</c:Spawner> </c:Spawner>
@@ -90,7 +94,11 @@
<Blue/> <Blue/>
</Team> </Team>
</c:Team> </c:Team>
<c:PlayerSpawn/> <c:PlayerSpawn>
<AssaultFile>Schema/Entities/PlayerAssaultBlue.xml</AssaultFile>
<DefenderFile>Schema/Entities/PlayerDefenderBlue.xml</DefenderFile>
<SniperFile></SniperFile>
</c:PlayerSpawn>
<c:Spawner> <c:Spawner>
<EntityFile>Schema/Entities/PlayerAssaultBlue.xml</EntityFile> <EntityFile>Schema/Entities/PlayerAssaultBlue.xml</EntityFile>
</c:Spawner> </c:Spawner>
@@ -107,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.800000012" Y="0" Z="0"/> <Position X="-0.600000024" Y="0" Z="0.549540162"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
@@ -120,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.600000024" Y="0" Z="0.549540162"/> <Position X="0.800000012" Y="0" Z="0"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
@@ -269,7 +277,7 @@
</c:RaptorCopter> </c:RaptorCopter>
<c:Transform> <c:Transform>
<Position X="0" Y="-30.6910019" Z="0"/> <Position X="0" Y="-30.6910019" Z="0"/>
<Orientation X="0" Y="39.1253624" Z="0"/> <Orientation X="0" Y="43.4443054" Z="0"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children> <Children>
@@ -417,7 +425,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>AssaultPoseF</AnimationName> <AnimationName>AssaultPoseF</AnimationName>
<Time>2.2728534617500387</Time> <Time>0.65905298965262915</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -433,7 +441,7 @@
<Resource>Models/Weapons/Blue/AssaultWeaponBlue.mesh</Resource> <Resource>Models/Weapons/Blue/AssaultWeaponBlue.mesh</Resource>
</c:Model> </c:Model>
<c:Transform> <c:Transform>
<Position X="0.160869107" Y="1.21713078" Z="-0.151224568"/> <Position X="0.160869107" Y="1.21468747" Z="-0.151224568"/>
<Orientation X="1.90465617" Y="-0.166544378" Z="0.0701896623"/> <Orientation X="1.90465617" Y="-0.166544378" Z="0.0701896623"/>
</c:Transform> </c:Transform>
</Components> </Components>
@@ -816,7 +824,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>DefenderPoseF</AnimationName> <AnimationName>DefenderPoseF</AnimationName>
<Time>1.4396916405947664</Time> <Time>2.3258911684973569</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -832,8 +840,8 @@
<Resource>Models/Weapons/Blue/DefenderWeaponBlue.mesh</Resource> <Resource>Models/Weapons/Blue/DefenderWeaponBlue.mesh</Resource>
</c:Model> </c:Model>
<c:Transform> <c:Transform>
<Position X="0.196064115" Y="0.705373585" Z="0.0272535309"/> <Position X="0.195810497" Y="0.711551607" Z="0.0388058722"/>
<Orientation X="-1.3924278" Y="-0.0973875821" Z="0.332219422"/> <Orientation X="-1.3924278" Y="-0.0973876044" Z="0.332219511"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
@@ -1089,22 +1097,6 @@
<c:Transform/> <c:Transform/>
</Components> </Components>
<Children> <Children>
<Entity name="BottomRight">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
</c:Sprite>
<c:Transform>
<Position X="0.142000005" Y="-0.21800001" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="4.71199989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="TopRight"> <Entity name="TopRight">
<Components> <Components>
<c:Sprite> <c:Sprite>
@@ -1136,6 +1128,22 @@
</Components> </Components>
<Children/> <Children/>
</Entity> </Entity>
<Entity name="BottomRight">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
</c:Sprite>
<c:Transform>
<Position X="0.142000005" Y="-0.21800001" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="4.71199989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="TopLeft"> <Entity name="TopLeft">
<Components> <Components>
<c:Sprite> <c:Sprite>
@@ -1177,7 +1185,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>SniperPoseF</AnimationName> <AnimationName>SniperPoseF</AnimationName>
<Time>1.6727845840185651</Time> <Time>0.058984111921155602</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -1193,8 +1201,8 @@
<Resource>Models/Weapons/Blue/SecondaryWeaponBlue.mesh</Resource> <Resource>Models/Weapons/Blue/SecondaryWeaponBlue.mesh</Resource>
</c:Model> </c:Model>
<c:Transform> <c:Transform>
<Position X="-0.0454485044" Y="1.06437671" Z="-0.125484675"/> <Position X="-0.0454485416" Y="1.07162762" Z="-0.12548463"/>
<Orientation X="-1.50533736" Y="1.34000039" Z="-1.34724414"/> <Orientation X="-1.50533807" Y="1.34000039" Z="-1.34724486"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
@@ -1428,14 +1436,14 @@
<Entity name="PickTeamHUD"> <Entity name="PickTeamHUD">
<Components> <Components>
<c:Transform> <c:Transform>
<Position X="0" Y="0" Z="-0.63500005"/> <Position X="0" Y="0.0200000014" Z="-0.63500005"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children> <Children>
<Entity name="TeamBluePick"> <Entity name="TeamBluePick">
<Components> <Components>
<c:Transform> <c:Transform>
<Position X="-0.114000008" Y="0.0190000013" Z="0"/> <Position X="-0.131000012" Y="0.0190000013" Z="0"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children> <Children>
@@ -1447,14 +1455,14 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture> <DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
<BlurBackground>true</BlurBackground> <BlurBackground>true</BlurBackground>
<Color A="0.392156869" B="0.349019617" G="0" R="0"/> <Color A="0.392156869" B="0.768627465" G="0" R="0"/>
</c:Sprite> </c:Sprite>
<c:InputCmdButton> <c:InputCmdButton>
<Command>PickTeam</Command> <Command>PickTeam</Command>
<PressValue>3</PressValue> <PressValue>3</PressValue>
</c:InputCmdButton> </c:InputCmdButton>
<c:Transform> <c:Transform>
<Scale X="0.207000017" Y="0.249000013" Z="1"/> <Scale X="0.24000001" Y="0.307000011" Z="1"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
@@ -1471,9 +1479,10 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear> <Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="0.100000001" Y="-0.121000007" Z="0.00499999989"/> <Position X="0.118000008" Y="-0.150000006" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="4.71199989"/> <Orientation X="0" Y="0" Z="4.71199989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/> <Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform> </c:Transform>
@@ -1487,9 +1496,10 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear> <Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="0.100000001" Y="0.120000005" Z="0.00499999989"/> <Position X="0.118000008" Y="0.150000006" Z="0.00499999989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/> <Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform> </c:Transform>
</Components> </Components>
@@ -1502,9 +1512,10 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear> <Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="-0.100000001" Y="-0.121000007" Z="0.00499999989"/> <Position X="-0.117000006" Y="-0.150000006" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="3.14900017"/> <Orientation X="0" Y="0" Z="3.14900017"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/> <Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform> </c:Transform>
@@ -1518,9 +1529,10 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear> <Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="-0.100000001" Y="0.121000007" Z="0.00499999989"/> <Position X="-0.117000006" Y="0.150000006" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="1.5710001"/> <Orientation X="0" Y="0" Z="1.5710001"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/> <Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform> </c:Transform>
@@ -1534,6 +1546,7 @@
<c:Text> <c:Text>
<Content>Blue</Content> <Content>Blue</Content>
<Resource>Fonts/DroidSans.ttf,64</Resource> <Resource>Fonts/DroidSans.ttf,64</Resource>
<Visible>false</Visible>
<Alignment> <Alignment>
<Left/> <Left/>
</Alignment> </Alignment>
@@ -1545,127 +1558,27 @@
</Components> </Components>
<Children/> <Children/>
</Entity> </Entity>
</Children> <Entity>
</Entity>
<Entity name="TeamRedPick">
<Components>
<c:Transform>
<Position X="0.114" Y="0.0189999994" Z="0"/>
</c:Transform>
</Components>
<Children>
<Entity name="Button_1">
<Components> <Components>
<c:Button/>
<c:Sprite> <c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model> <Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/BlueTeam.png</DiffuseTexture>
<BlurBackground>true</BlurBackground> <ClampToBorder>true</ClampToBorder>
<Color A="0.392156869" B="0" G="0" R="0.556862772"/>
</c:Sprite> </c:Sprite>
<c:InputCmdButton>
<Command>PickTeam</Command>
<PressValue>2</PressValue>
</c:InputCmdButton>
<c:Transform> <c:Transform>
<Scale X="0.207000017" Y="0.249000013" Z="1"/> <Position X="0" Y="-0.00900000054" Z="0.00600000005"/>
<Scale X="0.340000004" Y="0.340000004" Z="1"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
</Entity> </Entity>
<Entity name="Text">
<Components>
<c:Text>
<Content>Red</Content>
<Resource>Fonts/DroidSans.ttf,64</Resource>
<Alignment>
<Left/>
</Alignment>
</c:Text>
<c:Transform>
<Position X="-0.0890000015" Y="-0.105000004" Z="0.00499999989"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="ButtonCorner_Origin">
<Components>
<c:Transform/>
</Components>
<Children>
<Entity name="BottomRight">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
</c:Sprite>
<c:Transform>
<Position X="0.100000001" Y="-0.121000007" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="4.71199989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="TopRight">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
</c:Sprite>
<c:Transform>
<Position X="0.100000001" Y="0.120000005" Z="0.00499999989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="BottomLeft">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
</c:Sprite>
<c:Transform>
<Position X="-0.100000001" Y="-0.121000007" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="3.14900017"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="TopLeft">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
</c:Sprite>
<c:Transform>
<Position X="-0.100000001" Y="0.121000007" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="1.5710001"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
</Children> </Children>
</Entity> </Entity>
<Entity name="TeamSpectatorPick"> <Entity name="TeamSpectatorPick">
<Components> <Components>
<c:Transform> <c:Transform>
<Position X="0" Y="-0.153000012" Z="0"/> <Position X="0" Y="-0.184000015" Z="0"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children> <Children>
@@ -1680,11 +1593,11 @@
<Color A="0.392156869" B="0" G="0" R="0"/> <Color A="0.392156869" B="0" G="0" R="0"/>
</c:Sprite> </c:Sprite>
<c:InputCmdButton> <c:InputCmdButton>
<Command>PickTeam</Command> <Command>PickTeam_</Command>
<PressValue>1</PressValue> <PressValue>1</PressValue>
</c:InputCmdButton> </c:InputCmdButton>
<c:Transform> <c:Transform>
<Scale X="0.435000032" Y="0.0520000011" Z="1"/> <Scale X="0.502000034" Y="0.0530000031" Z="1"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
@@ -1693,7 +1606,7 @@
<Components> <Components>
<c:Text> <c:Text>
<Content>Spectator</Content> <Content>Spectator</Content>
<Resource>Fonts/DroidSans.ttf,64</Resource> <Resource>Fonts/Hind-Edited.otf,64</Resource>
</c:Text> </c:Text>
<c:Transform> <c:Transform>
<Position X="0" Y="-0.00800000038" Z="0.00499999989"/> <Position X="0" Y="-0.00800000038" Z="0.00499999989"/>
@@ -1714,9 +1627,10 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear> <Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="0.214000016" Y="-0.0230000019" Z="0.00499999989"/> <Position X="0.248000011" Y="-0.0230000019" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="4.71199989"/> <Orientation X="0" Y="0" Z="4.71199989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/> <Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform> </c:Transform>
@@ -1730,9 +1644,10 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear> <Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="0.214000002" Y="0.0240000002" Z="0.00499999989"/> <Position X="0.247000009" Y="0.0240000002" Z="0.00499999989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/> <Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform> </c:Transform>
</Components> </Components>
@@ -1745,9 +1660,10 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear> <Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="-0.214000002" Y="-0.023" Z="0.00499999989"/> <Position X="-0.247000009" Y="-0.023" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="3.14900017"/> <Orientation X="0" Y="0" Z="3.14900017"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/> <Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform> </c:Transform>
@@ -1761,9 +1677,10 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear> <Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="-0.214000002" Y="0.0240000002" Z="0.00499999989"/> <Position X="-0.247000009" Y="0.0240000002" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="1.5710001"/> <Orientation X="0" Y="0" Z="1.5710001"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/> <Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform> </c:Transform>
@@ -1774,6 +1691,141 @@
</Entity> </Entity>
</Children> </Children>
</Entity> </Entity>
<Entity name="TeamRedPick">
<Components>
<c:Transform>
<Position X="0.130999997" Y="0.0190000013" Z="0"/>
</c:Transform>
</Components>
<Children>
<Entity name="Button_1">
<Components>
<c:Button/>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
<BlurBackground>true</BlurBackground>
<Color A="0.392156869" B="0" G="0" R="0.90196079"/>
</c:Sprite>
<c:InputCmdButton>
<Command>PickTeam</Command>
<PressValue>2</PressValue>
</c:InputCmdButton>
<c:Transform>
<Scale X="0.24000001" Y="0.307000011" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="ButtonCorner_Origin">
<Components>
<c:Transform/>
</Components>
<Children>
<Entity name="BottomRight">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite>
<c:Transform>
<Position X="0.118000008" Y="-0.150000006" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="4.71199989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="TopRight">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite>
<c:Transform>
<Position X="0.118000008" Y="0.150000006" Z="0.00499999989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="BottomLeft">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite>
<c:Transform>
<Position X="-0.117000006" Y="-0.150000006" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="3.14900017"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="TopLeft">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite>
<c:Transform>
<Position X="-0.117000006" Y="0.150000006" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="1.5710001"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
<Entity name="Text">
<Components>
<c:Text>
<Content>Blue</Content>
<Resource>Fonts/DroidSans.ttf,64</Resource>
<Visible>false</Visible>
<Alignment>
<Left/>
</Alignment>
</c:Text>
<c:Transform>
<Position X="-0.00900000054" Y="-0.105000004" Z="0.00499999989"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity>
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/RedTeam.png</DiffuseTexture>
<ClampToBorder>true</ClampToBorder>
</c:Sprite>
<c:Transform>
<Position X="0" Y="-0.00900000054" Z="0.00600000005"/>
<Scale X="0.340000004" Y="0.340000004" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
</Children> </Children>
</Entity> </Entity>
</Children> </Children>
@@ -2182,6 +2234,60 @@
</Entity> </Entity>
</Children> </Children>
</Entity> </Entity>
<Entity name="KillFeed">
<Components>
<c:KillFeed/>
<c:Transform>
<Position X="0.494000018" Y="0.252000004" Z="0"/>
<Scale X="0.0149999997" Y="0.0149999997" Z="0.0149999997"/>
</c:Transform>
</Components>
<Children>
<Entity name="KillFeed1">
<Components>
<c:Text>
<Content></Content>
<Resource>Fonts/Hind-Edited.otf,64</Resource>
<Alignment>
<Right/>
</Alignment>
</c:Text>
<c:Transform/>
</Components>
<Children/>
</Entity>
<Entity name="KillFeed2">
<Components>
<c:Text>
<Content></Content>
<Resource>Fonts/Hind-Edited.otf,64</Resource>
<Alignment>
<Right/>
</Alignment>
</c:Text>
<c:Transform>
<Position X="0" Y="-1" Z="0"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="KillFeed3">
<Components>
<c:Text>
<Content></Content>
<Resource>Fonts/Hind-Edited.otf,64</Resource>
<Alignment>
<Right/>
</Alignment>
</c:Text>
<c:Transform>
<Position X="0" Y="-2" Z="0"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
</Children> </Children>
</Entity> </Entity>
</Children> </Children>
@@ -2322,7 +2428,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>AssaultPoseF</AnimationName> <AnimationName>AssaultPoseF</AnimationName>
<Time>0.9949657277747761</Time> <Time>1.8811652556773666</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -2338,7 +2444,7 @@
<Resource>Models/Weapons/Red/AssaultWeaponRed.mesh</Resource> <Resource>Models/Weapons/Red/AssaultWeaponRed.mesh</Resource>
</c:Model> </c:Model>
<c:Transform> <c:Transform>
<Position X="0.160869107" Y="1.21340287" Z="-0.151224568"/> <Position X="0.160869107" Y="1.21425688" Z="-0.151224568"/>
<Orientation X="1.90465617" Y="-0.166544378" Z="0.0701896623"/> <Orientation X="1.90465617" Y="-0.166544378" Z="0.0701896623"/>
</c:Transform> </c:Transform>
</Components> </Components>
@@ -2721,7 +2827,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>DefenderPoseF</AnimationName> <AnimationName>DefenderPoseF</AnimationName>
<Time>1.0951743489513674</Time> <Time>1.9813738768539579</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -2737,8 +2843,8 @@
<Resource>Models/Weapons/Red/DefenderWeaponRed.mesh</Resource> <Resource>Models/Weapons/Red/DefenderWeaponRed.mesh</Resource>
</c:Model> </c:Model>
<c:Transform> <c:Transform>
<Position X="0.195622981" Y="0.70677036" Z="0.0300085638"/> <Position X="0.195940435" Y="0.708098531" Z="0.0331460983"/>
<Orientation X="-1.39242733" Y="-0.0973875821" Z="0.332219303"/> <Orientation X="-1.39242768" Y="-0.0973874852" Z="0.332219243"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
@@ -3082,7 +3188,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>SniperPoseF</AnimationName> <AnimationName>SniperPoseF</AnimationName>
<Time>1.0119983488063795</Time> <Time>1.89819787670897</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -3098,8 +3204,8 @@
<Resource>Models/Weapons/Red/SecondaryWeaponRed.mesh</Resource> <Resource>Models/Weapons/Red/SecondaryWeaponRed.mesh</Resource>
</c:Model> </c:Model>
<c:Transform> <c:Transform>
<Position X="-0.045448523" Y="1.06568146" Z="-0.125484601"/> <Position X="-0.0454485491" Y="1.06597364" Z="-0.125484616"/>
<Orientation X="-1.50533819" Y="1.34000111" Z="-1.3472451"/> <Orientation X="-1.50533819" Y="1.34000039" Z="-1.34724486"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
+214 -170
View File
@@ -8,7 +8,7 @@
</c:RaptorCopter> </c:RaptorCopter>
<c:Transform> <c:Transform>
<Position X="0" Y="-30.6910019" Z="0"/> <Position X="0" Y="-30.6910019" Z="0"/>
<Orientation X="0" Y="43.1977272" Z="0"/> <Orientation X="0" Y="43.2517357" Z="0"/>
</c:Transform> </c:Transform>
</Components> </Components>
@@ -69,6 +69,21 @@
<c:Transform/> <c:Transform/>
</Components> </Components>
<Children> <Children>
<Entity name="TopRight">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
</c:Sprite>
<c:Transform>
<Position X="0.142000005" Y="0.217999995" Z="0.00499999989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="BottomRight"> <Entity name="BottomRight">
<Components> <Components>
<c:Sprite> <c:Sprite>
@@ -85,21 +100,6 @@
</Components> </Components>
<Children/> <Children/>
</Entity> </Entity>
<Entity name="TopRight">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
</c:Sprite>
<c:Transform>
<Position X="0.142000005" Y="0.217999995" Z="0.00499999989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="BottomLeft"> <Entity name="BottomLeft">
<Components> <Components>
<c:Sprite> <c:Sprite>
@@ -157,7 +157,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>AssaultPoseF</AnimationName> <AnimationName>AssaultPoseF</AnimationName>
<Time>1.725669683907423</Time> <Time>0.32571926651889171</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -173,7 +173,7 @@
<Resource>Models/Weapons/Blue/AssaultWeaponBlue.mesh</Resource> <Resource>Models/Weapons/Blue/AssaultWeaponBlue.mesh</Resource>
</c:Model> </c:Model>
<c:Transform> <c:Transform>
<Position X="0.160869107" Y="1.21322453" Z="-0.151224568"/> <Position X="0.160869107" Y="1.21624839" Z="-0.151224568"/>
<Orientation X="1.90465617" Y="-0.166544378" Z="0.0701896623"/> <Orientation X="1.90465617" Y="-0.166544378" Z="0.0701896623"/>
</c:Transform> </c:Transform>
</Components> </Components>
@@ -556,7 +556,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>DefenderPoseF</AnimationName> <AnimationName>DefenderPoseF</AnimationName>
<Time>0.89250786275215077</Time> <Time>1.9925574453636195</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -572,8 +572,8 @@
<Resource>Models/Weapons/Blue/DefenderWeaponBlue.mesh</Resource> <Resource>Models/Weapons/Blue/DefenderWeaponBlue.mesh</Resource>
</c:Model> </c:Model>
<c:Transform> <c:Transform>
<Position X="0.195243329" Y="0.708130419" Z="0.0326478258"/> <Position X="0.195935503" Y="0.708206475" Z="0.0333581194"/>
<Orientation X="-1.39242756" Y="-0.0973875225" Z="0.332219273"/> <Orientation X="-1.39242768" Y="-0.0973875299" Z="0.332219183"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
@@ -829,6 +829,22 @@
<c:Transform/> <c:Transform/>
</Components> </Components>
<Children> <Children>
<Entity name="BottomLeft">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
</c:Sprite>
<c:Transform>
<Position X="-0.142000005" Y="-0.217999995" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="3.14900017"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="BottomRight"> <Entity name="BottomRight">
<Components> <Components>
<c:Sprite> <c:Sprite>
@@ -860,22 +876,6 @@
</Components> </Components>
<Children/> <Children/>
</Entity> </Entity>
<Entity name="BottomLeft">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
</c:Sprite>
<c:Transform>
<Position X="-0.142000005" Y="-0.217999995" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="3.14900017"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="TopLeft"> <Entity name="TopLeft">
<Components> <Components>
<c:Sprite> <c:Sprite>
@@ -917,7 +917,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>SniperPoseF</AnimationName> <AnimationName>SniperPoseF</AnimationName>
<Time>1.1256008061759495</Time> <Time>2.2256503887874182</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -933,8 +933,8 @@
<Resource>Models/Weapons/Blue/SecondaryWeaponBlue.mesh</Resource> <Resource>Models/Weapons/Blue/SecondaryWeaponBlue.mesh</Resource>
</c:Model> </c:Model>
<c:Transform> <c:Transform>
<Position X="-0.0454485789" Y="1.06511343" Z="-0.125484645"/> <Position X="-0.0454485565" Y="1.06937242" Z="-0.125484601"/>
<Orientation X="-1.50533736" Y="1.34000039" Z="-1.34724438"/> <Orientation X="-1.50533795" Y="1.34000087" Z="-1.34724462"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
@@ -1168,14 +1168,14 @@
<Entity name="PickTeamHUD"> <Entity name="PickTeamHUD">
<Components> <Components>
<c:Transform> <c:Transform>
<Position X="0" Y="0" Z="-0.63500005"/> <Position X="0" Y="0.0200000014" Z="-0.63500005"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children> <Children>
<Entity name="TeamBluePick"> <Entity name="TeamBluePick">
<Components> <Components>
<c:Transform> <c:Transform>
<Position X="-0.114000008" Y="0.0190000013" Z="0"/> <Position X="-0.131000012" Y="0.0190000013" Z="0"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children> <Children>
@@ -1187,14 +1187,14 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture> <DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
<BlurBackground>true</BlurBackground> <BlurBackground>true</BlurBackground>
<Color A="0.392156869" B="0.349019617" G="0" R="0"/> <Color A="0.392156869" B="0.768627465" G="0" R="0"/>
</c:Sprite> </c:Sprite>
<c:InputCmdButton> <c:InputCmdButton>
<Command>PickTeam</Command> <Command>PickTeam</Command>
<PressValue>3</PressValue> <PressValue>3</PressValue>
</c:InputCmdButton> </c:InputCmdButton>
<c:Transform> <c:Transform>
<Scale X="0.207000017" Y="0.249000013" Z="1"/> <Scale X="0.24000001" Y="0.307000011" Z="1"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
@@ -1211,9 +1211,10 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear> <Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="0.100000001" Y="-0.121000007" Z="0.00499999989"/> <Position X="0.118000008" Y="-0.150000006" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="4.71199989"/> <Orientation X="0" Y="0" Z="4.71199989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/> <Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform> </c:Transform>
@@ -1227,9 +1228,10 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear> <Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="0.100000001" Y="0.120000005" Z="0.00499999989"/> <Position X="0.118000008" Y="0.150000006" Z="0.00499999989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/> <Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform> </c:Transform>
</Components> </Components>
@@ -1242,9 +1244,10 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear> <Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="-0.100000001" Y="-0.121000007" Z="0.00499999989"/> <Position X="-0.117000006" Y="-0.150000006" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="3.14900017"/> <Orientation X="0" Y="0" Z="3.14900017"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/> <Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform> </c:Transform>
@@ -1258,9 +1261,10 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear> <Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="-0.100000001" Y="0.121000007" Z="0.00499999989"/> <Position X="-0.117000006" Y="0.150000006" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="1.5710001"/> <Orientation X="0" Y="0" Z="1.5710001"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/> <Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform> </c:Transform>
@@ -1274,6 +1278,7 @@
<c:Text> <c:Text>
<Content>Blue</Content> <Content>Blue</Content>
<Resource>Fonts/DroidSans.ttf,64</Resource> <Resource>Fonts/DroidSans.ttf,64</Resource>
<Visible>false</Visible>
<Alignment> <Alignment>
<Left/> <Left/>
</Alignment> </Alignment>
@@ -1285,127 +1290,27 @@
</Components> </Components>
<Children/> <Children/>
</Entity> </Entity>
</Children> <Entity>
</Entity>
<Entity name="TeamRedPick">
<Components>
<c:Transform>
<Position X="0.114" Y="0.0189999994" Z="0"/>
</c:Transform>
</Components>
<Children>
<Entity name="Button_1">
<Components> <Components>
<c:Button/>
<c:Sprite> <c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model> <Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/BlueTeam.png</DiffuseTexture>
<BlurBackground>true</BlurBackground> <ClampToBorder>true</ClampToBorder>
<Color A="0.392156869" B="0" G="0" R="0.556862772"/>
</c:Sprite> </c:Sprite>
<c:InputCmdButton>
<Command>PickTeam</Command>
<PressValue>2</PressValue>
</c:InputCmdButton>
<c:Transform> <c:Transform>
<Scale X="0.207000017" Y="0.249000013" Z="1"/> <Position X="0" Y="-0.00900000054" Z="0.00600000005"/>
<Scale X="0.340000004" Y="0.340000004" Z="1"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
</Entity> </Entity>
<Entity name="Text">
<Components>
<c:Text>
<Content>Red</Content>
<Resource>Fonts/DroidSans.ttf,64</Resource>
<Alignment>
<Left/>
</Alignment>
</c:Text>
<c:Transform>
<Position X="-0.0890000015" Y="-0.105000004" Z="0.00499999989"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="ButtonCorner_Origin">
<Components>
<c:Transform/>
</Components>
<Children>
<Entity name="BottomRight">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
</c:Sprite>
<c:Transform>
<Position X="0.100000001" Y="-0.121000007" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="4.71199989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="TopRight">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
</c:Sprite>
<c:Transform>
<Position X="0.100000001" Y="0.120000005" Z="0.00499999989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="BottomLeft">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
</c:Sprite>
<c:Transform>
<Position X="-0.100000001" Y="-0.121000007" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="3.14900017"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="TopLeft">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
</c:Sprite>
<c:Transform>
<Position X="-0.100000001" Y="0.121000007" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="1.5710001"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
</Children> </Children>
</Entity> </Entity>
<Entity name="TeamSpectatorPick"> <Entity name="TeamSpectatorPick">
<Components> <Components>
<c:Transform> <c:Transform>
<Position X="0" Y="-0.153000012" Z="0"/> <Position X="0" Y="-0.184000015" Z="0"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children> <Children>
@@ -1420,11 +1325,11 @@
<Color A="0.392156869" B="0" G="0" R="0"/> <Color A="0.392156869" B="0" G="0" R="0"/>
</c:Sprite> </c:Sprite>
<c:InputCmdButton> <c:InputCmdButton>
<Command>PickTeam</Command> <Command>PickTeam_</Command>
<PressValue>1</PressValue> <PressValue>1</PressValue>
</c:InputCmdButton> </c:InputCmdButton>
<c:Transform> <c:Transform>
<Scale X="0.435000032" Y="0.0520000011" Z="1"/> <Scale X="0.502000034" Y="0.0530000031" Z="1"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
@@ -1433,7 +1338,7 @@
<Components> <Components>
<c:Text> <c:Text>
<Content>Spectator</Content> <Content>Spectator</Content>
<Resource>Fonts/DroidSans.ttf,64</Resource> <Resource>Fonts/Hind-Edited.otf,64</Resource>
</c:Text> </c:Text>
<c:Transform> <c:Transform>
<Position X="0" Y="-0.00800000038" Z="0.00499999989"/> <Position X="0" Y="-0.00800000038" Z="0.00499999989"/>
@@ -1454,9 +1359,10 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear> <Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="0.214000016" Y="-0.0230000019" Z="0.00499999989"/> <Position X="0.248000011" Y="-0.0230000019" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="4.71199989"/> <Orientation X="0" Y="0" Z="4.71199989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/> <Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform> </c:Transform>
@@ -1470,9 +1376,10 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear> <Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="0.214000002" Y="0.0240000002" Z="0.00499999989"/> <Position X="0.247000009" Y="0.0240000002" Z="0.00499999989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/> <Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform> </c:Transform>
</Components> </Components>
@@ -1485,9 +1392,10 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear> <Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="-0.214000002" Y="-0.023" Z="0.00499999989"/> <Position X="-0.247000009" Y="-0.023" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="3.14900017"/> <Orientation X="0" Y="0" Z="3.14900017"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/> <Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform> </c:Transform>
@@ -1501,9 +1409,10 @@
<GlowMap></GlowMap> <GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture> <DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear> <Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="-0.214000002" Y="0.0240000002" Z="0.00499999989"/> <Position X="-0.247000009" Y="0.0240000002" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="1.5710001"/> <Orientation X="0" Y="0" Z="1.5710001"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/> <Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform> </c:Transform>
@@ -1514,6 +1423,141 @@
</Entity> </Entity>
</Children> </Children>
</Entity> </Entity>
<Entity name="TeamRedPick">
<Components>
<c:Transform>
<Position X="0.130999997" Y="0.0190000013" Z="0"/>
</c:Transform>
</Components>
<Children>
<Entity name="Button_1">
<Components>
<c:Button/>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/Core/White.png</DiffuseTexture>
<BlurBackground>true</BlurBackground>
<Color A="0.392156869" B="0" G="0" R="0.90196079"/>
</c:Sprite>
<c:InputCmdButton>
<Command>PickTeam</Command>
<PressValue>2</PressValue>
</c:InputCmdButton>
<c:Transform>
<Scale X="0.24000001" Y="0.307000011" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="ButtonCorner_Origin">
<Components>
<c:Transform/>
</Components>
<Children>
<Entity name="BottomRight">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite>
<c:Transform>
<Position X="0.118000008" Y="-0.150000006" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="4.71199989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="TopRight">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite>
<c:Transform>
<Position X="0.118000008" Y="0.150000006" Z="0.00499999989"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="BottomLeft">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite>
<c:Transform>
<Position X="-0.117000006" Y="-0.150000006" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="3.14900017"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="TopLeft">
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/ButtonCorner_16.png</DiffuseTexture>
<Linear>false</Linear>
<ClampToBorder>true</ClampToBorder>
</c:Sprite>
<c:Transform>
<Position X="-0.117000006" Y="0.150000006" Z="0.00499999989"/>
<Orientation X="0" Y="0" Z="1.5710001"/>
<Scale X="0.00499999989" Y="0.00499999989" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
<Entity name="Text">
<Components>
<c:Text>
<Content>Blue</Content>
<Resource>Fonts/DroidSans.ttf,64</Resource>
<Visible>false</Visible>
<Alignment>
<Left/>
</Alignment>
</c:Text>
<c:Transform>
<Position X="-0.00900000054" Y="-0.105000004" Z="0.00499999989"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity>
<Components>
<c:Sprite>
<Model>Models/Core/UnitQuad.mesh</Model>
<GlowMap></GlowMap>
<DiffuseTexture>Textures/HUD/RedTeam.png</DiffuseTexture>
<ClampToBorder>true</ClampToBorder>
</c:Sprite>
<c:Transform>
<Position X="0" Y="-0.00900000054" Z="0.00600000005"/>
<Scale X="0.340000004" Y="0.340000004" Z="1"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
</Children> </Children>
</Entity> </Entity>
</Children> </Children>
@@ -1534,7 +1578,7 @@
<Entity name="RespawnTimer"> <Entity name="RespawnTimer">
<Components> <Components>
<c:Text> <c:Text>
<Content>2</Content> <Content>1</Content>
<Resource>Fonts/DroidSans.ttf,64</Resource> <Resource>Fonts/DroidSans.ttf,64</Resource>
<Color A="1" B="0" G="1" R="0.784313738"/> <Color A="1" B="0" G="1" R="0.784313738"/>
</c:Text> </c:Text>
@@ -2116,7 +2160,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>AssaultPoseF</AnimationName> <AnimationName>AssaultPoseF</AnimationName>
<Time>0.44778194993216047</Time> <Time>1.5478315325436292</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -2132,7 +2176,7 @@
<Resource>Models/Weapons/Red/AssaultWeaponRed.mesh</Resource> <Resource>Models/Weapons/Red/AssaultWeaponRed.mesh</Resource>
</c:Model> </c:Model>
<c:Transform> <c:Transform>
<Position X="0.160869107" Y="1.21565855" Z="-0.151224568"/> <Position X="0.160869107" Y="1.21257317" Z="-0.151224568"/>
<Orientation X="1.90465617" Y="-0.166544378" Z="0.0701896623"/> <Orientation X="1.90465617" Y="-0.166544378" Z="0.0701896623"/>
</c:Transform> </c:Transform>
</Components> </Components>
@@ -2515,7 +2559,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>DefenderPoseF</AnimationName> <AnimationName>DefenderPoseF</AnimationName>
<Time>0.54799057110875182</Time> <Time>1.6480401537202205</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -2531,8 +2575,8 @@
<Resource>Models/Weapons/Red/DefenderWeaponRed.mesh</Resource> <Resource>Models/Weapons/Red/DefenderWeaponRed.mesh</Resource>
</c:Model> </c:Model>
<c:Transform> <c:Transform>
<Position X="0.194819659" Y="0.710372686" Z="0.0368246883"/> <Position X="0.196060285" Y="0.705655158" Z="0.0279245265"/>
<Orientation X="-1.39242768" Y="-0.0973874852" Z="0.332219452"/> <Orientation X="-1.3924278" Y="-0.0973875448" Z="0.332219273"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
@@ -2876,7 +2920,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>SniperPoseF</AnimationName> <AnimationName>SniperPoseF</AnimationName>
<Time>0.46481457096376388</Time> <Time>1.5648641535752326</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -2892,8 +2936,8 @@
<Resource>Models/Weapons/Red/SecondaryWeaponRed.mesh</Resource> <Resource>Models/Weapons/Red/SecondaryWeaponRed.mesh</Resource>
</c:Model> </c:Model>
<c:Transform> <c:Transform>
<Position X="-0.0454485677" Y="1.06916106" Z="-0.125484571"/> <Position X="-0.0454485565" Y="1.06404948" Z="-0.12548466"/>
<Orientation X="-1.50533819" Y="1.34000111" Z="-1.3472451"/> <Orientation X="-1.5053376" Y="1.34000039" Z="-1.34724426"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
+242 -15
View File
@@ -572,6 +572,7 @@
<c:Shielded/> <c:Shielded/>
<c:HiddenForLocalPlayer/> <c:HiddenForLocalPlayer/>
<c:Model> <c:Model>
<GlowIntensity>2.2000000476837158</GlowIntensity>
<Resource>Models/Characters/Assault/AssaultBlue.mesh</Resource> <Resource>Models/Characters/Assault/AssaultBlue.mesh</Resource>
</c:Model> </c:Model>
<c:Transform/> <c:Transform/>
@@ -586,8 +587,8 @@
<EntityFile>Schema/Entities/WeaponAssaultBlueWorld.xml</EntityFile> <EntityFile>Schema/Entities/WeaponAssaultBlueWorld.xml</EntityFile>
</c:Spawner> </c:Spawner>
<c:Transform> <c:Transform>
<Position X="0.128669813" Y="1.08486295" Z="-0.361068189"/> <Position X="0.165036291" Y="1.03316653" Z="-0.230842277"/>
<Orientation X="-0.0353792347" Y="-0.0854677409" Z="0.133094937"/> <Orientation X="-0.0310075935" Y="-0.0666775182" Z="0.132169068"/>
</c:Transform> </c:Transform>
<c:WeaponAttachment> <c:WeaponAttachment>
<Weapon>AssaultWeapon</Weapon> <Weapon>AssaultWeapon</Weapon>
@@ -607,8 +608,8 @@
<EntityFile>Schema/Entities/SidearmWeaponBlueWorld.xml</EntityFile> <EntityFile>Schema/Entities/SidearmWeaponBlueWorld.xml</EntityFile>
</c:Spawner> </c:Spawner>
<c:Transform> <c:Transform>
<Position X="0.128669813" Y="1.08486295" Z="-0.361068189"/> <Position X="0.165036291" Y="1.03316653" Z="-0.230842277"/>
<Orientation X="-0.0353792347" Y="-0.0854677409" Z="0.133094937"/> <Orientation X="-0.0310075935" Y="-0.0666775182" Z="0.132169068"/>
</c:Transform> </c:Transform>
<c:WeaponAttachment> <c:WeaponAttachment>
<Weapon>SidearmWeapon</Weapon> <Weapon>SidearmWeapon</Weapon>
@@ -675,7 +676,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>CrouchStrafeLeftF</AnimationName> <AnimationName>CrouchStrafeLeftF</AnimationName>
<Time>0.14513013667773755</Time> <Time>0.47961568648540975</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -686,7 +687,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>CrouchStrafeRightF</AnimationName> <AnimationName>CrouchStrafeRightF</AnimationName>
<Time>0.072451598628520131</Time> <Time>0.40693714843619233</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -699,7 +700,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>CrouchWalkF</AnimationName> <AnimationName>CrouchWalkF</AnimationName>
<Time>0.8508255838059231</Time> <Time>0.1853111336135953</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -712,7 +713,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>CrouchF</AnimationName> <AnimationName>CrouchF</AnimationName>
<Time>1.5240530807526143</Time> <Time>1.8585386305602865</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -755,7 +756,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>WalkF</AnimationName> <AnimationName>WalkF</AnimationName>
<Time>0.35598021321569639</Time> <Time>0.87165493950985962</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -766,7 +767,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>RunF</AnimationName> <AnimationName>RunF</AnimationName>
<Time>0.3084600556940007</Time> <Time>0.33980950828232714</Time>
<Speed>2</Speed> <Speed>2</Speed>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
@@ -790,7 +791,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>StrafeLeftF</AnimationName> <AnimationName>StrafeLeftF</AnimationName>
<Time>0.91116869109547771</Time> <Time>0.94251814368380415</Time>
<Speed>2</Speed> <Speed>2</Speed>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
@@ -802,7 +803,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>StrafeRightF</AnimationName> <AnimationName>StrafeRightF</AnimationName>
<Time>0.98857969993144401</Time> <Time>0.019929152519770454</Time>
<Speed>2</Speed> <Speed>2</Speed>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
@@ -818,7 +819,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>IdleF</AnimationName> <AnimationName>IdleF</AnimationName>
<Time>0.85485929533452953</Time> <Time>0.55386718012173475</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -944,7 +945,7 @@
<c:Blend> <c:Blend>
<Pose1>AssaultWeapon</Pose1> <Pose1>AssaultWeapon</Pose1>
<Pose2>SidearmWeapon</Pose2> <Pose2>SidearmWeapon</Pose2>
<Weight>1</Weight> <Weight>0</Weight>
<SubTreeRoot>true</SubTreeRoot> <SubTreeRoot>true</SubTreeRoot>
</c:Blend> </c:Blend>
<c:Transform/> <c:Transform/>
@@ -1005,7 +1006,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>IdleAssaultRifleU</AnimationName> <AnimationName>IdleAssaultRifleU</AnimationName>
<Time>1.9871198993639698</Time> <Time>1.502794625658133</Time>
<Play>true</Play> <Play>true</Play>
<Additive>true</Additive> <Additive>true</Additive>
</c:Animation> </c:Animation>
@@ -1108,6 +1109,232 @@
</Entity> </Entity>
</Children> </Children>
</Entity> </Entity>
<Entity name="Lights">
<Components>
<c:Transform/>
</Components>
<Children>
<Entity name="Elbow_Left">
<Components>
<c:BoneAttachment>
<BoneName>L_Elbow</BoneName>
</c:BoneAttachment>
<c:Transform>
<Position X="-0.0546795987" Y="0.970895708" Z="-0.395071507"/>
<Orientation X="-2.67347836" Y="-1.14967656" Z="-2.35179591"/>
</c:Transform>
</Components>
<Children>
<Entity name="Upper">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.10000000149011612</Intensity>
</c:PointLight>
<c:Transform>
<Position X="-0.119805202" Y="0.0187246669" Z="-0.0205985513"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Lower">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.10000000149011612</Intensity>
</c:PointLight>
<c:Transform>
<Position X="-0.0430894755" Y="-0.0822322816" Z="0.0446314402"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
<Entity name="Elbow_Right">
<Components>
<c:BoneAttachment>
<BoneName>R_Elbow</BoneName>
</c:BoneAttachment>
<c:Transform>
<Position X="0.311819345" Y="1.00506735" Z="-0.00708915293"/>
<Orientation X="1.66802835" Y="1.3856616" Z="0.553554595"/>
</c:Transform>
</Components>
<Children>
<Entity name="Upper">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.10000000149011612</Intensity>
</c:PointLight>
<c:Transform>
<Position X="0.119999997" Y="0.0187246669" Z="-0.0205985513"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Lower">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.10000000149011612</Intensity>
</c:PointLight>
<c:Transform>
<Position X="0.0430000015" Y="-0.0822322816" Z="0.0446314402"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
<Entity name="Head">
<Components>
<c:BoneAttachment>
<BoneName>Head</BoneName>
</c:BoneAttachment>
<c:Transform>
<Position X="0.0847049356" Y="1.25094736" Z="-0.146904141"/>
<Orientation X="-0.270355761" Y="-0.134028792" Z="-0.181556195"/>
</c:Transform>
</Components>
<Children>
<Entity name="Left">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.10000000149011612</Intensity>
</c:PointLight>
<c:Transform>
<Position X="-0.117407471" Y="0.0664995536" Z="-0.00829757564"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Right">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.10000000149011612</Intensity>
</c:PointLight>
<c:Transform>
<Position X="0.116999999" Y="0.0664995536" Z="-0.00829757564"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
<Entity name="Leg_top_left">
<Components>
<c:BoneAttachment>
<BoneName>L_Leg_Top</BoneName>
<PositionOffset X="-0.116000004" Y="0.0500000007" Z="0.0360000022"/>
</c:BoneAttachment>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.10000000149011612</Intensity>
</c:PointLight>
<c:Transform>
<Position X="-0.187708378" Y="0.720764816" Z="0.0189282075"/>
<Orientation X="0.690089703" Y="-0.0030452935" Z="-0.0742322952"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Leg_top_Right">
<Components>
<c:BoneAttachment>
<BoneName>R_Leg_Top</BoneName>
<PositionOffset X="0.0800000057" Y="0.0730000064" Z="0.064000003"/>
</c:BoneAttachment>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.10000000149011612</Intensity>
</c:PointLight>
<c:Transform>
<Position X="0.149033397" Y="0.743774891" Z="0.0911710933"/>
<Orientation X="0.00418904377" Y="-0.590482414" Z="0.240698725"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Leg_bottom_Left">
<Components>
<c:BoneAttachment>
<BoneName>L_Leg_Bottomdw</BoneName>
</c:BoneAttachment>
<c:Transform>
<Position X="-0.121549807" Y="0.396206558" Z="-0.258821368"/>
<Orientation X="0.0123701356" Y="0.0872921124" Z="-0.0923962742"/>
</c:Transform>
</Components>
<Children>
<Entity name="Outside">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.10000000149011612</Intensity>
</c:PointLight>
<c:Transform>
<Position X="-0.0752567574" Y="-0.0357234403" Z="0.0396512263"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Inside">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.10000000149011612</Intensity>
</c:PointLight>
<c:Transform>
<Position X="0.075000003" Y="-0.0357234403" Z="0.0396512263"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
<Entity name="Leg_bottom_Right">
<Components>
<c:BoneAttachment>
<BoneName>R_Leg_Bottom</BoneName>
</c:BoneAttachment>
<c:Transform>
<Position X="0.184887171" Y="0.323244393" Z="0.0367886424"/>
<Orientation X="-0.714135528" Y="-0.644820809" Z="0.337111086"/>
</c:Transform>
</Components>
<Children>
<Entity name="Inside">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.10000000149011612</Intensity>
</c:PointLight>
<c:Transform>
<Position X="-0.0752567574" Y="-0.0357234403" Z="0.0396512263"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Outside">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.10000000149011612</Intensity>
</c:PointLight>
<c:Transform>
<Position X="0.075000003" Y="-0.0357234403" Z="0.0396512263"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
</Children>
</Entity>
</Children> </Children>
</Entity> </Entity>
<Entity name="AABBStanding"> <Entity name="AABBStanding">
+297 -15
View File
@@ -579,6 +579,7 @@
<c:Shielded/> <c:Shielded/>
<c:HiddenForLocalPlayer/> <c:HiddenForLocalPlayer/>
<c:Model> <c:Model>
<GlowIntensity>2.2000000476837158</GlowIntensity>
<Resource>Models/Characters/Defender/DefenderBlue.mesh</Resource> <Resource>Models/Characters/Defender/DefenderBlue.mesh</Resource>
</c:Model> </c:Model>
<c:Transform/> <c:Transform/>
@@ -593,8 +594,8 @@
<EntityFile>Schema/Entities/WeaponDefenderBlueWorld.xml</EntityFile> <EntityFile>Schema/Entities/WeaponDefenderBlueWorld.xml</EntityFile>
</c:Spawner> </c:Spawner>
<c:Transform> <c:Transform>
<Position X="0.160437703" Y="1.04422736" Z="-0.295565188"/> <Position X="0.150445178" Y="1.04946244" Z="-0.300744236"/>
<Orientation X="-0.105441377" Y="-0.0721141845" Z="0.143959135"/> <Orientation X="-0.100557618" Y="-0.0389867723" Z="0.143711939"/>
</c:Transform> </c:Transform>
<c:WeaponAttachment> <c:WeaponAttachment>
<Weapon>DefenderWeapon</Weapon> <Weapon>DefenderWeapon</Weapon>
@@ -614,8 +615,8 @@
<EntityFile>Schema/Entities/SidearmWeaponBlueWorld.xml</EntityFile> <EntityFile>Schema/Entities/SidearmWeaponBlueWorld.xml</EntityFile>
</c:Spawner> </c:Spawner>
<c:Transform> <c:Transform>
<Position X="0.160437703" Y="1.04422736" Z="-0.295565188"/> <Position X="0.150445178" Y="1.04946244" Z="-0.300744236"/>
<Orientation X="-0.105441377" Y="-0.0721141845" Z="0.143959135"/> <Orientation X="-0.100557618" Y="-0.0389867723" Z="0.143711939"/>
</c:Transform> </c:Transform>
<c:WeaponAttachment> <c:WeaponAttachment>
<Weapon>SidearmWeapon</Weapon> <Weapon>SidearmWeapon</Weapon>
@@ -682,7 +683,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>CrouchStrafeLeftF</AnimationName> <AnimationName>CrouchStrafeLeftF</AnimationName>
<Time>0.89884525886057709</Time> <Time>0.75511438140459752</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -693,7 +694,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>CrouchStrafeRightF</AnimationName> <AnimationName>CrouchStrafeRightF</AnimationName>
<Time>0.82616672081135967</Time> <Time>0.6824358433553801</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -706,7 +707,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>CrouchWalkF</AnimationName> <AnimationName>CrouchWalkF</AnimationName>
<Time>0.60454070598876264</Time> <Time>0.46080982853278307</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -719,7 +720,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>CrouchF</AnimationName> <AnimationName>CrouchF</AnimationName>
<Time>0.27776820293545335</Time> <Time>1.1340373254794738</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -762,7 +763,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>WalkF</AnimationName> <AnimationName>WalkF</AnimationName>
<Time>0.10969533539853593</Time> <Time>0.080924354358268502</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -773,7 +774,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>RunF</AnimationName> <AnimationName>RunF</AnimationName>
<Time>0.81589030005967977</Time> <Time>0.75834833797914492</Time>
<Speed>2</Speed> <Speed>2</Speed>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
@@ -797,7 +798,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>StrafeLeftF</AnimationName> <AnimationName>StrafeLeftF</AnimationName>
<Time>0.41859893546115678</Time> <Time>0.36105697338062193</Time>
<Speed>2</Speed> <Speed>2</Speed>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
@@ -809,7 +810,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>StrafeRightF</AnimationName> <AnimationName>StrafeRightF</AnimationName>
<Time>0.49600994429712308</Time> <Time>0.43846798221658823</Time>
<Speed>2</Speed> <Speed>2</Speed>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
@@ -825,7 +826,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>IdleF</AnimationName> <AnimationName>IdleF</AnimationName>
<Time>1.1919024261691025</Time> <Time>0.29646465130559285</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -914,7 +915,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>ShieldFrontU</AnimationName> <AnimationName>ShieldFrontU</AnimationName>
<Time>0.41969766243472861</Time> <Time>0.39092668139446118</Time>
<Play>true</Play> <Play>true</Play>
</c:Animation> </c:Animation>
<c:Transform/> <c:Transform/>
@@ -963,7 +964,7 @@
<Components> <Components>
<c:Animation> <c:Animation>
<AnimationName>IdleAssaultRifleU</AnimationName> <AnimationName>IdleAssaultRifleU</AnimationName>
<Time>0.74083502154680936</Time> <Time>1.7120640405065419</Time>
<Play>true</Play> <Play>true</Play>
<Additive>true</Additive> <Additive>true</Additive>
</c:Animation> </c:Animation>
@@ -1064,6 +1065,287 @@
</Entity> </Entity>
</Children> </Children>
</Entity> </Entity>
<Entity name="Lights">
<Components>
<c:Transform/>
</Components>
<Children>
<Entity name="Head">
<Components>
<c:BoneAttachment>
<BoneName>Head</BoneName>
</c:BoneAttachment>
<c:Transform>
<Position X="0.0811523944" Y="1.25871587" Z="-0.135778293"/>
<Orientation X="-0.242026433" Y="-0.103642859" Z="-0.186734527"/>
</c:Transform>
</Components>
<Children>
<Entity name="Left">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Radius>0.5</Radius>
<Intensity>0.20000000298023224</Intensity>
</c:PointLight>
<c:Transform>
<Position X="-0.0938162878" Y="0.0610048659" Z="-0.00614821212"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Right">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Radius>0.5</Radius>
<Intensity>0.20000000298023224</Intensity>
</c:PointLight>
<c:Transform>
<Position X="0.0939999968" Y="0.0610048659" Z="-0.00614821212"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Back">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.20000000298023224</Intensity>
</c:PointLight>
<c:Transform>
<Position X="-0.00160108448" Y="0.112655103" Z="0.116904415"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
<Entity name="Armor_Left">
<Components>
<c:BoneAttachment>
<BoneName>L_Shoulder_Armor_Joint</BoneName>
</c:BoneAttachment>
<c:Transform>
<Position X="-0.0336125046" Y="1.14461756" Z="-0.198084712"/>
<Orientation X="-0.123359792" Y="-1.02261281" Z="-0.192506254"/>
</c:Transform>
</Components>
<Children>
<Entity name="light">
<Components>
<c:PointLight>
<Color A="1" B="0.701960802" G="0" R="0.188235298"/>
<Intensity>0.20000000298023224</Intensity>
</c:PointLight>
<c:Transform>
<Position X="-0.259081453" Y="0.0924699008" Z="0.0193806943"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
<Entity name="Armor_Right">
<Components>
<c:BoneAttachment>
<BoneName>R_Shoulder_Armor_Joint</BoneName>
</c:BoneAttachment>
<c:Transform>
<Position X="0.124662042" Y="1.18803668" Z="0.0253864676"/>
<Orientation X="-0.350490361" Y="-0.987647295" Z="0.0760278776"/>
</c:Transform>
</Components>
<Children>
<Entity name="light">
<Components>
<c:PointLight>
<Color A="1" B="0.701960802" G="0" R="0.188235298"/>
<Intensity>0.20000000298023224</Intensity>
</c:PointLight>
<c:Transform>
<Position X="0.259000003" Y="0.0924699008" Z="0.0193806943"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
<Entity name="Elbow_Left">
<Components>
<c:BoneAttachment>
<BoneName>L_Elbow</BoneName>
</c:BoneAttachment>
<c:Transform>
<Position X="-0.0963651165" Y="0.979782283" Z="-0.387918979"/>
<Orientation X="-2.3728857" Y="-0.868270874" Z="-2.74759817"/>
</c:Transform>
</Components>
<Children>
<Entity name="Upper">
<Components>
<c:PointLight>
<Color A="1" B="0.701960802" G="0" R="0.188235298"/>
<Intensity>0.20000000298023224</Intensity>
</c:PointLight>
<c:Transform>
<Position X="-0.0530259758" Y="0.0710293874" Z="-0.0176120717"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Lower">
<Components>
<c:PointLight>
<Color A="1" B="0.701960802" G="0" R="0.188235298"/>
<Intensity>0.20000000298023224</Intensity>
</c:PointLight>
<c:Transform>
<Position X="0.0404068455" Y="-0.0798887387" Z="-0.000667487504"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
<Entity name="Elbow_Right">
<Components>
<c:BoneAttachment>
<BoneName>R_Elbow</BoneName>
</c:BoneAttachment>
<c:Transform>
<Position X="0.308187783" Y="1.08455598" Z="-0.083610706"/>
<Orientation X="1.80888307" Y="1.43675375" Z="1.20322716"/>
</c:Transform>
</Components>
<Children>
<Entity name="Upper">
<Components>
<c:PointLight>
<Color A="1" B="0.701960802" G="0" R="0.188235298"/>
<Intensity>0.20000000298023224</Intensity>
</c:PointLight>
<c:Transform>
<Position X="0.0529999994" Y="0.0710293874" Z="-0.0176120717"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Lower">
<Components>
<c:PointLight>
<Color A="1" B="0.701960802" G="0" R="0.188235298"/>
<Intensity>0.20000000298023224</Intensity>
</c:PointLight>
<c:Transform>
<Position X="-0.0399999991" Y="-0.0798887387" Z="-0.000667487504"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
<Entity name="Chest">
<Components>
<c:BoneAttachment>
<BoneName>Spine_3</BoneName>
</c:BoneAttachment>
<c:Transform>
<Position X="0.0399524719" Y="1.09024417" Z="-0.0680764914"/>
<Orientation X="-0.50802201" Y="-0.93734026" Z="0.267742336"/>
</c:Transform>
</Components>
<Children>
<Entity name="Back">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.20000000298023224</Intensity>
</c:PointLight>
<c:Transform>
<Position X="0" Y="0.0223282184" Z="0.16728729"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
<Entity name="Leg_Bottom_Left">
<Components>
<c:BoneAttachment>
<BoneName>L_Leg_Bottom</BoneName>
</c:BoneAttachment>
<c:Transform>
<Position X="-0.121582747" Y="0.396609098" Z="-0.250624388"/>
<Orientation X="0.0343631394" Y="0.0808496028" Z="-0.090051204"/>
</c:Transform>
</Components>
<Children>
<Entity name="Outside">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.10000000149011612</Intensity>
</c:PointLight>
<c:Transform>
<Position X="-0.09705697" Y="-0.0529966503" Z="0.026842406"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Inside">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.10000000149011612</Intensity>
</c:PointLight>
<c:Transform>
<Position X="0.0758597851" Y="-0.0458693244" Z="0.0236873701"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
<Entity name="Leg_Bottom_Right">
<Components>
<c:BoneAttachment>
<BoneName>R_Leg_Bottom</BoneName>
</c:BoneAttachment>
<c:Transform>
<Position X="0.183104694" Y="0.325414658" Z="0.0393271334"/>
<Orientation X="-0.702914894" Y="-0.64635247" Z="0.335363626"/>
</c:Transform>
</Components>
<Children>
<Entity name="Inside">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.10000000149011612</Intensity>
</c:PointLight>
<c:Transform>
<Position X="-0.09705697" Y="-0.0529966503" Z="0.026842406"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Outside">
<Components>
<c:PointLight>
<Color A="1" B="1" G="0.784313738" R="0"/>
<Intensity>0.10000000149011612</Intensity>
</c:PointLight>
<c:Transform>
<Position X="0.0758597851" Y="-0.0458693244" Z="0.0236873701"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
</Entity>
</Children>
</Entity>
</Children> </Children>
</Entity> </Entity>
<Entity name="AABBStanding"> <Entity name="AABBStanding">
@@ -18,8 +18,8 @@
<Color A="1" B="0.117647059" G="0.117647059" R="0.117647059"/> <Color A="1" B="0.117647059" G="0.117647059" R="0.117647059"/>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="-0.00700000022" Y="-0.0310000014" Z="-0.0270000007"/> <Position X="-0.00200000009" Y="-0.0730000064" Z="-0.0270000007"/>
<Scale X="0.292000026" Y="0.064000003" Z="1"/> <Scale X="0.268000007" Y="0.102000006" Z="1"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
@@ -40,8 +40,8 @@
<Color A="0.392156869" B="1" G="1" R="1"/> <Color A="0.392156869" B="1" G="1" R="1"/>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="-0.088000007" Y="-0.0350000001" Z="0"/> <Position X="0.00300000003" Y="-0.0460000038" Z="0"/>
<Scale X="0.0820000023" Y="0.0299999993" Z="1"/> <Scale X="0.243000016" Y="0.0260000005" Z="1"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children> <Children>
@@ -56,8 +56,8 @@
</Alignment> </Alignment>
</c:Text> </c:Text>
<c:Transform> <c:Transform>
<Position X="-0.361000031" Y="-0.562000036" Z="0.0199999996"/> <Position X="-0.430000007" Y="-0.434000015" Z="0.0199999996"/>
<Scale X="0.180000007" Y="0.469000012" Z="1"/> <Scale X="0.0659999996" Y="0.424000025" Z="1"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
@@ -80,8 +80,8 @@
<Color A="0.392156869" B="1" G="1" R="1"/> <Color A="0.392156869" B="1" G="1" R="1"/>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="0" Y="-0.0350000001" Z="0"/> <Position X="0.00300000003" Y="-0.076000005" Z="0"/>
<Scale X="0.0820000023" Y="0.0299999993" Z="1"/> <Scale X="0.243000016" Y="0.0260000005" Z="1"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children> <Children>
@@ -96,8 +96,8 @@
</Alignment> </Alignment>
</c:Text> </c:Text>
<c:Transform> <c:Transform>
<Position X="-0.380000025" Y="-0.561999977" Z="0.0199999996"/> <Position X="-0.430000007" Y="-0.434000015" Z="0.0199999996"/>
<Scale X="0.180000007" Y="0.469000012" Z="1"/> <Scale X="0.0659999996" Y="0.424000025" Z="1"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
@@ -120,8 +120,8 @@
<Color A="0.392156869" B="1" G="1" R="1"/> <Color A="0.392156869" B="1" G="1" R="1"/>
</c:Sprite> </c:Sprite>
<c:Transform> <c:Transform>
<Position X="0.088000007" Y="-0.0350000001" Z="0"/> <Position X="0.00300000003" Y="-0.107000008" Z="0"/>
<Scale X="0.0820000023" Y="0.0299999993" Z="1"/> <Scale X="0.243000016" Y="0.0260000005" Z="1"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children> <Children>
@@ -136,8 +136,8 @@
</Alignment> </Alignment>
</c:Text> </c:Text>
<c:Transform> <c:Transform>
<Position X="-0.387000024" Y="-0.561999977" Z="0.0199999996"/> <Position X="-0.430000007" Y="-0.434000015" Z="0.0199999996"/>
<Scale X="0.180000007" Y="0.469000012" Z="1"/> <Scale X="0.0659999996" Y="0.424000025" Z="1"/>
</c:Transform> </c:Transform>
</Components> </Components>
<Children/> <Children/>
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -4,7 +4,7 @@
#define MyAppName "Axyz" #define MyAppName "Axyz"
#define MyAppVersion "1.0" #define MyAppVersion "1.0"
#define MyAppURL "https://github.com/teamfisk/TacticalZ" #define MyAppURL "https://github.com/teamfisk/TacticalZ"
#define MyAppExeName "TacticalZ.exe" #define MyAppExeName "Axyz.exe"
[Setup] [Setup]
; NOTE: The value of AppId uniquely identifies this application. ; NOTE: The value of AppId uniquely identifies this application.
@@ -57,7 +57,7 @@ Source: "..\..\bin\glfw3.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\TacticalZ.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "..\..\bin\Axyz.exe"; 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: "..\..\deps\redist\VC_redist.x64.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall Source: "..\..\deps\redist\VC_redist.x64.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall
+17 -17
View File
@@ -146,14 +146,14 @@ bool RayVsTriangle(const Ray& ray,
} }
bool RayVsModel(const Ray& ray, bool RayVsModel(const Ray& ray,
const RawModel::Vertex* modelVertices, const std::vector<glm::vec3>& modelVertices,
const std::vector<unsigned int>& modelIndices, const std::vector<unsigned int>& modelIndices,
const glm::mat4& modelMatrix) const glm::mat4& modelMatrix)
{ {
for (int i = 0; i < modelIndices.size();) { for (int i = 0; i < modelIndices.size();) {
glm::vec3 v0 = TransformSystem::TransformPoint(modelVertices[modelIndices[i++]].Position, modelMatrix); glm::vec3 v0 = TransformSystem::TransformPoint(modelVertices[modelIndices[i++]], modelMatrix);
glm::vec3 v1 = TransformSystem::TransformPoint(modelVertices[modelIndices[i++]].Position, modelMatrix); glm::vec3 v1 = TransformSystem::TransformPoint(modelVertices[modelIndices[i++]], modelMatrix);
glm::vec3 v2 = TransformSystem::TransformPoint(modelVertices[modelIndices[i++]].Position, modelMatrix); glm::vec3 v2 = TransformSystem::TransformPoint(modelVertices[modelIndices[i++]], modelMatrix);
if (RayVsTriangle(ray, v0, v1, v2)) { if (RayVsTriangle(ray, v0, v1, v2)) {
return true; return true;
} }
@@ -194,7 +194,7 @@ bool RayVsTriangle(const Ray& ray,
} }
bool RayVsModel(const Ray& ray, bool RayVsModel(const Ray& ray,
const RawModel::Vertex* modelVertices, const std::vector<glm::vec3>& modelVertices,
const std::vector<unsigned int>& modelIndices, const std::vector<unsigned int>& modelIndices,
const glm::mat4& modelMatrix, const glm::mat4& modelMatrix,
float& outDistance, float& outDistance,
@@ -204,9 +204,9 @@ bool RayVsModel(const Ray& ray,
outDistance = INFINITY; outDistance = INFINITY;
bool hit = false; bool hit = false;
for (int i = 0; i < modelIndices.size();) { for (int i = 0; i < modelIndices.size();) {
glm::vec3 v0 = TransformSystem::TransformPoint(modelVertices[modelIndices[i++]].Position, modelMatrix); glm::vec3 v0 = TransformSystem::TransformPoint(modelVertices[modelIndices[i++]], modelMatrix);
glm::vec3 v1 = TransformSystem::TransformPoint(modelVertices[modelIndices[i++]].Position, modelMatrix); glm::vec3 v1 = TransformSystem::TransformPoint(modelVertices[modelIndices[i++]], modelMatrix);
glm::vec3 v2 = TransformSystem::TransformPoint(modelVertices[modelIndices[i++]].Position, modelMatrix); glm::vec3 v2 = TransformSystem::TransformPoint(modelVertices[modelIndices[i++]], modelMatrix);
float dist = outDistance; float dist = outDistance;
float u; float u;
float v; float v;
@@ -221,7 +221,7 @@ bool RayVsModel(const Ray& ray,
} }
bool RayVsModel(const Ray& ray, bool RayVsModel(const Ray& ray,
const RawModel::Vertex* modelVertices, const std::vector<glm::vec3>& modelVertices,
const std::vector<unsigned int>& modelIndices, const std::vector<unsigned int>& modelIndices,
const glm::mat4& modelMatrix, const glm::mat4& modelMatrix,
glm::vec3& outHitPosition) glm::vec3& outHitPosition)
@@ -548,7 +548,7 @@ BoxTriRes AABBvsTriangle(const AABB& box,
} }
Output AABBvsTriangles(const AABB& box, Output AABBvsTriangles(const AABB& box,
const RawModel::Vertex* modelVertices, const std::vector<glm::vec3>& modelVertices,
const std::vector<unsigned int>& modelIndices, const std::vector<unsigned int>& modelIndices,
const glm::mat4& modelMatrix, const glm::mat4& modelMatrix,
glm::vec3& boxVelocity, glm::vec3& boxVelocity,
@@ -565,9 +565,9 @@ Output AABBvsTriangles(const AABB& box,
glm::vec3 originalBoxVelocity(boxVelocity); glm::vec3 originalBoxVelocity(boxVelocity);
for (int i = 0; i < modelIndices.size(); ) { for (int i = 0; i < modelIndices.size(); ) {
std::array<glm::vec3, 3> triVertices = { std::array<glm::vec3, 3> triVertices = {
TransformSystem::TransformPoint(modelVertices[modelIndices[i++]].Position, modelMatrix), TransformSystem::TransformPoint(modelVertices[modelIndices[i++]], modelMatrix),
TransformSystem::TransformPoint(modelVertices[modelIndices[i++]].Position, modelMatrix), TransformSystem::TransformPoint(modelVertices[modelIndices[i++]], modelMatrix),
TransformSystem::TransformPoint(modelVertices[modelIndices[i++]].Position, modelMatrix) TransformSystem::TransformPoint(modelVertices[modelIndices[i++]], modelMatrix)
}; };
glm::vec3 outVec; glm::vec3 outVec;
bool collideWithGround = isOnGround; bool collideWithGround = isOnGround;
@@ -595,7 +595,7 @@ Output AABBvsTriangles(const AABB& box,
} }
bool AABBvsTriangles(const AABB& box, bool AABBvsTriangles(const AABB& box,
const RawModel::Vertex* modelVertices, const std::vector<glm::vec3>& modelVertices,
const std::vector<unsigned int>& modelIndices, const std::vector<unsigned int>& modelIndices,
const glm::mat4& modelMatrix, const glm::mat4& modelMatrix,
glm::vec3& boxVelocity, glm::vec3& boxVelocity,
@@ -615,7 +615,7 @@ bool AABBvsTriangles(const AABB& box,
} }
bool AABBvsTriangles(const AABB& box, bool AABBvsTriangles(const AABB& box,
const RawModel::Vertex* modelVertices, const std::vector<glm::vec3>& modelVertices,
const std::vector<unsigned int>& modelIndices, const std::vector<unsigned int>& modelIndices,
const glm::mat4& modelMatrix) const glm::mat4& modelMatrix)
{ {
@@ -633,7 +633,7 @@ bool AABBvsTriangles(const AABB& box,
} }
Output AABBvsTrianglesWContainment(const AABB& box, Output AABBvsTrianglesWContainment(const AABB& box,
const RawModel::Vertex* modelVertices, const std::vector<glm::vec3>& modelVertices,
const std::vector<unsigned int>& modelIndices, const std::vector<unsigned int>& modelIndices,
const glm::mat4& modelMatrix) const glm::mat4& modelMatrix)
{ {
@@ -741,7 +741,7 @@ boost::optional<EntityAABB> EntityFirstHitByRay(const Ray& ray, std::vector<Enti
continue; continue;
} }
float u, v; float u, v;
if (RayVsModel(ray, model->Vertices(), model->m_RawModel->m_Indices, TransformSystem::ModelMatrix(entityBox.Entity), outDistance, u, v)) { if (RayVsModel(ray, model->m_Vertices, model->m_Indices, TransformSystem::ModelMatrix(entityBox.Entity), outDistance, u, v)) {
outIntersectPos = ray.Origin() + outDistance * ray.Direction(); outIntersectPos = ray.Origin() + outDistance * ray.Direction();
return entityBox; return entityBox;
} }
+6 -6
View File
@@ -41,15 +41,15 @@ void CollisionSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& c
// Don't collide against invisible models. // Don't collide against invisible models.
continue; continue;
} }
RawModel* model; Model* model;
std::string res = (std::string)boxB.Entity["Model"]["Resource"]; std::string res = (std::string)boxB.Entity["Model"]["Resource"];
try { try {
model = ResourceManager::Load<RawModel, true>(res); model = ResourceManager::Load<Model, true>(res);
} catch (const std::exception&) { } catch (const std::exception&) {
continue; continue;
} }
float u, v; float u, v;
hit = Collision::RayVsModel(ray, model->Vertices(), model->m_Indices, TransformSystem::ModelMatrix(boxB.Entity), dist, u, v); hit = Collision::RayVsModel(ray, model->m_Vertices, model->m_Indices, TransformSystem::ModelMatrix(boxB.Entity), dist, u, v);
} else { } else {
hit = Collision::RayVsAABB(ray, boxB, dist); hit = Collision::RayVsAABB(ray, boxB, dist);
} }
@@ -86,9 +86,9 @@ void CollisionSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& c
// Don't collide against invisible models. // Don't collide against invisible models.
continue; continue;
} }
RawModel* model; Model* model;
try { try {
model = ResourceManager::Load<RawModel, true>(boxB.Entity["Model"]["Resource"]); model = ResourceManager::Load<Model, true>(boxB.Entity["Model"]["Resource"]);
} catch (const std::exception&) { } catch (const std::exception&) {
continue; continue;
} }
@@ -98,7 +98,7 @@ void CollisionSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& c
glm::vec3 inOutVelocity = (glm::vec3)cPhysics["Velocity"]; glm::vec3 inOutVelocity = (glm::vec3)cPhysics["Velocity"];
bool isOnGround = (bool)cPhysics["IsOnGround"]; bool isOnGround = (bool)cPhysics["IsOnGround"];
float verticalStepHeight = (float)(double)cPhysics["VerticalStepHeight"]; float verticalStepHeight = (float)(double)cPhysics["VerticalStepHeight"];
if (Collision::AABBvsTriangles(boxA, model->Vertices(), model->m_Indices, modelMatrix, inOutVelocity, verticalStepHeight, isOnGround, resolutionVector)) { if (Collision::AABBvsTriangles(boxA, model->m_Vertices, model->m_Indices, modelMatrix, inOutVelocity, verticalStepHeight, isOnGround, resolutionVector)) {
//Move the position to previous position if it is not moving in the xz-plane, else resolve with the resolution vector. //Move the position to previous position if it is not moving in the xz-plane, else resolve with the resolution vector.
(Field<glm::vec3>)cTransform["Position"] += resolutionVector; (Field<glm::vec3>)cTransform["Position"] += resolutionVector;
boxA = *Collision::EntityAbsoluteAABB(entity); boxA = *Collision::EntityAbsoluteAABB(entity);
+3 -3
View File
@@ -10,11 +10,11 @@ void TriggerSystem::UpdateComponent(EntityWrapper& triggerEntity, ComponentWrapp
return; return;
} }
RawModel* triggerModel = nullptr; Model* triggerModel = nullptr;
glm::mat4 triggerModelMat; glm::mat4 triggerModelMat;
if (triggerEntity.HasComponent("Model")) { if (triggerEntity.HasComponent("Model")) {
try { try {
triggerModel = ResourceManager::Load<RawModel, true>(triggerEntity["Model"]["Resource"]); triggerModel = ResourceManager::Load<Model, true>(triggerEntity["Model"]["Resource"]);
triggerModelMat = TransformSystem::ModelMatrix(triggerEntity); triggerModelMat = TransformSystem::ModelMatrix(triggerEntity);
} catch (const std::exception&) { } catch (const std::exception&) {
} }
@@ -38,7 +38,7 @@ void TriggerSystem::UpdateComponent(EntityWrapper& triggerEntity, ComponentWrapp
? Collision::Output::OutContained ? Collision::Output::OutContained
: Collision::AABBvsTrianglesWContainment( : Collision::AABBvsTrianglesWContainment(
colliderBox, colliderBox,
triggerModel->Vertices(), triggerModel->m_Vertices,
triggerModel->m_Indices, triggerModel->m_Indices,
triggerModelMat); triggerModelMat);
+5 -5
View File
@@ -37,7 +37,7 @@ void AnimationSystem::CreateBlendTrees()
continue;; continue;;
} }
Skeleton* skeleton = model->m_RawModel->m_Skeleton; Skeleton* skeleton = model->m_Skeleton;
if (skeleton == nullptr) { if (skeleton == nullptr) {
continue; continue;
} }
@@ -79,7 +79,7 @@ void AnimationSystem::UpdateAnimations(double dt)
continue; continue;
} }
Skeleton* skeleton = model->m_RawModel->m_Skeleton; Skeleton* skeleton = model->m_Skeleton;
if (skeleton == nullptr) { if (skeleton == nullptr) {
continue; continue;
} }
@@ -177,7 +177,7 @@ bool AnimationSystem::OnAutoAnimationBlend(Events::AutoAnimationBlend& e)
return false; return false;
} }
Skeleton* skeleton = model->m_RawModel->m_Skeleton; Skeleton* skeleton = model->m_Skeleton;
if (skeleton == nullptr) { if (skeleton == nullptr) {
LOG_ERROR("%s, RootNode skeleton invalid %s", e.NodeName, e.RootNode.Name().c_str()); LOG_ERROR("%s, RootNode skeleton invalid %s", e.NodeName, e.RootNode.Name().c_str());
return false; return false;
@@ -300,7 +300,7 @@ bool AnimationSystem::OnEntityDeleted(Events::EntityDeleted& e)
return false; return false;
} }
Skeleton* skeleton = model->m_RawModel->m_Skeleton; Skeleton* skeleton = model->m_Skeleton;
if (skeleton == nullptr) { if (skeleton == nullptr) {
return false; return false;
} }
@@ -331,7 +331,7 @@ bool AnimationSystem::OnSetBlendWeight(Events::SetBlendWeight& e)
return false; return false;
} }
Skeleton* skeleton = model->m_RawModel->m_Skeleton; Skeleton* skeleton = model->m_Skeleton;
if (skeleton == nullptr) { if (skeleton == nullptr) {
return false; return false;
} }
+3 -3
View File
@@ -22,7 +22,7 @@ void AutoBlendQueue::Insert(AutoBlendJob autoBlendJob)
return; return;
} }
Skeleton* skeleton = model->m_RawModel->m_Skeleton; Skeleton* skeleton = model->m_Skeleton;
if (skeleton == nullptr) { if (skeleton == nullptr) {
return; return;
} }
@@ -130,7 +130,7 @@ bool AutoBlendQueue::HasActiveBlendJob()
return HasActiveBlendJob(); return HasActiveBlendJob();
} }
Skeleton* skeleton = model->m_RawModel->m_Skeleton; Skeleton* skeleton = model->m_Skeleton;
if (skeleton == nullptr) { if (skeleton == nullptr) {
m_BlendQueue.pop_front(); m_BlendQueue.pop_front();
return HasActiveBlendJob(); return HasActiveBlendJob();
@@ -173,7 +173,7 @@ std::shared_ptr<BlendTree> AutoBlendQueue::GetBlendTree()
return nullptr; return nullptr;
} }
Skeleton* skeleton = model->m_RawModel->m_Skeleton; Skeleton* skeleton = model->m_Skeleton;
if (skeleton == nullptr) { if (skeleton == nullptr) {
return nullptr; return nullptr;
} }
@@ -26,7 +26,7 @@ void BoneAttachmentSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapp
return; return;
} }
Skeleton* skeleton = model->m_RawModel->m_Skeleton; Skeleton* skeleton = model->m_Skeleton;
if(skeleton == nullptr) { if(skeleton == nullptr) {
return; return;
+3 -17
View File
@@ -332,14 +332,6 @@ void DrawFinalPass::Draw(RenderScene& scene, BlurHUD* blurHUDPass)
glClearStencil(0x00); glClearStencil(0x00);
glClear(GL_STENCIL_BUFFER_BIT); glClear(GL_STENCIL_BUFFER_BIT);
//Fill depth buffer
state->Enable(GL_STENCIL_TEST);
state->StencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
state->StencilFunc(GL_ALWAYS, 1, 0xFF);
state->StencilMask(0xFF);
state->DepthMask(GL_FALSE);
//DrawToDepthStencilBuffer(scene.Jobs.ShieldObjects, scene);
state->DepthMask(GL_TRUE);
//Draw Opaque shielded objects //Draw Opaque shielded objects
state->Disable(GL_STENCIL_TEST); state->Disable(GL_STENCIL_TEST);
@@ -354,10 +346,10 @@ void DrawFinalPass::Draw(RenderScene& scene, BlurHUD* blurHUDPass)
GLERROR("OpaqueObjects"); GLERROR("OpaqueObjects");
//state->Disable(GL_STENCIL_TEST); //state->Disable(GL_STENCIL_TEST);
//Draw Transparen Shielded objects //Draw Transparen objects
state->BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); state->BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
DrawModelRenderQueuesWithShieldCheck(scene.Jobs.TransparentObjects, scene); //might need changing DrawModelRenderQueuesWithShieldCheck(scene.Jobs.TransparentObjects, scene); //might need changing
GLERROR("Shielded Transparent objects"); GLERROR("Transparent objects");
//Generate blur texture. //Generate blur texture.
delete state; delete state;
@@ -379,12 +371,6 @@ void DrawFinalPass::Draw(RenderScene& scene, BlurHUD* blurHUDPass)
} else { } else {
stateSprite = new DrawFinalPassState(m_FinalPassFrameBuffer->GetHandle()); stateSprite = new DrawFinalPassState(m_FinalPassFrameBuffer->GetHandle());
} }
//Draw Transparen objects
//state->BlendFunc(GL_ONE, GL_ONE);
//state->StencilFunc(GL_EQUAL, 1, 0xFF);
//DrawModelRenderQueues(scene.Jobs.TransparentObjects, scene);
GLERROR("TransparentObjects");
//state->BlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
stateSprite->Enable(GL_DEPTH_TEST); stateSprite->Enable(GL_DEPTH_TEST);
//stateSprite->AlphaFunc(GL_GEQUAL, 0.05f); //stateSprite->AlphaFunc(GL_GEQUAL, 0.05f);
//stateSprite->Enable(GL_ALPHA_TEST); //stateSprite->Enable(GL_ALPHA_TEST);
@@ -638,7 +624,7 @@ void DrawFinalPass::DrawModelRenderQueues(std::list<std::shared_ptr<RenderJob>>&
std::vector<glm::mat4> frameBones; std::vector<glm::mat4> frameBones;
if (modelJob->BlendTree != nullptr) { if (modelJob->BlendTree != nullptr) {
frameBones = modelJob->BlendTree->GetFinalPose(); frameBones = modelJob->BlendTree->GetFinalPose();
} else { } else if (modelJob->Skeleton != nullptr) {
frameBones = modelJob->Skeleton->GetTPose(); frameBones = modelJob->Skeleton->GetTPose();
} }
glUniformMatrix4fv(glGetUniformLocation(forwardSkinnedHandle, "Bones"), frameBones.size(), GL_FALSE, glm::value_ptr(frameBones[0])); glUniformMatrix4fv(glGetUniformLocation(forwardSkinnedHandle, "Bones"), frameBones.size(), GL_FALSE, glm::value_ptr(frameBones[0]));
+24 -12
View File
@@ -3,9 +3,9 @@
Model::Model(std::string fileName) Model::Model(std::string fileName)
{ {
//Try loading the model asyncronously, if it throws any exceptions then let it propagate back to caller. //Try loading the model asyncronously, if it throws any exceptions then let it propagate back to caller.
m_RawModel = ResourceManager::Load<RawModel, true>(fileName); auto rawModel = ResourceManager::Load<RawModel, true>(fileName);
for (auto& materialProperty : m_RawModel->m_Materials) { for (auto& materialProperty : rawModel->m_Materials) {
switch (materialProperty.type) { switch (materialProperty.type) {
case RawModel::MaterialType::SingleTextures: case RawModel::MaterialType::SingleTextures:
{ {
@@ -46,11 +46,11 @@ Model::Model(std::string fileName)
glGenBuffers(1, &buffer); glGenBuffers(1, &buffer);
glBindBuffer(GL_ARRAY_BUFFER, buffer); glBindBuffer(GL_ARRAY_BUFFER, buffer);
glBufferData(GL_ARRAY_BUFFER, m_RawModel->NumVertices() * m_RawModel->VertexSize(), m_RawModel->Vertices(), GL_STATIC_DRAW); glBufferData(GL_ARRAY_BUFFER, rawModel->NumVertices() * rawModel->VertexSize(), rawModel->Vertices(), GL_STATIC_DRAW);
glGenBuffers(1, &ElementBuffer); glGenBuffers(1, &ElementBuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ElementBuffer); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ElementBuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, m_RawModel->m_Indices.size() * sizeof(unsigned int), &m_RawModel->m_Indices[0], GL_STATIC_DRAW); glBufferData(GL_ELEMENT_ARRAY_BUFFER, rawModel->Indices().size() * sizeof(unsigned int), rawModel->Indices().data(), GL_STATIC_DRAW);
glGenVertexArrays(1, &VAO); glGenVertexArrays(1, &VAO);
glBindVertexArray(VAO); glBindVertexArray(VAO);
@@ -58,7 +58,7 @@ Model::Model(std::string fileName)
glBindBuffer(GL_ARRAY_BUFFER, buffer); glBindBuffer(GL_ARRAY_BUFFER, buffer);
std::vector<int> structSizes; std::vector<int> structSizes;
if (m_RawModel->IsSkinned()) { if (rawModel->IsSkinned()) {
structSizes = { 3, 3, 3, 3, 2, 4, 4 }; structSizes = { 3, 3, 3, 3, 2, 4, 4 };
} else { } else {
structSizes = { 3, 3, 3, 3, 2 }; structSizes = { 3, 3, 3, 3, 2 };
@@ -77,7 +77,7 @@ Model::Model(std::string fileName)
glVertexAttribPointer(element, structSizes[element], GL_FLOAT, GL_FALSE, stride, (GLvoid*)(sizeof(GLfloat) * (offset += structSizes[element - 1]))); element++; glVertexAttribPointer(element, structSizes[element], GL_FLOAT, GL_FALSE, stride, (GLvoid*)(sizeof(GLfloat) * (offset += structSizes[element - 1]))); element++;
glVertexAttribPointer(element, structSizes[element], GL_FLOAT, GL_FALSE, stride, (GLvoid*)(sizeof(GLfloat) * (offset += structSizes[element - 1]))); element++; glVertexAttribPointer(element, structSizes[element], GL_FLOAT, GL_FALSE, stride, (GLvoid*)(sizeof(GLfloat) * (offset += structSizes[element - 1]))); element++;
glVertexAttribPointer(element, structSizes[element], GL_FLOAT, GL_FALSE, stride, (GLvoid*)(sizeof(GLfloat) * (offset += structSizes[element - 1]))); element++; glVertexAttribPointer(element, structSizes[element], GL_FLOAT, GL_FALSE, stride, (GLvoid*)(sizeof(GLfloat) * (offset += structSizes[element - 1]))); element++;
if (m_RawModel->IsSkinned()) { if (rawModel->IsSkinned()) {
glVertexAttribPointer(element, structSizes[element], GL_FLOAT, GL_FALSE, stride, (GLvoid*)(sizeof(GLfloat) * (offset += structSizes[element - 1]))); element++; glVertexAttribPointer(element, structSizes[element], GL_FLOAT, GL_FALSE, stride, (GLvoid*)(sizeof(GLfloat) * (offset += structSizes[element - 1]))); element++;
glVertexAttribPointer(element, structSizes[element], GL_FLOAT, GL_FALSE, stride, (GLvoid*)(sizeof(GLfloat) * (offset += structSizes[element - 1]))); element++; glVertexAttribPointer(element, structSizes[element], GL_FLOAT, GL_FALSE, stride, (GLvoid*)(sizeof(GLfloat) * (offset += structSizes[element - 1]))); element++;
} }
@@ -89,7 +89,7 @@ Model::Model(std::string fileName)
glEnableVertexAttribArray(2); glEnableVertexAttribArray(2);
glEnableVertexAttribArray(3); glEnableVertexAttribArray(3);
glEnableVertexAttribArray(4); glEnableVertexAttribArray(4);
if (m_RawModel->IsSkinned()) { if (rawModel->IsSkinned()) {
glEnableVertexAttribArray(5); glEnableVertexAttribArray(5);
glEnableVertexAttribArray(6); glEnableVertexAttribArray(6);
} }
@@ -99,17 +99,29 @@ Model::Model(std::string fileName)
glm::vec3 mini(INFINITY); glm::vec3 mini(INFINITY);
glm::vec3 maxi(-INFINITY); glm::vec3 maxi(-INFINITY);
for (unsigned int i = 0; i < rawModel->NumVertices(); i++) {
for (unsigned int i = 0; i < m_RawModel->NumVertices(); i++) { const auto& v = rawModel->Vertices()[i];
const auto& v = m_RawModel->Vertices()[i];
mini = glm::min(mini, v.Position); mini = glm::min(mini, v.Position);
maxi = glm::max(maxi, v.Position); maxi = glm::max(maxi, v.Position);
} }
m_Box = AABB(mini, maxi); m_Box = AABB(mini, maxi);
m_Skeleton = rawModel->m_Skeleton;
m_Materials = rawModel->m_Materials;
m_Indices = rawModel->CollisionIndices();
m_IsSkinned = rawModel->IsSkinned();
// Copy vertex positions for collisions later
m_Vertices = rawModel->CollisionVertices();
ResourceManager::Release("RawModel", fileName);
} }
Model::~Model() Model::~Model()
{ {
if (m_Skeleton != nullptr) {
delete m_Skeleton;
}
for (auto material : m_Materials) {
delete material.material;
}
} }
+1 -1
View File
@@ -115,7 +115,7 @@ void PickingPass::Draw(RenderScene& scene)
std::vector<glm::mat4> frameBones; std::vector<glm::mat4> frameBones;
if (modelJob->BlendTree != nullptr) { if (modelJob->BlendTree != nullptr) {
frameBones = modelJob->BlendTree->GetFinalPose(); frameBones = modelJob->BlendTree->GetFinalPose();
} else { } else if (modelJob->Skeleton != nullptr) {
frameBones = modelJob->Skeleton->GetTPose(); frameBones = modelJob->Skeleton->GetTPose();
} }
glUniformMatrix4fv(glGetUniformLocation(shaderSkinnedHandle, "Bones"), frameBones.size(), GL_FALSE, glm::value_ptr(frameBones[0])); glUniformMatrix4fv(glGetUniformLocation(shaderSkinnedHandle, "Bones"), frameBones.size(), GL_FALSE, glm::value_ptr(frameBones[0]));
+86 -9
View File
@@ -11,6 +11,7 @@ RawModelCustom::RawModelCustom(std::string fileName)
ReadMeshFile(fileName); ReadMeshFile(fileName);
ReadMaterialFile(fileName); ReadMaterialFile(fileName);
ReadAnimationFile(fileName); ReadAnimationFile(fileName);
ReadCollisionFile(fileName);
} }
void RawModelCustom::ReadMeshFile(std::string filePath) void RawModelCustom::ReadMeshFile(std::string filePath)
@@ -71,11 +72,11 @@ void RawModelCustom::ReadVertices(std::size_t& offset, char* fileData, const uns
memcpy(&m_SkinedVertices[0], fileData + offset, m_SkinedVertices.size() * sizeof(SkinedVertex)); memcpy(&m_SkinedVertices[0], fileData + offset, m_SkinedVertices.size() * sizeof(SkinedVertex));
offset += m_SkinedVertices.size() * sizeof(SkinedVertex); offset += m_SkinedVertices.size() * sizeof(SkinedVertex);
} else { } else {
if (offset + m_Vertices.size() * sizeof(Vertex) > fileByteSize) { if (offset + m_Vertices.size() * sizeof(RenderVertex) > fileByteSize) {
throw Resource::FailedLoadingException("Reading vertices failed"); throw Resource::FailedLoadingException("Reading vertices failed");
} }
memcpy(&m_Vertices[0], fileData + offset, m_Vertices.size() * sizeof(Vertex)); memcpy(&m_Vertices[0], fileData + offset, m_Vertices.size() * sizeof(RenderVertex));
offset += m_Vertices.size() * sizeof(Vertex); offset += m_Vertices.size() * sizeof(RenderVertex);
} }
#else #else
#endif #endif
@@ -491,14 +492,90 @@ void RawModelCustom::ReadAnimationKeyFrame(std::size_t& offset, char* fileData,
} }
void RawModelCustom::ReadCollisionFile(std::string filePath) {
char* fileData;
filePath += ".colli";
std::ifstream in(filePath.c_str(), std::ios_base::binary | std::ios_base::ate);
if (!in.is_open()) {
return;
}
unsigned int fileByteSize = static_cast<unsigned int>(in.tellg());
in.seekg(0, std::ios_base::beg);
fileData = new char[fileByteSize];
in.read(fileData, fileByteSize);
in.close();
std::size_t offset = 0;
if (fileByteSize > 0) {
ReadCollisionFileData(offset, fileData, fileByteSize);
}
hasCollisionMesh = true;
delete[] fileData;
}
const std::vector<glm::vec3>& RawModelCustom::CollisionVertices() {
if (hasCollisionMesh) {
return m_CollisionVertices;
}
else if (hasSkin) {
// We don't do collisions against skinned meshes now.
m_CollisionVertices = std::vector<glm::vec3>();
return m_CollisionVertices;
}
else {
return ConstructCollisionList();
}
};
void RawModelCustom::ReadCollisionFileData(std::size_t& offset, char* fileData, const unsigned int& fileByteSize){
m_CollisionVertices.resize(static_cast<std::size_t>(*(unsigned int*)(fileData + offset)));
offset += sizeof(unsigned int);
m_CollisionIndices.resize(static_cast<std::size_t>(*(unsigned int*)(fileData + offset)));
offset += sizeof(unsigned int);
if (offset + m_CollisionVertices.size() * sizeof(glm::vec3) > fileByteSize) {
throw Resource::FailedLoadingException("Reading collision vertices failed");
}
memcpy(&m_CollisionVertices[0], fileData + offset, m_CollisionVertices.size() * sizeof(glm::vec3));
offset += m_CollisionVertices.size() * sizeof(glm::vec3);
if (offset + m_CollisionIndices.size() * sizeof(unsigned int) > fileByteSize) {
throw Resource::FailedLoadingException("Reading collision indices failed");
}
memcpy(&m_CollisionIndices[0], fileData + offset, m_CollisionIndices.size() * sizeof(unsigned int));
offset += m_CollisionIndices.size() * sizeof(unsigned int);
}
const std::vector<glm::vec3>& RawModelCustom::ConstructCollisionList()
{
if (!hasCollisionMesh && m_CollisionVertices.size() == 0) {
if (hasSkin) {
m_CollisionVertices.reserve(m_SkinedVertices.size());
for (const auto& vertex : m_SkinedVertices) {
m_CollisionVertices.push_back(vertex.Position);
}
} else {
m_CollisionVertices.reserve(m_Vertices.size());
for (const auto& vertex : m_Vertices) {
m_CollisionVertices.push_back(vertex.Position);
}
}
}
return m_CollisionVertices;
}
RawModelCustom::~RawModelCustom() RawModelCustom::~RawModelCustom()
{ {
if (m_Skeleton != nullptr) { // Ownership of skeleton and materials get transferred to Model
delete m_Skeleton; // if (m_Skeleton != nullptr) {
} // delete m_Skeleton;
for (auto material : m_Materials) { // }
delete material.material; //for (auto material : m_Materials) {
} // delete material.material;
//}
} }
#endif #endif
+1 -1
View File
@@ -259,7 +259,7 @@ void ShadowPass::Draw(RenderScene & scene)
std::vector<glm::mat4> frameBones; std::vector<glm::mat4> frameBones;
if (modelJob->BlendTree != nullptr) { if (modelJob->BlendTree != nullptr) {
frameBones = modelJob->BlendTree->GetFinalPose(); frameBones = modelJob->BlendTree->GetFinalPose();
} else { } else if (modelJob->Skeleton != nullptr) {
frameBones = modelJob->Skeleton->GetTPose(); frameBones = modelJob->Skeleton->GetTPose();
} }
glUniformMatrix4fv(glGetUniformLocation(shaderHandle, "Bones"), frameBones.size(), GL_FALSE, glm::value_ptr(frameBones[0])); glUniformMatrix4fv(glGetUniformLocation(shaderHandle, "Bones"), frameBones.size(), GL_FALSE, glm::value_ptr(frameBones[0]));
+2 -2
View File
@@ -53,11 +53,11 @@ target_link_libraries(Game
${LIBRARIES} ${LIBRARIES}
) )
add_executable(TacticalZ add_executable(Axyz
main.cpp main.cpp
${CMAKE_SOURCE_DIR}/resources/TacticalZ.rc ${CMAKE_SOURCE_DIR}/resources/TacticalZ.rc
) )
target_link_libraries(TacticalZ target_link_libraries(Axyz
Game Game
${LIBRARIES} ${LIBRARIES}
) )
+3 -3
View File
@@ -112,15 +112,15 @@ bool SpawnerSystem::spawnedEntityIsColliding(EntityWrapper spawnedEntity, Entity
if (!spawnedBox.Entity.HasComponent("Model")) { if (!spawnedBox.Entity.HasComponent("Model")) {
return true; return true;
} }
RawModel* model = nullptr; Model* model = nullptr;
try { try {
model = ResourceManager::Load<RawModel, true>(otherEntity["Model"]["Resource"]); model = ResourceManager::Load<Model, true>(otherEntity["Model"]["Resource"]);
} catch (const std::exception&) { } catch (const std::exception&) {
} }
if (model != nullptr && Collision::AABBvsTriangles( if (model != nullptr && Collision::AABBvsTriangles(
spawnedBox, spawnedBox,
model->Vertices(), model->m_Vertices,
model->m_Indices, model->m_Indices,
TransformSystem::ModelMatrix(otherEntity))) { TransformSystem::ModelMatrix(otherEntity))) {
return true; return true;
+22 -5
View File
@@ -5,7 +5,7 @@ Export::Export()
} }
bool Export::Meshes(std::string pathName, bool selectedOnly) bool Export::Meshes(std::string pathName, bool selectedOnly, bool isCollision)
{ {
MStatus status; MStatus status;
if (pathName.empty()) { if (pathName.empty()) {
@@ -92,8 +92,14 @@ bool Export::Meshes(std::string pathName, bool selectedOnly)
Objects.append(node); Objects.append(node);
} }
} }
GetMeshData(Objects); GetMeshData(Objects, isCollision);
WriteMeshData(pathName);
if (!isCollision) {
WriteMeshData(pathName);
} else {
WriteCollisionData(pathName);
}
MGlobal::displayInfo(MString() + "Enabling IKSolvers"); MGlobal::displayInfo(MString() + "Enabling IKSolvers");
status = MGlobal::executeCommand("doEnableNodeItems true all;"); status = MGlobal::executeCommand("doEnableNodeItems true all;");
if (status != MS::kSuccess) { if (status != MS::kSuccess) {
@@ -144,9 +150,9 @@ bool Export::Animations(std::string pathName, std::vector<AnimationInfo> animInf
return true; return true;
} }
bool Export::GetMeshData(MObjectArray object) bool Export::GetMeshData(MObjectArray object, bool collision)
{ {
meshes = m_MeshHandler.GetMeshData(object); meshes = m_MeshHandler.GetMeshData(object, collision);
return true; return true;
} }
@@ -185,6 +191,17 @@ void Export::WriteMeshData(std::string pathName)
m_MeshFile.CloseFiles(); m_MeshFile.CloseFiles();
} }
void Export::WriteCollisionData(std::string pathName) {
m_ColliFile.ASCIIFilePath(pathName + "_colli.txt");
m_ColliFile.binaryFilePath(pathName + ".colli");
m_ColliFile.OpenFiles();
m_ColliFile.writeToFiles((OutputData*)&meshes);
m_ColliFile.CloseFiles();
}
void Export::WriteAnimData(std::string pathName) void Export::WriteAnimData(std::string pathName)
{ {
if (allBindPoses.size() > 0) { if (allBindPoses.size() > 0) {
+4 -2
View File
@@ -22,18 +22,19 @@ public:
int End; int End;
}; };
bool Meshes(std::string pathName, bool selectedOnly = false); bool Meshes(std::string pathName, bool selectedOnly = false, bool isCollision = false);
bool Materials(std::string pathName); bool Materials(std::string pathName);
bool Animations(std::string pathName, std::vector<AnimationInfo> animInfo); bool Animations(std::string pathName, std::vector<AnimationInfo> animInfo);
private: private:
bool GetMeshData(MObjectArray object); bool GetMeshData(MObjectArray object, bool collision);
bool GetMaterialData(); bool GetMaterialData();
bool GetAnimationData(AnimationInfo info); bool GetAnimationData(AnimationInfo info);
void WriteMeshData(std::string pathName); void WriteMeshData(std::string pathName);
void WriteAnimData(std::string pathName); void WriteAnimData(std::string pathName);
void WriteMaterialData(std::string pathName); void WriteMaterialData(std::string pathName);
void WriteCollisionData(std::string pathName);
Material m_MaterialHandler; Material m_MaterialHandler;
Skeleton m_SkeletonHandler; Skeleton m_SkeletonHandler;
@@ -44,6 +45,7 @@ private:
WriteToFile m_MeshFile; WriteToFile m_MeshFile;
WriteToFile m_AnimFile; WriteToFile m_AnimFile;
WriteToFile m_MtrlFile; WriteToFile m_MtrlFile;
WriteToFile m_ColliFile;
//Mesh Data //Mesh Data
Mesh meshes; Mesh meshes;
+35 -30
View File
@@ -25,6 +25,7 @@ Menu::Menu(QDialog* dialog)
m_ExportSelectedButton = new QCheckBox(tr("&Export Selected")); m_ExportSelectedButton = new QCheckBox(tr("&Export Selected"));
m_ExportAnimationsButton = new QCheckBox(tr("&Export Animations")); m_ExportAnimationsButton = new QCheckBox(tr("&Export Animations"));
m_ExportMaterialButton = new QCheckBox(tr("&Export Material"));; m_ExportMaterialButton = new QCheckBox(tr("&Export Material"));;
m_IsCollision = new QCheckBox(tr("&Export as collision mesh"));
m_ExportAnimationsButton->setChecked(true); m_ExportAnimationsButton->setChecked(true);
m_ExportMaterialButton->setChecked(true); m_ExportMaterialButton->setChecked(true);
@@ -32,6 +33,7 @@ Menu::Menu(QDialog* dialog)
vbox->addWidget(m_ExportSelectedButton); vbox->addWidget(m_ExportSelectedButton);
vbox->addWidget(m_ExportAnimationsButton); vbox->addWidget(m_ExportAnimationsButton);
vbox->addWidget(m_ExportMaterialButton); vbox->addWidget(m_ExportMaterialButton);
vbox->addWidget(m_IsCollision);
vbox->addStretch(1); vbox->addStretch(1);
optionsBox->setLayout(vbox); optionsBox->setLayout(vbox);
@@ -46,6 +48,7 @@ Menu::Menu(QDialog* dialog)
connect(m_ExportSelectedButton, SIGNAL(clicked(bool)), this, SLOT(NULL)); connect(m_ExportSelectedButton, SIGNAL(clicked(bool)), this, SLOT(NULL));
connect(m_ExportAnimationsButton, SIGNAL(clicked(bool)), this, SLOT(NULL)); connect(m_ExportAnimationsButton, SIGNAL(clicked(bool)), this, SLOT(NULL));
connect(m_ExportMaterialButton, SIGNAL(clicked(bool)), this, SLOT(NULL)); connect(m_ExportMaterialButton, SIGNAL(clicked(bool)), this, SLOT(NULL));
connect(m_IsCollision, SIGNAL(clicked(bool)), this, SLOT(NULL));
// Creating several layouts, adding widgets & adding them to one layout in the end // Creating several layouts, adding widgets & adding them to one layout in the end
QHBoxLayout* topLayout = new QHBoxLayout; QHBoxLayout* topLayout = new QHBoxLayout;
@@ -163,40 +166,42 @@ void Menu::RemoveClipClicked(bool)
void Menu::ExportAll(bool) void Menu::ExportAll(bool)
{ {
if (m_ExportPath->text().isEmpty()) { if (m_ExportPath->text().isEmpty()) {
MGlobal::displayError(MString() + "Please select a folder."); MGlobal::displayError(MString() + "Please select a folder.");
return; return;
} }
//Export meshes //Export meshes
if (!m_Export.Meshes(m_ExportPath->text().toLocal8Bit().constData(), m_ExportSelectedButton->isChecked())) { if (!m_Export.Meshes(m_ExportPath->text().toLocal8Bit().constData(), m_ExportSelectedButton->isChecked(), m_IsCollision->isChecked())) {
MGlobal::displayError(MString() + "Could not export mesh"); MGlobal::displayError(MString() + "Could not export mesh");
return; return;
} }
if (m_ExportMaterialButton->isChecked()) { if (!m_IsCollision->isChecked()){
if (!m_Export.Materials(m_ExportPath->text().toLocal8Bit().constData())) { if (m_ExportMaterialButton->isChecked()) {
MGlobal::displayError(MString() + "Could not export materials"); if (!m_Export.Materials(m_ExportPath->text().toLocal8Bit().constData())) {
return; MGlobal::displayError(MString() + "Could not export materials");
} return;
} }
}
std::vector<Export::AnimationInfo> animations; std::vector<Export::AnimationInfo> animations;
for (unsigned int i = 0; i < m_AnimationClipName.size(); i++) { for (unsigned int i = 0; i < m_AnimationClipName.size(); i++) {
Export::AnimationInfo thisClip; Export::AnimationInfo thisClip;
thisClip.Name = std::string(m_AnimationClipName[i]->text().toLocal8Bit().constData()); thisClip.Name = std::string(m_AnimationClipName[i]->text().toLocal8Bit().constData());
thisClip.Start = m_StartFrameLines[i]->text().toInt(); thisClip.Start = m_StartFrameLines[i]->text().toInt();
thisClip.End = m_EndFrameLines[i]->text().toInt(); thisClip.End = m_EndFrameLines[i]->text().toInt();
animations.push_back(thisClip); animations.push_back(thisClip);
} }
if (m_ExportAnimationsButton->isChecked()) { if (m_ExportAnimationsButton->isChecked()) {
//Export Animations //Export Animations
if (!m_Export.Animations(m_ExportPath->text().toLocal8Bit().constData(), animations)) { if (!m_Export.Animations(m_ExportPath->text().toLocal8Bit().constData(), animations)) {
MGlobal::displayError(MString() + "Could not export animations"); MGlobal::displayError(MString() + "Could not export animations");
return; return;
} }
} }
}
} }
void Menu::CancelClicked(bool) void Menu::CancelClicked(bool)
+1
View File
@@ -66,6 +66,7 @@ private:
QCheckBox* m_ExportSelectedButton = nullptr; QCheckBox* m_ExportSelectedButton = nullptr;
QCheckBox* m_ExportAnimationsButton = nullptr; QCheckBox* m_ExportAnimationsButton = nullptr;
QCheckBox* m_ExportMaterialButton = nullptr; QCheckBox* m_ExportMaterialButton = nullptr;
QCheckBox* m_IsCollision = nullptr;
QLineEdit* m_ExportPath = nullptr; QLineEdit* m_ExportPath = nullptr;
QFileDialog* m_FileDialog = nullptr; QFileDialog* m_FileDialog = nullptr;
+62 -58
View File
@@ -94,33 +94,37 @@ MeshClass::MeshClass()
// return weightMap; // return weightMap;
//} //}
Mesh MeshClass::GetMeshData(MObjectArray object) Mesh MeshClass::GetMeshData(MObjectArray object, bool collision)
{ {
MS status; MS status;
Mesh newMesh; Mesh newMesh;
newMesh.isCollison = collision;
vector<VertexLayout>& vertexList = newMesh.Vertices; vector<VertexLayout>& vertexList = newMesh.Vertices;
map<string, vector<int>>& indexLists = newMesh.Indices; map<string, vector<int>>& indexLists = newMesh.Indices;
for (int ObjectID = 0; ObjectID < object.length(); ObjectID++) { for (int ObjectID = 0; ObjectID < object.length(); ObjectID++) {
if (!object[ObjectID].hasFn(MFn::kMesh)) if (!object[ObjectID].hasFn(MFn::kMesh))
continue; continue;
MObject node = object[ObjectID]; MObject node = object[ObjectID];
MFnDependencyNode thisNode(node); MFnDependencyNode thisNode(node);
MPlugArray connections; MPlugArray connections;
thisNode.findPlug("inMesh").connectedTo(connections, true, true); thisNode.findPlug("inMesh").connectedTo(connections, true, true);
MPlug weightList, weights; MPlug weightList, weights;
MObject weightListObject; MObject weightListObject;
for (unsigned int i = 0; i < connections.length(); i++) {
if (connections[i].node().apiType() == MFn::kSkinClusterFilter) {
MFnSkinCluster skinCluster(connections[i].node());
weightList = skinCluster.findPlug("weightList", &status);
weightListObject = weightList.attribute();
weights = skinCluster.findPlug("weights");
newMesh.hasSkin = true;
break;
}
}
if (!collision) {
for (unsigned int i = 0; i < connections.length(); i++) {
if (connections[i].node().apiType() == MFn::kSkinClusterFilter) {
MFnSkinCluster skinCluster(connections[i].node());
weightList = skinCluster.findPlug("weightList", &status);
weightListObject = weightList.attribute();
weights = skinCluster.findPlug("weights");
newMesh.hasSkin = true;
break;
}
}
}
// In here, we retrieve triangulated polygons from the mesh // In here, we retrieve triangulated polygons from the mesh
MFnMesh mesh(object[ObjectID]); MFnMesh mesh(object[ObjectID]);
@@ -257,62 +261,62 @@ Mesh MeshClass::GetMeshData(MObjectArray object)
thisVertex.Pos[0] = pos.x; thisVertex.Pos[0] = pos.x;
thisVertex.Pos[1] = pos.y; thisVertex.Pos[1] = pos.y;
thisVertex.Pos[2] = pos.z; thisVertex.Pos[2] = pos.z;
thisVertex.isCollision = collision;
status = faceVert.getNormal(normal, MSpace::kObject); if (!collision) {
if (status != MS::kSuccess) { status = faceVert.getNormal(normal, MSpace::kObject);
MGlobal::displayError(MString() + "faceVert.getNormal() ERROR: " + status.errorString() + "for local vertex " + i + " in " + faceID + " in mesh " + thisMeshPath.fullPathName()); if (status != MS::kSuccess) {
break; MGlobal::displayError(MString() + "faceVert.getNormal() ERROR: " + status.errorString() + "for local vertex " + i + " in " + faceID + " in mesh " + thisMeshPath.fullPathName());
} break;
}
thisVertex.Normal[0] = normal[0]; thisVertex.Normal[0] = normal[0];
thisVertex.Normal[1] = normal[1]; thisVertex.Normal[1] = normal[1];
thisVertex.Normal[2] = normal[2]; thisVertex.Normal[2] = normal[2];
MFloatVector Tangent = Tangents[faceVert.tangentId()]; MFloatVector Tangent = Tangents[faceVert.tangentId()];
//MVector tmp = faceVert.getTangent(MSpace::kObject, NULL); //MVector tmp = faceVert.getTangent(MSpace::kObject, NULL);
//tmp.get(biTangent); //tmp.get(biTangent);
thisVertex.Tangent[0] = Tangent[0]; thisVertex.Tangent[0] = Tangent[0];
thisVertex.Tangent[1] = Tangent[1]; thisVertex.Tangent[1] = Tangent[1];
thisVertex.Tangent[2] = Tangent[2]; thisVertex.Tangent[2] = Tangent[2];
MFloatVector biNormal = biNormals[faceVert.tangentId()]; MFloatVector biNormal = biNormals[faceVert.tangentId()];
//faceVert.getBinormal().get(biNormal); //faceVert.getBinormal().get(biNormal);
thisVertex.BiNormal[0] = biNormal[0]; thisVertex.BiNormal[0] = biNormal[0];
thisVertex.BiNormal[1] = biNormal[1]; thisVertex.BiNormal[1] = biNormal[1];
thisVertex.BiNormal[2] = biNormal[2]; thisVertex.BiNormal[2] = biNormal[2];
status = faceVert.getUV(UV); status = faceVert.getUV(UV);
if (status != MS::kSuccess) { if (status != MS::kSuccess) {
MGlobal::displayError(MString() + " faceVert.getUV() ERROR: " + status.errorString() + "for local vertex " + i + " in " + faceID + " in mesh " + thisMeshPath.fullPathName()); MGlobal::displayError(MString() + " faceVert.getUV() ERROR: " + status.errorString() + "for local vertex " + i + " in " + faceID + " in mesh " + thisMeshPath.fullPathName());
break; break;
} }
thisVertex.Uv[0] = UV[0]; thisVertex.Uv[0] = UV[0];
thisVertex.Uv[1] = UV[1]; thisVertex.Uv[1] = UV[1];
if (newMesh.hasSkin) { if (newMesh.hasSkin) {
thisVertex.useWeights = true; thisVertex.useWeights = true;
float totalWeight = 0.0f; float totalWeight = 0.0f;
unsigned int totalBones = 0; unsigned int totalBones = 0;
MIntArray jointIDs /* ??? */; MIntArray jointIDs /* ??? */;
weights.selectAncestorLogicalIndex(vertexIndex, weightListObject); weights.selectAncestorLogicalIndex(vertexIndex, weightListObject);
weights.getExistingArrayAttributeIndices(jointIDs); weights.getExistingArrayAttributeIndices(jointIDs);
for (unsigned int i = 0; i < jointIDs.length() && i < 4; i++) { for (unsigned int i = 0; i < jointIDs.length() && i < 4; i++) {
if (weights[i].asFloat() > 0.001f) { if (weights[i].asFloat() > 0.001f) {
thisVertex.BoneIndices[totalBones] = jointIDs[i]; thisVertex.BoneIndices[totalBones] = jointIDs[i];
thisVertex.BoneWeights[totalBones] = weights[i].asFloat(); thisVertex.BoneWeights[totalBones] = weights[i].asFloat();
totalWeight = totalWeight + weights[i].asFloat(); totalWeight = totalWeight + weights[i].asFloat();
totalBones++; totalBones++;
} }
} }
for (unsigned int i = 0; i < 4; i++) { for (unsigned int i = 0; i < 4; i++) {
//thisVertex.BoneWeights[i] = thisVertex.BoneWeights[i] / totalWeight; //thisVertex.BoneWeights[i] = thisVertex.BoneWeights[i] / totalWeight;
} }
} else { }
thisVertex.useWeights = false;
} }
//float totalWeight = thisVertex.BoneWeights[0] + thisVertex.BoneWeights[1] + thisVertex.BoneWeights[2] + thisVertex.BoneWeights[3]; //float totalWeight = thisVertex.BoneWeights[0] + thisVertex.BoneWeights[1] + thisVertex.BoneWeights[2] + thisVertex.BoneWeights[3];
//if (totalWeight > 0.0001f) { //if (totalWeight > 0.0001f) {
// thisVertex.BoneWeights[0] /= totalWeight; // thisVertex.BoneWeights[0] /= totalWeight;
+32 -23
View File
@@ -11,7 +11,8 @@
class VertexLayout : public OutputData class VertexLayout : public OutputData
{ {
public: public:
bool useWeights = true; bool isCollision = false;
bool useWeights = false;
float Pos[3]{ 0 }; float Pos[3]{ 0 };
float Normal[3]{ 0 }; float Normal[3]{ 0 };
float Tangent[3]{ 0 }; float Tangent[3]{ 0 };
@@ -23,28 +24,31 @@ public:
virtual void WriteBinary(std::ostream& out) virtual void WriteBinary(std::ostream& out)
{ {
out.write((char*)&Pos, sizeof(float) * 3); out.write((char*)&Pos, sizeof(float) * 3);
out.write((char*)&Normal, sizeof(float) * 3); if (!isCollision) {
out.write((char*)&Tangent, sizeof(float) * 3); out.write((char*)&Normal, sizeof(float) * 3);
out.write((char*)&BiNormal, sizeof(float) * 3); out.write((char*)&Tangent, sizeof(float) * 3);
out.write((char*)&Uv, sizeof(float) * 2); out.write((char*)&BiNormal, sizeof(float) * 3);
if (useWeights) { out.write((char*)&Uv, sizeof(float) * 2);
out.write((char*)&BoneIndices, sizeof(float) * 4); if (useWeights) {
out.write((char*)&BoneWeights, sizeof(float) * 4); out.write((char*)&BoneIndices, sizeof(float) * 4);
out.write((char*)&BoneWeights, sizeof(float) * 4);
}
} }
} }
virtual void WriteASCII(std::ostream& out) const virtual void WriteASCII(std::ostream& out) const
{ {
out << Pos[0] << " " << Pos[1] << " " << Pos[2] << endl; out << Pos[0] << " " << Pos[1] << " " << Pos[2] << endl;
out << Normal[0] << " " << Normal[1] << " " << Normal[2] << endl; if (!isCollision) {
out << Tangent[0] << " " << Tangent[1] << " " << Tangent[2] << endl; out << Normal[0] << " " << Normal[1] << " " << Normal[2] << endl;
out << BiNormal[0] << " " << BiNormal[1] << " " << BiNormal[2] << endl; out << Tangent[0] << " " << Tangent[1] << " " << Tangent[2] << endl;
out << Uv[0] << " " << Uv[1] << endl; out << BiNormal[0] << " " << BiNormal[1] << " " << BiNormal[2] << endl;
if (useWeights) { out << Uv[0] << " " << Uv[1] << endl;
out << BoneIndices[0] << " " << BoneIndices[1] << " " << BoneIndices[2] << " " << BoneIndices[3] << endl; if (useWeights) {
out << BoneWeights[0] << " " << BoneWeights[1] << " " << BoneWeights[2] << " " << BoneWeights[3] << endl; out << BoneIndices[0] << " " << BoneIndices[1] << " " << BoneIndices[2] << " " << BoneIndices[3] << endl;
out << BoneWeights[0] << " " << BoneWeights[1] << " " << BoneWeights[2] << " " << BoneWeights[3] << endl;
}
} }
} }
bool operator==(const VertexLayout& right) bool operator==(const VertexLayout& right)
{ {
@@ -62,6 +66,7 @@ public:
class Mesh : public OutputData { class Mesh : public OutputData {
public: public:
bool isCollison = false;
bool hasSkin = false; bool hasSkin = false;
unsigned int NumVertices; unsigned int NumVertices;
unsigned int NumIndices; unsigned int NumIndices;
@@ -70,7 +75,9 @@ public:
virtual void WriteBinary(std::ostream& out) virtual void WriteBinary(std::ostream& out)
{ {
out.write((char*)&hasSkin, sizeof(bool)); if (!isCollison) {
out.write((char*)&hasSkin, sizeof(bool));
}
out.write((char*)&NumVertices, sizeof(int)); out.write((char*)&NumVertices, sizeof(int));
out.write((char*)&NumIndices, sizeof(int)); out.write((char*)&NumIndices, sizeof(int));
for (auto aVertex : Vertices) { for (auto aVertex : Vertices) {
@@ -86,11 +93,13 @@ public:
virtual void WriteASCII(std::ostream& out) const virtual void WriteASCII(std::ostream& out) const
{ {
out << "New Mesh _ not in binary" << endl; out << "New Mesh _ not in binary" << endl;
out << "hasSkin: "; if (!isCollison) {
if(hasSkin) out << "hasSkin: ";
out << "true" << endl; if (hasSkin)
else out << "true" << endl;
out << "false" << endl; else
out << "false" << endl;
}
out << "Number of vertices: " << NumVertices << endl; out << "Number of vertices: " << NumVertices << endl;
out << "number of indices: " << NumIndices << endl; out << "number of indices: " << NumIndices << endl;
int vertexNumber = 0; int vertexNumber = 0;
@@ -115,7 +124,7 @@ class MeshClass
{ {
public: public:
MeshClass(); MeshClass();
Mesh GetMeshData(MObjectArray Object); Mesh GetMeshData(MObjectArray Object, bool collision = false);
~MeshClass(); ~MeshClass();
private: private:
struct WeightInfo { struct WeightInfo {