mirror of
https://github.com/copyrighttxt/watrbx-game-engine.git
synced 2026-09-06 13:47:48 +00:00
GEEKING
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
#include "GfxBase/Adorn.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
template <typename Modifier>
|
||||
static void outlineRect2dImpl(Adorn* adorn, const Rect2D& rect, float thick, const Color4& color, const Modifier& modifier)
|
||||
{
|
||||
adorn->rect2d(Rect2D::xyxy(rect.x0() - thick, rect.y0() - thick, rect.x0(), rect.y1()), color, modifier);
|
||||
adorn->rect2d(Rect2D::xyxy(rect.x1(), rect.y0(), rect.x1() + thick, rect.y1() + thick), color, modifier);
|
||||
|
||||
adorn->rect2d(Rect2D::xyxy(rect.x0(), rect.y0() - thick, rect.x1() + thick, rect.y0()), color, modifier);
|
||||
adorn->rect2d(Rect2D::xyxy(rect.x0() - thick, rect.y1(), rect.x1(), rect.y1() + thick), color, modifier);
|
||||
}
|
||||
|
||||
void Adorn::outlineRect2d(const Rect2D& rect, float thick, const Color4& color)
|
||||
{
|
||||
outlineRect2dImpl(this, rect, thick, color, Rotation2D());
|
||||
}
|
||||
|
||||
void Adorn::outlineRect2d(const Rect2D& rect, float thick, const Color4& color, const Rotation2D& rotation)
|
||||
{
|
||||
outlineRect2dImpl(this, rect, thick, color, rotation);
|
||||
}
|
||||
|
||||
void Adorn::outlineRect2d(const Rect2D& rect, float thick, const Color4& color, const Rect2D& clipRect)
|
||||
{
|
||||
outlineRect2dImpl(this, rect, thick, color, clipRect);
|
||||
}
|
||||
|
||||
void Adorn::rect2d(const Rect2D& rect, const Color4& color)
|
||||
{
|
||||
rect2d(rect, Vector2(0, 0), Vector2(1, 1), color, Rotation2D());
|
||||
}
|
||||
|
||||
void Adorn::rect2d(const Rect2D& rect, const Color4& color, const Rotation2D& rotation)
|
||||
{
|
||||
rect2d(rect, Vector2(0, 0), Vector2(1, 1), color, rotation);
|
||||
}
|
||||
|
||||
void Adorn::rect2d(const Rect2D& rect, const Color4& color, const Rect2D& clipRect)
|
||||
{
|
||||
rect2d(rect, Vector2(0, 0), Vector2(1, 1), color, clipRect);
|
||||
}
|
||||
|
||||
void Adorn::rect2d(const Rect2D& rect, const Vector2& texul, const Vector2& texbr, const Color4& color)
|
||||
{
|
||||
rect2d(rect, texul, texbr, color, Rotation2D());
|
||||
}
|
||||
|
||||
void Adorn::rect2d(const Rect2D& rect, const Vector2& texul, const Vector2& texbr, const Color4& color, const Rotation2D& rotation)
|
||||
{
|
||||
if (!rotation.empty())
|
||||
{
|
||||
Vector2 x0y0 = rotation.rotate(rect.x0y0());
|
||||
Vector2 x1y0 = rotation.rotate(rect.x1y0());
|
||||
Vector2 x0y1 = rotation.rotate(rect.x0y1());
|
||||
Vector2 x1y1 = rotation.rotate(rect.x1y1());
|
||||
|
||||
rect2dImpl(x0y0, x1y0, x0y1, x1y1, texul, texbr, color);
|
||||
}
|
||||
else
|
||||
{
|
||||
rect2dImpl(rect.x0y0(), rect.x1y0(), rect.x0y1(), rect.x1y1(), texul, texbr, color);
|
||||
}
|
||||
}
|
||||
|
||||
void Adorn::rect2d(const Rect2D& rect, const Vector2& texul, const Vector2& texbr, const Color4& color, const Rect2D& clipRect)
|
||||
{
|
||||
RBX::Rect2D intersectRect = rect;
|
||||
|
||||
Vector2 lowerUV(texul.x,texul.y);
|
||||
Vector2 upperUV(texbr.x,texbr.y);
|
||||
|
||||
if(clipRect != rect)
|
||||
{
|
||||
intersectRect = clipRect.intersect(rect);
|
||||
|
||||
if(rect.width() != 0)
|
||||
{
|
||||
float uvwidth = upperUV.x - lowerUV.x;
|
||||
|
||||
lowerUV.x += ( uvwidth * ( intersectRect.x0() - rect.x0() ) / rect.width() );
|
||||
upperUV.x += ( uvwidth * ( intersectRect.x1() - rect.x1() ) / rect.width() );
|
||||
}
|
||||
|
||||
if(rect.height() != 0)
|
||||
{
|
||||
float uvheight = upperUV.y - lowerUV.y;
|
||||
|
||||
lowerUV.y += ( uvheight * ( intersectRect.y0() - rect.y0() ) / rect.height() );
|
||||
upperUV.y += ( uvheight * ( intersectRect.y1() - rect.y1() ) / rect.height() );
|
||||
}
|
||||
}
|
||||
|
||||
rect2dImpl(intersectRect.x0y0(), intersectRect.x1y0(), intersectRect.x0y1(), intersectRect.x1y1(), lowerUV, upperUV, color);
|
||||
}
|
||||
|
||||
Vector2 Adorn::drawFont2D(const std::string& s,
|
||||
const Vector2& position, float size, bool autoScale, const Color4& color, const Color4& outline,
|
||||
Text::Font font, Text::XAlign xalign, Text::YAlign yalign,
|
||||
const Vector2& availableSpace, const Rect2D& clippingRect, const Rotation2D& rotation)
|
||||
{
|
||||
return drawFont2DImpl(this, s, position, size, autoScale, color, outline, font, xalign, yalign, availableSpace, clippingRect, rotation);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
#include "GfxBase/AdornBillboarder.h"
|
||||
#include "GfxBase/ViewportBillboarder.h"
|
||||
#include "V8DataModel/Camera.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
AdornBillboarder::AdornBillboarder(Adorn* parent, const ViewportBillboarder& viewportBillboarder)
|
||||
: parent(parent)
|
||||
, viewport(viewportBillboarder.getViewport())
|
||||
, alwaysOnTop(viewportBillboarder.alwaysOnTop)
|
||||
{
|
||||
parent->setObjectToWorldMatrix(viewportBillboarder.getCoordinateFrame());
|
||||
}
|
||||
|
||||
AdornBillboarder::AdornBillboarder(Adorn* parent, const Rect2D& viewport, const CoordinateFrame& transform, bool alwaysOnTop)
|
||||
: parent(parent)
|
||||
, viewport(viewport)
|
||||
, alwaysOnTop(alwaysOnTop)
|
||||
{
|
||||
parent->setObjectToWorldMatrix(transform);
|
||||
}
|
||||
|
||||
Rect2D AdornBillboarder::getViewport() const
|
||||
{
|
||||
return viewport;
|
||||
}
|
||||
|
||||
void AdornBillboarder::line2d(const Vector2& p0, const Vector2& p1, const Color4& color)
|
||||
{
|
||||
Vector3 p03D = Vector3(p0, 0);
|
||||
Vector3 p13D = Vector3(p1, 0);
|
||||
|
||||
p03D.y *= -1;
|
||||
p13D.y *= -1;
|
||||
|
||||
parent->line3d(p03D, p13D, color);
|
||||
}
|
||||
|
||||
void AdornBillboarder::rect2dImpl(
|
||||
const Vector2& x0y0, const Vector2& x1y0, const Vector2& x0y1, const Vector2& x1y1,
|
||||
const Vector2& tex0, const Vector2& tex1, const Color4 & color)
|
||||
{
|
||||
Vector3 px0y0(x0y0, 0);
|
||||
Vector3 px1y0(x1y0, 0);
|
||||
Vector3 px0y1(x0y1, 0);
|
||||
Vector3 px1y1(x1y1, 0);
|
||||
|
||||
px0y1.y *= -1;
|
||||
px1y1.y *= -1;
|
||||
px0y0.y *= -1;
|
||||
px1y0.y *= -1;
|
||||
|
||||
parent->quad(px0y0, px1y0, px0y1, px1y1, color, tex0, tex1, 0, alwaysOnTop);
|
||||
}
|
||||
|
||||
void AdornBillboarder::convexPolygon2d(
|
||||
const Vector2* v,
|
||||
int countv,
|
||||
const Color4& color)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
Vector3* v3d = (Vector3*)_alloca(sizeof(Vector3) * countv);
|
||||
#else
|
||||
Vector3* v3d = (Vector3*)alloca(sizeof(Vector3) * countv);
|
||||
#endif
|
||||
|
||||
for(int i = 0; i < countv; ++i)
|
||||
{
|
||||
v3d[i] = Vector3(v[i].x, -v[i].y, 0); /*neg y : convert from ui space (0,0 top left) to math space */
|
||||
}
|
||||
|
||||
parent->convexPolygon(v3d, countv, color);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
#include "GfxBase/AdornBillboarder2D.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
AdornBillboarder2D::AdornBillboarder2D(Adorn* parent, const Rect2D& viewport, const Vector2& screenOffset)
|
||||
: parent(parent)
|
||||
, viewport(viewport)
|
||||
, screenOffset(screenOffset)
|
||||
{
|
||||
}
|
||||
|
||||
Rect2D AdornBillboarder2D::getViewport() const
|
||||
{
|
||||
return viewport;
|
||||
}
|
||||
|
||||
void AdornBillboarder2D::line2d(const Vector2& p0, const Vector2& p1, const Color4& color)
|
||||
{
|
||||
parent->line2d(p0 + screenOffset, p1 + screenOffset, color);
|
||||
}
|
||||
|
||||
void AdornBillboarder2D::rect2dImpl(
|
||||
const Vector2& x0y0, const Vector2& x1y0, const Vector2& x0y1, const Vector2& x1y1,
|
||||
const Vector2& tex0, const Vector2& tex1, const Color4 & color)
|
||||
{
|
||||
parent->rect2dImpl(x0y0 + screenOffset, x1y0 + screenOffset, x0y1 + screenOffset, x1y1 + screenOffset, tex0, tex1, color);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
#include "GfxBase/AdornSurface.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
AdornSurface::AdornSurface(Adorn* parent, const Rect2D& viewport, const CoordinateFrame& transform, bool alwaysOnTop)
|
||||
: parent(parent)
|
||||
, viewport(viewport)
|
||||
, alwaysOnTop(alwaysOnTop)
|
||||
{
|
||||
parent->setObjectToWorldMatrix(transform);
|
||||
}
|
||||
|
||||
Rect2D AdornSurface::getViewport() const
|
||||
{
|
||||
return viewport;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
void AdornSurface::setTexture(int id, const RBX::TextureProxyBaseRef& t)
|
||||
{
|
||||
return parent->setTexture(id, t);
|
||||
}
|
||||
|
||||
Rect2D AdornSurface::getTextureSize(const RBX::TextureProxyBaseRef& texture) const
|
||||
{
|
||||
return parent->getTextureSize(texture);
|
||||
}
|
||||
|
||||
void AdornSurface::line2d(const Vector2& p0, const Vector2& p1, const Color4& color)
|
||||
{
|
||||
Vector3 p03D = Vector3(p0, 0);
|
||||
Vector3 p13D = Vector3(p1, 0);
|
||||
|
||||
p03D.y *= -1;
|
||||
p13D.y *= -1;
|
||||
|
||||
parent->line3d(p03D, p13D, color);
|
||||
}
|
||||
|
||||
void AdornSurface::rect2dImpl(
|
||||
const Vector2& x0y0, const Vector2& x1y0, const Vector2& x0y1, const Vector2& x1y1,
|
||||
const Vector2& tex0, const Vector2& tex1, const Color4 & color)
|
||||
{
|
||||
Vector3 px0y0(x0y0, 0);
|
||||
Vector3 px1y0(x1y0, 0);
|
||||
Vector3 px0y1(x0y1, 0);
|
||||
Vector3 px1y1(x1y1, 0);
|
||||
|
||||
px0y1.y *= -1;
|
||||
px1y1.y *= -1;
|
||||
px0y0.y *= -1;
|
||||
px1y0.y *= -1;
|
||||
|
||||
parent->quad(px0y0, px1y0, px0y1, px1y1, color, tex0, tex1, 0, alwaysOnTop);
|
||||
}
|
||||
|
||||
Vector2 AdornSurface::drawFont2DImpl(Adorn* target, const std::string& s, const Vector2& pos2D, float size, bool autoScale, const Color4& color, const Color4& outline, Text::Font font, Text::XAlign xalign, Text::YAlign yalign, const Vector2& availableSpace, const Rect2D& clippingRect, const Rotation2D& rotation )
|
||||
{
|
||||
return parent->drawFont2DImpl(target, s, pos2D, size, autoScale, color, outline, font, xalign, yalign, availableSpace, clippingRect, rotation);
|
||||
}
|
||||
|
||||
Vector2 AdornSurface::get2DStringBounds(const std::string& s, float size, Text::Font font, const Vector2& availableSpace ) const
|
||||
{
|
||||
return parent->get2DStringBounds(s, size, font, availableSpace);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
# CMAKE generated file: DO NOT EDIT!
|
||||
# Generated by "Unix Makefiles" Generator, CMake Version 2.8
|
||||
|
||||
# Relative path conversion top directories.
|
||||
SET(CMAKE_RELATIVE_PATH_TOP_SOURCE "/mnt/f/Trunk2012/Client")
|
||||
SET(CMAKE_RELATIVE_PATH_TOP_BINARY "/mnt/f/Trunk2012/Client")
|
||||
|
||||
# Force unix paths in dependencies.
|
||||
SET(CMAKE_FORCE_UNIX_PATHS 1)
|
||||
|
||||
|
||||
# The C and CXX include file regular expressions for this directory.
|
||||
SET(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
|
||||
SET(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
|
||||
SET(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
|
||||
SET(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,58 @@
|
||||
# The set of languages for which implicit dependencies are needed:
|
||||
SET(CMAKE_DEPENDS_LANGUAGES
|
||||
"CXX"
|
||||
)
|
||||
# The set of files for implicit dependencies of each language:
|
||||
SET(CMAKE_DEPENDS_CHECK_CXX
|
||||
"/mnt/f/Trunk2012/Client/Rendering/GfxBase/Adorn.cpp" "/mnt/f/Trunk2012/Client/Rendering/GfxBase/CMakeFiles/GfxBase.dir/Adorn.cpp.o"
|
||||
"/mnt/f/Trunk2012/Client/Rendering/GfxBase/AdornBillboarder.cpp" "/mnt/f/Trunk2012/Client/Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.o"
|
||||
"/mnt/f/Trunk2012/Client/Rendering/GfxBase/AdornBillboarder2D.cpp" "/mnt/f/Trunk2012/Client/Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.o"
|
||||
"/mnt/f/Trunk2012/Client/Rendering/GfxBase/AdornSurface.cpp" "/mnt/f/Trunk2012/Client/Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornSurface.cpp.o"
|
||||
"/mnt/f/Trunk2012/Client/Rendering/GfxBase/FileMeshData.cpp" "/mnt/f/Trunk2012/Client/Rendering/GfxBase/CMakeFiles/GfxBase.dir/FileMeshData.cpp.o"
|
||||
"/mnt/f/Trunk2012/Client/Rendering/GfxBase/FrameRateManager.cpp" "/mnt/f/Trunk2012/Client/Rendering/GfxBase/CMakeFiles/GfxBase.dir/FrameRateManager.cpp.o"
|
||||
"/mnt/f/Trunk2012/Client/Rendering/GfxBase/GfxPart.cpp" "/mnt/f/Trunk2012/Client/Rendering/GfxBase/CMakeFiles/GfxBase.dir/GfxPart.cpp.o"
|
||||
"/mnt/f/Trunk2012/Client/Rendering/GfxBase/IAdornableCollector.cpp" "/mnt/f/Trunk2012/Client/Rendering/GfxBase/CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.o"
|
||||
"/mnt/f/Trunk2012/Client/Rendering/GfxBase/PartIdentifier.cpp" "/mnt/f/Trunk2012/Client/Rendering/GfxBase/CMakeFiles/GfxBase.dir/PartIdentifier.cpp.o"
|
||||
"/mnt/f/Trunk2012/Client/Rendering/GfxBase/RenderCaps.cpp" "/mnt/f/Trunk2012/Client/Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderCaps.cpp.o"
|
||||
"/mnt/f/Trunk2012/Client/Rendering/GfxBase/RenderSettings.cpp" "/mnt/f/Trunk2012/Client/Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderSettings.cpp.o"
|
||||
"/mnt/f/Trunk2012/Client/Rendering/GfxBase/RenderStats.cpp" "/mnt/f/Trunk2012/Client/Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderStats.cpp.o"
|
||||
"/mnt/f/Trunk2012/Client/Rendering/GfxBase/ViewBase.cpp" "/mnt/f/Trunk2012/Client/Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewBase.cpp.o"
|
||||
"/mnt/f/Trunk2012/Client/Rendering/GfxBase/ViewportBillboarder.cpp" "/mnt/f/Trunk2012/Client/Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.o"
|
||||
)
|
||||
SET(CMAKE_CXX_COMPILER_ID "GNU")
|
||||
|
||||
# Preprocessor definitions for this target.
|
||||
SET(CMAKE_TARGET_DEFINITIONS
|
||||
"ANDROID"
|
||||
"ROBLOX_BOOST_CONFIGS"
|
||||
)
|
||||
|
||||
# Targets to which this target links.
|
||||
SET(CMAKE_TARGET_LINKED_INFO_FILES
|
||||
)
|
||||
|
||||
# The include file search paths:
|
||||
SET(CMAKE_C_TARGET_INCLUDE_PATH
|
||||
"/home/watrabi/Android/ndk/android-ndk-r10e/platforms/android-21/arch-arm/usr/include"
|
||||
"/home/watrabi/Android/ndk/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include"
|
||||
"/home/watrabi/Android/ndk/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include"
|
||||
"/home/watrabi/Android/ndk/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/backward"
|
||||
"/mnt/f/Trunk2012/Contribs/boost_1_70_0"
|
||||
"/mnt/f/Trunk2012/Contribs/android/armeabi-v7a/curl/curl-7.43.0/include"
|
||||
"/mnt/f/Trunk2012/Contribs/boost_1_70_0/include"
|
||||
"fmod/include"
|
||||
"/mnt/f/Trunk2012/Contribs/android/arm/openssl/openssl-1.0.2c/include"
|
||||
"/mnt/f/Trunk2012/Contribs/SDL2/include"
|
||||
"Base/include"
|
||||
"Log/include"
|
||||
"Base/include/rbx/Android"
|
||||
"App/include"
|
||||
"App.BulletPhysics"
|
||||
"Rendering/GfxBase/include"
|
||||
"Rendering/GfxBase/../g3d/include"
|
||||
"Rendering/GfxBase/../RbxG3d/include"
|
||||
"Rendering/GfxBase/../AppDraw/include"
|
||||
)
|
||||
SET(CMAKE_CXX_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
|
||||
SET(CMAKE_Fortran_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
|
||||
SET(CMAKE_ASM_TARGET_INCLUDE_PATH ${CMAKE_C_TARGET_INCLUDE_PATH})
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,243 @@
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderCaps.cpp.o: \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/RenderCaps.cpp \
|
||||
/usr/include/stdc-predef.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/GfxBase/RenderCaps.h \
|
||||
/usr/include/c++/13/string /usr/include/c++/13/bits/requires_hosted.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \
|
||||
/usr/include/features.h /usr/include/features-time64.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/timesize.h \
|
||||
/usr/include/x86_64-linux-gnu/sys/cdefs.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/long-double.h \
|
||||
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
|
||||
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \
|
||||
/usr/include/c++/13/bits/stringfwd.h \
|
||||
/usr/include/c++/13/bits/memoryfwd.h \
|
||||
/usr/include/c++/13/bits/char_traits.h \
|
||||
/usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \
|
||||
/usr/include/wchar.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/floatn.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/floatn-common.h \
|
||||
/usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \
|
||||
/usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/wchar.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/wint_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/__FILE.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/FILE.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/wchar2.h \
|
||||
/usr/include/c++/13/type_traits /usr/include/c++/13/bits/allocator.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \
|
||||
/usr/include/c++/13/bits/new_allocator.h /usr/include/c++/13/new \
|
||||
/usr/include/c++/13/bits/exception.h \
|
||||
/usr/include/c++/13/bits/functexcept.h \
|
||||
/usr/include/c++/13/bits/exception_defines.h \
|
||||
/usr/include/c++/13/bits/move.h \
|
||||
/usr/include/c++/13/bits/cpp_type_traits.h \
|
||||
/usr/include/c++/13/bits/localefwd.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \
|
||||
/usr/include/c++/13/clocale /usr/include/locale.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \
|
||||
/usr/include/c++/13/cctype /usr/include/ctype.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/time64.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/endian.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/endianness.h \
|
||||
/usr/include/c++/13/bits/ostream_insert.h \
|
||||
/usr/include/c++/13/bits/cxxabi_forced.h \
|
||||
/usr/include/c++/13/bits/stl_iterator_base_funcs.h \
|
||||
/usr/include/c++/13/bits/concept_check.h \
|
||||
/usr/include/c++/13/debug/assertions.h \
|
||||
/usr/include/c++/13/bits/stl_iterator_base_types.h \
|
||||
/usr/include/c++/13/bits/stl_iterator.h \
|
||||
/usr/include/c++/13/ext/type_traits.h \
|
||||
/usr/include/c++/13/bits/ptr_traits.h \
|
||||
/usr/include/c++/13/bits/stl_function.h \
|
||||
/usr/include/c++/13/backward/binders.h \
|
||||
/usr/include/c++/13/ext/numeric_traits.h \
|
||||
/usr/include/c++/13/bits/stl_algobase.h \
|
||||
/usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/bits/utility.h \
|
||||
/usr/include/c++/13/debug/debug.h \
|
||||
/usr/include/c++/13/bits/predefined_ops.h \
|
||||
/usr/include/c++/13/bits/refwrap.h /usr/include/c++/13/bits/invoke.h \
|
||||
/usr/include/c++/13/bits/range_access.h \
|
||||
/usr/include/c++/13/initializer_list \
|
||||
/usr/include/c++/13/bits/basic_string.h \
|
||||
/usr/include/c++/13/ext/alloc_traits.h \
|
||||
/usr/include/c++/13/bits/alloc_traits.h \
|
||||
/usr/include/c++/13/bits/stl_construct.h \
|
||||
/usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \
|
||||
/usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
|
||||
/usr/include/x86_64-linux-gnu/sys/types.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/time_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/byteswap.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h \
|
||||
/usr/include/x86_64-linux-gnu/sys/select.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/select.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/select2.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/select-decl.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/struct_mutex.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdlib.h \
|
||||
/usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \
|
||||
/usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdio.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \
|
||||
/usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \
|
||||
/usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \
|
||||
/usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/error_t.h \
|
||||
/usr/include/c++/13/bits/charconv.h \
|
||||
/usr/include/c++/13/bits/functional_hash.h \
|
||||
/usr/include/c++/13/bits/hash_bytes.h \
|
||||
/usr/include/c++/13/bits/basic_string.tcc \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/GfxBase/RenderSettings.h \
|
||||
/usr/include/c++/13/vector /usr/include/c++/13/bits/stl_uninitialized.h \
|
||||
/usr/include/c++/13/bits/stl_vector.h \
|
||||
/usr/include/c++/13/bits/stl_bvector.h \
|
||||
/usr/include/c++/13/bits/vector.tcc \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/App/include/util/G3DCore.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Vector2.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/platform.h \
|
||||
/usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdint-least.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/g3dmath.h \
|
||||
/usr/lib/gcc/x86_64-linux-gnu/13/include/float.h \
|
||||
/usr/include/c++/13/limits /usr/include/c++/13/stdlib.h \
|
||||
/usr/include/inttypes.h /usr/include/c++/13/math.h \
|
||||
/usr/include/c++/13/cmath /usr/include/math.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/math-vector.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/fp-logb.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/fp-fast.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/mathcalls.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/mathcalls-narrow.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/iscanonical.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/debug.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/debugPrintf.h \
|
||||
/usr/include/c++/13/cstdarg \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/format.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/debugAssert.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Table.h \
|
||||
/usr/include/c++/13/cstddef \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Array.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/System.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/G3DGameUnits.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/MemoryManager.h \
|
||||
/usr/include/c++/13/algorithm /usr/include/c++/13/bits/stl_algo.h \
|
||||
/usr/include/c++/13/bits/algorithmfwd.h \
|
||||
/usr/include/c++/13/bits/stl_heap.h \
|
||||
/usr/include/c++/13/bits/uniform_int_dist.h \
|
||||
/usr/include/c++/13/bits/stl_tempbuf.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/EqualsTrait.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/HashTrait.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Crypto.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/uint128.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Vector2int16.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Random.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Vector3.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/PositionTrait.h \
|
||||
/usr/include/c++/13/iostream /usr/include/c++/13/ostream \
|
||||
/usr/include/c++/13/ios /usr/include/c++/13/exception \
|
||||
/usr/include/c++/13/bits/exception_ptr.h \
|
||||
/usr/include/c++/13/bits/cxxabi_init_exception.h \
|
||||
/usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \
|
||||
/usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \
|
||||
/usr/include/pthread.h /usr/include/sched.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/sched.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/time.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/time.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/timex.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/setjmp.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \
|
||||
/usr/include/x86_64-linux-gnu/sys/single_threaded.h \
|
||||
/usr/include/c++/13/bits/locale_classes.h \
|
||||
/usr/include/c++/13/bits/locale_classes.tcc \
|
||||
/usr/include/c++/13/system_error \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \
|
||||
/usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \
|
||||
/usr/include/c++/13/bits/streambuf.tcc \
|
||||
/usr/include/c++/13/bits/basic_ios.h \
|
||||
/usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \
|
||||
/usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \
|
||||
/usr/include/c++/13/bits/streambuf_iterator.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \
|
||||
/usr/include/c++/13/bits/locale_facets.tcc \
|
||||
/usr/include/c++/13/bits/basic_ios.tcc \
|
||||
/usr/include/c++/13/bits/ostream.tcc /usr/include/c++/13/istream \
|
||||
/usr/include/c++/13/bits/istream.tcc \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Vector4.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Matrix3.h \
|
||||
/usr/include/c++/13/cstring /usr/include/string.h /usr/include/strings.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/string_fortified.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Matrix4.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Vector3int16.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Color4uint8.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Color3uint8.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/CoordinateFrame.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Line.h \
|
||||
/usr/include/assert.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../RbxG3D/include/RbxG3D/RbxRay.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Triangle.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Plane.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/BoundsTrait.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Sphere.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Box.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/AABox.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../../App.BulletPhysics/LinearMath/btTransform.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../../App.BulletPhysics/LinearMath/btMatrix3x3.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../../App.BulletPhysics/LinearMath/btVector3.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../../App.BulletPhysics/LinearMath/btScalar.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../../App.BulletPhysics/LinearMath/btMinMax.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../../App.BulletPhysics/LinearMath/btAlignedAllocator.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../../App.BulletPhysics/LinearMath/btQuaternion.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../../App.BulletPhysics/LinearMath/btQuadWord.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/LineSegment.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../RbxG3d/include/RbxG3D/RbxCamera.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Rect2D.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Color3.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Color1.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Color4.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/vectorMath.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Debug.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Log/include/FastLog.h
|
||||
@@ -0,0 +1,256 @@
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderSettings.cpp.o: \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/RenderSettings.cpp \
|
||||
/usr/include/stdc-predef.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/GfxBase/RenderSettings.h \
|
||||
/usr/include/c++/13/vector /usr/include/c++/13/bits/requires_hosted.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/c++config.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/os_defines.h \
|
||||
/usr/include/features.h /usr/include/features-time64.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/timesize.h \
|
||||
/usr/include/x86_64-linux-gnu/sys/cdefs.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/long-double.h \
|
||||
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
|
||||
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/cpu_defines.h \
|
||||
/usr/include/c++/13/bits/stl_algobase.h \
|
||||
/usr/include/c++/13/bits/functexcept.h \
|
||||
/usr/include/c++/13/bits/exception_defines.h \
|
||||
/usr/include/c++/13/bits/cpp_type_traits.h \
|
||||
/usr/include/c++/13/ext/type_traits.h \
|
||||
/usr/include/c++/13/ext/numeric_traits.h \
|
||||
/usr/include/c++/13/bits/stl_pair.h /usr/include/c++/13/type_traits \
|
||||
/usr/include/c++/13/bits/move.h /usr/include/c++/13/bits/utility.h \
|
||||
/usr/include/c++/13/bits/stl_iterator_base_types.h \
|
||||
/usr/include/c++/13/bits/stl_iterator_base_funcs.h \
|
||||
/usr/include/c++/13/bits/concept_check.h \
|
||||
/usr/include/c++/13/debug/assertions.h \
|
||||
/usr/include/c++/13/bits/stl_iterator.h \
|
||||
/usr/include/c++/13/bits/ptr_traits.h /usr/include/c++/13/debug/debug.h \
|
||||
/usr/include/c++/13/bits/predefined_ops.h \
|
||||
/usr/include/c++/13/bits/allocator.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h \
|
||||
/usr/include/c++/13/bits/new_allocator.h /usr/include/c++/13/new \
|
||||
/usr/include/c++/13/bits/exception.h \
|
||||
/usr/include/c++/13/bits/memoryfwd.h \
|
||||
/usr/include/c++/13/bits/stl_construct.h \
|
||||
/usr/include/c++/13/bits/stl_uninitialized.h \
|
||||
/usr/include/c++/13/ext/alloc_traits.h \
|
||||
/usr/include/c++/13/bits/alloc_traits.h \
|
||||
/usr/include/c++/13/bits/stl_vector.h \
|
||||
/usr/include/c++/13/initializer_list \
|
||||
/usr/include/c++/13/bits/stl_bvector.h \
|
||||
/usr/include/c++/13/bits/functional_hash.h \
|
||||
/usr/include/c++/13/bits/hash_bytes.h /usr/include/c++/13/bits/refwrap.h \
|
||||
/usr/include/c++/13/bits/invoke.h \
|
||||
/usr/include/c++/13/bits/stl_function.h \
|
||||
/usr/include/c++/13/backward/binders.h \
|
||||
/usr/include/c++/13/bits/range_access.h \
|
||||
/usr/include/c++/13/bits/vector.tcc \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/App/include/util/G3DCore.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Vector2.h \
|
||||
/usr/include/c++/13/string /usr/include/c++/13/bits/stringfwd.h \
|
||||
/usr/include/c++/13/bits/char_traits.h \
|
||||
/usr/include/c++/13/bits/postypes.h /usr/include/c++/13/cwchar \
|
||||
/usr/include/wchar.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/libc-header-start.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/floatn.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/floatn-common.h \
|
||||
/usr/lib/gcc/x86_64-linux-gnu/13/include/stddef.h \
|
||||
/usr/lib/gcc/x86_64-linux-gnu/13/include/stdarg.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/wchar.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/wint_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/__FILE.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/FILE.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/locale_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/wchar2-decl.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/wchar2.h \
|
||||
/usr/include/c++/13/bits/localefwd.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/c++locale.h \
|
||||
/usr/include/c++/13/clocale /usr/include/locale.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/13/iosfwd \
|
||||
/usr/include/c++/13/cctype /usr/include/ctype.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/typesizes.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/time64.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/endian.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/endianness.h \
|
||||
/usr/include/c++/13/bits/ostream_insert.h \
|
||||
/usr/include/c++/13/bits/cxxabi_forced.h \
|
||||
/usr/include/c++/13/bits/basic_string.h \
|
||||
/usr/include/c++/13/ext/string_conversions.h /usr/include/c++/13/cstdlib \
|
||||
/usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/waitstatus.h \
|
||||
/usr/include/x86_64-linux-gnu/sys/types.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/clock_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/time_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/timer_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdint-intn.h /usr/include/endian.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/byteswap.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/uintn-identity.h \
|
||||
/usr/include/x86_64-linux-gnu/sys/select.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/select.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/select2.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/select-decl.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/atomic_wide_counter.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/struct_mutex.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/struct_rwlock.h /usr/include/alloca.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdlib-float.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdlib.h \
|
||||
/usr/include/c++/13/bits/std_abs.h /usr/include/c++/13/cstdio \
|
||||
/usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdio_lim.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdio2-decl.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdio.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdio2.h /usr/include/c++/13/cerrno \
|
||||
/usr/include/errno.h /usr/include/x86_64-linux-gnu/bits/errno.h \
|
||||
/usr/include/linux/errno.h /usr/include/x86_64-linux-gnu/asm/errno.h \
|
||||
/usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/error_t.h \
|
||||
/usr/include/c++/13/bits/charconv.h \
|
||||
/usr/include/c++/13/bits/basic_string.tcc \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/platform.h \
|
||||
/usr/lib/gcc/x86_64-linux-gnu/13/include/stdint.h /usr/include/stdint.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/stdint-least.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/g3dmath.h \
|
||||
/usr/lib/gcc/x86_64-linux-gnu/13/include/float.h \
|
||||
/usr/include/c++/13/limits /usr/include/c++/13/stdlib.h \
|
||||
/usr/include/inttypes.h /usr/include/c++/13/math.h \
|
||||
/usr/include/c++/13/cmath /usr/include/math.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/math-vector.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/fp-logb.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/fp-fast.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/mathcalls.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/mathcalls-narrow.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/iscanonical.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/debug.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/debugPrintf.h \
|
||||
/usr/include/c++/13/cstdarg \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/format.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/debugAssert.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Table.h \
|
||||
/usr/include/c++/13/cstddef \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Array.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/System.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/G3DGameUnits.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/MemoryManager.h \
|
||||
/usr/include/c++/13/algorithm /usr/include/c++/13/bits/stl_algo.h \
|
||||
/usr/include/c++/13/bits/algorithmfwd.h \
|
||||
/usr/include/c++/13/bits/stl_heap.h \
|
||||
/usr/include/c++/13/bits/uniform_int_dist.h \
|
||||
/usr/include/c++/13/bits/stl_tempbuf.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/EqualsTrait.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/HashTrait.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Crypto.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/uint128.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Vector2int16.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Random.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Vector3.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/PositionTrait.h \
|
||||
/usr/include/c++/13/iostream /usr/include/c++/13/ostream \
|
||||
/usr/include/c++/13/ios /usr/include/c++/13/exception \
|
||||
/usr/include/c++/13/bits/exception_ptr.h \
|
||||
/usr/include/c++/13/bits/cxxabi_init_exception.h \
|
||||
/usr/include/c++/13/typeinfo /usr/include/c++/13/bits/nested_exception.h \
|
||||
/usr/include/c++/13/bits/ios_base.h /usr/include/c++/13/ext/atomicity.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/gthr.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/gthr-default.h \
|
||||
/usr/include/pthread.h /usr/include/sched.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/sched.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/time.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/time.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/timex.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/setjmp.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/types/struct___jmp_buf_tag.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/pthread_stack_min-dynamic.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/atomic_word.h \
|
||||
/usr/include/x86_64-linux-gnu/sys/single_threaded.h \
|
||||
/usr/include/c++/13/bits/locale_classes.h \
|
||||
/usr/include/c++/13/bits/locale_classes.tcc \
|
||||
/usr/include/c++/13/system_error \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/error_constants.h \
|
||||
/usr/include/c++/13/stdexcept /usr/include/c++/13/streambuf \
|
||||
/usr/include/c++/13/bits/streambuf.tcc \
|
||||
/usr/include/c++/13/bits/basic_ios.h \
|
||||
/usr/include/c++/13/bits/locale_facets.h /usr/include/c++/13/cwctype \
|
||||
/usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/ctype_base.h \
|
||||
/usr/include/c++/13/bits/streambuf_iterator.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/ctype_inline.h \
|
||||
/usr/include/c++/13/bits/locale_facets.tcc \
|
||||
/usr/include/c++/13/bits/basic_ios.tcc \
|
||||
/usr/include/c++/13/bits/ostream.tcc /usr/include/c++/13/istream \
|
||||
/usr/include/c++/13/bits/istream.tcc \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Vector4.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Matrix3.h \
|
||||
/usr/include/c++/13/cstring /usr/include/string.h /usr/include/strings.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/strings_fortified.h \
|
||||
/usr/include/x86_64-linux-gnu/bits/string_fortified.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Matrix4.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Vector3int16.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Color4uint8.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Color3uint8.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/CoordinateFrame.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Line.h \
|
||||
/usr/include/assert.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../RbxG3D/include/RbxG3D/RbxRay.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Triangle.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Plane.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/BoundsTrait.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Sphere.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Box.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/AABox.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../../App.BulletPhysics/LinearMath/btTransform.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../../App.BulletPhysics/LinearMath/btMatrix3x3.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../../App.BulletPhysics/LinearMath/btVector3.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../../App.BulletPhysics/LinearMath/btScalar.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../../App.BulletPhysics/LinearMath/btMinMax.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../../App.BulletPhysics/LinearMath/btAlignedAllocator.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../../App.BulletPhysics/LinearMath/btQuaternion.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/include/../../../App.BulletPhysics/LinearMath/btQuadWord.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/LineSegment.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../RbxG3d/include/RbxG3D/RbxCamera.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Rect2D.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Color3.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Color1.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Color4.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/vectorMath.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Rendering/GfxBase/../g3d/include/G3D/Debug.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Base/include/rbx/Debug.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Base/include/RbxPlatform.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Base/include/RbxBase.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Base/include/RbxAssert.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Base/include/RbxFormat.h \
|
||||
/usr/include/c++/13/set /usr/include/c++/13/bits/stl_tree.h \
|
||||
/usr/include/c++/13/ext/aligned_buffer.h \
|
||||
/usr/include/c++/13/bits/stl_set.h \
|
||||
/usr/include/c++/13/bits/stl_multiset.h \
|
||||
/usr/include/c++/13/bits/erase_if.h /usr/include/c++/13/fstream \
|
||||
/usr/include/c++/13/bits/codecvt.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/basic_file.h \
|
||||
/usr/include/x86_64-linux-gnu/c++/13/bits/c++io.h \
|
||||
/usr/include/c++/13/bits/fstream.tcc \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Base/include/rbx/Declarations.h \
|
||||
/mnt/f/Trunk2012/BuildWatrbx/Log/include/FastLog.h
|
||||
@@ -0,0 +1,421 @@
|
||||
# CMAKE generated file: DO NOT EDIT!
|
||||
# Generated by "Unix Makefiles" Generator, CMake Version 2.8
|
||||
|
||||
#=============================================================================
|
||||
# Special targets provided by cmake.
|
||||
|
||||
# Disable implicit rules so canonical targets will work.
|
||||
.SUFFIXES:
|
||||
|
||||
# Remove some rules from gmake that .SUFFIXES does not remove.
|
||||
SUFFIXES =
|
||||
|
||||
.SUFFIXES: .hpux_make_needs_suffix_list
|
||||
|
||||
# Suppress display of executed commands.
|
||||
$(VERBOSE).SILENT:
|
||||
|
||||
# A target that is always out of date.
|
||||
cmake_force:
|
||||
.PHONY : cmake_force
|
||||
|
||||
#=============================================================================
|
||||
# Set environment variables for the build.
|
||||
|
||||
# The shell in which to execute make rules.
|
||||
SHELL = /bin/sh
|
||||
|
||||
# The CMake executable.
|
||||
CMAKE_COMMAND = /usr/bin/cmake
|
||||
|
||||
# The command to remove a file.
|
||||
RM = /usr/bin/cmake -E remove -f
|
||||
|
||||
# Escaping for special characters.
|
||||
EQUALS = =
|
||||
|
||||
# The program to use to edit the cache.
|
||||
CMAKE_EDIT_COMMAND = /usr/bin/ccmake
|
||||
|
||||
# The top-level source directory on which CMake was run.
|
||||
CMAKE_SOURCE_DIR = /mnt/f/Trunk2012/Client
|
||||
|
||||
# The top-level build directory on which CMake was run.
|
||||
CMAKE_BINARY_DIR = /mnt/f/Trunk2012/Client
|
||||
|
||||
# Include any dependencies generated for this target.
|
||||
include Rendering/GfxBase/CMakeFiles/GfxBase.dir/depend.make
|
||||
|
||||
# Include the progress variables for this target.
|
||||
include Rendering/GfxBase/CMakeFiles/GfxBase.dir/progress.make
|
||||
|
||||
# Include the compile flags for this target's objects.
|
||||
include Rendering/GfxBase/CMakeFiles/GfxBase.dir/flags.make
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.o: Rendering/GfxBase/CMakeFiles/GfxBase.dir/flags.make
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.o: Rendering/GfxBase/IAdornableCollector.cpp
|
||||
$(CMAKE_COMMAND) -E cmake_progress_report /mnt/f/Trunk2012/Client/CMakeFiles $(CMAKE_PROGRESS_1)
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object Rendering/GfxBase/CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.o"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.o -c /mnt/f/Trunk2012/Client/Rendering/GfxBase/IAdornableCollector.cpp
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.i"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/f/Trunk2012/Client/Rendering/GfxBase/IAdornableCollector.cpp > CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.i
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.s"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/f/Trunk2012/Client/Rendering/GfxBase/IAdornableCollector.cpp -o CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.s
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.o.requires:
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.o.requires
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.o.provides: Rendering/GfxBase/CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.o.requires
|
||||
$(MAKE) -f Rendering/GfxBase/CMakeFiles/GfxBase.dir/build.make Rendering/GfxBase/CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.o.provides.build
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.o.provides
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.o.provides.build: Rendering/GfxBase/CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.o
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderSettings.cpp.o: Rendering/GfxBase/CMakeFiles/GfxBase.dir/flags.make
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderSettings.cpp.o: Rendering/GfxBase/RenderSettings.cpp
|
||||
$(CMAKE_COMMAND) -E cmake_progress_report /mnt/f/Trunk2012/Client/CMakeFiles $(CMAKE_PROGRESS_2)
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderSettings.cpp.o"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/GfxBase.dir/RenderSettings.cpp.o -c /mnt/f/Trunk2012/Client/Rendering/GfxBase/RenderSettings.cpp
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderSettings.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GfxBase.dir/RenderSettings.cpp.i"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/f/Trunk2012/Client/Rendering/GfxBase/RenderSettings.cpp > CMakeFiles/GfxBase.dir/RenderSettings.cpp.i
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderSettings.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GfxBase.dir/RenderSettings.cpp.s"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/f/Trunk2012/Client/Rendering/GfxBase/RenderSettings.cpp -o CMakeFiles/GfxBase.dir/RenderSettings.cpp.s
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderSettings.cpp.o.requires:
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderSettings.cpp.o.requires
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderSettings.cpp.o.provides: Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderSettings.cpp.o.requires
|
||||
$(MAKE) -f Rendering/GfxBase/CMakeFiles/GfxBase.dir/build.make Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderSettings.cpp.o.provides.build
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderSettings.cpp.o.provides
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderSettings.cpp.o.provides.build: Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderSettings.cpp.o
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/Adorn.cpp.o: Rendering/GfxBase/CMakeFiles/GfxBase.dir/flags.make
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/Adorn.cpp.o: Rendering/GfxBase/Adorn.cpp
|
||||
$(CMAKE_COMMAND) -E cmake_progress_report /mnt/f/Trunk2012/Client/CMakeFiles $(CMAKE_PROGRESS_3)
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object Rendering/GfxBase/CMakeFiles/GfxBase.dir/Adorn.cpp.o"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/GfxBase.dir/Adorn.cpp.o -c /mnt/f/Trunk2012/Client/Rendering/GfxBase/Adorn.cpp
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/Adorn.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GfxBase.dir/Adorn.cpp.i"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/f/Trunk2012/Client/Rendering/GfxBase/Adorn.cpp > CMakeFiles/GfxBase.dir/Adorn.cpp.i
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/Adorn.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GfxBase.dir/Adorn.cpp.s"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/f/Trunk2012/Client/Rendering/GfxBase/Adorn.cpp -o CMakeFiles/GfxBase.dir/Adorn.cpp.s
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/Adorn.cpp.o.requires:
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/Adorn.cpp.o.requires
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/Adorn.cpp.o.provides: Rendering/GfxBase/CMakeFiles/GfxBase.dir/Adorn.cpp.o.requires
|
||||
$(MAKE) -f Rendering/GfxBase/CMakeFiles/GfxBase.dir/build.make Rendering/GfxBase/CMakeFiles/GfxBase.dir/Adorn.cpp.o.provides.build
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/Adorn.cpp.o.provides
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/Adorn.cpp.o.provides.build: Rendering/GfxBase/CMakeFiles/GfxBase.dir/Adorn.cpp.o
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderCaps.cpp.o: Rendering/GfxBase/CMakeFiles/GfxBase.dir/flags.make
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderCaps.cpp.o: Rendering/GfxBase/RenderCaps.cpp
|
||||
$(CMAKE_COMMAND) -E cmake_progress_report /mnt/f/Trunk2012/Client/CMakeFiles $(CMAKE_PROGRESS_4)
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderCaps.cpp.o"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/GfxBase.dir/RenderCaps.cpp.o -c /mnt/f/Trunk2012/Client/Rendering/GfxBase/RenderCaps.cpp
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderCaps.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GfxBase.dir/RenderCaps.cpp.i"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/f/Trunk2012/Client/Rendering/GfxBase/RenderCaps.cpp > CMakeFiles/GfxBase.dir/RenderCaps.cpp.i
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderCaps.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GfxBase.dir/RenderCaps.cpp.s"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/f/Trunk2012/Client/Rendering/GfxBase/RenderCaps.cpp -o CMakeFiles/GfxBase.dir/RenderCaps.cpp.s
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderCaps.cpp.o.requires:
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderCaps.cpp.o.requires
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderCaps.cpp.o.provides: Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderCaps.cpp.o.requires
|
||||
$(MAKE) -f Rendering/GfxBase/CMakeFiles/GfxBase.dir/build.make Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderCaps.cpp.o.provides.build
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderCaps.cpp.o.provides
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderCaps.cpp.o.provides.build: Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderCaps.cpp.o
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/GfxPart.cpp.o: Rendering/GfxBase/CMakeFiles/GfxBase.dir/flags.make
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/GfxPart.cpp.o: Rendering/GfxBase/GfxPart.cpp
|
||||
$(CMAKE_COMMAND) -E cmake_progress_report /mnt/f/Trunk2012/Client/CMakeFiles $(CMAKE_PROGRESS_5)
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object Rendering/GfxBase/CMakeFiles/GfxBase.dir/GfxPart.cpp.o"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/GfxBase.dir/GfxPart.cpp.o -c /mnt/f/Trunk2012/Client/Rendering/GfxBase/GfxPart.cpp
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/GfxPart.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GfxBase.dir/GfxPart.cpp.i"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/f/Trunk2012/Client/Rendering/GfxBase/GfxPart.cpp > CMakeFiles/GfxBase.dir/GfxPart.cpp.i
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/GfxPart.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GfxBase.dir/GfxPart.cpp.s"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/f/Trunk2012/Client/Rendering/GfxBase/GfxPart.cpp -o CMakeFiles/GfxBase.dir/GfxPart.cpp.s
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/GfxPart.cpp.o.requires:
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/GfxPart.cpp.o.requires
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/GfxPart.cpp.o.provides: Rendering/GfxBase/CMakeFiles/GfxBase.dir/GfxPart.cpp.o.requires
|
||||
$(MAKE) -f Rendering/GfxBase/CMakeFiles/GfxBase.dir/build.make Rendering/GfxBase/CMakeFiles/GfxBase.dir/GfxPart.cpp.o.provides.build
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/GfxPart.cpp.o.provides
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/GfxPart.cpp.o.provides.build: Rendering/GfxBase/CMakeFiles/GfxBase.dir/GfxPart.cpp.o
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderStats.cpp.o: Rendering/GfxBase/CMakeFiles/GfxBase.dir/flags.make
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderStats.cpp.o: Rendering/GfxBase/RenderStats.cpp
|
||||
$(CMAKE_COMMAND) -E cmake_progress_report /mnt/f/Trunk2012/Client/CMakeFiles $(CMAKE_PROGRESS_6)
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderStats.cpp.o"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/GfxBase.dir/RenderStats.cpp.o -c /mnt/f/Trunk2012/Client/Rendering/GfxBase/RenderStats.cpp
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderStats.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GfxBase.dir/RenderStats.cpp.i"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/f/Trunk2012/Client/Rendering/GfxBase/RenderStats.cpp > CMakeFiles/GfxBase.dir/RenderStats.cpp.i
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderStats.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GfxBase.dir/RenderStats.cpp.s"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/f/Trunk2012/Client/Rendering/GfxBase/RenderStats.cpp -o CMakeFiles/GfxBase.dir/RenderStats.cpp.s
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderStats.cpp.o.requires:
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderStats.cpp.o.requires
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderStats.cpp.o.provides: Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderStats.cpp.o.requires
|
||||
$(MAKE) -f Rendering/GfxBase/CMakeFiles/GfxBase.dir/build.make Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderStats.cpp.o.provides.build
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderStats.cpp.o.provides
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderStats.cpp.o.provides.build: Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderStats.cpp.o
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/FileMeshData.cpp.o: Rendering/GfxBase/CMakeFiles/GfxBase.dir/flags.make
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/FileMeshData.cpp.o: Rendering/GfxBase/FileMeshData.cpp
|
||||
$(CMAKE_COMMAND) -E cmake_progress_report /mnt/f/Trunk2012/Client/CMakeFiles $(CMAKE_PROGRESS_7)
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object Rendering/GfxBase/CMakeFiles/GfxBase.dir/FileMeshData.cpp.o"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/GfxBase.dir/FileMeshData.cpp.o -c /mnt/f/Trunk2012/Client/Rendering/GfxBase/FileMeshData.cpp
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/FileMeshData.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GfxBase.dir/FileMeshData.cpp.i"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/f/Trunk2012/Client/Rendering/GfxBase/FileMeshData.cpp > CMakeFiles/GfxBase.dir/FileMeshData.cpp.i
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/FileMeshData.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GfxBase.dir/FileMeshData.cpp.s"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/f/Trunk2012/Client/Rendering/GfxBase/FileMeshData.cpp -o CMakeFiles/GfxBase.dir/FileMeshData.cpp.s
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/FileMeshData.cpp.o.requires:
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/FileMeshData.cpp.o.requires
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/FileMeshData.cpp.o.provides: Rendering/GfxBase/CMakeFiles/GfxBase.dir/FileMeshData.cpp.o.requires
|
||||
$(MAKE) -f Rendering/GfxBase/CMakeFiles/GfxBase.dir/build.make Rendering/GfxBase/CMakeFiles/GfxBase.dir/FileMeshData.cpp.o.provides.build
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/FileMeshData.cpp.o.provides
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/FileMeshData.cpp.o.provides.build: Rendering/GfxBase/CMakeFiles/GfxBase.dir/FileMeshData.cpp.o
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/PartIdentifier.cpp.o: Rendering/GfxBase/CMakeFiles/GfxBase.dir/flags.make
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/PartIdentifier.cpp.o: Rendering/GfxBase/PartIdentifier.cpp
|
||||
$(CMAKE_COMMAND) -E cmake_progress_report /mnt/f/Trunk2012/Client/CMakeFiles $(CMAKE_PROGRESS_8)
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object Rendering/GfxBase/CMakeFiles/GfxBase.dir/PartIdentifier.cpp.o"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/GfxBase.dir/PartIdentifier.cpp.o -c /mnt/f/Trunk2012/Client/Rendering/GfxBase/PartIdentifier.cpp
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/PartIdentifier.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GfxBase.dir/PartIdentifier.cpp.i"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/f/Trunk2012/Client/Rendering/GfxBase/PartIdentifier.cpp > CMakeFiles/GfxBase.dir/PartIdentifier.cpp.i
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/PartIdentifier.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GfxBase.dir/PartIdentifier.cpp.s"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/f/Trunk2012/Client/Rendering/GfxBase/PartIdentifier.cpp -o CMakeFiles/GfxBase.dir/PartIdentifier.cpp.s
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/PartIdentifier.cpp.o.requires:
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/PartIdentifier.cpp.o.requires
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/PartIdentifier.cpp.o.provides: Rendering/GfxBase/CMakeFiles/GfxBase.dir/PartIdentifier.cpp.o.requires
|
||||
$(MAKE) -f Rendering/GfxBase/CMakeFiles/GfxBase.dir/build.make Rendering/GfxBase/CMakeFiles/GfxBase.dir/PartIdentifier.cpp.o.provides.build
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/PartIdentifier.cpp.o.provides
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/PartIdentifier.cpp.o.provides.build: Rendering/GfxBase/CMakeFiles/GfxBase.dir/PartIdentifier.cpp.o
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornSurface.cpp.o: Rendering/GfxBase/CMakeFiles/GfxBase.dir/flags.make
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornSurface.cpp.o: Rendering/GfxBase/AdornSurface.cpp
|
||||
$(CMAKE_COMMAND) -E cmake_progress_report /mnt/f/Trunk2012/Client/CMakeFiles $(CMAKE_PROGRESS_9)
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornSurface.cpp.o"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/GfxBase.dir/AdornSurface.cpp.o -c /mnt/f/Trunk2012/Client/Rendering/GfxBase/AdornSurface.cpp
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornSurface.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GfxBase.dir/AdornSurface.cpp.i"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/f/Trunk2012/Client/Rendering/GfxBase/AdornSurface.cpp > CMakeFiles/GfxBase.dir/AdornSurface.cpp.i
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornSurface.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GfxBase.dir/AdornSurface.cpp.s"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/f/Trunk2012/Client/Rendering/GfxBase/AdornSurface.cpp -o CMakeFiles/GfxBase.dir/AdornSurface.cpp.s
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornSurface.cpp.o.requires:
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornSurface.cpp.o.requires
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornSurface.cpp.o.provides: Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornSurface.cpp.o.requires
|
||||
$(MAKE) -f Rendering/GfxBase/CMakeFiles/GfxBase.dir/build.make Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornSurface.cpp.o.provides.build
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornSurface.cpp.o.provides
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornSurface.cpp.o.provides.build: Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornSurface.cpp.o
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/FrameRateManager.cpp.o: Rendering/GfxBase/CMakeFiles/GfxBase.dir/flags.make
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/FrameRateManager.cpp.o: Rendering/GfxBase/FrameRateManager.cpp
|
||||
$(CMAKE_COMMAND) -E cmake_progress_report /mnt/f/Trunk2012/Client/CMakeFiles $(CMAKE_PROGRESS_10)
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object Rendering/GfxBase/CMakeFiles/GfxBase.dir/FrameRateManager.cpp.o"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/GfxBase.dir/FrameRateManager.cpp.o -c /mnt/f/Trunk2012/Client/Rendering/GfxBase/FrameRateManager.cpp
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/FrameRateManager.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GfxBase.dir/FrameRateManager.cpp.i"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/f/Trunk2012/Client/Rendering/GfxBase/FrameRateManager.cpp > CMakeFiles/GfxBase.dir/FrameRateManager.cpp.i
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/FrameRateManager.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GfxBase.dir/FrameRateManager.cpp.s"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/f/Trunk2012/Client/Rendering/GfxBase/FrameRateManager.cpp -o CMakeFiles/GfxBase.dir/FrameRateManager.cpp.s
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/FrameRateManager.cpp.o.requires:
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/FrameRateManager.cpp.o.requires
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/FrameRateManager.cpp.o.provides: Rendering/GfxBase/CMakeFiles/GfxBase.dir/FrameRateManager.cpp.o.requires
|
||||
$(MAKE) -f Rendering/GfxBase/CMakeFiles/GfxBase.dir/build.make Rendering/GfxBase/CMakeFiles/GfxBase.dir/FrameRateManager.cpp.o.provides.build
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/FrameRateManager.cpp.o.provides
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/FrameRateManager.cpp.o.provides.build: Rendering/GfxBase/CMakeFiles/GfxBase.dir/FrameRateManager.cpp.o
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewBase.cpp.o: Rendering/GfxBase/CMakeFiles/GfxBase.dir/flags.make
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewBase.cpp.o: Rendering/GfxBase/ViewBase.cpp
|
||||
$(CMAKE_COMMAND) -E cmake_progress_report /mnt/f/Trunk2012/Client/CMakeFiles $(CMAKE_PROGRESS_11)
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewBase.cpp.o"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/GfxBase.dir/ViewBase.cpp.o -c /mnt/f/Trunk2012/Client/Rendering/GfxBase/ViewBase.cpp
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewBase.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GfxBase.dir/ViewBase.cpp.i"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/f/Trunk2012/Client/Rendering/GfxBase/ViewBase.cpp > CMakeFiles/GfxBase.dir/ViewBase.cpp.i
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewBase.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GfxBase.dir/ViewBase.cpp.s"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/f/Trunk2012/Client/Rendering/GfxBase/ViewBase.cpp -o CMakeFiles/GfxBase.dir/ViewBase.cpp.s
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewBase.cpp.o.requires:
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewBase.cpp.o.requires
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewBase.cpp.o.provides: Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewBase.cpp.o.requires
|
||||
$(MAKE) -f Rendering/GfxBase/CMakeFiles/GfxBase.dir/build.make Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewBase.cpp.o.provides.build
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewBase.cpp.o.provides
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewBase.cpp.o.provides.build: Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewBase.cpp.o
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.o: Rendering/GfxBase/CMakeFiles/GfxBase.dir/flags.make
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.o: Rendering/GfxBase/AdornBillboarder.cpp
|
||||
$(CMAKE_COMMAND) -E cmake_progress_report /mnt/f/Trunk2012/Client/CMakeFiles $(CMAKE_PROGRESS_12)
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.o"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.o -c /mnt/f/Trunk2012/Client/Rendering/GfxBase/AdornBillboarder.cpp
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.i"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/f/Trunk2012/Client/Rendering/GfxBase/AdornBillboarder.cpp > CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.i
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.s"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/f/Trunk2012/Client/Rendering/GfxBase/AdornBillboarder.cpp -o CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.s
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.o.requires:
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.o.requires
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.o.provides: Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.o.requires
|
||||
$(MAKE) -f Rendering/GfxBase/CMakeFiles/GfxBase.dir/build.make Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.o.provides.build
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.o.provides
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.o.provides.build: Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.o
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.o: Rendering/GfxBase/CMakeFiles/GfxBase.dir/flags.make
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.o: Rendering/GfxBase/AdornBillboarder2D.cpp
|
||||
$(CMAKE_COMMAND) -E cmake_progress_report /mnt/f/Trunk2012/Client/CMakeFiles $(CMAKE_PROGRESS_13)
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.o"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.o -c /mnt/f/Trunk2012/Client/Rendering/GfxBase/AdornBillboarder2D.cpp
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.i"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/f/Trunk2012/Client/Rendering/GfxBase/AdornBillboarder2D.cpp > CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.i
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.s"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/f/Trunk2012/Client/Rendering/GfxBase/AdornBillboarder2D.cpp -o CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.s
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.o.requires:
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.o.requires
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.o.provides: Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.o.requires
|
||||
$(MAKE) -f Rendering/GfxBase/CMakeFiles/GfxBase.dir/build.make Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.o.provides.build
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.o.provides
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.o.provides.build: Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.o
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.o: Rendering/GfxBase/CMakeFiles/GfxBase.dir/flags.make
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.o: Rendering/GfxBase/ViewportBillboarder.cpp
|
||||
$(CMAKE_COMMAND) -E cmake_progress_report /mnt/f/Trunk2012/Client/CMakeFiles $(CMAKE_PROGRESS_14)
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Building CXX object Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.o"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -o CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.o -c /mnt/f/Trunk2012/Client/Rendering/GfxBase/ViewportBillboarder.cpp
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.i: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing CXX source to CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.i"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -E /mnt/f/Trunk2012/Client/Rendering/GfxBase/ViewportBillboarder.cpp > CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.i
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.s: cmake_force
|
||||
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling CXX source to assembly CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.s"
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++ $(CXX_DEFINES) $(CXX_FLAGS) -S /mnt/f/Trunk2012/Client/Rendering/GfxBase/ViewportBillboarder.cpp -o CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.s
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.o.requires:
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.o.requires
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.o.provides: Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.o.requires
|
||||
$(MAKE) -f Rendering/GfxBase/CMakeFiles/GfxBase.dir/build.make Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.o.provides.build
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.o.provides
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.o.provides.build: Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.o
|
||||
|
||||
GfxBase: Rendering/GfxBase/CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.o
|
||||
GfxBase: Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderSettings.cpp.o
|
||||
GfxBase: Rendering/GfxBase/CMakeFiles/GfxBase.dir/Adorn.cpp.o
|
||||
GfxBase: Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderCaps.cpp.o
|
||||
GfxBase: Rendering/GfxBase/CMakeFiles/GfxBase.dir/GfxPart.cpp.o
|
||||
GfxBase: Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderStats.cpp.o
|
||||
GfxBase: Rendering/GfxBase/CMakeFiles/GfxBase.dir/FileMeshData.cpp.o
|
||||
GfxBase: Rendering/GfxBase/CMakeFiles/GfxBase.dir/PartIdentifier.cpp.o
|
||||
GfxBase: Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornSurface.cpp.o
|
||||
GfxBase: Rendering/GfxBase/CMakeFiles/GfxBase.dir/FrameRateManager.cpp.o
|
||||
GfxBase: Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewBase.cpp.o
|
||||
GfxBase: Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.o
|
||||
GfxBase: Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.o
|
||||
GfxBase: Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.o
|
||||
GfxBase: Rendering/GfxBase/CMakeFiles/GfxBase.dir/build.make
|
||||
.PHONY : GfxBase
|
||||
|
||||
# Rule to build all files generated by this target.
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/build: GfxBase
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/build
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/requires: Rendering/GfxBase/CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.o.requires
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/requires: Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderSettings.cpp.o.requires
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/requires: Rendering/GfxBase/CMakeFiles/GfxBase.dir/Adorn.cpp.o.requires
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/requires: Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderCaps.cpp.o.requires
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/requires: Rendering/GfxBase/CMakeFiles/GfxBase.dir/GfxPart.cpp.o.requires
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/requires: Rendering/GfxBase/CMakeFiles/GfxBase.dir/RenderStats.cpp.o.requires
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/requires: Rendering/GfxBase/CMakeFiles/GfxBase.dir/FileMeshData.cpp.o.requires
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/requires: Rendering/GfxBase/CMakeFiles/GfxBase.dir/PartIdentifier.cpp.o.requires
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/requires: Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornSurface.cpp.o.requires
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/requires: Rendering/GfxBase/CMakeFiles/GfxBase.dir/FrameRateManager.cpp.o.requires
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/requires: Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewBase.cpp.o.requires
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/requires: Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.o.requires
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/requires: Rendering/GfxBase/CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.o.requires
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/requires: Rendering/GfxBase/CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.o.requires
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/requires
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/clean:
|
||||
cd /mnt/f/Trunk2012/Client/Rendering/GfxBase && $(CMAKE_COMMAND) -P CMakeFiles/GfxBase.dir/cmake_clean.cmake
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/clean
|
||||
|
||||
Rendering/GfxBase/CMakeFiles/GfxBase.dir/depend:
|
||||
cd /mnt/f/Trunk2012/Client && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /mnt/f/Trunk2012/Client /mnt/f/Trunk2012/Client/Rendering/GfxBase /mnt/f/Trunk2012/Client /mnt/f/Trunk2012/Client/Rendering/GfxBase /mnt/f/Trunk2012/Client/Rendering/GfxBase/CMakeFiles/GfxBase.dir/DependInfo.cmake --color=$(COLOR)
|
||||
.PHONY : Rendering/GfxBase/CMakeFiles/GfxBase.dir/depend
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
FILE(REMOVE_RECURSE
|
||||
"CMakeFiles/GfxBase.dir/IAdornableCollector.cpp.o"
|
||||
"CMakeFiles/GfxBase.dir/RenderSettings.cpp.o"
|
||||
"CMakeFiles/GfxBase.dir/Adorn.cpp.o"
|
||||
"CMakeFiles/GfxBase.dir/RenderCaps.cpp.o"
|
||||
"CMakeFiles/GfxBase.dir/GfxPart.cpp.o"
|
||||
"CMakeFiles/GfxBase.dir/RenderStats.cpp.o"
|
||||
"CMakeFiles/GfxBase.dir/FileMeshData.cpp.o"
|
||||
"CMakeFiles/GfxBase.dir/PartIdentifier.cpp.o"
|
||||
"CMakeFiles/GfxBase.dir/AdornSurface.cpp.o"
|
||||
"CMakeFiles/GfxBase.dir/FrameRateManager.cpp.o"
|
||||
"CMakeFiles/GfxBase.dir/ViewBase.cpp.o"
|
||||
"CMakeFiles/GfxBase.dir/AdornBillboarder.cpp.o"
|
||||
"CMakeFiles/GfxBase.dir/AdornBillboarder2D.cpp.o"
|
||||
"CMakeFiles/GfxBase.dir/ViewportBillboarder.cpp.o"
|
||||
)
|
||||
|
||||
# Per-language clean rules from dependency scanning.
|
||||
FOREACH(lang CXX)
|
||||
INCLUDE(CMakeFiles/GfxBase.dir/cmake_clean_${lang}.cmake OPTIONAL)
|
||||
ENDFOREACH(lang)
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,2 @@
|
||||
# CMAKE generated file: DO NOT EDIT!
|
||||
# Timestamp file for compiler generated dependencies management for GfxBase.
|
||||
@@ -0,0 +1,2 @@
|
||||
# Empty dependencies file for GfxBase.
|
||||
# This may be replaced when dependencies are built.
|
||||
@@ -0,0 +1,8 @@
|
||||
# CMAKE generated file: DO NOT EDIT!
|
||||
# Generated by "Unix Makefiles" Generator, CMake Version 2.8
|
||||
|
||||
# compile CXX with /home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-g++
|
||||
CXX_FLAGS = -fexceptions -frtti -Wno-psabi --sysroot=/home/watrabi/Android/ndk/android-ndk-r10e/platforms/android-21/arch-arm -funwind-tables -finline-limit=64 -fsigned-char -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=neon -fdata-sections -ffunction-sections -Wa,--noexecstack -fexceptions -fpic -Wno-psabi --sysroot=/home/watrabi/Android/ndk/android-ndk-r10e/platforms/android-8/arch-arm -funwind-tables -finline-limit=64 -fsigned-char -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fdata-sections -ffunction-sections -Wa,--noexecstack -fvisibility=hidden -mfloat-abi=softfp -MMD -MP -g -g -Wno-reorder -Wno-unused-local-typedefs -std=gnu++11 -mthumb -fomit-frame-pointer -fno-strict-aliasing -O3 -DNDEBUG -fPIC -isystem /home/watrabi/Android/ndk/android-ndk-r10e/platforms/android-21/arch-arm/usr/include -isystem /home/watrabi/Android/ndk/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include -isystem /home/watrabi/Android/ndk/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include -isystem /home/watrabi/Android/ndk/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/backward -I/mnt/f/Trunk2012/Contribs/boost_1_70_0 -I/mnt/f/Trunk2012/Contribs/android/armeabi-v7a/curl/curl-7.43.0/include -I/mnt/f/Trunk2012/Contribs/boost_1_70_0/include -I/mnt/f/Trunk2012/Client/fmod/include -I/mnt/f/Trunk2012/Contribs/android/arm/openssl/openssl-1.0.2c/include -I/mnt/f/Trunk2012/Contribs/SDL2/include -I/mnt/f/Trunk2012/Client/Base/include -I/mnt/f/Trunk2012/Client/Log/include -I/mnt/f/Trunk2012/Client/Base/include/rbx/Android -I/mnt/f/Trunk2012/Client/App/include -I/mnt/f/Trunk2012/Client/App.BulletPhysics -I/mnt/f/Trunk2012/Client/Rendering/GfxBase/include -I/mnt/f/Trunk2012/Client/Rendering/GfxBase/../g3d/include -I/mnt/f/Trunk2012/Client/Rendering/GfxBase/../RbxG3d/include -I/mnt/f/Trunk2012/Client/Rendering/GfxBase/../AppDraw/include
|
||||
|
||||
CXX_DEFINES = -DANDROID -DROBLOX_BOOST_CONFIGS
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
CMAKE_PROGRESS_1 =
|
||||
CMAKE_PROGRESS_2 =
|
||||
CMAKE_PROGRESS_3 =
|
||||
CMAKE_PROGRESS_4 = 80
|
||||
CMAKE_PROGRESS_5 =
|
||||
CMAKE_PROGRESS_6 =
|
||||
CMAKE_PROGRESS_7 =
|
||||
CMAKE_PROGRESS_8 =
|
||||
CMAKE_PROGRESS_9 =
|
||||
CMAKE_PROGRESS_10 =
|
||||
CMAKE_PROGRESS_11 =
|
||||
CMAKE_PROGRESS_12 =
|
||||
CMAKE_PROGRESS_13 =
|
||||
CMAKE_PROGRESS_14 = 81
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
2
|
||||
@@ -0,0 +1,47 @@
|
||||
include(App)
|
||||
|
||||
include_directories(include)
|
||||
include_directories(../g3d/include)
|
||||
include_directories(../RbxG3d/include)
|
||||
include_directories(../AppDraw/include)
|
||||
|
||||
list(APPEND HEADERS include/GfxBase/FrameRateManager.h)
|
||||
list(APPEND HEADERS include/GfxBase/MeshGen.h)
|
||||
list(APPEND HEADERS include/GfxBase/Adorn.h)
|
||||
list(APPEND HEADERS include/GfxBase/Type.h)
|
||||
list(APPEND HEADERS include/GfxBase/AdornSurface.h)
|
||||
list(APPEND HEADERS include/GfxBase/RenderStats.h)
|
||||
list(APPEND HEADERS include/GfxBase/MeshFileStructs.h)
|
||||
list(APPEND HEADERS include/GfxBase/FileMeshData.h)
|
||||
list(APPEND HEADERS include/GfxBase/RenderCaps.h)
|
||||
list(APPEND HEADERS include/GfxBase/Part.h)
|
||||
list(APPEND HEADERS include/GfxBase/IAdornable.h)
|
||||
list(APPEND HEADERS include/GfxBase/GfxPart.h)
|
||||
list(APPEND HEADERS include/GfxBase/ViewBase.h)
|
||||
list(APPEND HEADERS include/GfxBase/RenderSettings.h)
|
||||
list(APPEND HEADERS include/GfxBase/IAdornableCollector.h)
|
||||
list(APPEND HEADERS include/GfxBase/Typesetter.h)
|
||||
list(APPEND HEADERS include/GfxBase/TextureProxyBase.h)
|
||||
list(APPEND HEADERS include/GfxBase/Image.h)
|
||||
list(APPEND HEADERS include/GfxBase/AdornBillboarder.h)
|
||||
list(APPEND HEADERS include/GfxBase/AdornBillboarder2D.h)
|
||||
list(APPEND HEADERS include/GfxBase/ViewportBillboarder.h)
|
||||
list(APPEND HEADERS include/GfxBase/PartIdentifier.h)
|
||||
list(APPEND HEADERS include/GfxBase/AsyncResult.h)
|
||||
|
||||
list(APPEND SOURCES IAdornableCollector.cpp)
|
||||
list(APPEND SOURCES RenderSettings.cpp)
|
||||
list(APPEND SOURCES Adorn.cpp)
|
||||
list(APPEND SOURCES RenderCaps.cpp)
|
||||
list(APPEND SOURCES GfxPart.cpp)
|
||||
list(APPEND SOURCES RenderStats.cpp)
|
||||
list(APPEND SOURCES FileMeshData.cpp)
|
||||
list(APPEND SOURCES PartIdentifier.cpp)
|
||||
list(APPEND SOURCES AdornSurface.cpp)
|
||||
list(APPEND SOURCES FrameRateManager.cpp)
|
||||
list(APPEND SOURCES ViewBase.cpp)
|
||||
list(APPEND SOURCES AdornBillboarder.cpp)
|
||||
list(APPEND SOURCES AdornBillboarder2D.cpp)
|
||||
list(APPEND SOURCES ViewportBillboarder.cpp)
|
||||
|
||||
add_library(GfxBase OBJECT ${SOURCES} ${HEADERS})
|
||||
@@ -0,0 +1,333 @@
|
||||
#include "GfxBase/FileMeshData.h"
|
||||
|
||||
#include "rbx/Debug.h"
|
||||
|
||||
#include "rbx/DenseHash.h"
|
||||
|
||||
namespace RBX
|
||||
{
|
||||
struct MeshVertexHasher
|
||||
{
|
||||
bool operator()(const FileMeshVertexNormalTexture3d& l, const FileMeshVertexNormalTexture3d& r) const
|
||||
{
|
||||
return memcmp(&l, &r, sizeof(l)) == 0;
|
||||
}
|
||||
|
||||
size_t operator()(const FileMeshVertexNormalTexture3d& v) const
|
||||
{
|
||||
size_t result = 0;
|
||||
boost::hash_combine(result, v.vx);
|
||||
boost::hash_combine(result, v.vy);
|
||||
boost::hash_combine(result, v.vz);
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
void optimizeMesh(FileMeshData& mesh)
|
||||
{
|
||||
std::vector<unsigned int> remap(mesh.vnts.size());
|
||||
|
||||
FileMeshVertexNormalTexture3d dummy = {};
|
||||
dummy.vx = FLT_MAX;
|
||||
|
||||
typedef DenseHashMap<FileMeshVertexNormalTexture3d, unsigned int, MeshVertexHasher, MeshVertexHasher> VertexMap;
|
||||
VertexMap vertexMap(dummy);
|
||||
|
||||
for (size_t i = 0; i < mesh.vnts.size(); ++i)
|
||||
{
|
||||
unsigned int& vi = vertexMap[mesh.vnts[i]];
|
||||
|
||||
if (vi == 0)
|
||||
vi = vertexMap.size();
|
||||
|
||||
remap[i] = vi - 1;
|
||||
}
|
||||
|
||||
std::vector<FileMeshVertexNormalTexture3d> newvnts(vertexMap.size());
|
||||
|
||||
for (size_t i = 0; i < mesh.vnts.size(); ++i)
|
||||
newvnts[remap[i]] = mesh.vnts[i];
|
||||
|
||||
mesh.vnts.swap(newvnts);
|
||||
|
||||
for (size_t i = 0; i < mesh.faces.size(); ++i)
|
||||
{
|
||||
FileMeshFace& face = mesh.faces[i];
|
||||
|
||||
face.a = remap[face.a];
|
||||
face.b = remap[face.b];
|
||||
face.c = remap[face.c];
|
||||
}
|
||||
}
|
||||
|
||||
inline unsigned int atouFast(const char* value, const char** end)
|
||||
{
|
||||
const char* s = value;
|
||||
|
||||
// skip whitespace
|
||||
while (*s == ' ' || *s == '\t' || *s == '\r' || *s == '\n')
|
||||
s++;
|
||||
|
||||
// read integer part
|
||||
unsigned int result = 0;
|
||||
|
||||
while (static_cast<unsigned int>(*s - '0') < 10)
|
||||
{
|
||||
result = result * 10 + (*s - '0');
|
||||
s++;
|
||||
}
|
||||
|
||||
// done!
|
||||
*end = s;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
inline double atofFast(const char* value, const char** end)
|
||||
{
|
||||
static const double digits[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
|
||||
static const double powers[] = { 1e0, 1e+1, 1e+2, 1e+3, 1e+4, 1e+5, 1e+6, 1e+7, 1e+8, 1e+9, 1e+10, 1e+11, 1e+12, 1e+13, 1e+14, 1e+15, 1e+16, 1e+17, 1e+18, 1e+19, 1e+20, 1e+21, 1e+22 };
|
||||
|
||||
const char* s = value;
|
||||
|
||||
// skip whitespace
|
||||
while (*s == ' ' || *s == '\t' || *s == '\r' || *s == '\n')
|
||||
s++;
|
||||
|
||||
// read sign
|
||||
double sign = (*s == '-') ? -1 : 1;
|
||||
s += (*s == '-' || *s == '+');
|
||||
|
||||
// read integer part
|
||||
double result = 0;
|
||||
int power = 0;
|
||||
|
||||
while (static_cast<unsigned int>(*s - '0') < 10)
|
||||
{
|
||||
result = result * 10 + digits[*s - '0'];
|
||||
s++;
|
||||
}
|
||||
|
||||
// read fractional part
|
||||
if (*s == '.')
|
||||
{
|
||||
s++;
|
||||
|
||||
while (static_cast<unsigned int>(*s - '0') < 10)
|
||||
{
|
||||
result = result * 10 + digits[*s - '0'];
|
||||
s++;
|
||||
power--;
|
||||
}
|
||||
}
|
||||
|
||||
// read exponent part
|
||||
if ((*s | ' ') == 'e')
|
||||
{
|
||||
s++;
|
||||
|
||||
// read exponent sign
|
||||
int expsign = (*s == '-') ? -1 : 1;
|
||||
s += (*s == '-' || *s == '+');
|
||||
|
||||
// read exponent
|
||||
int exppower = 0;
|
||||
|
||||
while (static_cast<unsigned int>(*s - '0') < 10)
|
||||
{
|
||||
exppower = exppower * 10 + (*s - '0');
|
||||
s++;
|
||||
}
|
||||
|
||||
// done!
|
||||
power += expsign * exppower;
|
||||
}
|
||||
|
||||
// done!
|
||||
*end = s;
|
||||
|
||||
if (static_cast<unsigned int>(-power) < sizeof(powers) / sizeof(powers[0]))
|
||||
return sign * result / powers[-power];
|
||||
else if (static_cast<unsigned int>(power) < sizeof(powers) / sizeof(powers[0]))
|
||||
return sign * result * powers[power];
|
||||
else
|
||||
return sign * result * powf(10.0, power);
|
||||
}
|
||||
|
||||
inline const char* readToken(const char* data, char terminator)
|
||||
{
|
||||
while (*data == ' ' || *data == '\t' || *data == '\r' || *data == '\n')
|
||||
++data;
|
||||
|
||||
if (*data != terminator)
|
||||
throw RBX::runtime_error("Error reading mesh data: expected %c", terminator);
|
||||
|
||||
return data + 1;
|
||||
}
|
||||
|
||||
inline const char* readFloatToken(const char* data, char terminator, float* output)
|
||||
{
|
||||
const char* end;
|
||||
double value = atofFast(data, &end);
|
||||
|
||||
if (*end != terminator)
|
||||
throw RBX::runtime_error("Error reading mesh data: expected %c", terminator);
|
||||
|
||||
*output = value;
|
||||
|
||||
return end + 1;
|
||||
}
|
||||
|
||||
shared_ptr<FileMeshData> readMeshFromV1(const std::string& data, size_t offset_, float scaler)
|
||||
{
|
||||
shared_ptr<FileMeshData> mesh(new FileMeshData());
|
||||
|
||||
const char* offset = data.c_str() + offset_;
|
||||
unsigned int num_faces = atouFast(offset, &offset);
|
||||
|
||||
mesh->vnts.reserve(num_faces * 3);
|
||||
mesh->faces.reserve(num_faces);
|
||||
|
||||
for (unsigned int i = 0; i < num_faces; i++)
|
||||
{
|
||||
for (int v = 0; v < 3; v++)
|
||||
{
|
||||
float vx, vy, vz, nx, ny, nz, tu, tv, tw;
|
||||
|
||||
offset = readToken(offset, '[');
|
||||
offset = readFloatToken(offset, ',', &vx);
|
||||
offset = readFloatToken(offset, ',', &vy);
|
||||
offset = readFloatToken(offset, ']', &vz);
|
||||
offset = readToken(offset, '[');
|
||||
offset = readFloatToken(offset, ',', &nx);
|
||||
offset = readFloatToken(offset, ',', &ny);
|
||||
offset = readFloatToken(offset, ']', &nz);
|
||||
offset = readToken(offset, '[');
|
||||
offset = readFloatToken(offset, ',', &tu);
|
||||
offset = readFloatToken(offset, ',', &tv);
|
||||
offset = readFloatToken(offset, ']', &tw);
|
||||
|
||||
G3D::Vector3 normal = G3D::Vector3(nx, ny, nz).unit();
|
||||
|
||||
if (!normal.isFinite())
|
||||
normal = G3D::Vector3::zero();
|
||||
|
||||
FileMeshVertexNormalTexture3d vtx =
|
||||
{
|
||||
vx * scaler, vy * scaler, vz * scaler,
|
||||
normal.x, normal.y, normal.z,
|
||||
tu, 1.f - tv, tw
|
||||
};
|
||||
|
||||
mesh->vnts.push_back(vtx);
|
||||
}
|
||||
|
||||
FileMeshFace face = {i * 3 + 0, i * 3 + 1, i * 3 + 2};
|
||||
|
||||
mesh->faces.push_back(face);
|
||||
}
|
||||
|
||||
optimizeMesh(*mesh);
|
||||
|
||||
return mesh;
|
||||
}
|
||||
|
||||
static void readData(const std::string& data, size_t& offset, void* buffer, size_t size)
|
||||
{
|
||||
if (offset + size > data.size())
|
||||
throw RBX::runtime_error("Error reading mesh data: offset is out of bounds while reading %d bytes", (int)size);
|
||||
|
||||
memcpy(buffer, data.data() + offset, size);
|
||||
offset += size;
|
||||
}
|
||||
|
||||
static shared_ptr<FileMeshData> readMeshFromV2(const std::string& data, size_t offset)
|
||||
{
|
||||
shared_ptr<FileMeshData> mesh(new FileMeshData());
|
||||
|
||||
FileMeshHeader header;
|
||||
readData(data, offset, &header, sizeof(header));
|
||||
|
||||
if (header.cbSize != sizeof(FileMeshHeader) || header.cbVerticesStride != sizeof(FileMeshVertexNormalTexture3d) || header.cbFaceStride != sizeof(FileMeshFace))
|
||||
throw std::runtime_error("Error reading mesh data: incompatible stride");
|
||||
|
||||
if (header.num_vertices == 0 || header.num_faces == 0)
|
||||
throw std::runtime_error("Error reading mesh data: empty mesh");
|
||||
|
||||
mesh->vnts.resize(header.num_vertices);
|
||||
readData(data, offset, &mesh->vnts[0], header.num_vertices * header.cbVerticesStride);
|
||||
|
||||
mesh->faces.resize(header.num_faces);
|
||||
readData(data, offset, &mesh->faces[0], header.num_faces * header.cbFaceStride);
|
||||
|
||||
if (offset != data.size())
|
||||
throw std::runtime_error("Error reading mesh data: unexpected data at end of file");
|
||||
|
||||
// validate indices to avoid buffer overruns later
|
||||
for (auto& face: mesh->faces)
|
||||
if (face.a >= header.num_vertices || face.b >= header.num_vertices || face.c >= header.num_vertices)
|
||||
throw std::runtime_error("Error reading mesh data: index value out of range");
|
||||
|
||||
return mesh;
|
||||
}
|
||||
|
||||
FileMeshData* computeAABB(FileMeshData* mesh)
|
||||
{
|
||||
if (mesh->vnts.empty())
|
||||
{
|
||||
mesh->aabb = AABox(Vector3::zero());
|
||||
}
|
||||
else
|
||||
{
|
||||
AABox result = AABox(Vector3(mesh->vnts[0].vx, mesh->vnts[0].vy, mesh->vnts[0].vz));
|
||||
|
||||
for (size_t i = 1; i < mesh->vnts.size(); ++i)
|
||||
result.merge(Vector3(mesh->vnts[i].vx, mesh->vnts[i].vy, mesh->vnts[i].vz));
|
||||
|
||||
mesh->aabb = result;
|
||||
}
|
||||
|
||||
return mesh;
|
||||
}
|
||||
}
|
||||
|
||||
namespace RBX
|
||||
{
|
||||
shared_ptr<FileMeshData> ReadFileMesh(const std::string& data)
|
||||
{
|
||||
std::string::size_type versionEnd = data.find('\n');
|
||||
if (versionEnd == std::string::npos)
|
||||
throw std::runtime_error("Error reading mesh data: unknown version");
|
||||
|
||||
shared_ptr<FileMeshData> result;
|
||||
|
||||
if (data.compare(0, 12, "version 1.00") == 0)
|
||||
result = readMeshFromV1(data, versionEnd + 1, 0.5f);
|
||||
else if (data.compare(0, 12, "version 1.01") == 0)
|
||||
result = readMeshFromV1(data, versionEnd + 1, 1.0f);
|
||||
else if (data.compare(0, 12, "version 2.00") == 0)
|
||||
result = readMeshFromV2(data, versionEnd + 1);
|
||||
else
|
||||
throw std::runtime_error("Error reading mesh data: unknown version");
|
||||
|
||||
computeAABB(result.get());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void WriteFileMesh(std::ostream& f, const FileMeshData& data)
|
||||
{
|
||||
f << "version 2.00" << std::endl;
|
||||
|
||||
FileMeshHeader header;
|
||||
header.num_faces = data.faces.size();
|
||||
header.num_vertices = data.vnts.size();
|
||||
header.cbFaceStride = (unsigned char)sizeof(data.faces[0]);
|
||||
header.cbVerticesStride = (unsigned char)sizeof(data.vnts[0]);
|
||||
header.cbSize = sizeof(header);
|
||||
f.write(reinterpret_cast<char*>(&header), sizeof(header));
|
||||
|
||||
f.write(reinterpret_cast<const char*>(&data.vnts[0]), sizeof(data.vnts[0]) * data.vnts.size());
|
||||
f.write(reinterpret_cast<const char*>(&data.faces[0]), sizeof(data.faces[0]) * data.faces.size());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,743 @@
|
||||
|
||||
#include "GfxBase/FrameRateManager.h"
|
||||
#include "GfxBase/RenderCaps.h"
|
||||
|
||||
#include "rbx/debug.h"
|
||||
#include "rbx/Log.h"
|
||||
#include "FastLog.h"
|
||||
#include "RbxFormat.h"
|
||||
#include "rbx/TaskScheduler.h"
|
||||
|
||||
#include "Util/RobloxGoogleAnalytics.h"
|
||||
#include "Util/Math.h"
|
||||
#include "rbx/SystemUtil.h"
|
||||
|
||||
#include <functional>
|
||||
|
||||
LOGGROUP(FRM)
|
||||
|
||||
FASTFLAGVARIABLE(DebugSSAOForce, false)
|
||||
FASTINTVARIABLE(FRMRecomputeDistanceFrameDelay, 100)
|
||||
FASTINTVARIABLE(RenderGBufferMinQLvl, 20) // 14 for later
|
||||
|
||||
namespace RBX {
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Tweakable section
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static const int AveragingFrames = 40;
|
||||
static const int VarianceFrames = 20;
|
||||
|
||||
static const int LockStepDelayDown = 100; // Number of frames to wait after going a quality level down
|
||||
static const int LockStepDelayUp = 150; // Number of frames to wait after going a quality level up
|
||||
static const double RenderFraction = 0.625;
|
||||
static const double VarianceLimit = 5;
|
||||
|
||||
static const double MultiCoreRenderBottleneckFraction = 0.8;
|
||||
static const double MultiCorePrepareFraction = 0.3;
|
||||
|
||||
static const int SwitchCounterMax = 10;
|
||||
|
||||
static const int SettleDelay = 20; // Number of milliseconds that we consider level stable
|
||||
|
||||
// Fast backoff filter:
|
||||
// If during LockStepDelayDown your average frame length (averaged by FastBackoffFPSAve) is more than MaxFrameLen...
|
||||
// ... consecutively for WatchingFrames frames
|
||||
// you're going to be backed off to previous level
|
||||
// ... with StepLevel increased by FastBackoffStepLevelIncrement
|
||||
|
||||
#if defined(RBX_PLATFORM_IOS) || defined(__ANDROID__)
|
||||
static const double FastBackoffMaxFrameLen = 40; // 25 FPS
|
||||
#else
|
||||
static const double FastBackoffMaxFrameLen = 60; // 16.6 FPS
|
||||
#endif
|
||||
|
||||
static const int FastBackoffFPSAve = 10; // frames
|
||||
static const int FastBackoffWatchingFrames = 5; // frames
|
||||
|
||||
static const int SqDistanceBump = 50;
|
||||
|
||||
struct THROTTLE_LOCKSTEP
|
||||
{
|
||||
double framerate;
|
||||
float distance;
|
||||
int blockCount;
|
||||
float shadingDistance;
|
||||
int textureAnisotropy;
|
||||
SSAOLevel ssao;
|
||||
float lightGridRadius;
|
||||
bool lightAllowNonFixed;
|
||||
unsigned lightChunkBudget;
|
||||
int throttlingFactor; // Matches physics throttling table in World.cpp: - 0/8, 1/8, 1/4, 1/3, 1/2, 2/3, 3/4, 7/8, 15/16
|
||||
double StepHill;
|
||||
double MaxStepHill;
|
||||
};
|
||||
|
||||
inline float sqrf(float value)
|
||||
{
|
||||
return value*value;
|
||||
}
|
||||
|
||||
static THROTTLE_LOCKSTEP kLockstepTable60FPS [] = {
|
||||
|
||||
// Quality levels:
|
||||
{ std::numeric_limits<double>::max(), 100000.0f, 1000000, 300, 1, ssaoNone, 512, true, 4, 0, 10, 10}, // Level 0: Studio (scpAlways is a hack to enable shadowing in Ogre)
|
||||
|
||||
{ std::numeric_limits<double>::max(), 200.0f, 500, 0, 1, ssaoNone, 256, false, 1, 8, 5, 10 }, // Level 1
|
||||
{ 80 /* 12 FPS */, 250.0f, 600, 0, 1, ssaoNone, 256, false, 1, 7, 5, 10 }, // Level 2
|
||||
{ 66 /* 15 FPS */, 300.0f, 600, 0, 1, ssaoNone, 256, false, 1, 6, 5, 10 }, // Level 3
|
||||
{ 50 /* 20 FPS */, 450.0f, 700, 0, 1, ssaoNone, 293, false, 1, 5, 5, 10 }, // Level 4
|
||||
{ 42 /* 25 FPS */, 470.0f, 800, 40, 1, ssaoNone, 330, false, 1, 4, 5, 10,}, // Level 5
|
||||
{ 40 /* 25 FPS */, 550.0f, 900, 40, 1, ssaoNone, 367, false, 2, 3, 5, 10,}, // Level 6
|
||||
{ 35 /* 28 FPS */, 570.0f, 1000, 40, 1, ssaoNone, 404, false, 2, 2, 5, 10,}, // Level 7
|
||||
{ 35 /* 28 FPS */, 600.0f, 1000, 50, 1, ssaoNone, 441, false, 2, 1, 5, 10,}, // Level 8
|
||||
{ 35 /* 28 FPS */, 600.0f, 1000, 60, 1, ssaoNone, 478, false, 2, 0, 5, 10,}, // Level 9
|
||||
{ 35 /* 28 FPS */, 700.0f, 1500, 70, 2, ssaoNone, 512, true, 2, 0, 5, 10,}, // Level 10
|
||||
{ 35 /* 28 FPS */, 1131.0f, 2000, 80, 2, ssaoNone, 512, true, 2, 0, 5, 10,}, // Level 11
|
||||
{ 33 /* 30 FPS */, 1600.0f, 3000, 90, 2, ssaoNone, 512, true, 2, 0, 4, 8,}, // Level 12
|
||||
{ 30 /* 33 FPS */, 2263.0f, 4000, 120, 2, ssaoNone, 512, true, 2, 0, 4, 8,}, // Level 13
|
||||
{ 27 /* 37 FPS */, 2263.0f, 5000, 150, 4, ssaoNone, 512, true, 2, 0, 4, 8,}, // Level 14
|
||||
{ 25 /* 40 FPS */, 3200.0f, 7000, 180, 4, ssaoNone, 512, true, 2, 0, 4, 8,}, // Level 15
|
||||
{ 23 /* 43 FPS */, 4525.0f, 10000, 210, 4, ssaoNone, 512, true, 4, 0, 4, 8,}, // Level 16
|
||||
{ 20 /* 50 FPS */, 6400.0f, 20000, 240, 4, ssaoNone, 512, true, 4, 0, 4, 8,}, // Level 17
|
||||
{ 19 /* 60 FPS */, 9051.0f, 30000, 270, 8, ssaoNone, 512, true, 4, 0, 3, 7,}, // Level 18
|
||||
{ 19 /* 60 FPS */, 100000.0f, 100000, 300, 8, ssaoNone, 512, true, 4, 0, 3, 7,}, // Level 19
|
||||
// Introducing SSAO - big step hill, bigger MaxStepHill, blank first
|
||||
{ 19 /* 60 FPS */, 100000.0f, 100000, 300, 8, ssaoFullBlank, 512, true, 4, 0, 6, 10,}, // Level 20
|
||||
// And then turn it on
|
||||
{ 19 /* 60 FPS */, 100000.0f, 100000, 300, 8, ssaoFull, 512, true, 4, 0, 2, 2,} // Level 21
|
||||
};
|
||||
|
||||
|
||||
static THROTTLE_LOCKSTEP kLockstepTable30FPS [] = {
|
||||
|
||||
// Quality levels:
|
||||
{ std::numeric_limits<double>::max(), 100000.0f, 1000000, 300, 1, ssaoNone, 512, true, 4, 0, 10, 10}, // Level 0: Studio (scpAlways is a hack to enable shadowing in Ogre)
|
||||
|
||||
{ std::numeric_limits<double>::max(), 200.0f, 500, 0, 1, ssaoNone, 256, false, 1, 8, 5, 10 }, // Level 1
|
||||
{ 50 /* 20 FPS */, 250.0f, 600, 0, 1, ssaoNone, 256, false, 1, 7, 5, 10 }, // Level 2
|
||||
{ 35 /* 28 FPS */, 300.0f, 600, 0, 1, ssaoNone, 256, false, 1, 6, 5, 10 }, // Level 3
|
||||
{ 35 /* 28 FPS */, 450.0f, 700, 0, 1, ssaoNone, 293, false, 1, 5, 5, 10 }, // Level 4
|
||||
{ 35 /* 28 FPS */, 470.0f, 800, 40, 1, ssaoNone, 330, false, 1, 4, 5, 10,}, // Level 5
|
||||
{ 35 /* 28 FPS */, 550.0f, 900, 40, 1, ssaoNone, 367, false, 2, 3, 5, 10,}, // Level 6
|
||||
{ 35 /* 28 FPS */, 570.0f, 1000, 40, 1, ssaoNone, 404, false, 2, 2, 5, 10,}, // Level 7
|
||||
{ 35 /* 28 FPS */, 600.0f, 1000, 50, 1, ssaoNone, 441, false, 2, 1, 5, 10,}, // Level 8
|
||||
{ 35 /* 28 FPS */, 600.0f, 1000, 60, 1, ssaoNone, 478, false, 2, 0, 5, 10,}, // Level 9
|
||||
{ 35 /* 28 FPS */, 700.0f, 1500, 70, 2, ssaoNone, 512, true, 2, 0, 5, 10,}, // Level 10
|
||||
{ 35 /* 28 FPS */, 1131.0f, 2000, 80, 2, ssaoNone, 512, true, 2, 0, 5, 10,}, // Level 11
|
||||
{ 35 /* 28 FPS */, 1600.0f, 3000, 90, 2, ssaoNone, 512, true, 2, 0, 5, 10,}, // Level 12
|
||||
{ 35 /* 28 FPS */, 2263.0f, 4000, 120, 2, ssaoNone, 512, true, 2, 0, 5, 10,}, // Level 13
|
||||
{ 35 /* 28 FPS */, 2263.0f, 5000, 150, 4, ssaoNone, 512, true, 2, 0, 5, 10,}, // Level 14
|
||||
{ 35 /* 28 FPS */, 3200.0f, 7000, 180, 4, ssaoNone, 512, true, 2, 0, 5, 10,}, // Level 15
|
||||
{ 35 /* 28 FPS */, 4525.0f, 10000, 210, 4, ssaoNone, 512, true, 4, 0, 5, 10,}, // Level 16
|
||||
{ 35 /* 28 FPS */, 6400.0f, 20000, 240, 4, ssaoNone, 512, true, 4, 0, 5, 10,}, // Level 17
|
||||
{ 35 /* 28 FPS */, 9051.0f, 30000, 270, 8, ssaoNone, 512, true, 4, 0, 5, 10,}, // Level 18
|
||||
{ 35 /* 28 FPS */, 100000.0f, 100000, 300, 8, ssaoNone, 512, true, 4, 0, 5, 10,}, // Level 19
|
||||
// Introducing SSAO - big step hill, bigger MaxStepHill, blank first
|
||||
{ 35 /* 28 FPS */, 100000.0f, 100000, 300, 8, ssaoFullBlank, 512, true, 4, 0, 14, 25,}, // Level 20
|
||||
// And then turn it on
|
||||
{ 35 /* 28 FPS */, 100000.0f, 100000, 300, 8, ssaoFull, 512, true, 4, 0, 2, 4,} // Level 21
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Less tweakable, but still
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
FrameRateManager::FrameRateManager(void) :
|
||||
mSettings(0),
|
||||
mRenderCaps(0),
|
||||
mBlockCullingEnabled(true),
|
||||
mStableFramesCounter(0),
|
||||
mThrottlingOn(false),
|
||||
mCurrentQualityLevel(0),
|
||||
frameTimeAverage(AveragingFrames),
|
||||
renderTimeAverage(AveragingFrames),
|
||||
prepareTimeAverage(AveragingFrames),
|
||||
frameTimeVarianceAverage(VarianceFrames),
|
||||
fastBackoffAverage(FastBackoffFPSAve),
|
||||
mQualityDelayDown(LockStepDelayDown),
|
||||
mQualityDelayUp(LockStepDelayDown),
|
||||
mWasQualityUp(false),
|
||||
mSwitchCounter(1),
|
||||
mIsStable(false),
|
||||
mBlockCounter(0),
|
||||
mLastBlockCounter(0),
|
||||
mAdjustmentOn(true),
|
||||
mBadBackoffFrameCounter(0),
|
||||
mRecomputeDistanceDelay(FInt::FRMRecomputeDistanceFrameDelay),
|
||||
mAggressivePerformance(false)
|
||||
{
|
||||
RBXASSERT(CRenderSettings::QualityLevelMax == ARRAYSIZE(kLockstepTable30FPS)); // If that fails, you probably added another quality level without syncing it with RenderSettings
|
||||
RBXASSERT(CRenderSettings::QualityLevelMax == ARRAYSIZE(kLockstepTable60FPS)); // If that fails, you probably added another quality level without syncing it with RenderSettings
|
||||
|
||||
#if defined(RBX_PLATFORM_IOS) || defined(__ANDROID__)
|
||||
LockstepTable = kLockstepTable30FPS;
|
||||
#else
|
||||
LockstepTable = kLockstepTable60FPS;
|
||||
#endif
|
||||
|
||||
RBXASSERT(LockStepDelayDown <= LockStepDelayUp);
|
||||
|
||||
// We need to have enough frames for averaging before we can step down again
|
||||
RBXASSERT(AveragingFrames + VarianceFrames <= LockStepDelayDown);
|
||||
|
||||
for (unsigned i = 0; i < CRenderSettings::QualityLevelMax; ++i)
|
||||
mQualityCount[i] = 0;
|
||||
|
||||
// Sensible defaults for culling
|
||||
mSqDistance = LockstepTable[0].distance*LockstepTable[0].distance;
|
||||
mSqRenderDistance = mSqDistance;
|
||||
}
|
||||
|
||||
void FrameRateManager::configureFrameRateManager(CRenderSettings::FrameRateManagerMode mode, bool hasCharacter)
|
||||
{
|
||||
if(hasCharacter){
|
||||
SetBlockCullingEnabled(mode == CRenderSettings::FrameRateManagerOff ? false : true);
|
||||
}
|
||||
else{
|
||||
SetBlockCullingEnabled(mode == CRenderSettings::FrameRateManagerOn ? true : false);
|
||||
}
|
||||
}
|
||||
|
||||
void FrameRateManager::setAggressivePerformance(bool value)
|
||||
{
|
||||
mAggressivePerformance = value;
|
||||
}
|
||||
|
||||
CRenderSettings::AntialiasingMode FrameRateManager::getAntialiasingMode()
|
||||
{
|
||||
switch (mSettings->getAntialiasingMode()) {
|
||||
case CRenderSettings::AntialiasingAuto:
|
||||
//return mRenderCaps->getBestAntialiasingMode();
|
||||
return CRenderSettings::AntialiasingOff;
|
||||
// other settings simply override.
|
||||
default:
|
||||
return mSettings->getAntialiasingMode();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void FrameRateManager::updateMaxSettings()
|
||||
{
|
||||
mSSAOSupported = mRenderCaps->getSupportsGBuffer();
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// End of tweakable section
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
FrameRateManager::~FrameRateManager(void)
|
||||
{
|
||||
SendQualityLevelStats();
|
||||
}
|
||||
|
||||
void FrameRateManager::SendQualityLevelStats()
|
||||
{
|
||||
float avgQuality = GetAvarageQuality();
|
||||
if (avgQuality >= 1)
|
||||
{
|
||||
// Because we are reporting using timing function, we want one quality level to be 1sec (it accepts ms)
|
||||
int reportValue = (int)(avgQuality * 1000.0f);
|
||||
RBX::RobloxGoogleAnalytics::trackUserTiming(GA_CATEGORY_GAME, "GraphicsQualityLevel", reportValue, SystemUtil::osPlatform().c_str());
|
||||
}
|
||||
}
|
||||
|
||||
float FrameRateManager::GetAvarageQuality()
|
||||
{
|
||||
// compute average quality and send it to GA. Trying to keep the precision
|
||||
float floatCounts[CRenderSettings::QualityLevelMax];
|
||||
float freqSum = 0;
|
||||
for (unsigned i = 1; i < CRenderSettings::QualityLevelMax; ++i) //we ignore quality lvl = 0
|
||||
{
|
||||
floatCounts[i] = mQualityCount[i];
|
||||
freqSum += mQualityCount[i];
|
||||
}
|
||||
|
||||
// if there is less then 100 samples, there is really nothing to report
|
||||
if (freqSum > 100)
|
||||
{
|
||||
float avgQuality = 0;
|
||||
float freqSumInv = 1.0f / freqSum;
|
||||
for (unsigned i = 0; i < CRenderSettings::QualityLevelMax; ++i)
|
||||
avgQuality += i * floatCounts[i] * freqSumInv;
|
||||
|
||||
return avgQuality;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
float FrameRateManager::GetTargetFrameTime(int level) const
|
||||
{
|
||||
return mAggressivePerformance ? 19.f : LockstepTable[level].framerate;
|
||||
}
|
||||
|
||||
void FrameRateManager::AddBlockQuota(int blocksInCluster, float sqDistanceToCamera, bool isInSpatialHash)
|
||||
{
|
||||
if(!mIsGatheringDistance)
|
||||
return;
|
||||
|
||||
mBlockCounter += blocksInCluster;
|
||||
if(mBlockCounter >= mBlockTarget)
|
||||
{
|
||||
// if cluster is in spatial hash, call order is done in roughly increasing camera distance so we can assume that the value is a valid cut-off
|
||||
// if cluster is not in spatial hash, calls are not ordered; we process all such clusters first, so if we ran out of blocks already, we have to
|
||||
// resort to the minimal culling distance for the current level
|
||||
if (isInSpatialHash)
|
||||
mSqDistance = std::max(LockstepTable[mCurrentQualityLevel].distance * LockstepTable[mCurrentQualityLevel].distance, sqDistanceToCamera + SqDistanceBump);
|
||||
else
|
||||
mSqDistance = LockstepTable[mCurrentQualityLevel].distance * LockstepTable[mCurrentQualityLevel].distance;
|
||||
|
||||
mIsGatheringDistance = false;
|
||||
}
|
||||
}
|
||||
|
||||
void FrameRateManager::SubmitCurrentFrame(double frameTime, double renderTime, double prepareTime, double bonusTime)
|
||||
{
|
||||
updateMaxSettings(); // do this in a safe place. doesn't like being changed mid-frame?
|
||||
|
||||
UpdateStats(frameTime, renderTime, prepareTime);
|
||||
|
||||
// Use the distance from last frame for render distance this frame
|
||||
// If we were not gathering distance last frame they're the same
|
||||
// If we *were* then this is the cutoff distance where we reached the necessary block count
|
||||
mSqRenderDistance = mSqDistance;
|
||||
|
||||
if(mSettings->getEnableFRM())
|
||||
{
|
||||
if(mRecomputeDistanceDelay > 0)
|
||||
mRecomputeDistanceDelay--;
|
||||
else
|
||||
{
|
||||
FASTLOG1(FLog::FRM, "Recomputing gathering distance on level %u", mCurrentQualityLevel);
|
||||
// Temporarily unlock the culling distance for one frame
|
||||
mSqDistance = LockstepTable[0].distance*LockstepTable[0].distance;
|
||||
mRecomputeDistanceDelay = FInt::FRMRecomputeDistanceFrameDelay;
|
||||
mIsGatheringDistance = true;
|
||||
}
|
||||
|
||||
if (!mThrottlingOn)
|
||||
{
|
||||
// Initialize quality level for playing
|
||||
mThrottlingOn = true;
|
||||
CRenderSettings::QualityLevel qualityLevel = mSettings->getQualityLevel();
|
||||
if(qualityLevel == CRenderSettings::QualityAuto)
|
||||
{
|
||||
int autoQualityLevel = mSettings->getAutoQualityLevel();
|
||||
mCurrentQualityLevel = std::max(1,std::min(autoQualityLevel, (int)CRenderSettings::QualityLevelMax-1));
|
||||
}
|
||||
else
|
||||
{
|
||||
mCurrentQualityLevel = qualityLevel;
|
||||
}
|
||||
|
||||
FASTLOG2(FLog::FRM, "Starting FRM, Quality setting: %u, starting level: %u", qualityLevel, mCurrentQualityLevel);
|
||||
UpdateQualitySettings();
|
||||
}
|
||||
else
|
||||
{
|
||||
CRenderSettings::QualityLevel qualityLevel = mSettings->getQualityLevel();
|
||||
|
||||
bool bAdjusmentOn = false;
|
||||
if(qualityLevel == CRenderSettings::QualityAuto)
|
||||
{
|
||||
bAdjusmentOn = mAdjustmentOn;
|
||||
}
|
||||
else if(qualityLevel != mCurrentQualityLevel)
|
||||
{
|
||||
mCurrentQualityLevel = qualityLevel;
|
||||
UpdateQualitySettings();
|
||||
}
|
||||
AdjustQuality(frameTime, renderTime, bAdjusmentOn, bonusTime);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mThrottlingOn = false;
|
||||
mCurrentQualityLevel = mSettings->getEditQualityLevel();
|
||||
UpdateQualitySettings();
|
||||
}
|
||||
|
||||
mLastBlockCounter = mBlockCounter;
|
||||
if(mIsGatheringDistance)
|
||||
mBlockCounter = 0;
|
||||
}
|
||||
|
||||
void FrameRateManager::StartCapturingMetrics()
|
||||
{
|
||||
memset(&mMetrics, 0, sizeof(mMetrics));
|
||||
mIsStable = false;
|
||||
mSettleTimer.reset();
|
||||
}
|
||||
|
||||
void FrameRateManager::UpdateStats(double frameTime, double renderTime, double prepareTime)
|
||||
{
|
||||
if (fabs(frameTime) < 0.001 || fabs(renderTime) < 0.001)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
frameTimeAverage.sample(frameTime);
|
||||
renderTimeAverage.sample(renderTime);
|
||||
prepareTimeAverage.sample(prepareTime);
|
||||
fastBackoffAverage.sample(frameTime);
|
||||
|
||||
mFPSCounter.Update(frameTime);
|
||||
|
||||
if (mCurrentQualityLevel > 0)
|
||||
{
|
||||
// prevent overflow (really unlike, but still)
|
||||
if (mQualityCount[mCurrentQualityLevel] == UINT_MAX - 1)
|
||||
for (unsigned i = 0; i < CRenderSettings::QualityLevelMax; ++i)
|
||||
mQualityCount[i] /= 2;
|
||||
|
||||
++mQualityCount[mCurrentQualityLevel];
|
||||
}
|
||||
}
|
||||
|
||||
float FrameRateManager::GetTargetFrameTimeForNextLevel() const
|
||||
{
|
||||
RBXASSERT(mCurrentQualityLevel < (CRenderSettings::QualityLevelMax-1));
|
||||
|
||||
return GetTargetFrameTime(mCurrentQualityLevel+1);
|
||||
}
|
||||
|
||||
float FrameRateManager::GetTargetRenderTimeForNextLevel() const
|
||||
{
|
||||
RBXASSERT(mCurrentQualityLevel < (CRenderSettings::QualityLevelMax-1));
|
||||
|
||||
return GetTargetFrameTime(mCurrentQualityLevel+1)*MultiCoreRenderBottleneckFraction - LockstepTable[mCurrentQualityLevel+1].StepHill;
|
||||
}
|
||||
|
||||
|
||||
void FrameRateManager::AdjustQuality(double frameTime, double renderTime, bool adjustmentOn, double bonusTime)
|
||||
{
|
||||
if(fabs(frameTime) < 0.001 || fabs(renderTime) < 0.001 || !adjustmentOn)
|
||||
return;
|
||||
|
||||
// Don't adjust until we have delayed enough
|
||||
if(mQualityDelayDown > 0)
|
||||
mQualityDelayDown--;
|
||||
|
||||
if(mQualityDelayUp > 0)
|
||||
mQualityDelayUp--;
|
||||
|
||||
RBX::WindowAverage<double, double>::Stats frameStats = frameTimeAverage.getStats();
|
||||
RBX::WindowAverage<double, double>::Stats renderStats = renderTimeAverage.getStats();
|
||||
RBX::WindowAverage<double, double>::Stats prepareStats = prepareTimeAverage.getStats();
|
||||
|
||||
frameTimeVarianceAverage.sample(frameStats.average);
|
||||
|
||||
frameStats.average -= bonusTime;
|
||||
renderStats.average -= bonusTime;
|
||||
prepareStats.average -= bonusTime;
|
||||
|
||||
|
||||
FASTLOG3F(FLog::FRM, "FRM status. Frame time average: %f, Delay up %f, Delay down %f", frameStats.average, (float)mQualityDelayUp, (float)mQualityDelayDown);
|
||||
|
||||
RBX::WindowAverage<double, double>::Stats fastBackoffStats = fastBackoffAverage.getStats();
|
||||
fastBackoffStats.average -= bonusTime;
|
||||
|
||||
if(fastBackoffStats.average > FastBackoffMaxFrameLen &&
|
||||
FastBackoffMaxFrameLen > GetTargetFrameTime(mCurrentQualityLevel-1))
|
||||
mBadBackoffFrameCounter++;
|
||||
else
|
||||
mBadBackoffFrameCounter = 0;
|
||||
|
||||
if (mBadBackoffFrameCounter >= FastBackoffWatchingFrames && mCurrentQualityLevel > 1)
|
||||
{
|
||||
FASTLOG(FLog::FRM, "FastBackoff, reducing quality");
|
||||
StepQuality(false, true);
|
||||
}
|
||||
|
||||
if(mQualityDelayDown > 0 && mQualityDelayUp > 0)
|
||||
return;
|
||||
|
||||
RBX::WindowAverage<double, double>::Stats frameAverageStats = frameTimeVarianceAverage.getStats();
|
||||
|
||||
if(frameAverageStats.variance > VarianceLimit)
|
||||
return;
|
||||
|
||||
bool bRenderLimited = renderStats.average > frameStats.average * RenderFraction;
|
||||
if (RBX::TaskScheduler::singleton().getThreadCount() > 1)
|
||||
bRenderLimited = renderStats.average > frameStats.average * MultiCoreRenderBottleneckFraction;
|
||||
|
||||
// Check for going down:
|
||||
if ((mQualityDelayDown == 0) && (mCurrentQualityLevel > 1)
|
||||
&& (frameStats.average > GetTargetFrameTime(mCurrentQualityLevel)) && bRenderLimited)
|
||||
StepQuality(false, false);
|
||||
|
||||
// Check for going up:
|
||||
else if((mQualityDelayUp == 0) && (mCurrentQualityLevel < (CRenderSettings::QualityLevelMax-1))
|
||||
&& frameStats.average < GetTargetFrameTimeForNextLevel())
|
||||
{
|
||||
bool renderingHasRoom = renderStats.average < GetTargetRenderTimeForNextLevel();
|
||||
|
||||
if (RBX::TaskScheduler::singleton().getThreadCount() > 1)
|
||||
{
|
||||
renderingHasRoom = (renderStats.average < GetTargetRenderTimeForNextLevel()) &&
|
||||
prepareStats.average < GetTargetFrameTime(mCurrentQualityLevel+1)*MultiCorePrepareFraction;
|
||||
}
|
||||
|
||||
if(renderingHasRoom)
|
||||
StepQuality(true, false);
|
||||
}
|
||||
|
||||
if(!mIsStable && mSettleTimer.delta().seconds() > SettleDelay)
|
||||
{
|
||||
mIsStable = true;
|
||||
|
||||
mMetrics.NumberOfSettles++;
|
||||
}
|
||||
}
|
||||
|
||||
void FrameRateManager::StepQuality(bool stepUp, bool isBackOff)
|
||||
{
|
||||
int oldQualityLevel = mCurrentQualityLevel;
|
||||
|
||||
mCurrentQualityLevel += stepUp ? 1 : -1;
|
||||
FASTLOG2(FLog::FRM, "Stepping FRM quality, old: %u, new : %u", oldQualityLevel, mCurrentQualityLevel);
|
||||
|
||||
UpdateQualitySettings();
|
||||
frameTimeAverage.clear();
|
||||
renderTimeAverage.clear();
|
||||
|
||||
// Make delay for stepping down constant
|
||||
mQualityDelayDown = LockStepDelayDown;
|
||||
mBadBackoffFrameCounter = 0;
|
||||
|
||||
mQualityDelayUp = stepUp ? LockStepDelayUp : LockStepDelayUp * mSwitchCounter;
|
||||
|
||||
if(mCurrentQualityLevel > 1)
|
||||
{
|
||||
// If last step was down, make going up harder
|
||||
if(stepUp != mWasQualityUp && mSwitchCounter < SwitchCounterMax)
|
||||
{
|
||||
// If we're stepping down from higher level immediately, bump the step (within the allowed range, of course)
|
||||
if(!stepUp)
|
||||
{
|
||||
RBXASSERT(mCurrentQualityLevel < (CRenderSettings::QualityLevelMax-1));
|
||||
int previousLevel = mCurrentQualityLevel+1;
|
||||
|
||||
double StepHillAdd = isBackOff ? 0.1 : 1;
|
||||
LockstepTable[previousLevel].StepHill = std::min(LockstepTable[previousLevel].MaxStepHill, LockstepTable[previousLevel].StepHill+StepHillAdd);
|
||||
}
|
||||
|
||||
mSwitchCounter++;
|
||||
}
|
||||
else if(mSwitchCounter > 1)
|
||||
{
|
||||
mSwitchCounter--;
|
||||
}
|
||||
}
|
||||
|
||||
mWasQualityUp = stepUp;
|
||||
|
||||
mSettings->setAutoQualityLevel(mCurrentQualityLevel);
|
||||
|
||||
mSettleTimer.reset();
|
||||
mIsStable = false;
|
||||
|
||||
// Accumulate number of switches here, average it on GetMetrics
|
||||
mMetrics.AverageSwitchesPerSettle++;
|
||||
}
|
||||
|
||||
FrameRateManager::Metrics FrameRateManager::GetMetrics()
|
||||
{
|
||||
Metrics result = mMetrics;
|
||||
|
||||
CRenderSettings::QualityLevel qualityLevel = mSettings->getQualityLevel();
|
||||
result.AutoQuality = qualityLevel == CRenderSettings::QualityAuto;
|
||||
result.QualityLevel = Math::iRound(GetAvarageQuality());
|
||||
result.AverageFps = mFPSCounter.GetFPS();
|
||||
|
||||
if(result.NumberOfSettles != 0)
|
||||
result.AverageSwitchesPerSettle /= result.NumberOfSettles;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
void FrameRateManager::UpdateQualitySettings()
|
||||
{
|
||||
const THROTTLE_LOCKSTEP& lockstep = LockstepTable[mCurrentQualityLevel];
|
||||
|
||||
if (mSettings->getFrameRateManagerMode() != CRenderSettings::FrameRateManagerOff)
|
||||
mBlockTarget = lockstep.blockCount;
|
||||
else
|
||||
mBlockTarget = LockstepTable[0].blockCount;
|
||||
|
||||
mIsGatheringDistance = true;
|
||||
|
||||
// Unlock the view distance but don't change rendering distance; we'll recompute it this frame
|
||||
mSqDistance = LockstepTable[0].distance*LockstepTable[0].distance;
|
||||
|
||||
mRecomputeDistanceDelay = FInt::FRMRecomputeDistanceFrameDelay;
|
||||
}
|
||||
|
||||
double FrameRateManager::getMetricValue(const std::string& metric)
|
||||
{
|
||||
if (metric == "FRM")
|
||||
return IsBlockCullingEnabled();
|
||||
else if (metric == "FRM Target")
|
||||
return GetVisibleBlockTarget();
|
||||
else if (metric == "FRM Visible")
|
||||
return GetVisibleBlockCounter();
|
||||
else if (metric == "FRM Distance")
|
||||
return sqrt(GetViewCullSqDistance());
|
||||
else if (metric == "FRM Quality")
|
||||
return GetQualityLevel();
|
||||
else if(metric == "FRM Auto Quality")
|
||||
return mSettings->getQualityLevel() == CRenderSettings::QualityAuto;
|
||||
else if(metric == "FRM Switch Counter")
|
||||
return mSwitchCounter;
|
||||
else if(metric == "FRM Step Hill")
|
||||
{
|
||||
// If Quality is not allowed to be adjusted, return -1
|
||||
if (mSettings->getQualityLevel() != CRenderSettings::QualityAuto)
|
||||
return -1;
|
||||
else
|
||||
return mCurrentQualityLevel+1 < CRenderSettings::QualityLevelMax ? LockstepTable[mCurrentQualityLevel+1].StepHill : 0;
|
||||
}
|
||||
else if (metric == "FRM Adjust Delay Up")
|
||||
return mQualityDelayUp;
|
||||
else if (metric == "FRM Adjust Delay Down")
|
||||
return mQualityDelayDown;
|
||||
else if(metric == "FRM Variance")
|
||||
return frameTimeVarianceAverage.getStats().variance;
|
||||
else if(metric == "FRM Backoff Counter")
|
||||
return mBadBackoffFrameCounter;
|
||||
else if(metric == "FRM Backoff Average")
|
||||
return fastBackoffAverage.getStats().average;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
double FrameRateManager::GetFrameTimeAverage()
|
||||
{
|
||||
return frameTimeAverage.getStats().average;
|
||||
}
|
||||
|
||||
double FrameRateManager::GetPrepareTimeAverage()
|
||||
{
|
||||
return prepareTimeAverage.getStats().average;
|
||||
}
|
||||
|
||||
double FrameRateManager::GetRenderTimeAverage()
|
||||
{
|
||||
return renderTimeAverage.getStats().average;
|
||||
}
|
||||
|
||||
const WindowAverage<double, double>& FrameRateManager::GetFrameTimeStats()
|
||||
{
|
||||
return frameTimeAverage;
|
||||
}
|
||||
|
||||
const WindowAverage<double, double>& FrameRateManager::GetRenderTimeStats()
|
||||
{
|
||||
return renderTimeAverage;
|
||||
}
|
||||
|
||||
float FrameRateManager::GetRenderCullSqDistance()
|
||||
{
|
||||
return mSqRenderDistance;
|
||||
}
|
||||
|
||||
float FrameRateManager::GetViewCullSqDistance()
|
||||
{
|
||||
return mSqDistance;
|
||||
}
|
||||
|
||||
float FrameRateManager::getShadingDistance() const
|
||||
{
|
||||
return LockstepTable[mCurrentQualityLevel].shadingDistance;
|
||||
}
|
||||
|
||||
int FrameRateManager::getPhysicsThrottling() const
|
||||
{
|
||||
return LockstepTable[mCurrentQualityLevel].throttlingFactor;
|
||||
}
|
||||
|
||||
float FrameRateManager::getShadingSqDistance() const
|
||||
{
|
||||
return sqrf(LockstepTable[mCurrentQualityLevel].shadingDistance);
|
||||
}
|
||||
|
||||
int FrameRateManager::getTextureAnisotropy() const
|
||||
{
|
||||
return LockstepTable[mCurrentQualityLevel].textureAnisotropy;
|
||||
}
|
||||
|
||||
float FrameRateManager::getLightGridRadius() const
|
||||
{
|
||||
return LockstepTable[mCurrentQualityLevel].lightGridRadius;
|
||||
}
|
||||
|
||||
bool FrameRateManager::getLightingNonFixedEnabled() const
|
||||
{
|
||||
return LockstepTable[mCurrentQualityLevel].lightAllowNonFixed;
|
||||
}
|
||||
|
||||
unsigned FrameRateManager::getLightingChunkBudget() const
|
||||
{
|
||||
return LockstepTable[mCurrentQualityLevel].lightChunkBudget;
|
||||
}
|
||||
|
||||
double FrameRateManager::GetMaxNextViewCullDistance()
|
||||
{
|
||||
return sqrt(mSqDistance) * 1.1;
|
||||
}
|
||||
|
||||
SSAOLevel FrameRateManager::getSSAOLevel()
|
||||
{
|
||||
if (FFlag::DebugSSAOForce)
|
||||
return ssaoFull;
|
||||
|
||||
if (!mSSAOSupported)
|
||||
return ssaoNone;
|
||||
|
||||
return LockstepTable[mCurrentQualityLevel].ssao;
|
||||
}
|
||||
|
||||
void FrameRateManager::Configure(const RenderCaps* renderCaps, CRenderSettings* settings)
|
||||
{
|
||||
mSettings = settings;
|
||||
mRenderCaps = renderCaps;
|
||||
|
||||
updateMaxSettings();
|
||||
|
||||
UpdateQualitySettings();
|
||||
}
|
||||
|
||||
// returns overall particle throttle factor. Range ]0 .. 1] , 1 for full detail.
|
||||
double FrameRateManager::GetParticleThrottleFactor()
|
||||
{
|
||||
if(GetQualityLevel() == 0)
|
||||
return 1.0;
|
||||
|
||||
return std::max(0.0, std::min(1.0, (double)GetQualityLevel()/CRenderSettings::QualityLevelMax) );
|
||||
}
|
||||
|
||||
bool FrameRateManager::getGBufferSetting()
|
||||
{
|
||||
#if defined(RBX_PLATFORM_IOS) || defined(__ANDROID__)
|
||||
return false;
|
||||
#else
|
||||
return FFlag::DebugSSAOForce || (isSSAOSupported() && GetQualityLevel() >= FInt::RenderGBufferMinQLvl);
|
||||
#endif
|
||||
}
|
||||
|
||||
void FrameRateManager::PauseAutoAdjustment()
|
||||
{
|
||||
mAdjustmentOn = false;
|
||||
}
|
||||
|
||||
void FrameRateManager::ResumeAutoAdjustment()
|
||||
{
|
||||
mAdjustmentOn = true;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,405 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Durango">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Durango</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="NoOpt|Durango">
|
||||
<Configuration>NoOpt</Configuration>
|
||||
<Platform>Durango</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="NoOpt|Win32">
|
||||
<Configuration>NoOpt</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="ReleaseTest|Durango">
|
||||
<Configuration>ReleaseTest</Configuration>
|
||||
<Platform>Durango</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="ReleaseTest|Win32">
|
||||
<Configuration>ReleaseTest</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Durango">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Durango</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{857DE167-1ED8-4E4D-955A-5CC5CC3944C1}</ProjectGuid>
|
||||
<RootNamespace>RenderLibBase</RootNamespace>
|
||||
<SccProjectName>SAK</SccProjectName>
|
||||
<SccAuxPath>SAK</SccAuxPath>
|
||||
<SccLocalPath>SAK</SccLocalPath>
|
||||
<SccProvider>SAK</SccProvider>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<ApplicationEnvironment>title</ApplicationEnvironment>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='NoOpt|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140_xp</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='NoOpt|Durango'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Durango'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseTest|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140_xp</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseTest|Durango'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v110</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='NoOpt|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='NoOpt|Durango'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
<Import Project="..\..\PropertySheets\Common.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Durango'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
<Import Project="..\..\PropertySheets\Common.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseTest|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
<Import Project="..\..\PropertySheets\Common.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseTest|Durango'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
<Import Project="..\..\PropertySheets\Common.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>11.0.50727.1</_ProjectFileVersion>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>bin\$(Configuration)\</OutDir>
|
||||
<IntDir>obj\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">
|
||||
<ExecutablePath>$(Console_SdkRoot)bin;$(Console_SdkRoot)xdk\fxc\amd64;$(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(WindowsSDK_ExecutablePath_x86);$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML Help Workshop;$(MSBuildToolsPath32);$(FxCopDir);$(PATH);</ExecutablePath>
|
||||
<IncludePath>$(Console_SdkIncludeRoot)\um;$(Console_SdkIncludeRoot)\shared;$(Console_SdkIncludeRoot)\winrt</IncludePath>
|
||||
<ReferencePath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</ReferencePath>
|
||||
<LibraryPath>$(Console_SdkLibPath)</LibraryPath>
|
||||
<LibraryWPath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</LibraryWPath>
|
||||
<OutDir>bin\$(Configuration)$(Platform)\</OutDir>
|
||||
<IntDir>obj\$(Configuration)$(Platform)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>bin\$(Configuration)\</OutDir>
|
||||
<IntDir>obj\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Durango'">
|
||||
<ExecutablePath>$(Console_SdkRoot)bin;$(Console_SdkRoot)xdk\fxc\amd64;$(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(WindowsSDK_ExecutablePath_x86);$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML Help Workshop;$(MSBuildToolsPath32);$(FxCopDir);$(PATH);</ExecutablePath>
|
||||
<IncludePath>$(Console_SdkIncludeRoot)\um;$(Console_SdkIncludeRoot)\shared;$(Console_SdkIncludeRoot)\winrt</IncludePath>
|
||||
<ReferencePath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</ReferencePath>
|
||||
<LibraryPath>$(Console_SdkLibPath)</LibraryPath>
|
||||
<LibraryWPath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</LibraryWPath>
|
||||
<OutDir>bin\$(Configuration)$(Platform)\</OutDir>
|
||||
<IntDir>obj\$(Configuration)$(Platform)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseTest|Win32'">
|
||||
<OutDir>bin\$(Configuration)\</OutDir>
|
||||
<IntDir>obj\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseTest|Durango'">
|
||||
<ExecutablePath>$(Console_SdkRoot)bin;$(Console_SdkRoot)xdk\fxc\amd64;$(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(WindowsSDK_ExecutablePath_x86);$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML Help Workshop;$(MSBuildToolsPath32);$(FxCopDir);$(PATH);</ExecutablePath>
|
||||
<IncludePath>$(Console_SdkIncludeRoot)\um;$(Console_SdkIncludeRoot)\shared;$(Console_SdkIncludeRoot)\winrt</IncludePath>
|
||||
<ReferencePath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</ReferencePath>
|
||||
<LibraryPath>$(Console_SdkLibPath)</LibraryPath>
|
||||
<LibraryWPath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</LibraryWPath>
|
||||
<OutDir>bin\$(Configuration)$(Platform)\</OutDir>
|
||||
<IntDir>obj\$(Configuration)$(Platform)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='NoOpt|Win32'">
|
||||
<OutDir>bin\$(Configuration)\</OutDir>
|
||||
<IntDir>obj\$(Configuration)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='NoOpt|Durango'">
|
||||
<ExecutablePath>$(Console_SdkRoot)bin;$(Console_SdkRoot)xdk\fxc\amd64;$(VCInstallDir)bin\x86_amd64;$(VCInstallDir)bin;$(WindowsSDK_ExecutablePath_x86);$(VSInstallDir)Common7\Tools\bin;$(VSInstallDir)Common7\tools;$(VSInstallDir)Common7\ide;$(ProgramFiles)\HTML Help Workshop;$(MSBuildToolsPath32);$(FxCopDir);$(PATH);</ExecutablePath>
|
||||
<IncludePath>$(Console_SdkIncludeRoot)\um;$(Console_SdkIncludeRoot)\shared;$(Console_SdkIncludeRoot)\winrt</IncludePath>
|
||||
<ReferencePath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</ReferencePath>
|
||||
<LibraryPath>$(Console_SdkLibPath)</LibraryPath>
|
||||
<LibraryWPath>$(Console_SdkLibPath);$(Console_SdkWindowsMetadataPath)</LibraryWPath>
|
||||
<OutDir>bin\$(Configuration)$(Platform)\</OutDir>
|
||||
<IntDir>obj\$(Configuration)$(Platform)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>$(CONTRIB_PATH)\SDL2.0.4\include;..\..\TBB_4_1\include;..\SDL-1.2.6\include;..\G3D\png;..\g3d\include;.\include;..\..\Base\include;..\g3d\include\zlib;$(CONTRIB_PATH)\boost_1_56_0\include;..\..\app\include;..\App\include;..\GfxBase\include;..\AppDraw\include;..\RbxG3D\include;..\..\Log\include;..\..\App.BulletPhysics;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalOptions>/D "_SECURE_SCL=0" %(AdditionalOptions)</AdditionalOptions>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>$(OutDir)RenderLibBase.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Durango'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\..\TBB_4_1\include;..\SDL-1.2.6\include;..\G3D\png;..\g3d\include;.\include;..\..\Base\include;..\g3d\include\zlib;$(CONTRIB_PATH)\boost_1_56_0\include;..\..\app\include;..\App\include;..\GfxBase\include;..\AppDraw\include;..\RbxG3D\include;..\..\Log\include;..\..\App.BulletPhysics;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>RBX_PLATFORM_DURANGO;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<AdditionalOptions>/D "_SECURE_SCL=0" %(AdditionalOptions)</AdditionalOptions>
|
||||
<EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
|
||||
<DisableSpecificWarnings>4267</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>$(OutDir)RenderLibBase.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/D "_SECURE_SCL=0" %(AdditionalOptions)</AdditionalOptions>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<OmitFramePointers>false</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>$(CONTRIB_PATH)\SDL2.0.4\include;..\..\TBB_4_1\include;..\SDL-1.2.6\include;..\G3D\png;..\g3d\include;.\include;..\..\Base\include;..\g3d\include\zlib;$(CONTRIB_PATH)\boost_1_56_0\include;..\..\app\include;..\App\include;..\GfxBase\include;..\AppDraw\include;..\RbxG3D\include;..\..\Log\include;..\..\App.BulletPhysics;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;RBX_TEST_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<TreatWarningAsError>false</TreatWarningAsError>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>$(OutDir)RenderLibBase.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Durango'">
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/D "_SECURE_SCL=0" %(AdditionalOptions)</AdditionalOptions>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<OmitFramePointers>false</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>$(CONTRIB_PATH)\SDL2\include;..\G3D\png;..\g3d\include;.\include;..\..\Base\include;..\g3d\include\zlib;$(CONTRIB_PATH)\boost_1_56_0\include;..\..\app\include;..\App\include;..\GfxBase\include;..\AppDraw\include;..\RbxG3D\include;..\..\Log\include;..\..\App.BulletPhysics;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>RBX_PLATFORM_DURANGO;WIN32;NDEBUG;_LIB;RBX_TEST_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4267</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>$(OutDir)RenderLibBase.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseTest|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/D "_SECURE_SCL=0" %(AdditionalOptions)</AdditionalOptions>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<OmitFramePointers>false</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>$(CONTRIB_PATH)\SDL2.0.4\include;..\..\TBB_4_1\include;..\SDL-1.2.6\include;..\G3D\png;..\g3d\include;.\include;..\..\Base\include;..\g3d\include\zlib;$(CONTRIB_PATH)\boost_1_56_0\include;..\..\app\include;..\App\include;..\GfxBase\include;..\AppDraw\include;..\RbxG3D\include;..\..\Log\include;..\..\App.BulletPhysics;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;RBX_TEST_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>$(OutDir)RenderLibBase.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseTest|Durango'">
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/D "_SECURE_SCL=0" %(AdditionalOptions)</AdditionalOptions>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<OmitFramePointers>false</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>..\..\TBB_4_1\include;..\SDL-1.2.6\include;..\G3D\png;..\g3d\include;.\include;..\..\Base\include;..\g3d\include\zlib;$(CONTRIB_PATH)\boost_1_56_0\include;..\..\app\include;..\App\include;..\GfxBase\include;..\AppDraw\include;..\RbxG3D\include;..\..\Log\include;..\..\App.BulletPhysics;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>RBX_PLATFORM_DURANGO;WIN32;NDEBUG;_LIB;RBX_TEST_BUILD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4267</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>$(OutDir)RenderLibBase.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='NoOpt|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/D "_SECURE_SCL=0" %(AdditionalOptions)</AdditionalOptions>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>$(CONTRIB_PATH)\SDL2.0.4\include;..\..\TBB_4_1\include;..\SDL-1.2.6\include;..\G3D\png;..\g3d\include;.\include;..\..\Base\include;..\g3d\include\zlib;$(CONTRIB_PATH)\boost_1_56_0\include;..\..\app\include;..\App\include;..\GfxBase\include;..\AppDraw\include;..\RbxG3D\include;..\..\Log\include;..\..\App.BulletPhysics;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_LIB;_CRASH_RBXASSERT;__NEW_GRAPHICS__;NDEBUG;_NOOPT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader />
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>$(OutDir)RenderLibBase.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='NoOpt|Durango'">
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/D "_SECURE_SCL=0" %(AdditionalOptions)</AdditionalOptions>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>$(CONTRIB_PATH)\SDL2\include;..\SDL-1.2.6\include;..\G3D\png;..\g3d\include;.\include;..\..\Base\include;..\g3d\include\zlib;$(CONTRIB_PATH)\boost_1_56_0\include;..\..\app\include;..\App\include;..\GfxBase\include;..\AppDraw\include;..\RbxG3D\include;..\..\Log\include;..\..\App.BulletPhysics;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>RBX_PLATFORM_DURANGO;WIN32;_LIB;_CRASH_RBXASSERT;__NEW_GRAPHICS__;NDEBUG;_NOOPT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<EnableEnhancedInstructionSet>AdvancedVectorExtensions</EnableEnhancedInstructionSet>
|
||||
<DisableSpecificWarnings>4267</DisableSpecificWarnings>
|
||||
<OmitFramePointers>false</OmitFramePointers>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<OutputFile>$(OutDir)RenderLibBase.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="Adorn.cpp" />
|
||||
<ClCompile Include="AdornBillboarder.cpp" />
|
||||
<ClCompile Include="AdornBillboarder2D.cpp" />
|
||||
<ClCompile Include="AdornSurface.cpp" />
|
||||
<ClCompile Include="FileMeshData.cpp" />
|
||||
<ClCompile Include="FrameRateManager.cpp" />
|
||||
<ClCompile Include="GfxPart.cpp" />
|
||||
<ClCompile Include="IAdornableCollector.cpp" />
|
||||
<ClCompile Include="PartIdentifier.cpp" />
|
||||
<ClCompile Include="RenderCaps.cpp" />
|
||||
<ClCompile Include="RenderSettings.cpp" />
|
||||
<ClCompile Include="RenderStats.cpp" />
|
||||
<ClCompile Include="ViewBase.cpp" />
|
||||
<ClCompile Include="ViewportBillboarder.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\GfxBase\Adorn.h" />
|
||||
<ClInclude Include="include\GfxBase\AdornBillboarder.h" />
|
||||
<ClInclude Include="include\GfxBase\AdornBillboarder2D.h" />
|
||||
<ClInclude Include="include\GfxBase\AdornSurface.h" />
|
||||
<ClInclude Include="include\GfxBase\FileMeshData.h" />
|
||||
<ClInclude Include="include\GfxBase\FrameRateManager.h" />
|
||||
<ClInclude Include="include\GfxBase\GfxPart.h" />
|
||||
<ClInclude Include="include\GfxBase\IAdornable.h" />
|
||||
<ClInclude Include="include\GfxBase\IAdornableCollector.h" />
|
||||
<ClInclude Include="include\GfxBase\Image.h" />
|
||||
<ClInclude Include="include\GfxBase\MeshFileStructs.h" />
|
||||
<ClInclude Include="include\GfxBase\MeshGen.h" />
|
||||
<ClInclude Include="include\GfxBase\Part.h" />
|
||||
<ClInclude Include="include\GfxBase\RenderCaps.h" />
|
||||
<ClInclude Include="include\GfxBase\RenderSettings.h" />
|
||||
<ClInclude Include="include\GfxBase\RenderStats.h" />
|
||||
<ClInclude Include="include\GfxBase\TextureProxyBase.h" />
|
||||
<ClInclude Include="include\GfxBase\Type.h" />
|
||||
<ClInclude Include="include\GfxBase\Typesetter.h" />
|
||||
<ClInclude Include="include\GfxBase\ViewBase.h" />
|
||||
<ClInclude Include="include\GfxBase\ViewportBillboarder.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
<ProjectExtensions>
|
||||
<VisualStudio>
|
||||
<UserProperties RESOURCE_FILE="\Documents and Settings\erik.cassel\My Documents\Visual Studio 2005\Projects\Roblox\Client\ContentTextures\ContentTextures.rc" />
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
||||
@@ -0,0 +1,126 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{ED173019-2702-4d5d-9B8F-861C554BA151}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{3EC32423-84F6-4bbb-9F54-2F648B14225C}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{87ED97D5-0D75-49ef-92BF-8BA0ED473FBA}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="AdornBillboarder.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="FileMeshData.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="FrameRateManager.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="GfxPart.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="IAdornableCollector.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="RenderCaps.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="RenderSettings.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="RenderStats.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ViewBase.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Adorn.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="AdornSurface.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="AdornBillboarder2D.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ViewportBillboarder.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="PartIdentifier.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="include\GfxBase\Adorn.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\AdornBillboarder.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\FileMeshData.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\FrameRateManager.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\GfxPart.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\IAdornable.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\IAdornableCollector.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\Image.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\MeshFileStructs.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\MeshGen.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\Part.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\RenderCaps.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\RenderSettings.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\RenderStats.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\TextureProxyBase.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\Type.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\Typesetter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\ViewBase.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\AdornSurface.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\AdornBillboarder2D.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="include\GfxBase\ViewportBillboarder.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,729 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1F2845E315E6FF2900120D64 /* Adorn.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F3E128E04230090F9AF /* Adorn.h */; };
|
||||
1F2845E415E6FF2900120D64 /* AdornBillboarder.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F3F128E04230090F9AF /* AdornBillboarder.h */; };
|
||||
1F2845E615E6FF2900120D64 /* FrameRateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F42128E04230090F9AF /* FrameRateManager.h */; };
|
||||
1F2845E715E6FF2900120D64 /* GfxPart.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F43128E04230090F9AF /* GfxPart.h */; };
|
||||
1F2845E815E6FF2900120D64 /* IAdornable.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F44128E04230090F9AF /* IAdornable.h */; };
|
||||
1F2845E915E6FF2900120D64 /* IAdornableCollector.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F45128E04230090F9AF /* IAdornableCollector.h */; };
|
||||
1F2845EA15E6FF2900120D64 /* (null) in Headers */ = {isa = PBXBuildFile; };
|
||||
1F2845EB15E6FF2900120D64 /* MeshGen.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F47128E04230090F9AF /* MeshGen.h */; };
|
||||
1F2845EC15E6FF2900120D64 /* Part.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F48128E04230090F9AF /* Part.h */; };
|
||||
1F2845ED15E6FF2900120D64 /* RenderCaps.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F49128E04230090F9AF /* RenderCaps.h */; };
|
||||
1F2845EE15E6FF2900120D64 /* RenderSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F4A128E04230090F9AF /* RenderSettings.h */; };
|
||||
1F2845EF15E6FF2900120D64 /* RenderStats.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F4B128E04230090F9AF /* RenderStats.h */; };
|
||||
1F2845F015E6FF2900120D64 /* TextureProxyBase.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F4C128E04230090F9AF /* TextureProxyBase.h */; };
|
||||
1F2845F115E6FF2900120D64 /* Type.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F4D128E04230090F9AF /* Type.h */; };
|
||||
1F2845F215E6FF2900120D64 /* Typesetter.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F4E128E04230090F9AF /* Typesetter.h */; };
|
||||
1F2845F315E6FF2900120D64 /* ViewBase.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F4F128E04230090F9AF /* ViewBase.h */; };
|
||||
1F2845F415E6FF2900120D64 /* Image.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F2F04B512C287D900744D22 /* Image.h */; };
|
||||
1F2845F515E6FF2900120D64 /* MeshFileStructs.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F2F04B612C287D900744D22 /* MeshFileStructs.h */; };
|
||||
1F2845F715E6FF2900120D64 /* AdornBillboarder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAE03F2A128E04130090F9AF /* AdornBillboarder.cpp */; };
|
||||
1F2845F815E6FF2900120D64 /* FrameRateManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAE03F2B128E04130090F9AF /* FrameRateManager.cpp */; };
|
||||
1F2845F915E6FF2900120D64 /* GfxPart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAE03F2C128E04130090F9AF /* GfxPart.cpp */; };
|
||||
1F2845FA15E6FF2900120D64 /* IAdornableCollector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAE03F2D128E04130090F9AF /* IAdornableCollector.cpp */; };
|
||||
1F2845FB15E6FF2900120D64 /* RenderCaps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAE03F2E128E04130090F9AF /* RenderCaps.cpp */; };
|
||||
1F2845FC15E6FF2900120D64 /* RenderSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAE03F2F128E04130090F9AF /* RenderSettings.cpp */; };
|
||||
1F2845FD15E6FF2900120D64 /* RenderStats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAE03F30128E04130090F9AF /* RenderStats.cpp */; };
|
||||
1F2845FE15E6FF2900120D64 /* ViewBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAE03F32128E04130090F9AF /* ViewBase.cpp */; };
|
||||
1F2F04B712C287D900744D22 /* Image.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F2F04B512C287D900744D22 /* Image.h */; };
|
||||
1F2F04B812C287D900744D22 /* MeshFileStructs.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F2F04B612C287D900744D22 /* MeshFileStructs.h */; };
|
||||
42B2232D19257293008B73C5 /* PartIdentifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42B2232C19257293008B73C5 /* PartIdentifier.cpp */; };
|
||||
42B2232E19257293008B73C5 /* PartIdentifier.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42B2232C19257293008B73C5 /* PartIdentifier.cpp */; };
|
||||
9F0477391836CCA800DFD102 /* AdornSurface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9F0477381836CCA800DFD102 /* AdornSurface.cpp */; };
|
||||
9F04773A1836CCA800DFD102 /* AdornSurface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9F0477381836CCA800DFD102 /* AdornSurface.cpp */; };
|
||||
9F04773C1836CCD100DFD102 /* AdornSurface.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F04773B1836CCD100DFD102 /* AdornSurface.h */; };
|
||||
9F04773D1836CCD100DFD102 /* AdornSurface.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F04773B1836CCD100DFD102 /* AdornSurface.h */; };
|
||||
9F402FF415EC425000203B92 /* FileMeshData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9F402FF315EC425000203B92 /* FileMeshData.cpp */; };
|
||||
9F402FF815EC426F00203B92 /* FileMeshData.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F402FF715EC426F00203B92 /* FileMeshData.h */; };
|
||||
9F89B4DF161CBEE90096380E /* FileMeshData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9F402FF315EC425000203B92 /* FileMeshData.cpp */; };
|
||||
9F9F9481181AF7AC009278A0 /* Adorn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9F9F9480181AF7AC009278A0 /* Adorn.cpp */; };
|
||||
9F9F9482181AF7AC009278A0 /* Adorn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9F9F9480181AF7AC009278A0 /* Adorn.cpp */; };
|
||||
9FCE7C481905C6F400D70B41 /* AdornBillboarder2D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9FCE7C471905C6F400D70B41 /* AdornBillboarder2D.cpp */; };
|
||||
9FCE7C491905C6F400D70B41 /* AdornBillboarder2D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9FCE7C471905C6F400D70B41 /* AdornBillboarder2D.cpp */; };
|
||||
9FCE7C4B1905C70A00D70B41 /* ViewportBillboarder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9FCE7C4A1905C70A00D70B41 /* ViewportBillboarder.cpp */; };
|
||||
9FCE7C4C1905C70A00D70B41 /* ViewportBillboarder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9FCE7C4A1905C70A00D70B41 /* ViewportBillboarder.cpp */; };
|
||||
9FCE7C4E1905C71B00D70B41 /* AdornBillboarder2D.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FCE7C4D1905C71B00D70B41 /* AdornBillboarder2D.h */; };
|
||||
9FCE7C4F1905C71B00D70B41 /* AdornBillboarder2D.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FCE7C4D1905C71B00D70B41 /* AdornBillboarder2D.h */; };
|
||||
9FCE7C511905C72800D70B41 /* ViewportBillboarder.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FCE7C501905C72800D70B41 /* ViewportBillboarder.h */; };
|
||||
9FCE7C521905C72800D70B41 /* ViewportBillboarder.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FCE7C501905C72800D70B41 /* ViewportBillboarder.h */; };
|
||||
EAE03F33128E04130090F9AF /* AdornBillboarder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAE03F2A128E04130090F9AF /* AdornBillboarder.cpp */; };
|
||||
EAE03F34128E04130090F9AF /* FrameRateManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAE03F2B128E04130090F9AF /* FrameRateManager.cpp */; };
|
||||
EAE03F35128E04130090F9AF /* GfxPart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAE03F2C128E04130090F9AF /* GfxPart.cpp */; };
|
||||
EAE03F36128E04130090F9AF /* IAdornableCollector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAE03F2D128E04130090F9AF /* IAdornableCollector.cpp */; };
|
||||
EAE03F37128E04130090F9AF /* RenderCaps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAE03F2E128E04130090F9AF /* RenderCaps.cpp */; };
|
||||
EAE03F38128E04130090F9AF /* RenderSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAE03F2F128E04130090F9AF /* RenderSettings.cpp */; };
|
||||
EAE03F39128E04130090F9AF /* RenderStats.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAE03F30128E04130090F9AF /* RenderStats.cpp */; };
|
||||
EAE03F3B128E04130090F9AF /* ViewBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EAE03F32128E04130090F9AF /* ViewBase.cpp */; };
|
||||
EAE03F50128E04230090F9AF /* Adorn.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F3E128E04230090F9AF /* Adorn.h */; };
|
||||
EAE03F51128E04230090F9AF /* AdornBillboarder.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F3F128E04230090F9AF /* AdornBillboarder.h */; };
|
||||
EAE03F54128E04230090F9AF /* FrameRateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F42128E04230090F9AF /* FrameRateManager.h */; };
|
||||
EAE03F55128E04230090F9AF /* GfxPart.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F43128E04230090F9AF /* GfxPart.h */; };
|
||||
EAE03F56128E04230090F9AF /* IAdornable.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F44128E04230090F9AF /* IAdornable.h */; };
|
||||
EAE03F57128E04230090F9AF /* IAdornableCollector.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F45128E04230090F9AF /* IAdornableCollector.h */; };
|
||||
EAE03F59128E04230090F9AF /* MeshGen.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F47128E04230090F9AF /* MeshGen.h */; };
|
||||
EAE03F5A128E04230090F9AF /* Part.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F48128E04230090F9AF /* Part.h */; };
|
||||
EAE03F5B128E04230090F9AF /* RenderCaps.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F49128E04230090F9AF /* RenderCaps.h */; };
|
||||
EAE03F5C128E04230090F9AF /* RenderSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F4A128E04230090F9AF /* RenderSettings.h */; };
|
||||
EAE03F5D128E04230090F9AF /* RenderStats.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F4B128E04230090F9AF /* RenderStats.h */; };
|
||||
EAE03F5E128E04230090F9AF /* TextureProxyBase.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F4C128E04230090F9AF /* TextureProxyBase.h */; };
|
||||
EAE03F5F128E04230090F9AF /* Type.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F4D128E04230090F9AF /* Type.h */; };
|
||||
EAE03F60128E04230090F9AF /* Typesetter.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F4E128E04230090F9AF /* Typesetter.h */; };
|
||||
EAE03F61128E04230090F9AF /* ViewBase.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE03F4F128E04230090F9AF /* ViewBase.h */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
1F28460315E6FF2900120D64 /* libGfxBaseiOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libGfxBaseiOS.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
1F2F04B512C287D900744D22 /* Image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Image.h; sourceTree = "<group>"; };
|
||||
1F2F04B612C287D900744D22 /* MeshFileStructs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MeshFileStructs.h; sourceTree = "<group>"; };
|
||||
42B2232C19257293008B73C5 /* PartIdentifier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PartIdentifier.cpp; sourceTree = "<group>"; };
|
||||
9F0477381836CCA800DFD102 /* AdornSurface.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AdornSurface.cpp; sourceTree = "<group>"; };
|
||||
9F04773B1836CCD100DFD102 /* AdornSurface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdornSurface.h; sourceTree = "<group>"; };
|
||||
9F402FF315EC425000203B92 /* FileMeshData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FileMeshData.cpp; sourceTree = "<group>"; };
|
||||
9F402FF715EC426F00203B92 /* FileMeshData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FileMeshData.h; sourceTree = "<group>"; };
|
||||
9F9F9480181AF7AC009278A0 /* Adorn.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Adorn.cpp; sourceTree = "<group>"; };
|
||||
9FCE7C471905C6F400D70B41 /* AdornBillboarder2D.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AdornBillboarder2D.cpp; sourceTree = "<group>"; };
|
||||
9FCE7C4A1905C70A00D70B41 /* ViewportBillboarder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ViewportBillboarder.cpp; sourceTree = "<group>"; };
|
||||
9FCE7C4D1905C71B00D70B41 /* AdornBillboarder2D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdornBillboarder2D.h; sourceTree = "<group>"; };
|
||||
9FCE7C501905C72800D70B41 /* ViewportBillboarder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewportBillboarder.h; sourceTree = "<group>"; };
|
||||
D2AAC046055464E500DB518D /* libGfxBase.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libGfxBase.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
EAE03F2A128E04130090F9AF /* AdornBillboarder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AdornBillboarder.cpp; sourceTree = "<group>"; };
|
||||
EAE03F2B128E04130090F9AF /* FrameRateManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameRateManager.cpp; sourceTree = "<group>"; };
|
||||
EAE03F2C128E04130090F9AF /* GfxPart.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GfxPart.cpp; sourceTree = "<group>"; };
|
||||
EAE03F2D128E04130090F9AF /* IAdornableCollector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IAdornableCollector.cpp; sourceTree = "<group>"; };
|
||||
EAE03F2E128E04130090F9AF /* RenderCaps.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderCaps.cpp; sourceTree = "<group>"; };
|
||||
EAE03F2F128E04130090F9AF /* RenderSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderSettings.cpp; sourceTree = "<group>"; };
|
||||
EAE03F30128E04130090F9AF /* RenderStats.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderStats.cpp; sourceTree = "<group>"; };
|
||||
EAE03F32128E04130090F9AF /* ViewBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ViewBase.cpp; sourceTree = "<group>"; };
|
||||
EAE03F3E128E04230090F9AF /* Adorn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Adorn.h; sourceTree = "<group>"; };
|
||||
EAE03F3F128E04230090F9AF /* AdornBillboarder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AdornBillboarder.h; sourceTree = "<group>"; };
|
||||
EAE03F42128E04230090F9AF /* FrameRateManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FrameRateManager.h; sourceTree = "<group>"; };
|
||||
EAE03F43128E04230090F9AF /* GfxPart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GfxPart.h; sourceTree = "<group>"; };
|
||||
EAE03F44128E04230090F9AF /* IAdornable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IAdornable.h; sourceTree = "<group>"; };
|
||||
EAE03F45128E04230090F9AF /* IAdornableCollector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IAdornableCollector.h; sourceTree = "<group>"; };
|
||||
EAE03F47128E04230090F9AF /* MeshGen.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MeshGen.h; sourceTree = "<group>"; };
|
||||
EAE03F48128E04230090F9AF /* Part.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Part.h; sourceTree = "<group>"; };
|
||||
EAE03F49128E04230090F9AF /* RenderCaps.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderCaps.h; sourceTree = "<group>"; };
|
||||
EAE03F4A128E04230090F9AF /* RenderSettings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderSettings.h; sourceTree = "<group>"; };
|
||||
EAE03F4B128E04230090F9AF /* RenderStats.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderStats.h; sourceTree = "<group>"; };
|
||||
EAE03F4C128E04230090F9AF /* TextureProxyBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextureProxyBase.h; sourceTree = "<group>"; };
|
||||
EAE03F4D128E04230090F9AF /* Type.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Type.h; sourceTree = "<group>"; };
|
||||
EAE03F4E128E04230090F9AF /* Typesetter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Typesetter.h; sourceTree = "<group>"; };
|
||||
EAE03F4F128E04230090F9AF /* ViewBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewBase.h; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
1F2845FF15E6FF2900120D64 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
D289987405E68DCB004EDB86 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
08FB7794FE84155DC02AAC07 /* GfxBase */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
08FB7795FE84155DC02AAC07 /* Source */,
|
||||
C6A0FF2B0290797F04C91782 /* Documentation */,
|
||||
1AB674ADFE9D54B511CA2CBB /* Products */,
|
||||
);
|
||||
name = GfxBase;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
08FB7795FE84155DC02AAC07 /* Source */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
42B2232C19257293008B73C5 /* PartIdentifier.cpp */,
|
||||
9FCE7C4A1905C70A00D70B41 /* ViewportBillboarder.cpp */,
|
||||
9FCE7C471905C6F400D70B41 /* AdornBillboarder2D.cpp */,
|
||||
9F0477381836CCA800DFD102 /* AdornSurface.cpp */,
|
||||
9F9F9480181AF7AC009278A0 /* Adorn.cpp */,
|
||||
9F402FF315EC425000203B92 /* FileMeshData.cpp */,
|
||||
EAE03F3C128E04230090F9AF /* include */,
|
||||
EAE03F2A128E04130090F9AF /* AdornBillboarder.cpp */,
|
||||
EAE03F2B128E04130090F9AF /* FrameRateManager.cpp */,
|
||||
EAE03F2C128E04130090F9AF /* GfxPart.cpp */,
|
||||
EAE03F2D128E04130090F9AF /* IAdornableCollector.cpp */,
|
||||
EAE03F2E128E04130090F9AF /* RenderCaps.cpp */,
|
||||
EAE03F2F128E04130090F9AF /* RenderSettings.cpp */,
|
||||
EAE03F30128E04130090F9AF /* RenderStats.cpp */,
|
||||
EAE03F32128E04130090F9AF /* ViewBase.cpp */,
|
||||
);
|
||||
name = Source;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1AB674ADFE9D54B511CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D2AAC046055464E500DB518D /* libGfxBase.a */,
|
||||
1F28460315E6FF2900120D64 /* libGfxBaseiOS.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
C6A0FF2B0290797F04C91782 /* Documentation */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
name = Documentation;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EAE03F3C128E04230090F9AF /* include */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
EAE03F3D128E04230090F9AF /* GfxBase */,
|
||||
);
|
||||
path = include;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
EAE03F3D128E04230090F9AF /* GfxBase */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9FCE7C501905C72800D70B41 /* ViewportBillboarder.h */,
|
||||
9FCE7C4D1905C71B00D70B41 /* AdornBillboarder2D.h */,
|
||||
9F402FF715EC426F00203B92 /* FileMeshData.h */,
|
||||
1F2F04B512C287D900744D22 /* Image.h */,
|
||||
9F04773B1836CCD100DFD102 /* AdornSurface.h */,
|
||||
1F2F04B612C287D900744D22 /* MeshFileStructs.h */,
|
||||
EAE03F3E128E04230090F9AF /* Adorn.h */,
|
||||
EAE03F3F128E04230090F9AF /* AdornBillboarder.h */,
|
||||
EAE03F42128E04230090F9AF /* FrameRateManager.h */,
|
||||
EAE03F43128E04230090F9AF /* GfxPart.h */,
|
||||
EAE03F44128E04230090F9AF /* IAdornable.h */,
|
||||
EAE03F45128E04230090F9AF /* IAdornableCollector.h */,
|
||||
EAE03F47128E04230090F9AF /* MeshGen.h */,
|
||||
EAE03F48128E04230090F9AF /* Part.h */,
|
||||
EAE03F49128E04230090F9AF /* RenderCaps.h */,
|
||||
EAE03F4A128E04230090F9AF /* RenderSettings.h */,
|
||||
EAE03F4B128E04230090F9AF /* RenderStats.h */,
|
||||
EAE03F4C128E04230090F9AF /* TextureProxyBase.h */,
|
||||
EAE03F4D128E04230090F9AF /* Type.h */,
|
||||
EAE03F4E128E04230090F9AF /* Typesetter.h */,
|
||||
EAE03F4F128E04230090F9AF /* ViewBase.h */,
|
||||
);
|
||||
path = GfxBase;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
1F2845E215E6FF2900120D64 /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1F2845E315E6FF2900120D64 /* Adorn.h in Headers */,
|
||||
1F2845E415E6FF2900120D64 /* AdornBillboarder.h in Headers */,
|
||||
1F2845E615E6FF2900120D64 /* FrameRateManager.h in Headers */,
|
||||
1F2845E715E6FF2900120D64 /* GfxPart.h in Headers */,
|
||||
1F2845E815E6FF2900120D64 /* IAdornable.h in Headers */,
|
||||
1F2845E915E6FF2900120D64 /* IAdornableCollector.h in Headers */,
|
||||
9FCE7C521905C72800D70B41 /* ViewportBillboarder.h in Headers */,
|
||||
1F2845EA15E6FF2900120D64 /* (null) in Headers */,
|
||||
1F2845EB15E6FF2900120D64 /* MeshGen.h in Headers */,
|
||||
1F2845EC15E6FF2900120D64 /* Part.h in Headers */,
|
||||
1F2845ED15E6FF2900120D64 /* RenderCaps.h in Headers */,
|
||||
1F2845EE15E6FF2900120D64 /* RenderSettings.h in Headers */,
|
||||
1F2845EF15E6FF2900120D64 /* RenderStats.h in Headers */,
|
||||
9F04773D1836CCD100DFD102 /* AdornSurface.h in Headers */,
|
||||
1F2845F015E6FF2900120D64 /* TextureProxyBase.h in Headers */,
|
||||
1F2845F115E6FF2900120D64 /* Type.h in Headers */,
|
||||
1F2845F215E6FF2900120D64 /* Typesetter.h in Headers */,
|
||||
1F2845F315E6FF2900120D64 /* ViewBase.h in Headers */,
|
||||
1F2845F415E6FF2900120D64 /* Image.h in Headers */,
|
||||
9FCE7C4F1905C71B00D70B41 /* AdornBillboarder2D.h in Headers */,
|
||||
1F2845F515E6FF2900120D64 /* MeshFileStructs.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
D2AAC043055464E500DB518D /* Headers */ = {
|
||||
isa = PBXHeadersBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
EAE03F50128E04230090F9AF /* Adorn.h in Headers */,
|
||||
EAE03F51128E04230090F9AF /* AdornBillboarder.h in Headers */,
|
||||
EAE03F54128E04230090F9AF /* FrameRateManager.h in Headers */,
|
||||
EAE03F55128E04230090F9AF /* GfxPart.h in Headers */,
|
||||
EAE03F56128E04230090F9AF /* IAdornable.h in Headers */,
|
||||
EAE03F57128E04230090F9AF /* IAdornableCollector.h in Headers */,
|
||||
9FCE7C511905C72800D70B41 /* ViewportBillboarder.h in Headers */,
|
||||
EAE03F59128E04230090F9AF /* MeshGen.h in Headers */,
|
||||
EAE03F5A128E04230090F9AF /* Part.h in Headers */,
|
||||
EAE03F5B128E04230090F9AF /* RenderCaps.h in Headers */,
|
||||
EAE03F5C128E04230090F9AF /* RenderSettings.h in Headers */,
|
||||
EAE03F5D128E04230090F9AF /* RenderStats.h in Headers */,
|
||||
EAE03F5E128E04230090F9AF /* TextureProxyBase.h in Headers */,
|
||||
9F04773C1836CCD100DFD102 /* AdornSurface.h in Headers */,
|
||||
EAE03F5F128E04230090F9AF /* Type.h in Headers */,
|
||||
EAE03F60128E04230090F9AF /* Typesetter.h in Headers */,
|
||||
EAE03F61128E04230090F9AF /* ViewBase.h in Headers */,
|
||||
1F2F04B712C287D900744D22 /* Image.h in Headers */,
|
||||
1F2F04B812C287D900744D22 /* MeshFileStructs.h in Headers */,
|
||||
9FCE7C4E1905C71B00D70B41 /* AdornBillboarder2D.h in Headers */,
|
||||
9F402FF815EC426F00203B92 /* FileMeshData.h in Headers */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXHeadersBuildPhase section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
1F2845E115E6FF2900120D64 /* GfxBase iOS */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1F28460015E6FF2900120D64 /* Build configuration list for PBXNativeTarget "GfxBase iOS" */;
|
||||
buildPhases = (
|
||||
1F2845E215E6FF2900120D64 /* Headers */,
|
||||
1F2845F615E6FF2900120D64 /* Sources */,
|
||||
1F2845FF15E6FF2900120D64 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = "GfxBase iOS";
|
||||
productName = GfxBase;
|
||||
productReference = 1F28460315E6FF2900120D64 /* libGfxBaseiOS.a */;
|
||||
productType = "com.apple.product-type.library.static";
|
||||
};
|
||||
D2AAC045055464E500DB518D /* GfxBase */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1DEB91EB08733DB70010E9CD /* Build configuration list for PBXNativeTarget "GfxBase" */;
|
||||
buildPhases = (
|
||||
D2AAC043055464E500DB518D /* Headers */,
|
||||
D2AAC044055464E500DB518D /* Sources */,
|
||||
D289987405E68DCB004EDB86 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = GfxBase;
|
||||
productName = GfxBase;
|
||||
productReference = D2AAC046055464E500DB518D /* libGfxBase.a */;
|
||||
productType = "com.apple.product-type.library.static";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
08FB7793FE84155DC02AAC07 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
};
|
||||
buildConfigurationList = 1DEB91EF08733DB70010E9CD /* Build configuration list for PBXProject "GfxBase" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
English,
|
||||
Japanese,
|
||||
French,
|
||||
German,
|
||||
);
|
||||
mainGroup = 08FB7794FE84155DC02AAC07 /* GfxBase */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
D2AAC045055464E500DB518D /* GfxBase */,
|
||||
1F2845E115E6FF2900120D64 /* GfxBase iOS */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
1F2845F615E6FF2900120D64 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
9F89B4DF161CBEE90096380E /* FileMeshData.cpp in Sources */,
|
||||
9F04773A1836CCA800DFD102 /* AdornSurface.cpp in Sources */,
|
||||
1F2845F715E6FF2900120D64 /* AdornBillboarder.cpp in Sources */,
|
||||
42B2232E19257293008B73C5 /* PartIdentifier.cpp in Sources */,
|
||||
9F9F9482181AF7AC009278A0 /* Adorn.cpp in Sources */,
|
||||
9FCE7C4C1905C70A00D70B41 /* ViewportBillboarder.cpp in Sources */,
|
||||
1F2845F815E6FF2900120D64 /* FrameRateManager.cpp in Sources */,
|
||||
1F2845F915E6FF2900120D64 /* GfxPart.cpp in Sources */,
|
||||
1F2845FA15E6FF2900120D64 /* IAdornableCollector.cpp in Sources */,
|
||||
9FCE7C491905C6F400D70B41 /* AdornBillboarder2D.cpp in Sources */,
|
||||
1F2845FB15E6FF2900120D64 /* RenderCaps.cpp in Sources */,
|
||||
1F2845FC15E6FF2900120D64 /* RenderSettings.cpp in Sources */,
|
||||
1F2845FD15E6FF2900120D64 /* RenderStats.cpp in Sources */,
|
||||
1F2845FE15E6FF2900120D64 /* ViewBase.cpp in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
D2AAC044055464E500DB518D /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
EAE03F33128E04130090F9AF /* AdornBillboarder.cpp in Sources */,
|
||||
9F0477391836CCA800DFD102 /* AdornSurface.cpp in Sources */,
|
||||
EAE03F34128E04130090F9AF /* FrameRateManager.cpp in Sources */,
|
||||
42B2232D19257293008B73C5 /* PartIdentifier.cpp in Sources */,
|
||||
9F9F9481181AF7AC009278A0 /* Adorn.cpp in Sources */,
|
||||
9FCE7C4B1905C70A00D70B41 /* ViewportBillboarder.cpp in Sources */,
|
||||
EAE03F35128E04130090F9AF /* GfxPart.cpp in Sources */,
|
||||
EAE03F36128E04130090F9AF /* IAdornableCollector.cpp in Sources */,
|
||||
EAE03F37128E04130090F9AF /* RenderCaps.cpp in Sources */,
|
||||
9FCE7C481905C6F400D70B41 /* AdornBillboarder2D.cpp in Sources */,
|
||||
EAE03F38128E04130090F9AF /* RenderSettings.cpp in Sources */,
|
||||
EAE03F39128E04130090F9AF /* RenderStats.cpp in Sources */,
|
||||
EAE03F3B128E04130090F9AF /* ViewBase.cpp in Sources */,
|
||||
9F402FF415EC425000203B92 /* FileMeshData.cpp in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
1DEB91EC08733DB70010E9CD /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)";
|
||||
HEADER_SEARCH_PATHS = (
|
||||
../../Log/include,
|
||||
include,
|
||||
../../App/include,
|
||||
../../Base/include,
|
||||
../AppDraw/include,
|
||||
../G3D/include,
|
||||
../RBXG3D/include,
|
||||
"$(CONTRIB_PATH)/boost_1_55_0/include",
|
||||
../../App.BulletPhysics,
|
||||
"$(CONTRIB_PATH)/SDL2.0.4/include",
|
||||
);
|
||||
INSTALL_PATH = /usr/local/lib;
|
||||
PRODUCT_NAME = GfxBase;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1DEB91ED08733DB70010E9CD /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)";
|
||||
HEADER_SEARCH_PATHS = (
|
||||
../../Log/include,
|
||||
include,
|
||||
../../App/include,
|
||||
../../Base/include,
|
||||
../AppDraw/include,
|
||||
../G3D/include,
|
||||
../RBXG3D/include,
|
||||
"$(CONTRIB_PATH)/boost_1_55_0/include",
|
||||
../../App.BulletPhysics,
|
||||
"$(CONTRIB_PATH)/SDL2.0.4/include",
|
||||
);
|
||||
INSTALL_PATH = /usr/local/lib;
|
||||
PRODUCT_NAME = GfxBase;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
1DEB91F008733DB70010E9CD /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = i386;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEPLOYMENT_POSTPROCESSING = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"_DEBUG=1",
|
||||
"DEBUG=1",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
include,
|
||||
../../App/include,
|
||||
../../Base/include,
|
||||
../AppDraw/include,
|
||||
../G3D/include,
|
||||
../RBXG3D/include,
|
||||
"$(CONTRIB_PATH)/boost_1_55_0/include",
|
||||
../../App.BulletPhysics,
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_CPLUSPLUSFLAGS = "-v";
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.8;
|
||||
STRIP_INSTALLED_PRODUCT = NO;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1DEB91F108733DB70010E9CD /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = i386;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEPLOYMENT_POSTPROCESSING = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "NDEBUG=1";
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
include,
|
||||
../../App/include,
|
||||
../../Base/include,
|
||||
../AppDraw/include,
|
||||
../G3D/include,
|
||||
../RBXG3D/include,
|
||||
"$(CONTRIB_PATH)/boost_1_55_0/include",
|
||||
../../App.BulletPhysics,
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.8;
|
||||
STRIP_INSTALLED_PRODUCT = NO;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
1F28460115E6FF2900120D64 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD)";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_FIX_AND_CONTINUE = YES;
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"$(inherited)",
|
||||
RBX_PLATFORM_IOS,
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
../../Log/include,
|
||||
include,
|
||||
../../App/include,
|
||||
../../Base/include,
|
||||
../AppDraw/include,
|
||||
../G3D/include,
|
||||
../RBXG3D/include,
|
||||
"$(CONTRIB_PATH)/boost_1_55_0/include",
|
||||
../../App.BulletPhysics,
|
||||
"$(CONTRIB_PATH)/SDL2.0.4/include",
|
||||
);
|
||||
INSTALL_PATH = /usr/local/lib;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 5.1.1;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_CPLUSPLUSFLAGS = "-v";
|
||||
PRODUCT_NAME = GfxBaseiOS;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
VALID_ARCHS = "armv7 arm64";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1F28460215E6FF2900120D64 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD)";
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_OPTIMIZATION_LEVEL = 2;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"$(inherited)",
|
||||
RBX_PLATFORM_IOS,
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
../../Log/include,
|
||||
include,
|
||||
../../App/include,
|
||||
../../Base/include,
|
||||
../AppDraw/include,
|
||||
../G3D/include,
|
||||
../RBXG3D/include,
|
||||
"$(CONTRIB_PATH)/boost_1_55_0/include",
|
||||
../../App.BulletPhysics,
|
||||
"$(CONTRIB_PATH)/SDL2.0.4/include",
|
||||
);
|
||||
INSTALL_PATH = /usr/local/lib;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 5.1.1;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_CPLUSPLUSFLAGS = "-v";
|
||||
PRODUCT_NAME = GfxBaseiOS;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
VALID_ARCHS = "armv7 arm64";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
D0D04FEB1C76130D00CDE19D /* NoOpt */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = i386;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEPLOYMENT_POSTPROCESSING = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"NDEBUG=1",
|
||||
"_NOOPT=1",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
include,
|
||||
../../App/include,
|
||||
../../Base/include,
|
||||
../AppDraw/include,
|
||||
../G3D/include,
|
||||
../RBXG3D/include,
|
||||
"$(CONTRIB_PATH)/boost_1_55_0/include",
|
||||
../../App.BulletPhysics,
|
||||
);
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = macosx10.8;
|
||||
STRIP_INSTALLED_PRODUCT = NO;
|
||||
};
|
||||
name = NoOpt;
|
||||
};
|
||||
D0D04FEC1C76130D00CDE19D /* NoOpt */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "$(inherited)";
|
||||
HEADER_SEARCH_PATHS = (
|
||||
../../Log/include,
|
||||
include,
|
||||
../../App/include,
|
||||
../../Base/include,
|
||||
../AppDraw/include,
|
||||
../G3D/include,
|
||||
../RBXG3D/include,
|
||||
"$(CONTRIB_PATH)/boost_1_55_0/include",
|
||||
../../App.BulletPhysics,
|
||||
"$(CONTRIB_PATH)/SDL2.0.4/include",
|
||||
);
|
||||
INSTALL_PATH = /usr/local/lib;
|
||||
PRODUCT_NAME = GfxBase;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = NoOpt;
|
||||
};
|
||||
D0D04FED1C76130D00CDE19D /* NoOpt */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD)";
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
|
||||
GCC_MODEL_TUNING = G5;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"$(inherited)",
|
||||
RBX_PLATFORM_IOS,
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
../../Log/include,
|
||||
include,
|
||||
../../App/include,
|
||||
../../Base/include,
|
||||
../AppDraw/include,
|
||||
../G3D/include,
|
||||
../RBXG3D/include,
|
||||
"$(CONTRIB_PATH)/boost_1_55_0/include",
|
||||
../../App.BulletPhysics,
|
||||
"$(CONTRIB_PATH)/SDL2.0.4/include",
|
||||
);
|
||||
INSTALL_PATH = /usr/local/lib;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 5.1.1;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_CPLUSPLUSFLAGS = "-v";
|
||||
PRODUCT_NAME = GfxBaseiOS;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = YES;
|
||||
VALID_ARCHS = "armv7 arm64";
|
||||
};
|
||||
name = NoOpt;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
1DEB91EB08733DB70010E9CD /* Build configuration list for PBXNativeTarget "GfxBase" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1DEB91EC08733DB70010E9CD /* Debug */,
|
||||
1DEB91ED08733DB70010E9CD /* Release */,
|
||||
D0D04FEC1C76130D00CDE19D /* NoOpt */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
1DEB91EF08733DB70010E9CD /* Build configuration list for PBXProject "GfxBase" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1DEB91F008733DB70010E9CD /* Debug */,
|
||||
1DEB91F108733DB70010E9CD /* Release */,
|
||||
D0D04FEB1C76130D00CDE19D /* NoOpt */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
1F28460015E6FF2900120D64 /* Build configuration list for PBXNativeTarget "GfxBase iOS" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1F28460115E6FF2900120D64 /* Debug */,
|
||||
1F28460215E6FF2900120D64 /* Release */,
|
||||
D0D04FED1C76130D00CDE19D /* NoOpt */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
|
||||
}
|
||||
@@ -0,0 +1,313 @@
|
||||
#include "GfxBase/GfxPart.h"
|
||||
|
||||
#include "v8datamodel/DataModelMesh.h"
|
||||
#include "v8datamodel/Decal.h"
|
||||
#include "v8datamodel/Workspace.h"
|
||||
#include "v8datamodel/PartInstance.h"
|
||||
#include "v8datamodel/BasicPartInstance.h"
|
||||
#include "v8datamodel/ExtrudedPartInstance.h"
|
||||
#include "v8datamodel/PrismInstance.h"
|
||||
#include "v8datamodel/PyramidInstance.h"
|
||||
#include "v8datamodel/FileMesh.h"
|
||||
#include "v8datamodel/SpecialMesh.h"
|
||||
#include "v8datamodel/BlockMesh.h"
|
||||
#include "v8datamodel/CylinderMesh.h"
|
||||
#include "v8datamodel/PartOperation.h"
|
||||
#include "humanoid/Humanoid.h"
|
||||
|
||||
#include "v8world/Primitive.h"
|
||||
#include "v8datamodel/PartCookie.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
void updateCookie(RBX::PartInstance* part)
|
||||
{
|
||||
if (part)
|
||||
part->setCookie(RBX::PartCookie::compute(part));
|
||||
}
|
||||
}
|
||||
|
||||
namespace RBX
|
||||
{
|
||||
GfxBinding::~GfxBinding()
|
||||
{
|
||||
RBXASSERT(!isBound());
|
||||
}
|
||||
|
||||
// connects property change event listeners.
|
||||
void GfxBinding::bindProperties(const shared_ptr<RBX::PartInstance>& part)
|
||||
{
|
||||
updateCookie(part.get());
|
||||
connections.push_back(part->combinedSignal.connect(boost::bind(&GfxPart::onCombinedSignal, this, _1, _2)));
|
||||
part->visitChildren(boost::bind(&GfxPart::onChildAdded, this, _1));
|
||||
}
|
||||
|
||||
|
||||
void GfxBinding::zombify()
|
||||
{
|
||||
unbind();
|
||||
|
||||
invalidateEntity();
|
||||
}
|
||||
|
||||
void GfxBinding::unbind()
|
||||
{
|
||||
if(partInstance)
|
||||
{
|
||||
partInstance->setGfxPart(NULL);
|
||||
}
|
||||
|
||||
for(size_t i = 0; i < connections.size(); ++i)
|
||||
{
|
||||
connections[i].disconnect();
|
||||
}
|
||||
connections.clear();
|
||||
}
|
||||
|
||||
|
||||
bool GfxBinding::isBound()
|
||||
{
|
||||
return !connections.empty();
|
||||
}
|
||||
|
||||
void GfxBinding::onChildAdded(const shared_ptr<Instance>& child)
|
||||
{
|
||||
if (DataModelMesh* specShape = Instance::fastDynamicCast<DataModelMesh>(child.get()))
|
||||
{
|
||||
connections.push_back(specShape->propertyChangedSignal.connect(boost::bind(&GfxPart::onSpecialShapeChangedEx, this)));
|
||||
onSpecialShapeChangedEx();
|
||||
}
|
||||
else if (DecalTexture* tex = Instance::fastDynamicCast<DecalTexture>(child.get()))
|
||||
{
|
||||
connections.push_back(tex->propertyChangedSignal.connect(boost::bind(&GfxPart::onTexturePropertyChanged, this, _1)));
|
||||
updateCookie(partInstance.get());
|
||||
invalidateEntity();
|
||||
}
|
||||
else if (Decal* decal = Instance::fastDynamicCast<Decal>(child.get()))
|
||||
{
|
||||
connections.push_back(decal->propertyChangedSignal.connect(boost::bind(&GfxPart::onDecalPropertyChanged, this, _1)));
|
||||
updateCookie(partInstance.get());
|
||||
invalidateEntity();
|
||||
}
|
||||
}
|
||||
|
||||
void GfxBinding::onChildRemoved(const shared_ptr<Instance>& child)
|
||||
{
|
||||
if (Instance::fastDynamicCast<DataModelMesh>(child.get()))
|
||||
{
|
||||
// todo: need a disconnect for propertyChangedEvents...
|
||||
onSpecialShapeChangedEx();
|
||||
}
|
||||
else if (Instance::fastDynamicCast<DecalTexture>(child.get()))
|
||||
{
|
||||
// todo: need a disconnect for propertyChangedEvents...
|
||||
updateCookie(partInstance.get());
|
||||
invalidateEntity();
|
||||
}
|
||||
else if (Instance::fastDynamicCast<Decal>(child.get()))
|
||||
{
|
||||
// todo: need a disconnect for propertyChangedEvents...
|
||||
updateCookie(partInstance.get());
|
||||
invalidateEntity();
|
||||
}
|
||||
}
|
||||
|
||||
bool GfxBinding::isInWorkspace(RBX::Instance* part)
|
||||
{
|
||||
Instance* ws = Workspace::findWorkspace(part);
|
||||
return ws && part->isDescendantOf(ws);
|
||||
}
|
||||
|
||||
void GfxBinding::onAncestorChanged(const shared_ptr<Instance>& ancestor)
|
||||
{
|
||||
// Remove me from the scene if I am being removed from the Workspace
|
||||
if (partInstance && !isInWorkspace(partInstance.get()))
|
||||
{
|
||||
// will cause a delete on next updateEntity()
|
||||
zombify();
|
||||
}
|
||||
else
|
||||
{
|
||||
// part was removed from its ancestor (potentially deleted, or moved to a different cluster)
|
||||
updateCookie(partInstance.get());
|
||||
invalidateEntity();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void GfxBinding::onSpecialShapeChangedEx()
|
||||
{
|
||||
updateCookie(partInstance.get());
|
||||
onSpecialShapeChanged();
|
||||
}
|
||||
|
||||
|
||||
void GfxBinding::onPropertyChanged(const Reflection::PropertyDescriptor* descriptor)
|
||||
{
|
||||
if (*descriptor==PartInstance::prop_CFrame)
|
||||
{
|
||||
onCoordinateFrameChanged();
|
||||
}
|
||||
else if (*descriptor==PartInstance::prop_Anchored)
|
||||
{
|
||||
//partInstance->getGfxPart()->onClumpChanged();
|
||||
}
|
||||
else if (*descriptor==PartInstance::prop_Size)
|
||||
{
|
||||
onSizeChanged();
|
||||
}
|
||||
else if (*descriptor==PartInstance::prop_Transparency || *descriptor==PartInstance::prop_LocalTransparencyModifier) {
|
||||
onTransparencyChanged();
|
||||
}
|
||||
else if (*descriptor==PartInstance::prop_renderMaterial) {
|
||||
invalidateEntity();
|
||||
}
|
||||
else if (*descriptor==PartInstance::prop_Reflectance) {
|
||||
invalidateEntity();
|
||||
}
|
||||
else if (*descriptor==BasicPartInstance::prop_shapeXml) {
|
||||
invalidateEntity();
|
||||
}
|
||||
else if (*descriptor==ExtrudedPartInstance::prop_styleXml) {
|
||||
invalidateEntity();
|
||||
}
|
||||
#ifdef _PRISM_PYRAMID_
|
||||
else if (*descriptor==PrismInstance::prop_sidesXML) {
|
||||
invalidateEntity();
|
||||
}
|
||||
//else if (*descriptor==PrismInstance::prop_slices) {
|
||||
// invalidateEntity();
|
||||
//}
|
||||
else if (*descriptor==PyramidInstance::prop_sidesXML) {
|
||||
invalidateEntity();
|
||||
}
|
||||
//else if (*descriptor==PyramidInstance::prop_slices) {
|
||||
// invalidateEntity();
|
||||
//}
|
||||
#endif //_PRISM_PYRAMID_
|
||||
else if (Surface::isSurfaceDescriptor(*descriptor)) {
|
||||
invalidateEntity();
|
||||
}
|
||||
else if(*descriptor==PartInstance::prop_Color)
|
||||
{
|
||||
invalidateEntity();
|
||||
}
|
||||
else if (*descriptor == PartOperation::desc_MeshData)
|
||||
{
|
||||
invalidateEntity();
|
||||
}
|
||||
else if (*descriptor == PartOperation::desc_UsePartColor)
|
||||
{
|
||||
invalidateEntity();
|
||||
}
|
||||
else if (*descriptor == PartOperation::desc_FormFactor)
|
||||
{
|
||||
invalidateEntity();
|
||||
}
|
||||
}
|
||||
|
||||
void GfxBinding::onTexturePropertyChanged(const Reflection::PropertyDescriptor* descriptor)
|
||||
{
|
||||
if (*descriptor==FaceInstance::prop_Face)
|
||||
{
|
||||
updateCookie(partInstance.get());
|
||||
invalidateEntity();
|
||||
}
|
||||
else if (*descriptor==DecalTexture::prop_Texture)
|
||||
{
|
||||
updateCookie(partInstance.get());
|
||||
invalidateEntity();
|
||||
}
|
||||
else if (*descriptor==DecalTexture::prop_Specular)
|
||||
invalidateEntity();
|
||||
else if (*descriptor==DecalTexture::prop_Shiny)
|
||||
invalidateEntity();
|
||||
else if (*descriptor==DecalTexture::prop_StudsPerTileU)
|
||||
invalidateEntity();
|
||||
else if (*descriptor==DecalTexture::prop_StudsPerTileV)
|
||||
invalidateEntity();
|
||||
else if (*descriptor==DecalTexture::prop_Transparency || *descriptor==Decal::prop_LocalTransparencyModifier )
|
||||
invalidateEntity();
|
||||
}
|
||||
|
||||
void GfxBinding::onDecalPropertyChanged(const Reflection::PropertyDescriptor* descriptor)
|
||||
{
|
||||
if (*descriptor==FaceInstance::prop_Face)
|
||||
{
|
||||
updateCookie(partInstance.get());
|
||||
invalidateEntity();
|
||||
}
|
||||
else if (*descriptor==RBX::Decal::prop_Texture)
|
||||
{
|
||||
updateCookie(partInstance.get());
|
||||
invalidateEntity();
|
||||
}
|
||||
else if (*descriptor==RBX::Decal::prop_Specular)
|
||||
invalidateEntity();
|
||||
else if (*descriptor==RBX::Decal::prop_Shiny)
|
||||
invalidateEntity();
|
||||
else if (*descriptor==RBX::Decal::prop_Transparency || *descriptor==Decal::prop_LocalTransparencyModifier)
|
||||
invalidateEntity();
|
||||
}
|
||||
|
||||
void GfxBinding::onCombinedSignal(Instance::CombinedSignalType type, const Instance::ICombinedSignalData* data)
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case Instance::OUTFIT_CHANGED:
|
||||
onOutfitChanged();
|
||||
break;
|
||||
case Instance::HUMANOID_CHANGED:
|
||||
onHumanoidChanged();
|
||||
break;
|
||||
case Instance::CHILD_ADDED:
|
||||
onChildAdded(boost::polymorphic_downcast<const Instance::ChildAddedSignalData*>(data)->child);
|
||||
break;
|
||||
case Instance::CHILD_REMOVED:
|
||||
onChildRemoved(boost::polymorphic_downcast<const Instance::ChildRemovedSignalData*>(data)->child);
|
||||
break;
|
||||
case Instance::ANCESTRY_CHANGED:
|
||||
onAncestorChanged(boost::polymorphic_downcast<const Instance::AncestryChangedSignalData*>(data)->child);
|
||||
break;
|
||||
case Instance::PROPERTY_CHANGED:
|
||||
onPropertyChanged(boost::polymorphic_downcast<const Instance::PropertyChangedSignalData*>(data)->propertyDescriptor);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void GfxBinding::onOutfitChanged()
|
||||
{
|
||||
invalidateEntity();
|
||||
}
|
||||
|
||||
void GfxBinding::onHumanoidChanged()
|
||||
{
|
||||
updateCookie(partInstance.get());
|
||||
invalidateEntity();
|
||||
}
|
||||
|
||||
void GfxBinding::cleanupStaleConnections()
|
||||
{
|
||||
for(size_t i = connections.size(); i != 0; --i)
|
||||
{
|
||||
if(!connections[i-1].connected())
|
||||
{
|
||||
connections.erase(connections.begin()+ (i -1)); // remove dead connection.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*override*/ void GfxAttachment::unbind()
|
||||
{
|
||||
// nb: specifically ignore baseclass impl. we don't want to call setGfxPart.
|
||||
|
||||
for(size_t i = 0; i < connections.size(); ++i)
|
||||
{
|
||||
connections[i].disconnect();
|
||||
}
|
||||
connections.clear();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,169 @@
|
||||
/* Copyright 2003-2005 ROBLOX Corporation, All Rights Reserved */
|
||||
|
||||
#include "GfxBase/IAdornableCollector.h"
|
||||
#include "v8datamodel/Camera.h"
|
||||
#include "rbx/Debug.h"
|
||||
#include "FastLog.h"
|
||||
|
||||
LOGGROUP(AdornableLifetime);
|
||||
DYNAMIC_FASTFLAGVARIABLE(DontReorderScreenGuisWhenDescendantRemoving, false)
|
||||
|
||||
namespace RBX {
|
||||
|
||||
|
||||
IAdornable::~IAdornable()
|
||||
{
|
||||
FASTLOG1(FLog::AdornableLifetime, "Destroying adornable %p", this);
|
||||
|
||||
if (bucket)
|
||||
bucket->onRenderableDescendantRemoving(this);
|
||||
}
|
||||
|
||||
void IAdornable::shouldRenderSetDirty()
|
||||
{
|
||||
if (bucket) {
|
||||
bucket->recomputeShouldRender(this);
|
||||
}
|
||||
}
|
||||
|
||||
float IAdornable::calculateDepth(const Camera* camera) const
|
||||
{
|
||||
return camera->dot(render3dSortedPosition());
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
||||
IAdornableCollector::~IAdornableCollector()
|
||||
{
|
||||
FASTLOG1(FLog::AdornableLifetime, "Adornable Collector %p deleted", this);
|
||||
FASTLOG3(FLog::AdornableLifetime, "Renderables 2D: %u 3D: %u 3DSorted: %u", renderable2ds.size(), renderable3ds.size(), renderable3dSorteds.size());
|
||||
|
||||
RBXASSERT(renderable2ds.size() == 0);
|
||||
RBXASSERT(renderable3ds.size() == 0);
|
||||
RBXASSERT(renderable3dSorteds.size() == 0);
|
||||
}
|
||||
|
||||
void IAdornableCollector::recomputeShouldRender(IAdornable* iR)
|
||||
{
|
||||
RBXASSERT(iR->bucket == this);
|
||||
|
||||
if (iR->shouldRender2d()) {
|
||||
if (!renderable2ds.fastContains(iR)) {
|
||||
FASTLOG2(FLog::AdornableLifetime, "Collector %p: Adding 2D adorn %p", this, iR);
|
||||
renderable2ds.fastAppend(iR);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (renderable2ds.fastContains(iR)) {
|
||||
FASTLOG2(FLog::AdornableLifetime, "Collector %p: Removing 2D adorn %p", this, iR);
|
||||
renderable2ds.fastRemove(iR);
|
||||
}
|
||||
}
|
||||
|
||||
if (iR->shouldRender3dAdorn()) {
|
||||
if (!renderable3ds.fastContains(iR)) {
|
||||
FASTLOG2(FLog::AdornableLifetime, "Collector %p: Adding 3D adorn %p", this, iR);
|
||||
renderable3ds.fastAppend(iR);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (renderable3ds.fastContains(iR)) {
|
||||
FASTLOG2(FLog::AdornableLifetime, "Collector %p: Removing 3D adorn %p", this, iR);
|
||||
renderable3ds.fastRemove(iR);
|
||||
}
|
||||
}
|
||||
|
||||
if (iR->shouldRender3dSortedAdorn()) {
|
||||
if (!renderable3dSorteds.fastContains(iR)) {
|
||||
FASTLOG2(FLog::AdornableLifetime, "Collector %p: Adding 3DSort adorn %p", this, iR);
|
||||
renderable3dSorteds.fastAppend(iR);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (renderable3dSorteds.fastContains(iR)) {
|
||||
FASTLOG2(FLog::AdornableLifetime, "Collector %p: Removing 3DSort adorn %p", this, iR);
|
||||
renderable3dSorteds.fastRemove(iR);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void IAdornableCollector::onRenderableDescendantAdded(IAdornable* iR)
|
||||
{
|
||||
RBXASSERT(iR->index2d == -1);
|
||||
RBXASSERT(iR->index3d == -1);
|
||||
RBXASSERT(iR->index3dSorted == -1);
|
||||
RBXASSERT(iR->bucket == NULL);
|
||||
|
||||
iR->bucket = this;
|
||||
|
||||
recomputeShouldRender(iR);
|
||||
}
|
||||
|
||||
|
||||
void IAdornableCollector::onRenderableDescendantRemoving(IAdornable* iR)
|
||||
{
|
||||
RBXASSERT(iR->bucket == this);
|
||||
|
||||
if (renderable2ds.fastContains(iR)) {
|
||||
FASTLOG2(FLog::AdornableLifetime, "Collector %p: Removing 2D adorn %p", this, iR);
|
||||
if (DFFlag::DontReorderScreenGuisWhenDescendantRemoving)
|
||||
{
|
||||
renderable2ds.remove(iR);
|
||||
}
|
||||
else
|
||||
{
|
||||
renderable2ds.fastRemove(iR);
|
||||
}
|
||||
}
|
||||
|
||||
if (renderable3ds.fastContains(iR)) {
|
||||
FASTLOG2(FLog::AdornableLifetime, "Collector %p: Removing 3D adorn %p", this, iR);
|
||||
renderable3ds.fastRemove(iR);
|
||||
}
|
||||
|
||||
if (renderable3dSorteds.fastContains(iR)) {
|
||||
FASTLOG2(FLog::AdornableLifetime, "Collector %p: Removing 3DSort adorn %p", this, iR);
|
||||
renderable3dSorteds.fastRemove(iR);
|
||||
}
|
||||
|
||||
iR->bucket = NULL;
|
||||
|
||||
RBXASSERT(iR->index2d == -1);
|
||||
RBXASSERT(iR->index3d == -1);
|
||||
RBXASSERT(iR->index3dSorted == -1);
|
||||
}
|
||||
|
||||
|
||||
void IAdornableCollector::render2dItems(Adorn* adorn)
|
||||
{
|
||||
FASTLOG1(FLog::AdornRenderStats, "Rendering 2D Adorn Items, %u items", renderable2ds.size());
|
||||
for (int i = 0; i < renderable2ds.size(); ++i)
|
||||
{
|
||||
renderable2ds[i]->render2d(adorn);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void IAdornableCollector::render3dAdornItems(Adorn* adorn)
|
||||
{
|
||||
FASTLOG1(FLog::AdornRenderStats, "Rendering 3D Adorn Items, %u items", renderable3ds.size());
|
||||
for (int i = 0; i < renderable3ds.size(); ++i)
|
||||
{
|
||||
renderable3ds[i]->render3dAdorn(adorn);
|
||||
}
|
||||
}
|
||||
|
||||
void IAdornableCollector::append3dSortedAdornItems(std::vector<AdornableDepth>& destination, const Camera* camera) const
|
||||
{
|
||||
FASTLOG1(FLog::AdornRenderStats, "Rendering 3DSort Adorn Items, %u items", renderable3dSorteds.size());
|
||||
for (int i = 0; i < renderable3dSorteds.size(); ++i)
|
||||
{
|
||||
AdornableDepth ad = { renderable3dSorteds[i], renderable3dSorteds[i]->calculateDepth(camera) };
|
||||
|
||||
destination.push_back(ad);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace RBX
|
||||
@@ -0,0 +1,230 @@
|
||||
#include "GfxBase/PartIdentifier.h"
|
||||
|
||||
#include "Humanoid/Humanoid.h"
|
||||
|
||||
#include "v8datamodel/DataModelMesh.h"
|
||||
#include "v8datamodel/FileMesh.h"
|
||||
#include "v8datamodel/Decal.h"
|
||||
#include "v8datamodel/Workspace.h"
|
||||
#include "v8datamodel/PartInstance.h"
|
||||
#include "v8datamodel/CharacterAppearance.h"
|
||||
#include "v8datamodel/CharacterMesh.h"
|
||||
#include "v8datamodel/Accoutrement.h"
|
||||
|
||||
#include "v8datamodel/PartCookie.h"
|
||||
|
||||
namespace RBX
|
||||
{
|
||||
|
||||
static const Vector3 humanoidPartScales[HumanoidIdentifier::PartType_Count] =
|
||||
{
|
||||
Vector3(1,1,1), // PartType_Head
|
||||
Vector3(2,2,1), // PartType_Torso
|
||||
Vector3(1,2,1), // PartType_Arm
|
||||
Vector3(1,2,1), // PartType_Leg
|
||||
Vector3(1,1,1) // PartType_Unknown
|
||||
};
|
||||
|
||||
// if the part is a humanoid, get further details with this.
|
||||
HumanoidIdentifier::HumanoidIdentifier(RBX::Humanoid* humanoid)
|
||||
: humanoid(humanoid)
|
||||
, head(0)
|
||||
, leftLeg(0)
|
||||
, rightLeg(0)
|
||||
, leftArm(0)
|
||||
, rightArm(0)
|
||||
, torso(0)
|
||||
, leftLegMesh(0)
|
||||
, rightLegMesh(0)
|
||||
, leftArmMesh(0)
|
||||
, rightArmMesh(0)
|
||||
, torsoMesh(0)
|
||||
{
|
||||
if (!humanoid)
|
||||
return;
|
||||
|
||||
Instance* parent = humanoid->getParent();
|
||||
if (!parent)
|
||||
return;
|
||||
|
||||
const Instances& children = *parent->getChildren();
|
||||
|
||||
for (size_t i = 0; i < children.size(); ++i)
|
||||
{
|
||||
Instance* inst = children[i].get();
|
||||
|
||||
if (PartInstance* part = Instance::fastDynamicCast<PartInstance>(inst))
|
||||
{
|
||||
const std::string& name = part->getName();
|
||||
|
||||
if (name == "Head")
|
||||
head = part;
|
||||
else if (name == "Left Leg")
|
||||
leftLeg = part;
|
||||
else if (name == "Right Leg")
|
||||
rightLeg = part;
|
||||
else if (name == "Left Arm")
|
||||
leftArm = part;
|
||||
else if (name == "Right Arm")
|
||||
rightArm = part;
|
||||
else if (name == "Torso")
|
||||
torso = part;
|
||||
}
|
||||
else if (Clothing* c = Instance::fastDynamicCast<Clothing>(inst))
|
||||
{
|
||||
if (pants.isNull() && !c->outfit1.isNull())
|
||||
pants = c->outfit1;
|
||||
if (shirt.isNull() && !c->outfit2.isNull())
|
||||
shirt = c->outfit2;
|
||||
}
|
||||
else if (ShirtGraphic* s = Instance::fastDynamicCast<ShirtGraphic>(inst))
|
||||
{
|
||||
if (shirtGraphic.isNull() && !s->graphic.isNull())
|
||||
shirtGraphic = s->graphic;
|
||||
}
|
||||
else if (CharacterMesh* m = Instance::fastDynamicCast<CharacterMesh>(inst))
|
||||
{
|
||||
switch (m->getBodyPart())
|
||||
{
|
||||
case CharacterMesh::LEFTARM:
|
||||
leftArmMesh = m; break;
|
||||
case CharacterMesh::RIGHTARM:
|
||||
rightArmMesh = m; break;
|
||||
case CharacterMesh::LEFTLEG:
|
||||
leftLegMesh = m; break;
|
||||
case CharacterMesh::RIGHTLEG:
|
||||
rightLegMesh = m; break;
|
||||
case CharacterMesh::TORSO:
|
||||
torsoMesh = m; break;
|
||||
default:
|
||||
RBXASSERT(!"Unsupported body part type");
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (Accoutrement* a = Instance::fastDynamicCast<Accoutrement>(inst))
|
||||
{
|
||||
accoutrements.push_back(a);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CharacterMesh* HumanoidIdentifier::getRelevantMesh(RBX::PartInstance* bodyPart) const
|
||||
{
|
||||
if(bodyPart==leftLeg) return leftLegMesh;
|
||||
if(bodyPart==rightLeg) return rightLegMesh;
|
||||
if(bodyPart==leftArm) return leftArmMesh;
|
||||
if(bodyPart==rightArm) return rightArmMesh;
|
||||
if(bodyPart==torso) return torsoMesh;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
HumanoidIdentifier::BodyPartType HumanoidIdentifier::getBodyPartType(RBX::PartInstance* bodyPart) const
|
||||
{
|
||||
if(bodyPart==leftLeg || bodyPart==rightLeg) return PartType_Leg;
|
||||
if(bodyPart==leftArm || bodyPart==rightArm) return PartType_Arm;
|
||||
if(bodyPart==torso) return PartType_Torso;
|
||||
if(bodyPart==head) return PartType_Head;
|
||||
|
||||
return PartType_Unknown;
|
||||
}
|
||||
|
||||
Vector3 HumanoidIdentifier::getBodyPartScale(RBX::PartInstance* bodyPart) const
|
||||
{
|
||||
return humanoidPartScales[getBodyPartType(bodyPart)];
|
||||
}
|
||||
|
||||
bool HumanoidIdentifier::isPartHead(RBX::PartInstance* part) const
|
||||
{
|
||||
if (part != head)
|
||||
return false;
|
||||
|
||||
if (RBX::DataModelMesh* specialShape = RBX::getSpecialShape(part))
|
||||
{
|
||||
bool hasFace = (part->getCookie() & PartCookie::HAS_DECALS) != 0;
|
||||
|
||||
if (RBX::SpecialShape* shape = specialShape->fastDynamicCast<RBX::SpecialShape>())
|
||||
{
|
||||
// A real head or a file mesh - treat it as a head even if there is no face (might use a mesh texture)
|
||||
if (shape->getMeshType() == RBX::SpecialShape::HEAD_MESH || shape->getMeshType() == RBX::SpecialShape::FILE_MESH)
|
||||
return true;
|
||||
|
||||
// Probably one of the heads from the store - all character heads have faces
|
||||
if (shape->getMeshType() == RBX::SpecialShape::SPHERE_MESH)
|
||||
return hasFace;
|
||||
|
||||
// Unrecognized shape type - this is not a head from the store, so don't treat it as a head.
|
||||
return false;
|
||||
}
|
||||
else if (specialShape->fastDynamicCast<RBX::FileMesh>())
|
||||
{
|
||||
// A file mesh - treat it as a head even if there is no face (might use a mesh texture)
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Probably one of the heads from the store - all character heads have faces
|
||||
return hasFace;
|
||||
}
|
||||
}
|
||||
|
||||
// No special shape - should be a simple part
|
||||
return false;
|
||||
}
|
||||
|
||||
bool HumanoidIdentifier::isBodyPart(RBX::PartInstance* part) const
|
||||
{
|
||||
if (part->getCookie() & PartCookie::IS_HUMANOID_PART)
|
||||
return (leftArm == part || leftLeg == part || rightArm == part || rightLeg == part || torso == part || head == part);
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
bool HumanoidIdentifier::isBodyPartComposited(RBX::PartInstance* part) const
|
||||
{
|
||||
bool noReflectance = part->getReflectance() <= 0.015f;
|
||||
|
||||
// Heads are always composited as long as they are not transparent
|
||||
if (part == head)
|
||||
return part->getTransparencyUi() <= 0 && isPartHead(part) && noReflectance;
|
||||
|
||||
// Body parts with special shapes are never composited to match the old behavior
|
||||
if (part->getCookie() & PartCookie::HAS_SPECIALSHAPE)
|
||||
return false;
|
||||
|
||||
// Non-block parts are never composited to match the old behavior
|
||||
if (part->getPartType() != BLOCK_PART)
|
||||
return false;
|
||||
|
||||
// Parts with meshes are always composited
|
||||
if (getRelevantMesh(part))
|
||||
return true;
|
||||
|
||||
// Arms are always composited if there is a shirt
|
||||
if ((part == leftArm || part == rightArm) && !shirt.isNull())
|
||||
return true;
|
||||
|
||||
// Legs are always composited if there are pants
|
||||
if ((part == leftLeg || part == rightLeg) && !pants.isNull())
|
||||
return true;
|
||||
|
||||
// Torso is always composited if there is a shirt, pants or a t-shirt
|
||||
if (part == torso && (!pants.isNull() || !shirt.isNull() || !shirtGraphic.isNull()))
|
||||
return true;
|
||||
|
||||
// Now we have a body part and we have a choice - we can composit it or skip compositing.
|
||||
// Compositing means that we lose materials; we also replace the body part with a prebaked mesh, so we lose the size information.
|
||||
// We also lose studs, but we care way less about those - so to improve batching, we'll composit plastic parts with expected size.
|
||||
return (part->getRenderMaterial() == PLASTIC_MATERIAL || part->getRenderMaterial() == SMOOTH_PLASTIC_MATERIAL) && noReflectance;
|
||||
}
|
||||
|
||||
bool HumanoidIdentifier::isPartComposited(RBX::PartInstance* part) const
|
||||
{
|
||||
if (isBodyPart(part))
|
||||
return isBodyPartComposited(part);
|
||||
|
||||
if (Instance::isA<Accoutrement>(part->getParent()))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
#include "GfxBase/RenderCaps.h"
|
||||
#include "FastLog.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
RenderCaps::RenderCaps(std::string gfxCardName, size_t vidMemSize )
|
||||
: gfxCardName(gfxCardName)
|
||||
, vidMemSize(vidMemSize)
|
||||
, texturePowerOf2Only(false)
|
||||
, supportsGBuffer(false)
|
||||
, skinningBoneCount(0)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
#include "GfxBase/RenderSettings.h"
|
||||
|
||||
#include "rbx/Debug.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
const G3D::Vector2int16 CRenderSettings::minGameWindowSize = G3D::Vector2int16((G3D::int16)816,(G3D::int16)638);
|
||||
|
||||
CRenderSettings::GraphicsMode CRenderSettings::latchedGraphicsMode = CRenderSettings::UnknownGraphicsMode;
|
||||
|
||||
CRenderSettings::AASamples CRenderSettings::aaSamples(defaultAASamples);
|
||||
|
||||
const CRenderSettings::RESOLUTIONENTRY ResolutionTable [] = {
|
||||
{ CRenderSettings::Resolution720x526, 720,526 },
|
||||
{ CRenderSettings::Resolution800x600, 800,600 },
|
||||
{ CRenderSettings::Resolution1024x600, 1024,600 },
|
||||
{ CRenderSettings::Resolution1024x768, 1024,768 },
|
||||
{ CRenderSettings::Resolution1280x720, 1280,720 },
|
||||
{ CRenderSettings::Resolution1280x768, 1280,768 },
|
||||
{ CRenderSettings::Resolution1152x864, 1152,864 },
|
||||
{ CRenderSettings::Resolution1280x800, 1280,800 },
|
||||
{ CRenderSettings::Resolution1360x768, 1360,768 },
|
||||
{ CRenderSettings::Resolution1280x960, 1280,960 },
|
||||
{ CRenderSettings::Resolution1280x1024, 1280,1024 },
|
||||
{ CRenderSettings::Resolution1440x900, 1440,900 },
|
||||
{ CRenderSettings::Resolution1600x900, 1600,900 },
|
||||
{ CRenderSettings::Resolution1600x1024, 1600,1024 },
|
||||
{ CRenderSettings::Resolution1600x1200, 1600,1200 },
|
||||
{ CRenderSettings::Resolution1680x1050, 1680,1050 },
|
||||
{ CRenderSettings::Resolution1920x1080, 1920,1080 },
|
||||
{ CRenderSettings::Resolution1920x1200, 1920,1200 }
|
||||
};
|
||||
|
||||
CRenderSettings::CRenderSettings()
|
||||
#if !RBX_PLATFORM_IOS
|
||||
: fullscreenSize(G3D::Vector2int16(800, 600)) // these are just fail safes in case auto detect procedure fails.
|
||||
, windowSize(G3D::Vector2int16(800, 600)) //
|
||||
#else
|
||||
: fullscreenSize(G3D::Vector2int16(1024, 768)) // these are just fail safes in case auto detect procedure fails.
|
||||
, windowSize(G3D::Vector2int16(1024, 768)) //
|
||||
#endif
|
||||
, graphicsMode(AutoGraphicsMode)
|
||||
, qualityLevel(QualityAuto)
|
||||
, editQualityLevel(QualityAuto)
|
||||
, antialiasingMode(AntialiasingOff)
|
||||
, frameRateManagerMode(FrameRateManagerAuto)
|
||||
, showAggregation(false)
|
||||
, drawConnectors(false)
|
||||
, minCullDistance(50)
|
||||
, debugShowBoundingBoxes(false) // debug.
|
||||
, debugReloadAssets(false) // debug.
|
||||
, objExportMergeByMaterial(false)
|
||||
, eagerBulkExecution(false) // debug
|
||||
, enableFRM(true)
|
||||
, autoQualityLevel(1)
|
||||
, resolutionPreference(ResolutionAuto)
|
||||
, maxQualityLevel(QualityLevelMax)
|
||||
, textureCacheSize(1024 * 1024 * 32) // 32 MB
|
||||
, meshCacheSize(1024 * 1024 * 32) // 32 MB
|
||||
{
|
||||
}
|
||||
|
||||
const CRenderSettings::RESOLUTIONENTRY& CRenderSettings::getResolutionPreset(ResolutionPreset preset) const
|
||||
{
|
||||
RBXASSERT(preset < ResolutionMaxIndex);
|
||||
RBXASSERT(ResolutionTable[preset-1].preset == preset);
|
||||
RBXASSERT(ResolutionMaxIndex == ARRAYSIZE(ResolutionTable)+1);
|
||||
|
||||
return ResolutionTable[preset-1];
|
||||
}
|
||||
|
||||
} // namespace RBX
|
||||
@@ -0,0 +1,35 @@
|
||||
/* Copyright 2003-2006 ROBLOX Corporation, All Rights Reserved */
|
||||
|
||||
|
||||
#include "GfxBase/RenderStats.h"
|
||||
#include "Util/Profiling.h"
|
||||
|
||||
using namespace RBX;
|
||||
|
||||
RenderStats::RenderStats() :
|
||||
cpuRenderTotal(new RBX::Profiling::CodeProfiler("3D CPU Total"))
|
||||
|
||||
, culling(new RBX::Profiling::CodeProfiler("Culling"))
|
||||
, flip(new RBX::Profiling::CodeProfiler("Flipping Backbuffer"))
|
||||
, renderObjects(new RBX::Profiling::CodeProfiler("Render Objects"))
|
||||
, updateLighting(new RBX::Profiling::CodeProfiler("Update Lighting"))
|
||||
, adorn2D(new RBX::Profiling::CodeProfiler("Adorn 2D"))
|
||||
, adorn3D(new RBX::Profiling::CodeProfiler("Adorn 3D"))
|
||||
, visualEngineSceneUpdater(new RBX::Profiling::CodeProfiler("Visual Engine Scene Updater"))
|
||||
, finishRendering(new RBX::Profiling::CodeProfiler("Finish Rendering"))
|
||||
, renderTargetUpdate(new RBX::Profiling::CodeProfiler("RenderTarget Update"))
|
||||
|
||||
, frameRateManager(new RBX::Profiling::CodeProfiler("Frame Rate Manager"))
|
||||
|
||||
, textureCompositor(new RBX::Profiling::CodeProfiler("Texture Compositor"))
|
||||
, updateSceneGraph(new RBX::Profiling::CodeProfiler("Update SceneGraph"))
|
||||
, updateAllInvalidParts(new RBX::Profiling::CodeProfiler("updateAllInvalidParts"))
|
||||
, updateDynamicsAndAggregateStatics(new RBX::Profiling::CodeProfiler("updateDynamicsAndAggregateStatics"))
|
||||
, updateDynamicParts(new RBX::Profiling::CodeProfiler("updateDynamicParts"))
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
RenderStats::~RenderStats()
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
#include "GfxBase/ViewBase.h"
|
||||
#include "rbx/rbxTime.h"
|
||||
|
||||
#include "rbx/Debug.h"
|
||||
|
||||
#include "util/MachineIdUploader.h"
|
||||
#include "boost/functional/hash.hpp"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
extern void RenderView_InitModule();
|
||||
extern void RenderView_ShutdownModule();
|
||||
|
||||
static IViewBaseFactory** getFactory(CRenderSettings::GraphicsMode mode)
|
||||
{
|
||||
static IViewBaseFactory* s_rgFactories[6] ={ 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
if ((static_cast<size_t>(mode)) < ARRAYSIZE(s_rgFactories))
|
||||
{
|
||||
return s_rgFactories + static_cast<size_t>(mode);
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
ViewBase* ViewBase::CreateView(CRenderSettings::GraphicsMode mode,
|
||||
OSContext* context,
|
||||
CRenderSettings* renderSettings)
|
||||
{
|
||||
IViewBaseFactory** ppfactory = getFactory(mode);
|
||||
|
||||
// did you call RBX::ViewBase::InitPluginModules?
|
||||
RBXASSERT(ppfactory && *ppfactory);
|
||||
if (ppfactory && *ppfactory)
|
||||
{
|
||||
return (*ppfactory)->Create(mode, context, renderSettings);
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void ViewBase::RegisterFactory(CRenderSettings::GraphicsMode mode,
|
||||
IViewBaseFactory* factory)
|
||||
{
|
||||
IViewBaseFactory** ppfactory = getFactory(mode);
|
||||
|
||||
RBXASSERT(ppfactory);
|
||||
if (ppfactory)
|
||||
{
|
||||
*ppfactory = factory;
|
||||
}
|
||||
}
|
||||
|
||||
void ViewBase::render(IMetric* metric, double timeRenderJob)
|
||||
{
|
||||
if(timeRenderJob == 0.0)
|
||||
timeRenderJob = Time::nowFastSec();
|
||||
renderPrepare(metric);
|
||||
renderPerform(timeRenderJob);
|
||||
}
|
||||
|
||||
void ViewBase::InitPluginModules()
|
||||
{
|
||||
RenderView_InitModule();
|
||||
}
|
||||
|
||||
void ViewBase::ShutdownPluginModules()
|
||||
{
|
||||
RenderView_ShutdownModule();
|
||||
}
|
||||
|
||||
std::pair<unsigned, unsigned> ViewBase::setFrameDataCallback(const boost::function<void(void*)>& callback)
|
||||
{
|
||||
return std::make_pair(0, 0);
|
||||
}
|
||||
|
||||
} // namespace RBX
|
||||
@@ -0,0 +1,152 @@
|
||||
#include "GfxBase/ViewportBillboarder.h"
|
||||
#include "V8DataModel/Filters.h"
|
||||
#include "V8DataModel/Camera.h"
|
||||
#include "V8World/World.h"
|
||||
#include "V8World/ContactManager.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
ViewportBillboarder::ViewportBillboarder()
|
||||
:guiScreenSize(NULL)
|
||||
,alwaysOnTop(false)
|
||||
,screenOffset2D(Vector2::zero())
|
||||
{}
|
||||
ViewportBillboarder::ViewportBillboarder(
|
||||
const Vector3& partExtentRelativeOffset,
|
||||
const Vector3& partStudsOffset,
|
||||
const Vector2& billboardSizeRelativeOffset,
|
||||
const UDim2& billboardSize,
|
||||
const Vector2* guiScreenSize)
|
||||
:partExtentRelativeOffset(partExtentRelativeOffset)
|
||||
,partStudsOffset(partStudsOffset)
|
||||
,billboardSizeRelativeOffset(billboardSizeRelativeOffset)
|
||||
,billboardSize(billboardSize)
|
||||
,guiScreenSize(guiScreenSize)
|
||||
,alwaysOnTop(false)
|
||||
,screenOffset2D(Vector2::zero())
|
||||
{}
|
||||
|
||||
Vector2 ViewportBillboarder::getScreenOffset(const Rect2D& parentviewport, const RBX::Camera& camera, const CoordinateFrame& desiredModelView)
|
||||
{
|
||||
const CoordinateFrame& cameraFrame = camera.coordinateFrame();
|
||||
|
||||
Vector3 projectedTranslation = camera.project((cameraFrame * desiredModelView).translation);
|
||||
|
||||
return Math::roundVector2(projectedTranslation.xy());
|
||||
}
|
||||
|
||||
void ViewportBillboarder::update(const Rect2D& parentviewport, const Camera& camera, Vector3 partSize, CoordinateFrame partCFrame)
|
||||
{
|
||||
Vector3 halfSize = partSize/2;
|
||||
|
||||
Extents cameraSpaceExtents;
|
||||
|
||||
// calculate extents in camera space
|
||||
for(int a = 0; a < 8; a++)
|
||||
{
|
||||
// go through all permutations (use bits of counter)
|
||||
Vector3 extent((a & 4) ? halfSize.x : -halfSize.x,
|
||||
(a & 2) ? halfSize.y : -halfSize.y,
|
||||
(a & 1) ? halfSize.z : -halfSize.z);
|
||||
Vector3 pextent = camera.coordinateFrame().pointToObjectSpace(partCFrame.pointToWorldSpace(extent));
|
||||
cameraSpaceExtents.expandToContain(pextent);
|
||||
}
|
||||
|
||||
Vector3 relativeOffsetInCameraSpace = (partExtentRelativeOffset + Vector3::one()) * 0.5f * cameraSpaceExtents.size() + cameraSpaceExtents.min();
|
||||
Vector3 billboardCenterInCameraSpace = relativeOffsetInCameraSpace + partStudsOffset;
|
||||
|
||||
Vector3 billboardCenterInWorldSpace = camera.coordinateFrame().pointToWorldSpace(billboardCenterInCameraSpace);
|
||||
Vector3 billboardCenterInProjSpace = camera.project(billboardCenterInWorldSpace);
|
||||
|
||||
if(billboardCenterInProjSpace.z > 0 && billboardCenterInProjSpace.z < 1000)
|
||||
{
|
||||
visibleAndValid = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
visibleAndValid = false;
|
||||
return;
|
||||
}
|
||||
|
||||
float pixelsPerStud = billboardCenterInProjSpace.z;
|
||||
Vector2 studsPerPixel(1.f/ pixelsPerStud, 1.f/ pixelsPerStud); // undo the perspective effect of finding extents in screenspace.
|
||||
// -1 : to UI coordinates (0,0 upper left, )
|
||||
Vector2 billboardSizeInStuds = (billboardSize * (Vector2::one()*pixelsPerStud)) * studsPerPixel;
|
||||
if(guiScreenSize)
|
||||
viewport = Rect2D(*guiScreenSize);
|
||||
else
|
||||
viewport = Rect2D(billboardSizeInStuds * pixelsPerStud);
|
||||
|
||||
Vector2 UIToCameraSpaceScaler(billboardSizeInStuds/ viewport.wh());
|
||||
|
||||
billboardCenterInCameraSpace += Vector3(billboardSizeRelativeOffset * billboardSizeInStuds, 0);
|
||||
|
||||
CoordinateFrame desiredModelView;
|
||||
desiredModelView.translation = billboardCenterInCameraSpace - Vector3(billboardSizeInStuds.x * 0.5f, billboardSizeInStuds.y * -0.5f, 0);
|
||||
desiredModelView.rotation.set(UIToCameraSpaceScaler.x, 0,0,0,UIToCameraSpaceScaler.y, 0,0,0, 1);
|
||||
|
||||
if (alwaysOnTop)
|
||||
screenOffset2D = getScreenOffset(parentviewport, camera, desiredModelView);
|
||||
|
||||
cframe = camera.coordinateFrame() * desiredModelView;
|
||||
}
|
||||
|
||||
bool ViewportBillboarder::hitTest(const Vector2int16& mousePosition, const Vector2int16& windowSize,
|
||||
RBX::Workspace* workspace,
|
||||
Vector2& billboardMousePosition)
|
||||
{
|
||||
const RBX::Camera& camera = *(workspace->getConstCamera());
|
||||
|
||||
Vector3 x0y0Screen, x1y1Screen;
|
||||
|
||||
if (alwaysOnTop)
|
||||
{
|
||||
x0y0Screen = Vector3(screenOffset2D, 0);
|
||||
x1y1Screen = Vector3(screenOffset2D + viewport.wh(), 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
Vector3 x0y0World = cframe.pointToWorldSpace(Vector3(viewport.x0(), -viewport.y0(),0));
|
||||
Vector3 x1y1World = cframe.pointToWorldSpace(Vector3(viewport.x1(), -viewport.y1(),0));
|
||||
|
||||
x0y0Screen = camera.project(x0y0World);
|
||||
x1y1Screen = camera.project(x1y1World);
|
||||
}
|
||||
|
||||
Extents extents;
|
||||
extents.expandToContain(Vector3(x0y0Screen.xy(),0));
|
||||
extents.expandToContain(Vector3(x1y1Screen.xy(),0));
|
||||
|
||||
if(extents.contains(Vector3(mousePosition.x, mousePosition.y, 0)))
|
||||
{
|
||||
billboardMousePosition = Vector2((mousePosition.x - x0y0Screen.x)/(x1y1Screen.x - x0y0Screen.x)*viewport.width(), (mousePosition.y - x0y0Screen.y)/(x1y1Screen.y - x0y0Screen.y)*viewport.height());
|
||||
|
||||
if (alwaysOnTop) {
|
||||
return true;
|
||||
}
|
||||
ContactManager& contactManager = *workspace->getWorld()->getContactManager();
|
||||
RbxRay unitRay = camera.worldRay(mousePosition.x, mousePosition.y);
|
||||
RbxRay searchRay = RbxRay::fromOriginAndDirection(unitRay.origin(), unitRay.direction() * 2048);
|
||||
Vector3 partHitPointWorld;
|
||||
FilterInvisibleNonColliding invisibleNonCollidingObjectsFilter; // invisible & non-colliding parts don't block mouse-clicks
|
||||
if(contactManager.getHit( searchRay, NULL, &invisibleNonCollidingObjectsFilter, partHitPointWorld) == NULL)
|
||||
{
|
||||
//We didn't hit anything
|
||||
return true;
|
||||
}
|
||||
|
||||
Vector3 hitPointWorld = cframe.pointToWorldSpace(Vector3(billboardMousePosition.x, billboardMousePosition.y, 0));
|
||||
Vector3 hitPointScreen = camera.project(hitPointWorld);
|
||||
|
||||
Vector3 partHitPointScreen = camera.project(partHitPointWorld);
|
||||
if(partHitPointScreen.z < hitPointScreen.z)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
# Install script for directory: /mnt/f/Trunk2012/Client/Rendering/GfxBase
|
||||
|
||||
# Set the install prefix
|
||||
IF(NOT DEFINED CMAKE_INSTALL_PREFIX)
|
||||
SET(CMAKE_INSTALL_PREFIX "/home/watrabi/Android/ndk/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/user")
|
||||
ENDIF(NOT DEFINED CMAKE_INSTALL_PREFIX)
|
||||
STRING(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
|
||||
|
||||
# Set the install configuration name.
|
||||
IF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
|
||||
IF(BUILD_TYPE)
|
||||
STRING(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
|
||||
CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
|
||||
ELSE(BUILD_TYPE)
|
||||
SET(CMAKE_INSTALL_CONFIG_NAME "Release")
|
||||
ENDIF(BUILD_TYPE)
|
||||
MESSAGE(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
|
||||
ENDIF(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
|
||||
|
||||
# Set the component getting installed.
|
||||
IF(NOT CMAKE_INSTALL_COMPONENT)
|
||||
IF(COMPONENT)
|
||||
MESSAGE(STATUS "Install component: \"${COMPONENT}\"")
|
||||
SET(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
|
||||
ELSE(COMPONENT)
|
||||
SET(CMAKE_INSTALL_COMPONENT)
|
||||
ENDIF(COMPONENT)
|
||||
ENDIF(NOT CMAKE_INSTALL_COMPONENT)
|
||||
|
||||
# Install shared libraries without execute permission?
|
||||
IF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
|
||||
SET(CMAKE_INSTALL_SO_NO_EXE "1")
|
||||
ENDIF(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
|
||||
|
||||
@@ -0,0 +1,341 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "GfxBase/Type.h"
|
||||
#include "GfxBase/TextureProxyBase.h"
|
||||
#include "Util/Extents.h"
|
||||
#include "Util/G3DCore.h"
|
||||
#include "Util/ContentId.h"
|
||||
#include "Util/Rotation2D.h"
|
||||
#include "rbx/signal.h"
|
||||
#include "rbx/Declarations.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
class I3DLinearFunc;
|
||||
class RenderCaps;
|
||||
class Camera;
|
||||
|
||||
struct Canvas
|
||||
{
|
||||
Canvas(Vector2 viewPort)
|
||||
:size(viewPort)
|
||||
{}
|
||||
Vector2 size;
|
||||
Vector2 toPixelSize(const Vector2& percent) const; // std screen is 100% wide and 75% tall
|
||||
int normalizedFontSize(int fontSize) const;
|
||||
};
|
||||
|
||||
// RBX::Adorn is a base class used to decorate other objects using 2D or 3D
|
||||
// basic shapes.
|
||||
class RBXBaseClass Adorn
|
||||
{
|
||||
public:
|
||||
enum Material
|
||||
{
|
||||
Material_Default,
|
||||
Material_NoLighting,
|
||||
Material_SelfLit,
|
||||
Material_SelfLitHighlight,
|
||||
Material_AALine,
|
||||
Material_Outline,
|
||||
|
||||
Material_Count
|
||||
};
|
||||
|
||||
Adorn(): ignoreTexture(false), vr(false), currentMaterial(Material_Default) {}
|
||||
|
||||
Canvas getCanvas() const { return getViewport().wh(); }
|
||||
|
||||
bool isVR() const { return vr; }
|
||||
|
||||
virtual const Camera* getCamera() const = 0;
|
||||
|
||||
virtual ~Adorn() {}
|
||||
|
||||
virtual TextureProxyBaseRef createTextureProxy(const ContentId& id,
|
||||
bool& waiting, bool bBlocking = false, const std::string& context = "") = 0;
|
||||
|
||||
// Listen to this signal if you need a hint about when to release your
|
||||
// TextureProxys.
|
||||
virtual rbx::signal<void()>& getUnbindResourcesSignal() = 0;
|
||||
|
||||
// Called to perform any preparations before the render pass begins.
|
||||
virtual void prepareRenderPass() {}
|
||||
|
||||
// Called to perform any cleanup after every 2D/3D render pass.
|
||||
virtual void finishRenderPass() {}
|
||||
|
||||
virtual void preSubmitPass() {}
|
||||
virtual void postSubmitPass() {}
|
||||
|
||||
virtual bool useFontSmoothScalling() { return false; }
|
||||
|
||||
void setMaterial(Material material_)
|
||||
{
|
||||
currentMaterial = material_;
|
||||
}
|
||||
|
||||
Material getMaterial() const { return currentMaterial; }
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
//
|
||||
// Viewport
|
||||
// Returns the Adorn's viewport area.
|
||||
//
|
||||
// Note that this viewport doesn't always represent the area where the
|
||||
// game is being displayed.
|
||||
virtual Rect2D getViewport() const = 0;
|
||||
|
||||
// Hack - buffering the GuiRect here - ultimately need to clip the
|
||||
// "User Gui Space" with the ROBLOX Gui stuff.
|
||||
void setUserGuiInset(const Vector4& value) { userGuiInset = value; }
|
||||
|
||||
Rect2D getUserGuiRect() const
|
||||
{
|
||||
Rect2D vp = getViewport();
|
||||
return Rect2D::xyxy(vp.x0() + userGuiInset.x, vp.y0() + userGuiInset.y, vp.x1() - userGuiInset.z,
|
||||
vp.y1() - userGuiInset.w);
|
||||
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
//
|
||||
// Textures, Draw Rectangles, Lines
|
||||
|
||||
void setIgnoreTexture(bool ignore) {ignoreTexture = ignore;}
|
||||
bool getIgnoreTexture() const {return ignoreTexture;}
|
||||
|
||||
// Sets the texture used by the Adorn.
|
||||
virtual void setTexture(
|
||||
int id,
|
||||
const RBX::TextureProxyBaseRef& texture) = 0;
|
||||
|
||||
// Gets the size of the texture being used by the Adorn.
|
||||
virtual Rect2D getTextureSize(
|
||||
const RBX::TextureProxyBaseRef& texture) const = 0;
|
||||
|
||||
// Draws a line on the screen.
|
||||
virtual void line2d(
|
||||
const Vector2& p0,
|
||||
const Vector2& p1,
|
||||
const Color4& color) = 0;
|
||||
|
||||
// Draws a hollow rectangle on the screen.
|
||||
void outlineRect2d(const Rect2D& rect, float thick, const Color4& color);
|
||||
void outlineRect2d(const Rect2D& rect, float thick, const Color4& color, const Rotation2D& rotation);
|
||||
void outlineRect2d(const Rect2D& rect, float thick, const Color4& color, const Rect2D& clipRect);
|
||||
|
||||
// Draws a solid rectangle on the screen.
|
||||
void rect2d(const Rect2D& rect, const Color4& color);
|
||||
void rect2d(const Rect2D& rect, const Color4& color, const Rotation2D& rotation);
|
||||
void rect2d(const Rect2D& rect, const Color4& color, const Rect2D& clipRect);
|
||||
|
||||
void rect2d(const Rect2D& rect, const Vector2& texul, const Vector2& texbr, const Color4& color);
|
||||
void rect2d(const Rect2D& rect, const Vector2& texul, const Vector2& texbr, const Color4& color, const Rotation2D& rotation);
|
||||
void rect2d(const Rect2D& rect, const Vector2& texul, const Vector2& texbr, const Color4& color, const Rect2D& clipRect);
|
||||
|
||||
// Rectangle drawing implementation
|
||||
virtual void rect2dImpl(const Vector2& x0y0, const Vector2& x1y0, const Vector2& x0y1, const Vector2& x1y1, const Vector2& tex0, const Vector2& tex1, const Color4 & color) = 0;
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
//
|
||||
// Draw Fonts
|
||||
|
||||
// Retrieves the boundaries (in pixels) of a string, if it were to be
|
||||
// drawn on screen.
|
||||
virtual Vector2 get2DStringBounds(
|
||||
const std::string& s,
|
||||
float size,
|
||||
Text::Font font = Text::FONT_LEGACY,
|
||||
const Vector2& availableSpace = Vector2::zero()) const = 0;
|
||||
|
||||
// Draws a string using this Adorn.
|
||||
Vector2 drawFont2D(
|
||||
const std::string& s,
|
||||
const Vector2& position,
|
||||
float size,
|
||||
bool autoScale,
|
||||
const Color4& color = Color3::black(),
|
||||
const Color4& outline = Color4::clear(),
|
||||
Text::Font font = Text::FONT_LEGACY,
|
||||
Text::XAlign xalign = Text::XALIGN_LEFT,
|
||||
Text::YAlign yalign = Text::YALIGN_TOP,
|
||||
const Vector2& availableSpace = Vector2::zero(),
|
||||
const Rect2D& clippingRect = RBX::Rect2D::xyxy(-1,-1,-1,-1),
|
||||
const Rotation2D& rotation = Rotation2D());
|
||||
|
||||
virtual Vector2 drawFont2DImpl(
|
||||
Adorn* target,
|
||||
const std::string& s,
|
||||
const Vector2& position,
|
||||
float size,
|
||||
bool autoScale,
|
||||
const Color4& color,
|
||||
const Color4& outline,
|
||||
Text::Font font,
|
||||
Text::XAlign xalign,
|
||||
Text::YAlign yalign,
|
||||
const Vector2& availableSpace,
|
||||
const Rect2D& clippingRect,
|
||||
const Rotation2D& rotation) = 0;
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
//
|
||||
// 3D stuff - procedural
|
||||
|
||||
virtual void line3d(
|
||||
const Vector3& startPoint,
|
||||
const Vector3& endPoint,
|
||||
const RBX::Color4& color) = 0;
|
||||
|
||||
virtual void line3dAA(
|
||||
const Vector3& startPoint,
|
||||
const Vector3& endPoint,
|
||||
const RBX::Color4& color,
|
||||
float thickness,
|
||||
int zIndex,
|
||||
bool alwaysOnTop) = 0;
|
||||
|
||||
// Sets the adorn's coordinate frame.
|
||||
virtual void setObjectToWorldMatrix(
|
||||
const CoordinateFrame& c) = 0;
|
||||
|
||||
// Draws an axis aligned bounding box on the adorn.
|
||||
virtual void box(
|
||||
const AABox& box,
|
||||
const Color4& solidColor = Color4(1,.2f,.2f,.5f)) = 0;
|
||||
|
||||
// Draws a box on the adorn.
|
||||
void box(
|
||||
const Extents& extents,
|
||||
const Color4& solidColor = Color4(1,.2f,.2f,.5f))
|
||||
{
|
||||
AABox aaBox(extents.min(), extents.max());
|
||||
box(aaBox, solidColor);
|
||||
}
|
||||
|
||||
virtual void box(
|
||||
const CoordinateFrame& cFrame,
|
||||
const Vector3& size,
|
||||
const Color4& color,
|
||||
int zIndex,
|
||||
bool alwaysOnTop) = 0;
|
||||
|
||||
// Draws a sphere on the adorn.
|
||||
virtual void sphere(
|
||||
const Sphere& sphere,
|
||||
const Color4& solidColor = Color4(1, 1, 0, .5f)) = 0;
|
||||
|
||||
virtual void sphere(
|
||||
const CoordinateFrame& cFrame,
|
||||
float radius,
|
||||
const Color4& color,
|
||||
int zIndex,
|
||||
bool alwaysOnTop) = 0;
|
||||
|
||||
// Draws an explosion on the adorn.
|
||||
virtual void explosion(const Sphere& sphere) = 0;
|
||||
|
||||
virtual void cylinder(
|
||||
const CoordinateFrame& cFrame,
|
||||
float radius,
|
||||
float height,
|
||||
const Color4& color,
|
||||
int zIndex,
|
||||
bool alwaysOnTop) = 0;
|
||||
|
||||
// Draws a cylinder along the adorn's x axis.
|
||||
virtual void cylinderAlongX(
|
||||
float radius,
|
||||
float length,
|
||||
const Color4& solidColor,
|
||||
bool cap = true) = 0;
|
||||
|
||||
virtual void cone(
|
||||
const CoordinateFrame& cFrame,
|
||||
float radius,
|
||||
float height,
|
||||
const Color4& color,
|
||||
int zIndex,
|
||||
bool alwaysOnTop) = 0;
|
||||
|
||||
// Draws a ray from the adorn.
|
||||
virtual void ray(
|
||||
const RbxRay& ray,
|
||||
const Color4& color = Color3::orange()) = 0;
|
||||
|
||||
// Draws the x, y, z axis of the adorn.
|
||||
virtual void axes(
|
||||
const Color4& xColor = Color3::red(),
|
||||
const Color4& yColor = Color3::green(),
|
||||
const Color4& zColor = Color3::blue(),
|
||||
float scale = 1.0f) = 0;
|
||||
|
||||
|
||||
// Draws a quad on the adorn.
|
||||
//
|
||||
// v0 The first point to form the quad.
|
||||
// v1 The second point to form the quad.
|
||||
// v2 The third point to form the quad.
|
||||
// v3 The fourth point to form the quad.
|
||||
// color The color used to draw the quad.
|
||||
// v0tex UV coordinates used on the first polygon.
|
||||
// v2tex UV coordinates used on the second polygon.
|
||||
// opt The material options to use when drawing the quad.
|
||||
virtual void quad(
|
||||
const Vector3& v0,
|
||||
const Vector3& v1,
|
||||
const Vector3& v2,
|
||||
const Vector3& v3,
|
||||
const Color4& color = Color3::blue(),
|
||||
const Vector2& v0tex = Vector2::zero(),
|
||||
const Vector2& v2tex = Vector2::zero(),
|
||||
int zIndex = -1,
|
||||
bool alwaysOnTop = false) = 0;
|
||||
|
||||
// Draws a convex 3D polygon on the adorn.
|
||||
//
|
||||
// v The set of points that compose the polygon.
|
||||
// countv The number of points that compose the polygon.
|
||||
// color The color used when drawing the polygon.
|
||||
// opt The material options to use when drawing the polygon.
|
||||
virtual void convexPolygon(
|
||||
const Vector3* v,
|
||||
int countv,
|
||||
const Color4& color) = 0;
|
||||
|
||||
// Draws a convex 2D polygon on the adorn.
|
||||
//
|
||||
// v The set of points that compose the polygon.
|
||||
// countv The number of points that compose the polygon.
|
||||
// color The color used when drawing the polygon.
|
||||
// opt The material options to use when drawing the polygon.
|
||||
virtual void convexPolygon2d(
|
||||
const Vector2* v,
|
||||
int countv,
|
||||
const Color4& color) = 0;
|
||||
|
||||
// Evaluates extrusion, calling trajectory and profile func with domain [0..1].
|
||||
// if closeTrajectory or closeProfile is true, func is only evaluated to [0..1[,
|
||||
// and evaluation for f(0) is used again for f(1).
|
||||
// Future: if closeTrajectory != closeProfile, that could indicate we need
|
||||
// caps at the end.
|
||||
virtual void extrusion(RBX::I3DLinearFunc* trajectory, int trajectorysegments,
|
||||
RBX::I3DLinearFunc* profile, int profilesegments,
|
||||
const Color4& color, bool closeTrajectory = true,
|
||||
bool closeProfile = true) = 0;
|
||||
|
||||
virtual bool isVisible(const Extents& extents, const CoordinateFrame& cframe) { return true; }
|
||||
|
||||
static const int maximumZIndex = 10;
|
||||
|
||||
protected:
|
||||
Vector4 userGuiInset;
|
||||
bool ignoreTexture;
|
||||
bool vr;
|
||||
Material currentMaterial;
|
||||
};
|
||||
|
||||
} // namespace RBX
|
||||
@@ -0,0 +1,186 @@
|
||||
#pragma once
|
||||
|
||||
#include "GfxBase/Adorn.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
class ViewportBillboarder;
|
||||
|
||||
class AdornBillboarder: public Adorn
|
||||
{
|
||||
Adorn* parent;
|
||||
Rect2D viewport;
|
||||
bool alwaysOnTop;
|
||||
|
||||
public:
|
||||
AdornBillboarder(Adorn* parent, const ViewportBillboarder& viewportBillboarder);
|
||||
AdornBillboarder(Adorn* parent, const Rect2D& viewport, const CoordinateFrame& transform, bool alwaysOnTop = false);
|
||||
|
||||
/*override*/ TextureProxyBaseRef createTextureProxy(const ContentId& id, bool& waiting, bool bBlocking = false, const std::string& context = "") { return parent->createTextureProxy(id, waiting, bBlocking, context); };
|
||||
/*override*/ rbx::signal<void()>& getUnbindResourcesSignal() { return parent->getUnbindResourcesSignal(); }
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
//
|
||||
// Viewport
|
||||
/*override*/ Rect2D getViewport() const;
|
||||
virtual const Camera* getCamera() const { return NULL; }
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
//
|
||||
// Textures, Draw Rectangles, Lines
|
||||
|
||||
/*override*/ void setTexture(
|
||||
int id,
|
||||
const RBX::TextureProxyBaseRef& texture) { parent->setTexture(id, texture); };
|
||||
|
||||
/*override*/ Rect2D getTextureSize(
|
||||
const RBX::TextureProxyBaseRef& texture) const { return parent->getTextureSize(texture); };
|
||||
|
||||
virtual bool useFontSmoothScalling() { return true; }
|
||||
|
||||
virtual void line2d(
|
||||
const Vector2& p0,
|
||||
const Vector2& p1,
|
||||
const Color4& color);
|
||||
|
||||
virtual void rect2dImpl(
|
||||
const Vector2& x0y0, const Vector2& x1y0, const Vector2& x0y1, const Vector2& x1y1,
|
||||
const Vector2& tex0, const Vector2& tex1, const Color4 & color);
|
||||
|
||||
virtual Vector2 get2DStringBounds(
|
||||
const std::string& s,
|
||||
float size,
|
||||
Text::Font font,
|
||||
const Vector2& availableSpace) const
|
||||
{
|
||||
return parent->get2DStringBounds(s, size, font, availableSpace);
|
||||
}
|
||||
|
||||
virtual Vector2 drawFont2DImpl(
|
||||
Adorn* target,
|
||||
const std::string& s,
|
||||
const Vector2& position,
|
||||
float size,
|
||||
bool autoScale,
|
||||
const Color4& color,
|
||||
const Color4& outline,
|
||||
Text::Font font,
|
||||
Text::XAlign xalign,
|
||||
Text::YAlign yalign,
|
||||
const Vector2& availableSpace,
|
||||
const Rect2D& clippingRect,
|
||||
const Rotation2D& rotation)
|
||||
{
|
||||
return parent->drawFont2DImpl(target, s, position, size, autoScale, color, outline, font, xalign, yalign, availableSpace, clippingRect, rotation);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
//
|
||||
// 3D stuff - procedural
|
||||
|
||||
/*override*/ void setObjectToWorldMatrix(
|
||||
const CoordinateFrame& c) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void box(
|
||||
const AABox& box,
|
||||
const Color4& solidColor = Color4(1,.2f,.2f,.5f)) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void box(
|
||||
const CoordinateFrame& cFrame,
|
||||
const Vector3& size,
|
||||
const Color4& color,
|
||||
int zIndex,
|
||||
bool alwaysOnTop) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void sphere(
|
||||
const Sphere& sphere,
|
||||
const Color4& solidColor = Color4(1, 1, 0, .5f)) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void sphere(
|
||||
const CoordinateFrame& cFrame,
|
||||
float radius,
|
||||
const Color4& color,
|
||||
int zIndex,
|
||||
bool alwaysOnTop) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void explosion(const Sphere& sphere)
|
||||
{
|
||||
throw std::runtime_error("Invalid operation");
|
||||
};
|
||||
|
||||
/*override*/ void cylinder(
|
||||
const CoordinateFrame& cFrame,
|
||||
float radius,
|
||||
float height,
|
||||
const Color4& color,
|
||||
int zIndex,
|
||||
bool alwaysOnTop) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void cylinderAlongX(
|
||||
float radius,
|
||||
float length,
|
||||
const Color4& solidColor,
|
||||
bool cap = true) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void cone(
|
||||
const CoordinateFrame& cFrame,
|
||||
float radius,
|
||||
float height,
|
||||
const Color4& color,
|
||||
int zIndex,
|
||||
bool alwaysOnTop) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void ray(
|
||||
const RbxRay& ray,
|
||||
const Color4& color = Color3::orange()) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void line3d(
|
||||
const Vector3& startPoint,
|
||||
const Vector3& endPoint,
|
||||
const RBX::Color4& color) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ virtual void line3dAA(
|
||||
const Vector3& startPoint,
|
||||
const Vector3& endPoint,
|
||||
const RBX::Color4& color,
|
||||
float thickness,
|
||||
int zIndex,
|
||||
bool alwaysOnTop) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void axes(
|
||||
const Color4& xColor = Color3::red(),
|
||||
const Color4& yColor = Color3::green(),
|
||||
const Color4& zColor = Color3::blue(),
|
||||
float scale = 1.0f) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void quad(
|
||||
const Vector3& v0,
|
||||
const Vector3& v1,
|
||||
const Vector3& v2,
|
||||
const Vector3& v3,
|
||||
const Color4& color = Color3::blue(),
|
||||
const Vector2& v0tex = Vector2::zero(),
|
||||
const Vector2& v2tex = Vector2::zero(),
|
||||
int zIndex = -1,
|
||||
bool alwaysOnTop = false)
|
||||
{ throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void convexPolygon2d(
|
||||
const Vector2* v,
|
||||
int countv,
|
||||
const Color4& color);
|
||||
|
||||
/*override*/ void convexPolygon(
|
||||
const Vector3* v,
|
||||
int countv,
|
||||
const Color4& color) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
// evaluates extrusion, calling trajectory and profile func with domain [0..1].
|
||||
// if closeTrajectory or closeProfile is true, func is only evaluated to [0..1[, and evaluation for f(0) is used again for f(1).
|
||||
// future: if closeTrajectory != closeProfile, that could indicate we need caps at the end.
|
||||
/*override*/ void extrusion(I3DLinearFunc* trajectory, int trajectorysegments,
|
||||
I3DLinearFunc* profile, int profilesegments,
|
||||
const Color4& color, bool closeTrajectory = true, bool closeProfile = true) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,185 @@
|
||||
#pragma once
|
||||
|
||||
#include "GfxBase/Adorn.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
class AdornBillboarder2D : public Adorn
|
||||
{
|
||||
protected:
|
||||
Adorn* parent;
|
||||
Rect2D viewport;
|
||||
Vector2 screenOffset;
|
||||
|
||||
public:
|
||||
AdornBillboarder2D(Adorn* parent, const Rect2D& viewport, const Vector2& screenOffset);
|
||||
|
||||
/*override*/ TextureProxyBaseRef createTextureProxy(const ContentId& id, bool& waiting, bool bBlocking = false, const std::string& context = "") { return parent->createTextureProxy(id, waiting, bBlocking, context); };
|
||||
/*override*/ rbx::signal<void()>& getUnbindResourcesSignal() { return parent->getUnbindResourcesSignal(); }
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
//
|
||||
// Viewport
|
||||
/*override*/ Rect2D getViewport() const;
|
||||
virtual const Camera* getCamera() const { return NULL; }
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
//
|
||||
// Textures, Draw Rectangles, Lines
|
||||
|
||||
/*override*/ void setTexture(
|
||||
int id,
|
||||
const RBX::TextureProxyBaseRef& texture) { parent->setTexture(id, texture); };
|
||||
|
||||
/*override*/ Rect2D getTextureSize(
|
||||
const RBX::TextureProxyBaseRef& texture) const { return parent->getTextureSize(texture); };
|
||||
|
||||
virtual bool useFontSmoothScalling() { return true; }
|
||||
|
||||
virtual void line2d(
|
||||
const Vector2& p0,
|
||||
const Vector2& p1,
|
||||
const Color4& color);
|
||||
|
||||
virtual void rect2dImpl(
|
||||
const Vector2& x0y0, const Vector2& x1y0, const Vector2& x0y1, const Vector2& x1y1,
|
||||
const Vector2& tex0, const Vector2& tex1, const Color4 & color);
|
||||
|
||||
virtual Vector2 get2DStringBounds(
|
||||
const std::string& s,
|
||||
float size,
|
||||
Text::Font font,
|
||||
const Vector2& availableSpace) const
|
||||
{
|
||||
return parent->get2DStringBounds(s, size, font, availableSpace);
|
||||
}
|
||||
|
||||
virtual Vector2 drawFont2DImpl(
|
||||
Adorn* target,
|
||||
const std::string& s,
|
||||
const Vector2& position,
|
||||
float size,
|
||||
bool autoScale,
|
||||
const Color4& color,
|
||||
const Color4& outline,
|
||||
Text::Font font,
|
||||
Text::XAlign xalign,
|
||||
Text::YAlign yalign,
|
||||
const Vector2& availableSpace,
|
||||
const Rect2D& clippingRect,
|
||||
const Rotation2D& rotation)
|
||||
{
|
||||
return parent->drawFont2DImpl(target, s, position, size, autoScale, color, outline, font, xalign, yalign, availableSpace, clippingRect, rotation);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
//
|
||||
// 3D stuff - procedural
|
||||
|
||||
/*override*/ void setObjectToWorldMatrix(
|
||||
const CoordinateFrame& c) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void box(
|
||||
const AABox& box,
|
||||
const Color4& solidColor = Color4(1,.2f,.2f,.5f)) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void box(
|
||||
const CoordinateFrame& cFrame,
|
||||
const Vector3& size,
|
||||
const Color4& color,
|
||||
int zIndex,
|
||||
bool alwaysOnTop) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void sphere(
|
||||
const Sphere& sphere,
|
||||
const Color4& solidColor = Color4(1, 1, 0, .5f)) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void sphere(
|
||||
const CoordinateFrame& cFrame,
|
||||
float radius,
|
||||
const Color4& color,
|
||||
int zIndex,
|
||||
bool drawFront) { throw std::runtime_error("Invalid ooperation"); };
|
||||
|
||||
/*override*/ void explosion(const Sphere& sphere)
|
||||
{
|
||||
throw std::runtime_error("Invalid operation");
|
||||
};
|
||||
|
||||
/*override*/ void cylinder(
|
||||
const CoordinateFrame& cFrame,
|
||||
float radius,
|
||||
float height,
|
||||
const Color4& color,
|
||||
int zIndex,
|
||||
bool alwaysOnTop) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void cylinderAlongX(
|
||||
float radius,
|
||||
float length,
|
||||
const Color4& solidColor,
|
||||
bool cap = true) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void cone(
|
||||
const CoordinateFrame& cFrame,
|
||||
float radius,
|
||||
float height,
|
||||
const Color4& color,
|
||||
int zIndex,
|
||||
bool alwaysOnTop) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void ray(
|
||||
const RbxRay& ray,
|
||||
const Color4& color = Color3::orange()) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void line3d(
|
||||
const Vector3& startPoint,
|
||||
const Vector3& endPoint,
|
||||
const RBX::Color4& color) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ virtual void line3dAA(
|
||||
const Vector3& startPoint,
|
||||
const Vector3& endPoint,
|
||||
const RBX::Color4& color,
|
||||
float thickness,
|
||||
int zIndex,
|
||||
bool alwaysOnTop) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void axes(
|
||||
const Color4& xColor = Color3::red(),
|
||||
const Color4& yColor = Color3::green(),
|
||||
const Color4& zColor = Color3::blue(),
|
||||
float scale = 1.0f) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void quad(
|
||||
const Vector3& v0,
|
||||
const Vector3& v1,
|
||||
const Vector3& v2,
|
||||
const Vector3& v3,
|
||||
const Color4& color = Color3::blue(),
|
||||
const Vector2& v0tex = Vector2::zero(),
|
||||
const Vector2& v2tex = Vector2::zero(),
|
||||
int zIndex = -1,
|
||||
bool alwaysOnTop = false)
|
||||
{ throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
/*override*/ void convexPolygon2d(
|
||||
const Vector2* v,
|
||||
int countv,
|
||||
const Color4& color) { throw std::runtime_error("Invalid operation"); }
|
||||
|
||||
/*override*/ void convexPolygon(
|
||||
const Vector3* v,
|
||||
int countv,
|
||||
const Color4& color) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
// evaluates extrusion, calling trajectory and profile func with domain [0..1].
|
||||
// if closeTrajectory or closeProfile is true, func is only evaluated to [0..1[, and evaluation for f(0) is used again for f(1).
|
||||
// future: if closeTrajectory != closeProfile, that could indicate we need caps at the end.
|
||||
/*override*/ void extrusion(I3DLinearFunc* trajectory, int trajectorysegments,
|
||||
I3DLinearFunc* profile, int profilesegments,
|
||||
const Color4& color, bool closeTrajectory = true, bool closeProfile = true) { throw std::runtime_error("Invalid operation"); };
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
@@ -0,0 +1,56 @@
|
||||
#pragma once
|
||||
|
||||
#include "GfxBase/Adorn.h"
|
||||
#include "V8DataModel/Workspace.h"
|
||||
#include "util/UDim.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
|
||||
class AdornSurface : public Adorn
|
||||
{
|
||||
Adorn* parent;
|
||||
Rect2D viewport;
|
||||
bool alwaysOnTop;
|
||||
|
||||
public:
|
||||
AdornSurface(Adorn* parent, const Rect2D& viewport, const CoordinateFrame& transform, bool alwaysOnTop = false);
|
||||
|
||||
virtual bool useFontSmoothScalling() { return false; }
|
||||
|
||||
void setTexture(int id, const RBX::TextureProxyBaseRef& texture);
|
||||
Rect2D getTextureSize( const RBX::TextureProxyBaseRef& texture) const;
|
||||
|
||||
void line2d(const Vector2& p0, const Vector2& p1, const Color4& color);
|
||||
|
||||
virtual void rect2dImpl(const Vector2& x0y0, const Vector2& x1y0, const Vector2& x0y1, const Vector2& x1y1, const Vector2& tex0, const Vector2& tex1, const Color4 & color);
|
||||
|
||||
Vector2 get2DStringBounds(const std::string& s, float size, Text::Font font, const Vector2& availableSpace ) const;
|
||||
Vector2 drawFont2DImpl(Adorn* target, const std::string& s, const Vector2& pos2D, float size, bool autoScale, const Color4& color, const Color4& outline, Text::Font font, Text::XAlign xalign, Text::YAlign yalign, const Vector2& availableSpace, const Rect2D& clippingRect, const Rotation2D& rotation );
|
||||
|
||||
const Camera* getCamera() const { return 0; }
|
||||
TextureProxyBaseRef createTextureProxy(const ContentId& id, bool& waiting, bool bBlocking, const std::string& context = "") { return parent->createTextureProxy(id,waiting,bBlocking,context); }
|
||||
rbx::signal<void()>& getUnbindResourcesSignal() { return parent->getUnbindResourcesSignal(); }
|
||||
Rect2D getViewport() const;
|
||||
|
||||
void setObjectToWorldMatrix(const CoordinateFrame& c) { ; }
|
||||
void line3d(const Vector3& startPoint, const Vector3& endPoint, const RBX::Color4& color) { ; }
|
||||
void line3dAA(const Vector3& startPoint, const Vector3& endPoint, const RBX::Color4& color, float thickness, int zIndex, bool alwaysOnTop) { ; }
|
||||
void box(const AABox& b, const Color4& solidColor) { ; }
|
||||
void box(const CoordinateFrame& cFrame, const Vector3& size, const Color4& color, int zIndex, bool alwaysOnTop) { ; }
|
||||
void sphere(const Sphere& s, const Color4& solidColor) { ; }
|
||||
void sphere(const CoordinateFrame& cFrame, float radius, const Color4& color, int zIndex, bool alwaysOnTop) { ; }
|
||||
void explosion(const Sphere& sphere) { ; }
|
||||
void cylinder(const CoordinateFrame& cFrame, float radius, float height, const Color4& color, int zIndex, bool alwaysOnTop) { ; }
|
||||
void cylinderAlongX(float radius, float length, const Color4& solidColor, bool cap) { ; }
|
||||
void cone(const CoordinateFrame& cFrame, float radius, float height, const Color4& color, int zIndex, bool alwaysOnTop) { ; }
|
||||
void ray(const RbxRay& ray, const Color4& color) { ; }
|
||||
void axes(const Color4&, const Color4&, const Color4&, float) { ; }
|
||||
void quad(const Vector3&, const Vector3&, const Vector3&, const Vector3&, const Color4&, const Vector2&, const Vector2&, int zIndex, bool alwaysOnTop) { ; }
|
||||
void convexPolygon(const Vector3*, int, const Color4&) { ; }
|
||||
void convexPolygon2d(const Vector2*, int, const Color4&) { ; }
|
||||
void extrusion(RBX::I3DLinearFunc*, int, RBX::I3DLinearFunc*, int, const Color4&, bool, bool) { ; }
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
#pragma once
|
||||
|
||||
#include "v8datamodel/contentprovider.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
class AsyncResult
|
||||
{
|
||||
public:
|
||||
AsyncResult()
|
||||
: reqResult(RBX::AsyncHttpQueue::Succeeded)
|
||||
{
|
||||
};
|
||||
|
||||
// make result always more restrictive only.
|
||||
// Succeeded < Waiting < Failed.
|
||||
void returnResult(RBX::AsyncHttpQueue::RequestResult reqResult)
|
||||
{
|
||||
switch(reqResult)
|
||||
{
|
||||
case RBX::AsyncHttpQueue::Succeeded:
|
||||
break;
|
||||
case RBX::AsyncHttpQueue::Waiting:
|
||||
if(this->reqResult == RBX::AsyncHttpQueue::Succeeded)
|
||||
{
|
||||
this->reqResult = reqResult;
|
||||
}
|
||||
break;
|
||||
case RBX::AsyncHttpQueue::Failed:
|
||||
this->reqResult = reqResult;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void returnWaitingFor(const RBX::ContentId& id)
|
||||
{
|
||||
returnResult(RBX::AsyncHttpQueue::Waiting);
|
||||
waitingFor.push_back(id);
|
||||
}
|
||||
|
||||
RBX::AsyncHttpQueue::RequestResult reqResult;
|
||||
std::vector<RBX::ContentId> waitingFor;
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
#pragma once
|
||||
|
||||
#include "MeshFileStructs.h"
|
||||
|
||||
#include "util/Object.h"
|
||||
#include "util/G3DCore.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
namespace RBX
|
||||
{
|
||||
struct FileMeshData
|
||||
{
|
||||
std::vector<FileMeshVertexNormalTexture3d> vnts;
|
||||
std::vector<FileMeshFace> faces;
|
||||
AABox aabb;
|
||||
};
|
||||
|
||||
shared_ptr<FileMeshData> ReadFileMesh(const std::string& data);
|
||||
|
||||
// writes the newest version always.
|
||||
// remember: set ostream to binary!
|
||||
void WriteFileMesh(std::ostream& f, const FileMeshData& mesh);
|
||||
}
|
||||
@@ -0,0 +1,201 @@
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
#pragma warning (push)
|
||||
#pragma warning( disable:4996 ) // disable -D_SCL_SECURE_NO_WARNING in ublas.
|
||||
#include <boost/numeric/ublas/vector.hpp>
|
||||
#pragma warning (pop)
|
||||
|
||||
#include "GfxBase/RenderSettings.h"
|
||||
#include "rbx/RunningAverage.h"
|
||||
#include <map>
|
||||
|
||||
namespace RBX {
|
||||
class RenderCaps;
|
||||
class Log;
|
||||
|
||||
enum SSAOLevel
|
||||
{
|
||||
ssaoNone = 0,
|
||||
ssaoFullBlank,
|
||||
ssaoFull
|
||||
};
|
||||
|
||||
struct THROTTLE_LOCKSTEP;
|
||||
|
||||
class FrameRateManager
|
||||
{
|
||||
public:
|
||||
FrameRateManager(void);
|
||||
~FrameRateManager(void);
|
||||
|
||||
void configureFrameRateManager(CRenderSettings::FrameRateManagerMode mode, bool hasCharacter);
|
||||
void setAggressivePerformance(bool value);
|
||||
|
||||
struct Metrics
|
||||
{
|
||||
bool AutoQuality;
|
||||
int QualityLevel;
|
||||
int NumberOfSettles;
|
||||
double AverageSwitchesPerSettle;
|
||||
double AverageFps;
|
||||
};
|
||||
|
||||
// add to current frame counter.
|
||||
void AddBlockQuota(int blocksInCluster, float sqDistanceToCamera, bool isInSpatialHash);
|
||||
|
||||
bool getGBufferSetting();
|
||||
|
||||
SSAOLevel getSSAOLevel();
|
||||
bool isSSAOSupported() { return mSSAOSupported; }
|
||||
|
||||
float getShadingDistance() const;
|
||||
float getShadingSqDistance() const;
|
||||
int getTextureAnisotropy() const;
|
||||
|
||||
int getPhysicsThrottling() const;
|
||||
|
||||
float getLightGridRadius() const;
|
||||
bool getLightingNonFixedEnabled() const;
|
||||
unsigned getLightingChunkBudget() const;
|
||||
|
||||
void SubmitCurrentFrame(double frameTime, double renderTime, double prepareTime, double bonusTime);
|
||||
|
||||
// adjusts quality to try to fit rendering to this timespan.
|
||||
void ThrottleTo(double rendertime_ms);
|
||||
|
||||
double getMetricValue(const std::string& metric);
|
||||
|
||||
int GetRecomputeDistanceDelay() { return mRecomputeDistanceDelay; }
|
||||
|
||||
float GetViewCullSqDistance();
|
||||
float GetRenderCullSqDistance();
|
||||
|
||||
double GetMaxNextViewCullDistance(); // farthest cull distance possible in next frame.
|
||||
|
||||
int GetQualityLevel() { return mCurrentQualityLevel; }
|
||||
|
||||
bool IsBlockCullingEnabled() { return mBlockCullingEnabled; };
|
||||
void SetBlockCullingEnabled(bool enabled) { mBlockCullingEnabled = enabled; };
|
||||
|
||||
// supply the framerate manager with some special information that can be
|
||||
// used to formulate exceptions.
|
||||
void Configure(const RenderCaps* renderCaps, CRenderSettings* settings);
|
||||
|
||||
// after calling Configure, this gives our determination of the best
|
||||
// possible quality we can acheive with certain features, and with current settings
|
||||
CRenderSettings::AntialiasingMode getAntialiasingMode();
|
||||
void updateMaxSettings();
|
||||
|
||||
double GetVisibleBlockTarget() const { return mBlockTarget; }; // smoothed block target
|
||||
double GetVisibleBlockCounter() const { return mLastBlockCounter; };
|
||||
|
||||
float GetTargetFrameTimeForNextLevel() const;
|
||||
float GetTargetRenderTimeForNextLevel() const;
|
||||
|
||||
// counter that indicates how many frames have elapsed with the block count in a stable state.
|
||||
void ResetStableFramesCounter() { mStableFramesCounter = 0; };
|
||||
const int& GetStableFramesCounter() { return mStableFramesCounter; };
|
||||
|
||||
// returns overall particle throttle factor. Range ]0 .. 1] , 1 for full detail.
|
||||
double GetParticleThrottleFactor();
|
||||
|
||||
double GetRenderTimeAverage();
|
||||
double GetPrepareTimeAverage();
|
||||
double GetFrameTimeAverage();
|
||||
|
||||
const WindowAverage<double,double>& GetRenderTimeStats();
|
||||
const WindowAverage<double,double>& GetFrameTimeStats();
|
||||
|
||||
void StartCapturingMetrics();
|
||||
Metrics GetMetrics();
|
||||
|
||||
void PauseAutoAdjustment();
|
||||
void ResumeAutoAdjustment();
|
||||
|
||||
int GetQualityDelayUp() const { return mQualityDelayUp; }
|
||||
int GetQualityDelayDown() const { return mQualityDelayDown; }
|
||||
int GetBackoffCounter() const { return mBadBackoffFrameCounter; }
|
||||
double GetBackoffAverage() const { return fastBackoffAverage.getStats().average; }
|
||||
|
||||
protected:
|
||||
bool mSSAOSupported;
|
||||
|
||||
bool mAdjustmentOn;
|
||||
|
||||
CRenderSettings* mSettings;
|
||||
const RenderCaps* mRenderCaps;
|
||||
|
||||
bool mBlockCullingEnabled;
|
||||
bool mAggressivePerformance;
|
||||
|
||||
int mStableFramesCounter;
|
||||
|
||||
bool mThrottlingOn;
|
||||
|
||||
int mCurrentQualityLevel;
|
||||
unsigned mQualityCount[CRenderSettings::QualityLevelMax];
|
||||
|
||||
int mQualityDelayUp;
|
||||
int mQualityDelayDown;
|
||||
int mRecomputeDistanceDelay;
|
||||
|
||||
bool mWasQualityUp;
|
||||
int mSwitchCounter;
|
||||
|
||||
private:
|
||||
float mSqDistance;
|
||||
float mSqRenderDistance;
|
||||
|
||||
void UpdateStats(double frameTime, double renderTime, double prepareTime);
|
||||
void AdjustQuality(double frameTime, double renderTime, bool adjustmentOn, double bonusTime);
|
||||
void StepQuality(bool direction, bool isBackOff);
|
||||
void UpdateQualitySettings();
|
||||
void SendQualityLevelStats();
|
||||
float GetAvarageQuality();
|
||||
|
||||
float GetTargetFrameTime(int level) const;
|
||||
|
||||
RBX::WindowAverage<double, double> frameTimeAverage;
|
||||
RBX::WindowAverage<double, double> renderTimeAverage;
|
||||
RBX::WindowAverage<double, double> prepareTimeAverage;
|
||||
RBX::WindowAverage<double, double> frameTimeVarianceAverage;
|
||||
|
||||
RBX::WindowAverage<double, double> fastBackoffAverage;
|
||||
|
||||
int mBadBackoffFrameCounter;
|
||||
|
||||
Metrics mMetrics;
|
||||
RBX::Timer<RBX::Time::Fast> mSettleTimer;
|
||||
bool mIsStable;
|
||||
bool mIsGatheringDistance;
|
||||
int mBlockCounter;
|
||||
int mBlockTarget;
|
||||
int mLastBlockCounter;
|
||||
|
||||
class AvgFpsCounter
|
||||
{
|
||||
public:
|
||||
AvgFpsCounter(): timeSumSec(0), frameCnt(0) {}
|
||||
|
||||
void Update(double deltaTimeMs)
|
||||
{
|
||||
if (deltaTimeMs < 1000)
|
||||
{
|
||||
timeSumSec += deltaTimeMs * 0.001;
|
||||
++frameCnt;
|
||||
}
|
||||
}
|
||||
|
||||
double GetFPS() { return frameCnt ? 1.0 / (timeSumSec / frameCnt) : 0 ; }
|
||||
private:
|
||||
double timeSumSec;
|
||||
unsigned frameCnt;
|
||||
};
|
||||
|
||||
AvgFpsCounter mFPSCounter;
|
||||
|
||||
THROTTLE_LOCKSTEP* LockstepTable;
|
||||
};
|
||||
|
||||
} // namespaces
|
||||
@@ -0,0 +1,121 @@
|
||||
#pragma once
|
||||
|
||||
#include "boost/shared_ptr.hpp"
|
||||
#include "Util/SpatialRegion.h"
|
||||
#include "V8Tree/Instance.h"
|
||||
#include "v8world/BasicSpatialHashPrimitive.h"
|
||||
#include "rbx/signal.h"
|
||||
#include "reflection/Property.h"
|
||||
|
||||
namespace RBX {
|
||||
class PartInstance;
|
||||
class AsyncResult;
|
||||
|
||||
class GfxBinding
|
||||
{
|
||||
protected:
|
||||
GfxBinding(const boost::shared_ptr<RBX::PartInstance>& part)
|
||||
: partInstance(part)
|
||||
{}
|
||||
|
||||
GfxBinding()
|
||||
{}
|
||||
|
||||
virtual ~GfxBinding();
|
||||
public:
|
||||
|
||||
RBX::PartInstance* getPartInstance() { return partInstance.get(); };
|
||||
// unlinks from PartInstance.
|
||||
// will cause delete on next updateEntity();
|
||||
void zombify();
|
||||
|
||||
bool isBound();
|
||||
|
||||
// helper method. probably should be elsewhere.
|
||||
static bool isInWorkspace(RBX::Instance* part);
|
||||
|
||||
virtual void invalidateEntity() {};
|
||||
virtual void updateEntity(bool assetsUpdated = false) {};
|
||||
virtual void updateChunk(const SpatialRegion::Id& pos, bool isWaterChunk) {};
|
||||
virtual void onCoordinateFrameChanged() {};
|
||||
virtual void onSizeChanged() { invalidateEntity(); };
|
||||
virtual void onTransparencyChanged() { invalidateEntity(); };
|
||||
virtual void onSpecialShapeChanged() { invalidateEntity(); }
|
||||
|
||||
// disconnects all event listeners.
|
||||
virtual void unbind();
|
||||
void cleanupStaleConnections();
|
||||
|
||||
// meant to connect all listeners relevant to this instance.
|
||||
// basic implementation doesn't listen to much. overide and bind some more.
|
||||
// virtual void bind();
|
||||
|
||||
// helper: connects property change event listeners.
|
||||
void bindProperties(const shared_ptr<RBX::PartInstance>& part);
|
||||
|
||||
protected:
|
||||
boost::shared_ptr<RBX::PartInstance> partInstance;
|
||||
std::vector<rbx::signals::connection> connections;
|
||||
|
||||
private:
|
||||
void onPropertyChanged(const RBX::Reflection::PropertyDescriptor* descriptor);
|
||||
void onAncestorChanged(const shared_ptr<RBX::Instance>& ancestor);
|
||||
void onChildAdded(const shared_ptr<RBX::Instance>& child);
|
||||
void onChildRemoved(const shared_ptr<RBX::Instance>& child);
|
||||
void onSpecialShapeChangedEx();
|
||||
|
||||
void onCombinedSignal(Instance::CombinedSignalType type, const Instance::ICombinedSignalData* data);
|
||||
void onHumanoidChanged();
|
||||
void onOutfitChanged();
|
||||
void onDecalPropertyChanged(const RBX::Reflection::PropertyDescriptor* descriptor);
|
||||
void onTexturePropertyChanged(const RBX::Reflection::PropertyDescriptor* descriptor);
|
||||
};
|
||||
|
||||
|
||||
// class used as a simple base class for linking PartInstances with graphics objects.
|
||||
class GfxPart : public GfxBinding, public RBX::BasicSpatialHashPrimitive
|
||||
{
|
||||
public:
|
||||
GfxPart(const boost::shared_ptr<RBX::PartInstance>& part)
|
||||
: GfxBinding(part)
|
||||
, lastFrustumVisibleFrameNumber(-1)
|
||||
{}
|
||||
|
||||
GfxPart()
|
||||
: lastFrustumVisibleFrameNumber(-1)
|
||||
{}
|
||||
|
||||
// accessors?
|
||||
int lastFrustumVisibleFrameNumber; // most recent frame where this object was within the view frustum
|
||||
|
||||
public:
|
||||
virtual void updateCoordinateFrame(bool recalcLocalBounds = false) {};
|
||||
virtual unsigned int getPartCount() { return 1; }
|
||||
|
||||
virtual void onSleepingChanged(bool sleeping, PartInstance* part) {};
|
||||
virtual void onClumpChanged(PartInstance* part) {};
|
||||
|
||||
virtual Vector3 getCenter() const { return Vector3(); }
|
||||
};
|
||||
|
||||
// serves to allow the gfx engine to have persistent gfxobject tracking the position of a part.
|
||||
class GfxAttachment : public GfxBinding
|
||||
{
|
||||
public:
|
||||
GfxAttachment(const boost::shared_ptr<RBX::PartInstance>& part)
|
||||
: GfxBinding(part)
|
||||
{}
|
||||
protected:
|
||||
GfxAttachment()
|
||||
{}
|
||||
public:
|
||||
|
||||
/*override*/ void unbind();
|
||||
protected:
|
||||
virtual void onSleepingChanged(bool sleeping) = 0;
|
||||
public:
|
||||
virtual void updateCoordinateFrame(bool recalcLocalBounds = false) = 0;
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
/* Copyright 2003-2005 ROBLOX Corporation, All Rights Reserved */
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Util/IndexArray.h"
|
||||
#include "Util/Selectable.h"
|
||||
#include "V8Tree/Instance.h"
|
||||
#include "SelectState.h"
|
||||
|
||||
namespace RBX {
|
||||
class IAdornableCollector;
|
||||
class Adorn;
|
||||
class Camera;
|
||||
|
||||
class RBXInterface IAdornable
|
||||
: public Selectable
|
||||
{
|
||||
friend class IAdornableCollector;
|
||||
|
||||
private:
|
||||
int index2d;
|
||||
int index3d;
|
||||
int index3dSorted;
|
||||
int& indexFunc2d() {return index2d;}
|
||||
int& indexFunc3d() {return index3d;}
|
||||
int& indexFunc3dSorted() {return index3dSorted;}
|
||||
|
||||
IAdornableCollector* bucket;
|
||||
|
||||
protected:
|
||||
virtual bool shouldRender2d() const {return false;}
|
||||
virtual bool shouldRender3dAdorn() const {return false;}
|
||||
virtual bool shouldRender3dSortedAdorn() const {return false;}
|
||||
|
||||
|
||||
|
||||
public:
|
||||
IAdornable() : bucket(NULL), index2d(-1), index3d(-1), index3dSorted(-1)
|
||||
{}
|
||||
|
||||
~IAdornable();
|
||||
|
||||
void shouldRenderSetDirty(); // sets this IAdornable dirty
|
||||
float calculateDepth(const Camera* camera) const; // calculates the depth based on camera
|
||||
|
||||
virtual bool isVisible(const Rect2D& rect) const { return true; }
|
||||
|
||||
virtual void renderBackground2d(Adorn* adorn) {}
|
||||
virtual void renderBackground2dContext(Adorn* adorn, const Instance* context) { renderBackground2d(adorn); }
|
||||
virtual void render2d(Adorn* adorn) {}
|
||||
virtual void render2dContext(Adorn* adorn, const Instance* context) { render2d(adorn); }
|
||||
virtual void render3dAdorn(Adorn* adorn) {}
|
||||
virtual void render3dSortedAdorn(Adorn* adorn) {}
|
||||
virtual void render3dSelect(Adorn* adorn, SelectState selectState) {}
|
||||
|
||||
virtual Vector3 render3dSortedPosition() const { return Vector3(0,0,0); }
|
||||
};
|
||||
|
||||
struct AdornableDepth
|
||||
{
|
||||
IAdornable* adornable;
|
||||
float depth;
|
||||
|
||||
bool operator<(const AdornableDepth& o) const
|
||||
{
|
||||
return depth > o.depth;
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
/* Copyright 2003-2005 ROBLOX Corporation, All Rights Reserved */
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "GfxBase/IAdornable.h"
|
||||
#include "Util/IndexArray.h"
|
||||
|
||||
LOGGROUP(AdornRenderStats);
|
||||
|
||||
namespace RBX {
|
||||
class Adorn;
|
||||
|
||||
class RBXInterface IAdornableCollector
|
||||
{
|
||||
friend class IAdornable;
|
||||
private:
|
||||
IndexArray<IAdornable, &IAdornable::indexFunc2d> renderable2ds;
|
||||
IndexArray<IAdornable, &IAdornable::indexFunc3d> renderable3ds;
|
||||
IndexArray<IAdornable, &IAdornable::indexFunc3dSorted> renderable3dSorteds;
|
||||
|
||||
public:
|
||||
void onRenderableDescendantAdded(IAdornable* iR);
|
||||
void onRenderableDescendantRemoving(IAdornable* iR);
|
||||
|
||||
void recomputeShouldRender(IAdornable* iR);
|
||||
public:
|
||||
IAdornableCollector()
|
||||
{}
|
||||
|
||||
~IAdornableCollector();
|
||||
|
||||
void render2dItems(Adorn* adorn);
|
||||
void render3dAdornItems(Adorn* adorn);
|
||||
void append3dSortedAdornItems(std::vector<AdornableDepth>& destination, const Camera* camera) const;
|
||||
};
|
||||
|
||||
} // namespace RBX
|
||||
@@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
namespace RBX {
|
||||
|
||||
class Image
|
||||
{
|
||||
public:
|
||||
virtual ~Image() {}
|
||||
|
||||
virtual size_t getSize() const = 0;
|
||||
|
||||
virtual int getOriginalWidth() const = 0;
|
||||
virtual int getOriginalHeight() const = 0;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
namespace RBX {
|
||||
|
||||
#pragma pack( push, 1)
|
||||
// nb: keep backward/forward compatibility by only appending to these structs.
|
||||
// stride information will keep this working.
|
||||
struct FileMeshHeader
|
||||
{
|
||||
unsigned short cbSize;
|
||||
unsigned char cbVerticesStride;
|
||||
unsigned char cbFaceStride;
|
||||
// ---dword boundary-----
|
||||
unsigned int num_vertices;
|
||||
unsigned int num_faces;
|
||||
};
|
||||
|
||||
struct FileMeshVertexNormalTexture3d
|
||||
{
|
||||
float vx,vy,vz;
|
||||
float nx,ny,nz;
|
||||
float tu,tv,tw;
|
||||
};
|
||||
|
||||
struct FileMeshFace
|
||||
{
|
||||
unsigned int a;
|
||||
unsigned int b;
|
||||
unsigned int c;
|
||||
};
|
||||
|
||||
#pragma pack( pop )
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
#include "util/G3DCore.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
class I3DLinearFunc
|
||||
{
|
||||
public:
|
||||
virtual Vector3 eval(float t)=0;
|
||||
// first derivative.
|
||||
virtual Vector3 evalTangent(float t)=0; // (tangent, normal, binormal, in that order, should form a right handed space)
|
||||
virtual Vector3 evalNormal(float t)=0;
|
||||
virtual Vector3 evalBinormal(float t)=0;
|
||||
|
||||
//string that encodes this function in a unique way.
|
||||
virtual std::string hashString()=0;
|
||||
};
|
||||
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
/* Copyright 2003-2005 ROBLOX Corporation, All Rights Reserved */
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Util/SurfaceType.h"
|
||||
#include "Util/Vector6.h"
|
||||
#include "G3D/Vector3.h"
|
||||
#include "G3D/Color4.h"
|
||||
#include "G3D/CoordinateFrame.h"
|
||||
|
||||
// Simple description of a part suitable for drawing, etc. Build Instance on top of this.
|
||||
// Low level.
|
||||
|
||||
namespace RBX {
|
||||
|
||||
enum PartType { BALL_PART = 0,
|
||||
BLOCK_PART,
|
||||
CYLINDER_PART,
|
||||
TRUSS_PART,
|
||||
WEDGE_PART,
|
||||
PRISM_PART,
|
||||
PYRAMID_PART,
|
||||
PARALLELRAMP_PART,
|
||||
RIGHTANGLERAMP_PART,
|
||||
CORNERWEDGE_PART,
|
||||
MEGACLUSTER_PART,
|
||||
OPERATION_PART };
|
||||
|
||||
class Part {
|
||||
public:
|
||||
// alpha order for simplification on dialogs
|
||||
|
||||
PartType type; // hash code hashes this block of data
|
||||
G3D::Vector3 gridSize;
|
||||
G3D::Color4 color;
|
||||
Vector6<SurfaceType> surfaceType;
|
||||
G3D::CoordinateFrame coordinateFrame;
|
||||
|
||||
Part() {}
|
||||
|
||||
Part(PartType _type,
|
||||
const G3D::Vector3& _gridSize,
|
||||
const G3D::Color4 _color,
|
||||
const G3D::CoordinateFrame& c) :
|
||||
type(_type),
|
||||
gridSize(_gridSize),
|
||||
color(_color),
|
||||
surfaceType(NO_SURFACE),
|
||||
coordinateFrame(c)
|
||||
{}
|
||||
|
||||
Part(PartType type,
|
||||
const G3D::Vector3& gridSize,
|
||||
const G3D::Color4 color,
|
||||
const Vector6<SurfaceType>& surfaceType,
|
||||
const G3D::CoordinateFrame& c) :
|
||||
type(type),
|
||||
gridSize(gridSize),
|
||||
color(color),
|
||||
surfaceType(surfaceType),
|
||||
coordinateFrame(c)
|
||||
{}
|
||||
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
#pragma once
|
||||
|
||||
#include "Util/TextureId.h"
|
||||
#include "Util/G3DCore.h"
|
||||
|
||||
namespace RBX
|
||||
{
|
||||
class PartInstance;
|
||||
class Humanoid;
|
||||
class CharacterMesh;
|
||||
class Accoutrement;
|
||||
|
||||
// if the part is a humanoid, get further details with this.
|
||||
class HumanoidIdentifier
|
||||
{
|
||||
public:
|
||||
explicit HumanoidIdentifier(RBX::Humanoid* humanoid);
|
||||
|
||||
Humanoid* humanoid;
|
||||
|
||||
PartInstance* head;
|
||||
PartInstance* leftLeg;
|
||||
PartInstance* rightLeg;
|
||||
PartInstance* leftArm;
|
||||
PartInstance* rightArm;
|
||||
PartInstance* torso;
|
||||
|
||||
std::vector<Accoutrement*> accoutrements;
|
||||
|
||||
TextureId pants;
|
||||
TextureId shirt;
|
||||
TextureId shirtGraphic;
|
||||
|
||||
CharacterMesh* leftLegMesh;
|
||||
CharacterMesh* rightLegMesh;
|
||||
CharacterMesh* leftArmMesh;
|
||||
CharacterMesh* rightArmMesh;
|
||||
CharacterMesh* torsoMesh;
|
||||
|
||||
bool isBodyPart(RBX::PartInstance* part) const;
|
||||
bool isBodyPartComposited(RBX::PartInstance* part) const;
|
||||
bool isPartComposited(RBX::PartInstance* part) const;
|
||||
bool isPartHead(RBX::PartInstance* part) const;
|
||||
|
||||
// helper
|
||||
CharacterMesh* getRelevantMesh(RBX::PartInstance* bodyPart) const;
|
||||
|
||||
enum BodyPartType
|
||||
{
|
||||
PartType_Head,
|
||||
PartType_Torso,
|
||||
PartType_Arm,
|
||||
PartType_Leg,
|
||||
PartType_Unknown,
|
||||
PartType_Count
|
||||
};
|
||||
|
||||
BodyPartType getBodyPartType(RBX::PartInstance* bodyPart) const;
|
||||
Vector3 getBodyPartScale(RBX::PartInstance* bodyPart) const;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
#pragma once
|
||||
#include <string>
|
||||
#include "GfxBase/RenderSettings.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
class RenderCaps
|
||||
{
|
||||
size_t vidMemSize;
|
||||
std::string gfxCardName;
|
||||
bool texturePowerOf2Only;
|
||||
bool supportsGBuffer;
|
||||
|
||||
unsigned int skinningBoneCount;
|
||||
public:
|
||||
RenderCaps(std::string gfxCardName, size_t vidMemSize );
|
||||
|
||||
void setTexturePowerOf2Only(bool b) { texturePowerOf2Only = b; }
|
||||
void setSupportsGBuffer(bool b) { supportsGBuffer = b; }
|
||||
void setSkinningBoneCount(unsigned int v) { skinningBoneCount = v; }
|
||||
|
||||
size_t getVidMemSize() const { return vidMemSize; }
|
||||
|
||||
bool getTexturePowerOf2Only() const { return texturePowerOf2Only; }
|
||||
const std::string& getGfxCardName() const { return gfxCardName; }
|
||||
|
||||
bool getSupportsGBuffer() const { return supportsGBuffer; }
|
||||
|
||||
unsigned int getSkinningBoneCount() const { return skinningBoneCount; }
|
||||
};
|
||||
|
||||
}
|
||||
@@ -0,0 +1,200 @@
|
||||
#pragma once
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include "util/G3DCore.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
class CRenderSettings
|
||||
{
|
||||
public:
|
||||
enum AASamples
|
||||
{
|
||||
NONE = 1,
|
||||
AA4 = 4,
|
||||
AA8 = 8,
|
||||
};
|
||||
|
||||
static const AASamples defaultAASamples = NONE;
|
||||
static const G3D::Vector2int16 defaultWindowSize;
|
||||
static const G3D::Vector2int16 defaultFullscreenSize();
|
||||
static const G3D::Vector2int16 minGameWindowSize;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
UnknownGraphicsMode = 0,
|
||||
AutoGraphicsMode = 1,
|
||||
Direct3D11 = 2,
|
||||
Direct3D9 = 3,
|
||||
OpenGL,
|
||||
NoGraphics
|
||||
} GraphicsMode;
|
||||
|
||||
static GraphicsMode latchedGraphicsMode;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
AntialiasingAuto = 0,
|
||||
AntialiasingOn = 1,
|
||||
AntialiasingOff = 2
|
||||
} AntialiasingMode;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
FrameRateManagerAuto = 0,
|
||||
FrameRateManagerOn = 1,
|
||||
FrameRateManagerOff = 2
|
||||
} FrameRateManagerMode;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
QualityAuto = 0,
|
||||
QualityLevel1,
|
||||
QualityLevel2,
|
||||
QualityLevel3,
|
||||
QualityLevel4,
|
||||
QualityLevel5,
|
||||
QualityLevel6,
|
||||
QualityLevel7,
|
||||
QualityLevel8,
|
||||
QualityLevel9,
|
||||
QualityLevel10,
|
||||
QualityLevel11,
|
||||
QualityLevel12,
|
||||
QualityLevel13,
|
||||
QualityLevel14,
|
||||
QualityLevel15,
|
||||
QualityLevel16,
|
||||
QualityLevel17,
|
||||
QualityLevel18,
|
||||
QualityLevel19,
|
||||
QualityLevel20,
|
||||
QualityLevel21,
|
||||
QualityLevelMax
|
||||
} QualityLevel;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ResolutionAuto,
|
||||
Resolution720x526,
|
||||
Resolution800x600,
|
||||
|
||||
Resolution1024x600,
|
||||
Resolution1024x768,
|
||||
|
||||
Resolution1280x720,
|
||||
Resolution1280x768,
|
||||
Resolution1152x864,
|
||||
Resolution1280x800,
|
||||
Resolution1360x768,
|
||||
Resolution1280x960,
|
||||
Resolution1280x1024,
|
||||
|
||||
Resolution1440x900,
|
||||
Resolution1600x900,
|
||||
Resolution1600x1024,
|
||||
Resolution1600x1200,
|
||||
Resolution1680x1050,
|
||||
|
||||
Resolution1920x1080,
|
||||
Resolution1920x1200,
|
||||
|
||||
ResolutionMaxIndex
|
||||
} ResolutionPreset;
|
||||
|
||||
struct RESOLUTIONENTRY
|
||||
{
|
||||
CRenderSettings::ResolutionPreset preset;
|
||||
int width;
|
||||
int height;
|
||||
};
|
||||
|
||||
protected:
|
||||
GraphicsMode graphicsMode;
|
||||
AntialiasingMode antialiasingMode;
|
||||
FrameRateManagerMode frameRateManagerMode;
|
||||
QualityLevel qualityLevel;
|
||||
QualityLevel editQualityLevel;
|
||||
|
||||
ResolutionPreset resolutionPreference;
|
||||
|
||||
int autoQualityLevel;
|
||||
int maxQualityLevel;
|
||||
int minCullDistance;
|
||||
bool debugShowBoundingBoxes;
|
||||
bool debugReloadAssets;
|
||||
bool enableFRM;
|
||||
bool objExportMergeByMaterial;
|
||||
|
||||
static AASamples aaSamples;
|
||||
|
||||
// filtered setting to use by app.
|
||||
G3D::Vector2int16 fullscreenSize;
|
||||
G3D::Vector2int16 windowSize;
|
||||
|
||||
bool showAggregation;
|
||||
|
||||
bool drawConnectors;
|
||||
|
||||
bool eagerBulkExecution;
|
||||
|
||||
// KB
|
||||
unsigned int textureCacheSize;
|
||||
unsigned int meshCacheSize;
|
||||
|
||||
public:
|
||||
CRenderSettings();
|
||||
|
||||
bool getShowAggregation() const { return showAggregation; }
|
||||
|
||||
static AASamples getAASamplesSafe() { return aaSamples; } // Thread-safe
|
||||
|
||||
GraphicsMode getGraphicsMode() const { return graphicsMode; }
|
||||
void setGraphicsMode(GraphicsMode value);
|
||||
|
||||
GraphicsMode getLatchedGraphicsMode()
|
||||
{
|
||||
if (latchedGraphicsMode == UnknownGraphicsMode)
|
||||
latchedGraphicsMode = getGraphicsMode();
|
||||
return latchedGraphicsMode;
|
||||
}
|
||||
|
||||
AASamples getAASamples() const { return aaSamples; }
|
||||
|
||||
G3D::Vector2int16 getFullscreenSize() const { return fullscreenSize; }
|
||||
G3D::Vector2int16 getWindowSize() const { return windowSize; }
|
||||
|
||||
FrameRateManagerMode getFrameRateManagerMode() const { return frameRateManagerMode; }
|
||||
AntialiasingMode getAntialiasingMode() const { return antialiasingMode; }
|
||||
|
||||
QualityLevel getQualityLevel() const { return qualityLevel; }
|
||||
QualityLevel getEditQualityLevel() const { return editQualityLevel; }
|
||||
int getMaxQualityLevel() { return maxQualityLevel; }
|
||||
int getAutoQualityLevel() const { return autoQualityLevel; }
|
||||
|
||||
ResolutionPreset getResolutionPreference() const { return resolutionPreference; }
|
||||
const RESOLUTIONENTRY& getResolutionPreset(ResolutionPreset preset) const;
|
||||
|
||||
// FRM would like to report latest setting. Subclass is free to ignore it
|
||||
virtual void setAutoQualityLevel(int level) {}
|
||||
|
||||
float getMaxFrameRate() const { return 60.0f; }
|
||||
float getMinFrameRate() const { return 30.0f; }
|
||||
|
||||
bool getDrawConnectors() const { return drawConnectors; }
|
||||
void setDrawConnectors(bool value) { drawConnectors = value; }
|
||||
|
||||
int getMinCullDistance() const { return minCullDistance; }
|
||||
bool getDebugShowBoundingBoxes() const { return debugShowBoundingBoxes; }
|
||||
bool getDebugReloadAssets() const { return debugReloadAssets; }
|
||||
bool getObjExportMergeByMaterial() const { return objExportMergeByMaterial; }
|
||||
bool getEnableFRM() const { return enableFRM; }
|
||||
|
||||
bool getEagerBulkExecution() const { return eagerBulkExecution; }
|
||||
|
||||
unsigned int getTextureCacheSize() const { return textureCacheSize; }
|
||||
unsigned int getMeshCacheSize() const { return meshCacheSize; }
|
||||
};
|
||||
|
||||
} // namespace RBX
|
||||
@@ -0,0 +1,101 @@
|
||||
/* Copyright 2003-2006 ROBLOX Corporation, All Rights Reserved */
|
||||
|
||||
|
||||
#pragma once
|
||||
#include "boost/scoped_ptr.hpp"
|
||||
#include "util/Profiling.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
namespace Profiling
|
||||
{
|
||||
class CodeProfiler;
|
||||
}
|
||||
|
||||
struct RenderPassStats
|
||||
{
|
||||
unsigned int batches;
|
||||
unsigned int faces;
|
||||
unsigned int vertices;
|
||||
unsigned int stateChanges;
|
||||
unsigned int passChanges;
|
||||
|
||||
RenderPassStats()
|
||||
: batches(0)
|
||||
, faces(0)
|
||||
, vertices(0)
|
||||
, stateChanges(0)
|
||||
, passChanges(0)
|
||||
{
|
||||
}
|
||||
|
||||
RenderPassStats& operator+=(const RenderPassStats& other)
|
||||
{
|
||||
batches += other.batches;
|
||||
faces += other.faces;
|
||||
vertices += other.vertices;
|
||||
stateChanges += other.stateChanges;
|
||||
passChanges += other.passChanges;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
RenderPassStats operator+(const RenderPassStats& other) const
|
||||
{
|
||||
RenderPassStats result = *this;
|
||||
result += other;
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
struct ClusterStats
|
||||
{
|
||||
unsigned int clusters;
|
||||
unsigned int parts;
|
||||
|
||||
ClusterStats()
|
||||
: clusters(0)
|
||||
, parts(0)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class RenderStats {
|
||||
public:
|
||||
boost::scoped_ptr<RBX::Profiling::CodeProfiler> cpuRenderTotal;
|
||||
|
||||
boost::scoped_ptr<RBX::Profiling::CodeProfiler> culling;
|
||||
boost::scoped_ptr<RBX::Profiling::CodeProfiler> flip;
|
||||
boost::scoped_ptr<RBX::Profiling::CodeProfiler> renderObjects;
|
||||
boost::scoped_ptr<RBX::Profiling::CodeProfiler> updateLighting;
|
||||
boost::scoped_ptr<RBX::Profiling::CodeProfiler> adorn2D;
|
||||
boost::scoped_ptr<RBX::Profiling::CodeProfiler> adorn3D;
|
||||
boost::scoped_ptr<RBX::Profiling::CodeProfiler> visualEngineSceneUpdater;
|
||||
boost::scoped_ptr<RBX::Profiling::CodeProfiler> finishRendering;
|
||||
boost::scoped_ptr<RBX::Profiling::CodeProfiler> renderTargetUpdate;
|
||||
|
||||
boost::scoped_ptr<RBX::Profiling::CodeProfiler> frameRateManager;
|
||||
boost::scoped_ptr<RBX::Profiling::CodeProfiler> textureCompositor;
|
||||
boost::scoped_ptr<RBX::Profiling::CodeProfiler> updateSceneGraph;
|
||||
boost::scoped_ptr<RBX::Profiling::CodeProfiler> updateAllInvalidParts;
|
||||
boost::scoped_ptr<RBX::Profiling::CodeProfiler> updateDynamicsAndAggregateStatics;
|
||||
boost::scoped_ptr<RBX::Profiling::CodeProfiler> updateDynamicParts;
|
||||
|
||||
RenderPassStats passTotal;
|
||||
RenderPassStats passScene;
|
||||
RenderPassStats passShadow;
|
||||
RenderPassStats passUI;
|
||||
RenderPassStats pass3DAdorns;
|
||||
|
||||
ClusterStats clusterFast;
|
||||
ClusterStats clusterFastFW;
|
||||
ClusterStats clusterFastHumanoid;
|
||||
|
||||
ClusterStats lastFrameFast;
|
||||
unsigned lastFrameMegaClusterChunks;
|
||||
|
||||
RenderStats();
|
||||
~RenderStats();
|
||||
};
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
#pragma once
|
||||
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include "boost/enable_shared_from_this.hpp"
|
||||
#include "g3d/Vector2.h"
|
||||
#include <string>
|
||||
|
||||
namespace RBX {
|
||||
typedef boost::shared_ptr<class TextureProxyBase> TextureProxyBaseRef;
|
||||
|
||||
class TextureProxyBase : public boost::enable_shared_from_this<TextureProxyBase>
|
||||
{
|
||||
private:
|
||||
typedef boost::enable_shared_from_this<TextureProxyBase> Super;
|
||||
|
||||
public:
|
||||
TextureProxyBase() {}
|
||||
virtual ~TextureProxyBase() {}
|
||||
|
||||
virtual G3D::Vector2 getOriginalSize() = 0;
|
||||
|
||||
static const unsigned int numStrips = 32;
|
||||
static float stripWidth() {
|
||||
return 1.0f / (float) numStrips;
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace
|
||||
@@ -0,0 +1,16 @@
|
||||
#include <boost/type_traits/is_floating_point.hpp>
|
||||
|
||||
#pragma once
|
||||
namespace RBX {
|
||||
|
||||
namespace Text
|
||||
{
|
||||
enum Font {FONT_LEGACY, FONT_ARIAL, FONT_ARIALBOLD, FONT_SOURCESANS, FONT_SOURCESANSBOLD, FONT_SOURCESANSLIGHT, FONT_SOURCESANSITALIC, FONT_LAST};
|
||||
// Font drawing params - copied from G3D
|
||||
enum XAlign {XALIGN_RIGHT, XALIGN_LEFT, XALIGN_CENTER};
|
||||
|
||||
enum YAlign {YALIGN_TOP, /*YALIGN_BASELINE,*/ YALIGN_CENTER, YALIGN_BOTTOM};
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
#pragma once
|
||||
|
||||
#include "Util/G3DCore.h"
|
||||
#include "Util/Rotation2D.h"
|
||||
#include "GfxBase/Type.h"
|
||||
|
||||
namespace RBX {
|
||||
class Adorn;
|
||||
|
||||
namespace Graphics {
|
||||
class Texture;
|
||||
class TextureManager;
|
||||
class TextureAtlas;
|
||||
};
|
||||
|
||||
//abstract base class
|
||||
class Typesetter {
|
||||
public:
|
||||
virtual ~Typesetter() {}
|
||||
|
||||
virtual Vector2 draw(
|
||||
Adorn* adorn,
|
||||
const std::string& s,
|
||||
const Vector2& position,
|
||||
float size,
|
||||
bool autoScale,
|
||||
const Color4& color,
|
||||
const Color4& outline,
|
||||
RBX::Text::XAlign xalign = RBX::Text::XALIGN_LEFT,
|
||||
RBX::Text::YAlign yalign = RBX::Text::YALIGN_TOP,
|
||||
const Vector2& availableSpace = Vector2::zero(),
|
||||
const Rect2D& clippingRect = Rect2D::xyxy(-1,-1,-1,-1),
|
||||
const Rotation2D& rotation = Rotation2D()) const = 0;
|
||||
|
||||
|
||||
virtual int getCursorPositionInText(
|
||||
const std::string& s,
|
||||
const RBX::Vector2& pos2D,
|
||||
float size,
|
||||
RBX::Text::XAlign xalign,
|
||||
RBX::Text::YAlign yalign,
|
||||
const RBX::Vector2& availableSpace,
|
||||
const Rotation2D& rotation,
|
||||
RBX::Vector2 cursorPos) const = 0;
|
||||
|
||||
|
||||
/**
|
||||
Useful for drawing centered text and boxes around text.
|
||||
*/
|
||||
virtual Vector2 measure(
|
||||
const std::string& s,
|
||||
float size,
|
||||
const Vector2& availableSpace = Vector2::zero(),
|
||||
bool* textFits = NULL
|
||||
) const = 0;
|
||||
|
||||
virtual void loadResources(RBX::Graphics::TextureManager* textureManager, RBX::Graphics::TextureAtlas* glyphAtlas) = 0;
|
||||
virtual void releaseResources() = 0;
|
||||
virtual const shared_ptr<Graphics::Texture>& getTexture() const = 0;
|
||||
|
||||
static bool isCharNonWhitespace(char c)
|
||||
{
|
||||
return (c >= '!' && c <='~');
|
||||
}
|
||||
static bool isCharWhitespace(char c)
|
||||
{
|
||||
return (c == ' ' || c == '\t' || c == '\n');
|
||||
}
|
||||
static bool isCharSupported(char c)
|
||||
{
|
||||
return isCharNonWhitespace(c) || isCharWhitespace(c);
|
||||
}
|
||||
static bool isStringSupported(std::string& stringToCheck)
|
||||
{
|
||||
for (std::string::iterator iter = stringToCheck.begin(); iter != stringToCheck.end(); ++iter)
|
||||
{
|
||||
if (!isCharSupported(*iter))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
#pragma once
|
||||
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <boost/function.hpp>
|
||||
|
||||
#include "rbx/Declarations.h"
|
||||
#include "GfxBase/RenderSettings.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
class DataModel;
|
||||
class ViewBase;
|
||||
class FrameRateManager;
|
||||
class CRenderSettings;
|
||||
class RenderStats;
|
||||
class RBXInterface IMetric;
|
||||
class Instance;
|
||||
|
||||
enum ExporterFormat
|
||||
{
|
||||
ExporterFormat_Obj,
|
||||
ExporterFormat_NumFormats
|
||||
};
|
||||
|
||||
enum ExporterSaveType
|
||||
{
|
||||
ExporterSaveType_Everything,
|
||||
ExporterSaveType_Selection,
|
||||
ExporterSaveType_NumSaveTypes
|
||||
};
|
||||
|
||||
struct OSContext
|
||||
{
|
||||
void* hWnd;
|
||||
int width;
|
||||
int height;
|
||||
|
||||
//insert OS specific stuff here.
|
||||
OSContext()
|
||||
: hWnd(0)
|
||||
, width(640)
|
||||
, height(480)
|
||||
{
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class IViewBaseFactory
|
||||
{
|
||||
public:
|
||||
virtual ViewBase* Create(CRenderSettings::GraphicsMode mode,
|
||||
OSContext* context, CRenderSettings* renderSettings) = 0;
|
||||
};
|
||||
|
||||
class ViewBase
|
||||
{
|
||||
friend class Visit;
|
||||
|
||||
public:
|
||||
static ViewBase* CreateView(CRenderSettings::GraphicsMode mode,
|
||||
OSContext* context, CRenderSettings* renderSettings);
|
||||
|
||||
static void RegisterFactory(CRenderSettings::GraphicsMode mode,
|
||||
IViewBaseFactory* factory);
|
||||
|
||||
// need this because we are statically linking.
|
||||
static void InitPluginModules();
|
||||
|
||||
// it is bad form to need this. phase out please.
|
||||
static void ShutdownPluginModules();
|
||||
|
||||
virtual void initResources() = 0;
|
||||
virtual void bindWorkspace(boost::shared_ptr<RBX::DataModel> dataModel) = 0;
|
||||
|
||||
virtual void render(IMetric* metric, double timeJobStart);
|
||||
virtual void renderPrepare(IMetric* metric) = 0;
|
||||
virtual void renderPerform(double timeJobStart) = 0;
|
||||
|
||||
virtual void enableVR(bool enabled) = 0;
|
||||
virtual void updateVR() = 0;
|
||||
virtual const char* getVRDeviceName() = 0;
|
||||
|
||||
virtual void onResize(int cx, int cy) = 0;
|
||||
virtual void buildGui(bool buildInGameGui = true) = 0;
|
||||
|
||||
virtual void renderThumb(unsigned char* data, int width, int height, bool crop, bool allowDolly) = 0;
|
||||
|
||||
virtual void garbageCollect() {}
|
||||
|
||||
virtual Instance* getWorkspace() = 0;
|
||||
virtual RenderStats& getRenderStats() = 0;
|
||||
|
||||
virtual DataModel* getDataModel() = 0;
|
||||
|
||||
// use for pulling debug info only, please.
|
||||
virtual FrameRateManager* getFrameRateManager() { return 0; }
|
||||
|
||||
virtual double getMetricValue(const std::string& s) { return -1; }
|
||||
|
||||
virtual bool getAndClearDoScreenshot() = 0;
|
||||
|
||||
virtual bool exportScene(const std::string& filePath, ExporterSaveType saveType, ExporterFormat format) = 0;
|
||||
virtual bool exportSceneThumbJSON(ExporterSaveType saveType, ExporterFormat format, bool encodeBase64, std::string& strOut) = 0;
|
||||
|
||||
virtual void queueAssetReload(const std::string& filePath){};
|
||||
virtual void immediateAssetReload(const std::string& filePath) = 0;
|
||||
|
||||
virtual void suspendView() = 0;
|
||||
virtual void resumeView() = 0;
|
||||
|
||||
virtual std::pair<unsigned, unsigned> setFrameDataCallback(const boost::function<void(void*)>& callback);
|
||||
|
||||
virtual ~ViewBase() {}
|
||||
};
|
||||
|
||||
} // namespace RBX
|
||||
@@ -0,0 +1,58 @@
|
||||
#pragma once
|
||||
|
||||
#include "V8DataModel/Workspace.h"
|
||||
#include "util/UDim.h"
|
||||
|
||||
namespace RBX {
|
||||
|
||||
class ViewportBillboarder
|
||||
{
|
||||
private:
|
||||
CoordinateFrame cframe;
|
||||
Rect2D viewport;
|
||||
bool visibleAndValid;
|
||||
Vector2 screenOffset2D;
|
||||
|
||||
Vector2 getScreenOffset(const Rect2D& parentviewport, const RBX::Camera& camera, const CoordinateFrame& desiredModelView);
|
||||
|
||||
public:
|
||||
|
||||
Vector3 partExtentRelativeOffset;
|
||||
Vector3 partStudsOffset;
|
||||
Vector2 billboardSizeRelativeOffset;
|
||||
UDim2 billboardSize;
|
||||
const Vector2* guiScreenSize;
|
||||
bool alwaysOnTop;
|
||||
|
||||
ViewportBillboarder();
|
||||
ViewportBillboarder(const Vector3& partExtentRelativeOffset,
|
||||
const Vector3& partStudsOffset,
|
||||
const Vector2& billboardSizeRelativeOffset,
|
||||
const UDim2& billboardSize, //studs* x + pixels
|
||||
const Vector2* guiScreenSize //null for pixel-exact.
|
||||
);
|
||||
|
||||
void update(const Rect2D& parentviewport, const Camera& camera, Vector3 partSize, CoordinateFrame partCFrame);
|
||||
|
||||
bool hitTest(const Vector2int16& mousePosition, const Vector2int16& windowSize,
|
||||
RBX::Workspace* workspace, Vector2& billboardMousePosition);
|
||||
|
||||
const Vector2& getScreenOffset() const { return screenOffset2D; }
|
||||
|
||||
bool isVisibleAndValid() const
|
||||
{
|
||||
return visibleAndValid;
|
||||
}
|
||||
|
||||
const Rect2D& getViewport() const
|
||||
{
|
||||
return viewport;
|
||||
}
|
||||
|
||||
const CoordinateFrame& getCoordinateFrame() const
|
||||
{
|
||||
return cframe;
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
Reference in New Issue
Block a user