forked from Mirrorlandia_minetest/irrlicht
163 lines
2.7 KiB
C++
163 lines
2.7 KiB
C++
// Copyright (C) 2002-2012 Nikolaus Gebhardt
|
|
// This file is part of the "Irrlicht Engine".
|
|
// For conditions of distribution and use, see copyright notice in irrlicht.h
|
|
|
|
#include "CAttributes.h"
|
|
#include "fast_atof.h"
|
|
#include "ITexture.h"
|
|
#include "IVideoDriver.h"
|
|
|
|
namespace irr
|
|
{
|
|
namespace io
|
|
{
|
|
|
|
/*
|
|
Basic types, check documentation in IAttribute.h to see how they generally work.
|
|
*/
|
|
|
|
// Attribute implemented for boolean values
|
|
class CBoolAttribute : public IAttribute
|
|
{
|
|
public:
|
|
|
|
CBoolAttribute(const char* name, bool value)
|
|
{
|
|
Name = name;
|
|
setBool(value);
|
|
}
|
|
|
|
virtual s32 getInt() const _IRR_OVERRIDE_
|
|
{
|
|
return BoolValue ? 1 : 0;
|
|
}
|
|
|
|
virtual f32 getFloat() const _IRR_OVERRIDE_
|
|
{
|
|
return BoolValue ? 1.0f : 0.0f;
|
|
}
|
|
|
|
virtual bool getBool() const _IRR_OVERRIDE_
|
|
{
|
|
return BoolValue;
|
|
}
|
|
|
|
virtual void setInt(s32 intValue) _IRR_OVERRIDE_
|
|
{
|
|
BoolValue = (intValue != 0);
|
|
}
|
|
|
|
virtual void setFloat(f32 floatValue) _IRR_OVERRIDE_
|
|
{
|
|
BoolValue = (floatValue != 0);
|
|
}
|
|
|
|
virtual void setBool(bool boolValue) _IRR_OVERRIDE_
|
|
{
|
|
BoolValue = boolValue;
|
|
}
|
|
|
|
virtual E_ATTRIBUTE_TYPE getType() const _IRR_OVERRIDE_
|
|
{
|
|
return EAT_BOOL;
|
|
}
|
|
|
|
virtual const wchar_t* getTypeString() const _IRR_OVERRIDE_
|
|
{
|
|
return L"bool";
|
|
}
|
|
|
|
bool BoolValue;
|
|
};
|
|
|
|
// Attribute implemented for integers
|
|
class CIntAttribute : public IAttribute
|
|
{
|
|
public:
|
|
|
|
CIntAttribute(const char* name, s32 value)
|
|
{
|
|
Name = name;
|
|
setInt(value);
|
|
}
|
|
|
|
virtual s32 getInt() const _IRR_OVERRIDE_
|
|
{
|
|
return Value;
|
|
}
|
|
|
|
virtual f32 getFloat() const _IRR_OVERRIDE_
|
|
{
|
|
return (f32)Value;
|
|
}
|
|
|
|
virtual void setInt(s32 intValue) _IRR_OVERRIDE_
|
|
{
|
|
Value = intValue;
|
|
}
|
|
|
|
virtual void setFloat(f32 floatValue) _IRR_OVERRIDE_
|
|
{
|
|
Value = (s32)floatValue;
|
|
};
|
|
|
|
virtual E_ATTRIBUTE_TYPE getType() const _IRR_OVERRIDE_
|
|
{
|
|
return EAT_INT;
|
|
}
|
|
|
|
virtual const wchar_t* getTypeString() const _IRR_OVERRIDE_
|
|
{
|
|
return L"int";
|
|
}
|
|
|
|
s32 Value;
|
|
};
|
|
|
|
// Attribute implemented for floats
|
|
class CFloatAttribute : public IAttribute
|
|
{
|
|
public:
|
|
|
|
CFloatAttribute(const char* name, f32 value)
|
|
{
|
|
Name = name;
|
|
setFloat(value);
|
|
}
|
|
|
|
virtual s32 getInt() const _IRR_OVERRIDE_
|
|
{
|
|
return (s32)Value;
|
|
}
|
|
|
|
virtual f32 getFloat() const _IRR_OVERRIDE_
|
|
{
|
|
return Value;
|
|
}
|
|
|
|
virtual void setInt(s32 intValue) _IRR_OVERRIDE_
|
|
{
|
|
Value = (f32)intValue;
|
|
}
|
|
|
|
virtual void setFloat(f32 floatValue) _IRR_OVERRIDE_
|
|
{
|
|
Value = floatValue;
|
|
}
|
|
|
|
virtual E_ATTRIBUTE_TYPE getType() const _IRR_OVERRIDE_
|
|
{
|
|
return EAT_FLOAT;
|
|
}
|
|
|
|
virtual const wchar_t* getTypeString() const _IRR_OVERRIDE_
|
|
{
|
|
return L"float";
|
|
}
|
|
|
|
f32 Value;
|
|
};
|
|
|
|
} // end namespace io
|
|
} // end namespace irr
|