예제 #1
0
eclass_t* GetCachedModel(entity_t *pEntity, const char *pName, idVec3 &vMin, idVec3 &vMax)
{
	eclass_t *e = NULL;
	if (pName == NULL || strlen(pName) == 0) {
		return NULL;
	}

	for (e = g_md3Cache; e ; e = e->next) {
		if (!strcmp (pName, e->name)) {
			pEntity->md3Class = e;
			VectorCopy(e->mins, vMin);
			VectorCopy(e->maxs, vMax);
			return e;
	    }
	}

	e = (eclass_t*)Mem_ClearedAlloc(sizeof(*e));
	memset (e, 0, sizeof(*e));
	e->name = Mem_CopyString( pName );
	e->color[0] = e->color[2] = 0.85f;
	if (LoadModel(pName, e, vMin, vMax, NULL)) {
		EClass_InsertSortedList(g_md3Cache, e);
		VectorCopy(vMin, e->mins);
		VectorCopy(vMax, e->maxs);
		pEntity->md3Class = e;
		return e;
	}
	return NULL;
}
예제 #2
0
/*
=================
Eclass_InsertAlphabetized
=================
*/
void Eclass_InsertAlphabetized (eclass_t *e)
{
#if 1
  EClass_InsertSortedList(eclass, e);
#else
	eclass_t	*s;
	
	if (!eclass)
	{
		eclass = e;
		return;
	}


	s = eclass;
	if (stricmp (e->name, s->name) < 0)
	{
		e->next = s;
		eclass = e;
		return;
	}

	do
	{
		if (!s->next || stricmp (e->name, s->next->name) < 0)
		{
			e->next = s->next;
			s->next = e;
			return;
		}
		s=s->next;
	} while (1);
#endif
}
예제 #3
0
파일: ECLASS.CPP 프로젝트: chenbk85/3dlearn
eclass_t* GetCachedModel(entity_t *pEntity, const char *pName, vec3_t &vMin, vec3_t &vMax)
{

	eclass_t *e = NULL;
	if (pName == NULL || strlen(pName) == 0)
	{
		return NULL;
	}

	for (e = g_md3Cache; e ; e = e->next)
	{
		if (!strcmp (pName, e->name))
		{
			pEntity->md3Class = e;
			VectorCopy(e->mins, vMin);
			VectorCopy(e->maxs, vMax);
			return e;
		}
	}

	e = (eclass_t*)qmalloc(sizeof(*e));
	memset (e, 0, sizeof(*e));
	e->name = strdup(pName);
	e->modelpath = strdup(pName);
	e->skinpath = strdup(pName);
	char *p = strstr(e->skinpath, ".md3");
	if (p != NULL)
	{
		p++;
		strncpy(p, "tga", 3);
	}
	else
	{
		free(e->skinpath);
		e->skinpath = NULL;
	}

	e->color[0] = e->color[2] = 0.85;

	if (Eclass_hasModel(e, vMin, vMax))
	{
		EClass_InsertSortedList(g_md3Cache, e);
		VectorCopy(vMin, e->mins);
		VectorCopy(vMax, e->maxs);
		pEntity->md3Class = e;
		return e;
	}

	return NULL;
}
예제 #4
0
파일: eclass.cpp 프로젝트: clbr/netradiant
EntityClass* Eclass_InsertAlphabetized (EntityClass *e)
{
  return EClass_InsertSortedList(g_entityClasses, e);
}