Esempio n. 1
0
        public Graphic(LWF lwf, Movie parent, int objId)
            : base(lwf, parent, Format.Object.Type.GRAPHIC, objId)
        {
            Format.Graphic data = lwf.data.graphics[objId];
            int n = data.graphicObjects;
            m_displayList = new Object[n];

            Format.GraphicObject[] graphicObjects = lwf.data.graphicObjects;
            for (int i = 0; i < n; ++i) {
            Format.GraphicObject gobj =
                graphicObjects[data.graphicObjectId + i];
            Object obj = null;
            int graphicObjectId = gobj.graphicObjectId;

            // Ignore error
            if (graphicObjectId == -1)
                continue;

            switch ((Type)gobj.graphicObjectType) {
            case Type.BITMAP:
                obj = new Bitmap(lwf, parent, graphicObjectId);
                break;

            case Type.BITMAPEX:
                obj = new BitmapEx(lwf, parent, graphicObjectId);
                break;

            case Type.TEXT:
                obj = new Text(lwf, parent, graphicObjectId);
                break;
            }

            m_displayList[i] = obj;
            }
        }
Esempio n. 2
0
    void DrawInspector(ObjectContainer container)
    {
        EditorGUI.indentLevel = container.hierarchy + 1;

        LWF.Object obj = container.obj;
        LWF.LWF    lwf = obj.lwf;
        if (obj.type == Type.MOVIE)
        {
            LWF.Movie movie = (LWF.Movie)obj;

            string movieName = "Movie: " +
                               (movie.name == null ? "(null)" : movie.name);
            if (!visibilities.ContainsKey(movie))
            {
                visibilities[movie] = true;
            }
            visibilities[movie] =
                EditorGUILayout.Foldout(visibilities[movie], movieName);

            if (!visibilities[movie])
            {
                return;
            }

            EditorGUI.indentLevel = container.hierarchy + 2;
            string fullName = movie.GetFullName();
            if (fullName == null)
            {
                fullName = "(null)";
            }
            EditorGUILayout.LabelField("Fullname:", fullName);
            EditorGUILayout.LabelField("Visible:", movie.visible.ToString());
            EditorGUILayout.LabelField("Playing:", movie.playing.ToString());
            EditorGUILayout.LabelField("Frame:", movie.currentFrame.ToString());
            DrawInfo(container, movie);

            // TODO
            EditorGUILayout.Space();

            foreach (KeyValuePair <int, ObjectContainer>
                     kvp in container.objects)
            {
                DrawInspector(kvp.Value);
            }
        }
        else
        {
            EditorGUILayout.LabelField("Depth:", container.depth.ToString());
            EditorGUI.indentLevel = container.hierarchy + 2;

            switch (obj.type)
            {
            case Type.BUTTON:
                LWF.Button button     = (LWF.Button)obj;
                string     buttonName =
                    (button.name == null ? "(null)" : button.name);
                string buttonFullName = button.GetFullName();
                if (buttonFullName == null)
                {
                    buttonFullName = "(null)";
                }
                EditorGUILayout.LabelField("Button:", buttonName);

                EditorGUI.indentLevel = container.hierarchy + 3;
                EditorGUILayout.LabelField("Fullname:", buttonFullName);
                DrawInfo(container, obj);
                // TODO
                break;

            case Type.GRAPHIC:
                EditorGUILayout.LabelField("Graphic:", "");
                EditorGUI.indentLevel = container.hierarchy + 3;
                DrawInfo(container, obj);
                // TODO
                break;

            case Type.BITMAP:
                LWF.Bitmap bitmap      = (LWF.Bitmap)obj;
                int        tFId        = lwf.data.bitmaps[bitmap.objectId].textureFragmentId;
                string     textureName = (tFId == -1 ? "(null)" :
                                          lwf.data.textureFragments[tFId].filename);
                EditorGUILayout.LabelField("Bitmap:", textureName);
                EditorGUI.indentLevel = container.hierarchy + 3;
                DrawInfo(container, obj);
                // TODO
                break;

            case Type.BITMAPEX:
                LWF.BitmapEx bitmapEx = (LWF.BitmapEx)obj;
                int          tFIdEx   =
                    lwf.data.bitmapExs[bitmapEx.objectId].textureFragmentId;
                string textureNameEx = (tFIdEx == -1 ? "(null)" :
                                        lwf.data.textureFragments[tFIdEx].filename);
                EditorGUILayout.LabelField("BitmapEx:", textureNameEx);
                EditorGUI.indentLevel = container.hierarchy + 3;
                DrawInfo(container, obj);
                // TODO
                break;

            case Type.TEXT:
                LWF.Text text     = (LWF.Text)obj;
                string   textName = lwf.data.strings[
                    lwf.data.texts[text.objectId].nameStringId];
                EditorGUILayout.LabelField("Text:", textName);
                EditorGUI.indentLevel = container.hierarchy + 3;
                DrawInfo(container, obj);
                // TODO
                break;

            case Type.PARTICLE:
                EditorGUILayout.LabelField("Particle:", "");
                EditorGUI.indentLevel = container.hierarchy + 3;
                DrawInfo(container, obj);
                // TODO
                break;

            case Type.PROGRAMOBJECT:
                LWF.ProgramObject pObject     = (LWF.ProgramObject)obj;
                string            pObjectName = lwf.data.strings[
                    lwf.data.programObjects[pObject.objectId].stringId];
                EditorGUILayout.LabelField("ProgramObject:", pObjectName);
                EditorGUI.indentLevel = container.hierarchy + 3;
                DrawInfo(container, obj);
                // TODO
                break;
            }
        }
    }
