Пример #1
0
bool StringPropertySet::Parse(const StringRef& str)
{
	RETURN_TRUE_IF_EMPTY(str);
	//Key=Value,...
	List<StringRef> outPairs;
	StringParser::Split(str, ",", outPairs);

	List<StringRef> keyValuePair;
	for (auto& optionPair : outPairs)
	{
		keyValuePair.Clear();
		StringParser::Split(optionPair, "=", keyValuePair);
		if (keyValuePair.Count() == 2)
		{
			Add(keyValuePair[0], keyValuePair[1]);
		}
		else if (keyValuePair.Count() == 1)
		{
			Add(keyValuePair[0], HeapString::Empty);
		}
		else
		{
			Log::FormatError("Invalid attribute str:{} in {}", optionPair.c_str(), str.c_str());
			return false;
		}
	}

	return true;
}
Пример #2
0
bool IEntity::AcceptComponentEvent(IEventArg& e)
{
	RETURN_TRUE_IF_EMPTY(mComponents);
	for (IComponent* component:mComponents)
	{
		component->AcceptEvent(e);
	}

	return true;
}
Пример #3
0
bool BaseFeatureLayer::Enter()
{
	RETURN_TRUE_IF_EMPTY(mLayers);

	mIndex = 0;
	StringRef layerName = mLayers[mIndex];
	mCurrentLayer = (BaseCaseLayer*)SceneManager::Instance().RunningScene()->CreateLayer(layerName, StringRef::Empty, IEventArg::Empty, LayerCreateFlags::AlwaysCreate);
	mCurrentLayer->SetLogicZ(-1);
	AddChild(mCurrentLayer);

	return true;
}
Пример #4
0
bool IMesh::TryUpdateVertex(VertexGraphicsBuffer& bufferObject, size_t vertexIndex, const ICollection<Point3F>& vertices, const Matrix4& matrix) const
{
	RETURN_TRUE_IF_EMPTY(vertices);
	bufferObject.ReserveSize(vertexIndex, vertices.Count());

	size_t count = vertices.Count();
	const Point3F* verticesPtr = vertices.Items();
	FOR_EACH_SIZE(i, count)
	{
		Point3F pos = matrix.Transform(verticesPtr[i]);
		bufferObject.AppendOrUpdateData(vertexIndex + i, pos);
	}
Пример #5
0
size_t Base91Decoder::OnCode(const MemoryByteData& input, MemoryByteData& output) const
{
	RETURN_TRUE_IF_EMPTY(input);
	const unsigned char *ib = (unsigned char *)input.Data();
	byte* result = output.MutableData();
	byte* originalResult = result;

	unsigned long queue = 0;
	unsigned int nbits = 0;
	int val = -1;

	for (size_t len = input.Size(); len--;)
	{
		unsigned int d = mDecodeChars[*ib++];
		if (d == 91)
			continue;   /* ignore non-alphabet chars */
		if (val == -1)
			val = d;    /* start next value */
		else
		{
			val += d * 91;
			queue |= val << nbits;
			nbits += (val & 8191) > 88 ? 13 : 14;
			do
			{
				*result++ = (byte)queue;
				queue >>= 8;
				nbits -= 8;
			} while (nbits > 7);
			val = -1;   /* mark value complete */
		}
	}

	/* process remaining bits; write at most 1 byte */
	if (val != -1)
		*result++ = (byte)(queue | val << nbits);

	return result-originalResult;
}