예제 #1
0
        private static void createObjectFromEntry(VSMXInterpreter interpreter, Display display, Controller controller, VSMXBaseObject parent, RCO.RCOEntry entry)
        {
            if (entry.obj == null)
            {
                return;
            }

            VSMXBaseObject @object;

            if (entry.obj != null)
            {
                entry.obj.Display    = display;
                entry.obj.Controller = controller;
                @object = entry.obj.createVSMXObject(interpreter, parent, entry);
            }
            else
            {
                @object = parent;
            }

            if (entry.subEntries != null)
            {
                VSMXObject children = new VSMXObject(interpreter, null);
                @object.setPropertyValue(childrenName, children);
                for (int i = 0; i < entry.subEntries.Length; i++)
                {
                    RCO.RCOEntry child = entry.subEntries[i];
                    if (string.ReferenceEquals(child.label, null))
                    {
                        child.label = string.Format("{0:D4}", i);
                    }
                    createObjectFromEntry(interpreter, display, controller, children, child);
                }
            }
        }
예제 #2
0
        private static RCO.RCOEntry[] findEntries(RCO.RCOEntry mainTable, int id)
        {
            foreach (RCO.RCOEntry entry in mainTable.subEntries)
            {
                if (entry.id == id)
                {
                    return(entry.subEntries);
                }
            }

            return(null);
        }
예제 #3
0
        public static VSMXNativeObject create(VSMXInterpreter interpreter, Display display, VSMXNativeObject vsmxController, RCO.RCOEntry mainTable)
        {
            Resource         resource = new Resource(interpreter);
            VSMXNativeObject @object  = new VSMXNativeObject(interpreter, resource);

            resource.Object = @object;

            Controller controller = (Controller)vsmxController.Object;

            createTable(interpreter, display, controller, @object, mainTable, RCO.RCO_TABLE_OBJ, "pagetable");
            createTable(interpreter, display, controller, @object, mainTable, RCO.RCO_TABLE_ANIM, "animtable");
            createTable(interpreter, display, controller, @object, mainTable, RCO.RCO_TABLE_SOUND, "soundtable");
            createTable(interpreter, display, controller, @object, mainTable, RCO.RCO_TABLE_IMG, "texturetable");

            return(@object);
        }
예제 #4
0
        private static void createTable(VSMXInterpreter interpreter, Display display, Controller controller, VSMXObject parent, RCO.RCOEntry mainTable, int id, string name)
        {
            VSMXBaseObject table = new VSMXObject(interpreter, null);

            parent.setPropertyValue(name, table);

            RCO.RCOEntry[] entries = findEntries(mainTable, id);

            if (entries != null)
            {
                foreach (RCO.RCOEntry entry in entries)
                {
                    createObjectFromEntry(interpreter, display, controller, table, entry);
                }
            }
        }