Esempio n. 3
0
        private void ExecObject(int dlDepth, int objId,
		int matrixId, int colorTransformId, int instId,
		int dlBlendMode, bool updateBlendMode = false)
        {
            // Ignore error
            if (objId == -1)
            return;
            Data data = m_lwf.data;
            Format.Object dataObject = data.objects[objId];
            int dataObjectId = dataObject.objectId;
            Object obj = m_displayList[dlDepth];

            if (obj != null && (obj.type != (Type)dataObject.objectType ||
                obj.objectId != dataObjectId || (obj.IsMovie() &&
                ((IObject)obj).instanceId != instId))) {
            if (m_texts != null && obj.IsText())
                EraseText(obj.objectId);
            obj.Destroy();
            obj = null;
            }

            if (obj == null) {
            switch ((Type)dataObject.objectType) {
            case Type.BUTTON:
                obj = new Button(m_lwf,
                    this, dataObjectId, instId, matrixId, colorTransformId);
                break;

            case Type.GRAPHIC:
                obj = new Graphic(m_lwf, this, dataObjectId);
                break;

            case Type.MOVIE:
                obj = new Movie(m_lwf, this,
                    dataObjectId, instId, matrixId, colorTransformId);
                ((Movie)obj).blendMode = dlBlendMode;
                break;

            case Type.BITMAP:
                obj = new Bitmap(m_lwf, this, dataObjectId);
                break;

            case Type.BITMAPEX:
                obj = new BitmapEx(m_lwf, this, dataObjectId);
                break;

            case Type.TEXT:
                obj = new Text(m_lwf, this, dataObjectId, instId);
                break;

            case Type.PARTICLE:
                obj = new Particle(m_lwf, this, dataObjectId);
                break;

            case Type.PROGRAMOBJECT:
                obj = new ProgramObject(m_lwf, this, dataObjectId);
                break;
            }
            }

            if (obj.IsMovie() && updateBlendMode)
            ((Movie)obj).blendMode = dlBlendMode;

            if (obj.IsMovie() || obj.IsButton()) {
            IObject instance = (IObject)obj;
            instance.linkInstance = null;
            if (m_instanceHead == null)
                m_instanceHead = instance;
            else
                m_instanceTail.linkInstance = instance;
            m_instanceTail = instance;
            if (obj.IsButton())
                m_hasButton = true;
            }

            if (m_texts != null && obj.IsText())
            InsertText(obj.objectId);

            m_displayList[dlDepth] = obj;
            obj.execCount = m_movieExecCount;
            obj.Exec(matrixId, colorTransformId);
        }