Ejemplo n.º 1
0
    public unsafe static void ED_Print(edict_t ed)
    {
        if (ed.free)
        {
            Con_Printf("FREE\n");
            return;
        }

        Con_Printf("\nEDICT {0}:\n", NUM_FOR_EDICT(ed));
        for (int i = 1; i < progs.numfielddefs; i++)
        {
            ddef_t d    = pr_fielddefs[i];
            string name = GetString(d.s_name);

            if (name.Length > 2 && name[name.Length - 2] == '_')
            {
                continue; // skip _x, _y, _z vars
            }
            int type = d.type & ~q_shared.DEF_SAVEGLOBAL;
            int offset;
            if (ed.IsV(d.ofs, out offset))
            {
                fixed(void *ptr = &ed.v)
                {
                    int *v = (int *)ptr + offset;

                    if (IsEmptyField(type, v))
                    {
                        continue;
                    }

                    Con_Printf("{0,15} ", name);
                    Con_Printf("{0}\n", PR_ValueString((etype_t)d.type, (void *)v));
                }
            }
            else
            {
                fixed(void *ptr = ed.fields)
                {
                    int *v = (int *)ptr + offset;

                    if (IsEmptyField(type, v))
                    {
                        continue;
                    }

                    Con_Printf("{0,15} ", name);
                    Con_Printf("{0}\n", PR_ValueString((etype_t)d.type, (void *)v));
                }
            }
        }
    }
Ejemplo n.º 2
0
    public unsafe static void ED_Write(StreamWriter writer, edict_t ed)
    {
        writer.WriteLine("{");

        if (ed.free)
        {
            writer.WriteLine("}");
            return;
        }

        for (int i = 1; i < progs.numfielddefs; i++)
        {
            ddef_t d    = pr_fielddefs[i];
            string name = GetString(d.s_name);
            if (name != null && name.Length > 2 && name[name.Length - 2] == '_') // [strlen(name) - 2] == '_')
            {
                continue;                                                        // skip _x, _y, _z vars
            }
            int type = d.type & ~q_shared.DEF_SAVEGLOBAL;
            int offset1;
            if (ed.IsV(d.ofs, out offset1))
            {
                fixed(void *ptr = &ed.v)
                {
                    int *v = (int *)ptr + offset1;

                    if (IsEmptyField(type, v))
                    {
                        continue;
                    }

                    writer.WriteLine("\"{0}\" \"{1}\"", name, PR_UglyValueString((etype_t)d.type, (eval_t *)v));
                }
            }
            else
            {
                fixed(void *ptr = ed.fields)
                {
                    int *v = (int *)ptr + offset1;

                    if (IsEmptyField(type, v))
                    {
                        continue;
                    }

                    writer.WriteLine("\"{0}\" \"{1}\"", name, PR_UglyValueString((etype_t)d.type, (eval_t *)v));
                }
            }
        }

        writer.WriteLine("}");
    }
Ejemplo n.º 3
0
    static unsafe bool ParsePair(edict_t ent, ddef_t key, string s)
    {
        int offset1;

        if (ent.IsV(key.ofs, out offset1))
        {
            fixed(entvars_t *ptr = &ent.v)
            {
                return(ED_ParseEpair((int *)ptr + offset1, key, s));
            }
        }
        else
            fixed(float *ptr = ent.fields)
            {
                return(ED_ParseEpair(ptr + offset1, key, s));
            }
    }