This commit is contained in:
nephacks
2025-06-04 03:22:50 +02:00
parent f234f23848
commit f12416cffd
14243 changed files with 6446499 additions and 26 deletions

View File

@@ -0,0 +1,284 @@
/* XPM */
static char *magick[] = {
/* columns rows colors chars-per-pixel */
"32 32 246 2",
" c #03030b",
". c #090903",
"X c #050515",
"o c #080813",
"O c #131305",
"+ c #111108",
"@ c #1f1f19",
"# c #02022a",
"$ c #090929",
"% c #000035",
"& c #02023b",
"* c #13133e",
"= c #191926",
"- c #232306",
"; c #24241e",
": c #292915",
"> c #3b3b11",
", c #2c2c31",
"< c #000042",
"1 c #0e0e45",
"2 c #03035c",
"3 c #0c0c50",
"4 c #16164a",
"5 c #15155a",
"6 c #000064",
"7 c #04046d",
"8 c #010174",
"9 c #00007d",
"0 c #1e1e64",
"q c #121279",
"w c #262646",
"e c #2c2c51",
"r c #373751",
"t c #272769",
"y c #2a2a6b",
"u c #242478",
"i c #313163",
"p c #363677",
"a c #444400",
"s c #484800",
"d c #5d5d01",
"f c #565603",
"g c #59591a",
"h c #4a4a31",
"j c #47472b",
"k c #646400",
"l c #6e6e03",
"z c #67670b",
"x c #787805",
"c c #6a6a53",
"v c #7a7a52",
"b c #000083",
"n c #02028d",
"m c #090987",
"M c #030392",
"N c #00009d",
"B c #19199b",
"V c #0303a3",
"C c #0101ac",
"Z c #0a0aa8",
"A c #0101b2",
"S c #0000b9",
"D c #0000be",
"F c #0c0cb9",
"G c #1414ab",
"H c #1c1cb3",
"J c #1414b8",
"K c #2e2e83",
"L c #323298",
"P c #2a2aa8",
"I c #2f2fb4",
"U c #2727bc",
"Y c #3d3dac",
"T c #3c3cbc",
"R c #0000c2",
"E c #0000cf",
"W c #0e0eca",
"Q c #0e0ec0",
"! c #0f0fd0",
"~ c #0606db",
"^ c #1616c5",
"/ c #1919da",
"( c #0909e9",
") c #0f0ff4",
"_ c #1c1ce6",
"` c #1818f9",
"' c #2828c5",
"] c #2020de",
"[ c #2b2bdb",
"{ c #3535c2",
"} c #3333cb",
"| c #3b3bcb",
" . c #3939c6",
".. c #3c3cdb",
"X. c #3636d6",
"o. c #2828e7",
"O. c #2727ff",
"+. c #2c2cfc",
"@. c #2929f4",
"#. c #3737e9",
"$. c #3d3dfb",
"%. c #3131f8",
"&. c #4a4a8f",
"*. c #49499c",
"=. c #565693",
"-. c #575798",
";. c #5c5c99",
":. c #4545ac",
">. c #4b4ba4",
",. c #4c4cac",
"<. c #4646a3",
"1. c #4343ba",
"2. c #4d4db2",
"3. c #4d4dba",
"4. c #5151ac",
"5. c #5d5da2",
"6. c #5b5bb4",
"7. c #5555b1",
"8. c #656595",
"9. c #7f7f9f",
"0. c #7e7e94",
"q. c #6c6cb3",
"w. c #6c6cb8",
"e. c #7c7ca5",
"r. c #6767a8",
"t. c #4444c6",
"y. c #4c4cd8",
"u. c #5656c3",
"i. c #5d5dce",
"p. c #5555db",
"a. c #4040f7",
"s. c #4444ff",
"d. c #4b4bf3",
"f. c #4c4cfc",
"g. c #5252ff",
"h. c #5b5bff",
"j. c #6666cd",
"k. c #6060d0",
"l. c #6262e6",
"z. c #6464ff",
"x. c #6c6cf7",
"c. c #6e6efe",
"v. c #6161f1",
"b. c #7979e8",
"n. c #7474ff",
"m. c #7a7aff",
"M. c #838302",
"N. c #8f8f00",
"B. c #949401",
"V. c #9c9c00",
"C. c #9c9c1e",
"Z. c #a4a400",
"A. c #acac00",
"S. c #b4b400",
"D. c #bcbc00",
"F. c #b7b70a",
"G. c #9a9a4d",
"H. c #8f8f7f",
"J. c #b2b25a",
"K. c #a8a874",
"L. c #b0b07f",
"P. c #c3c300",
"I. c #cbcb00",
"U. c #d3d300",
"Y. c #dcdc00",
"T. c #d8d817",
"R. c #d5d520",
"E. c #d7d736",
"W. c #e3e300",
"Q. c #ecec00",
"!. c #ecec0b",
"~. c #f1f100",
"^. c #f6f601",
"/. c #f6f60b",
"(. c #f9f900",
"). c #fdfd02",
"_. c #fdfd0b",
"`. c #fefe13",
"'. c #f8f81c",
"]. c #ebeb3d",
"[. c #ffff25",
"{. c #fcfc2a",
"}. c #fefe34",
"|. c #ffff3b",
" X c #c2c274",
".X c #dada6d",
"XX c #eded4c",
"oX c #fefe43",
"OX c #ffff4e",
"+X c #fefe59",
"@X c #ffff55",
"#X c #f6f669",
"$X c #fefe62",
"%X c #848493",
"&X c #8a8a93",
"*X c #8f8f99",
"=X c #83839b",
"-X c #9d9d84",
";X c #909097",
":X c #93939b",
">X c #9a9a9e",
",X c #8484a4",
"<X c #8787a7",
"1X c #8f8fb4",
"2X c #9595a2",
"3X c #9696af",
"4X c #9d9da2",
"5X c #9696bf",
"6X c #9999ba",
"7X c #a5a585",
"8X c #a4a4a5",
"9X c #aeaeae",
"0X c #a5a5a9",
"qX c #b1b1af",
"wX c #b2b2b1",
"eX c #b6b6b5",
"rX c #b5b5b3",
"tX c #b8b8b7",
"yX c #b9b9b8",
"uX c Gray74",
"iX c #8d8dcc",
"pX c #9999cc",
"aX c #8c8ce3",
"sX c #8484ff",
"dX c #8d8dff",
"fX c #8b8bf7",
"gX c #9b9bfe",
"hX c #9696ff",
"jX c #ababcb",
"kX c #b5b5c4",
"lX c #bbbbcf",
"zX c #a9a9e2",
"xX c #a3a3e8",
"cX c #a6a6ff",
"vX c #acacff",
"bX c #b6b6f4",
"nX c #b1b1ff",
"mX c #bcbcff",
"MX c #babaf5",
"NX c #dede88",
"BX c #e0e089",
"VX c #e3e393",
"CX c #c1c1c1",
"ZX c #c3c3fc",
"AX c #c8c8fc",
"SX c #d0d0ff",
/* pixels */
"CXCXCXCXCXCXCXCXCXCXkXuXtXeXwXwXwXwXeXyXuXCXCXCXCXCXCXCXCXCXCXCX",
"CXCXCXCXCXCXCXCXuXeXqX8X>X;X&X&X&X&X;X4X8XwXyXuXCXCXCXCXCXCXCXCX",
"CXCXCXCXCXCXuXyX9X>X%X8.*.:.1.t.t.t.1.,.5.=X4X9XyXuXCXCXCXCXCXCX",
"CXCXCXCXCXuXwX8X0.-.<.2.3.1.T T { { | X.X.{ 4.,X8XeXuXCXCXCXCXCX",
"CXCXCXCXuXqX>X8.>.4.&.p u B G F F F Q ^ ^ ' [ { r.4XwXuXCXCXCXCX",
"CXCXCXuXqX*X;.2.,.p * ; ; 2 N A S D D C n m G ] [ 6.2XwXuXCXCXCX",
"CXCXuXrX>X;.2.>.y $ + k N.> 8 S D R C 9 < # 1 V _ o.6.4XeXuXCXCX",
"CXCXtX8X8.,.>.t # O k V.S.S.& C R D n & s d * C o.#.q.8XyXCXCX",
"CXuX9X0.>.<.t # O k V.S.I.Y.z 6 S C 6 o a V.A.x * A @...<X9XuXCX",
"CXtX>X-.2.K & O k V.D.U.Q.~.Y.g 9 9 % O N.A.P.U.B.4 W +.u.4XtXCX",
"CX9X%X:.Y q $ d Z.D.U.Q.(.(.~.D.# % d A.I.W.~.!.C.L @.#.<XwXCX",
"uX8X8.1.P M 6 = l U.Q.^.(.).^.W.l O k Z.P.W._.{.|.].=.@.s.w.8XuX",
"yX>X>.T G V N b 1 M.~.).(.).(.Q.U.Z.S.P.W./.|.+X$XH.} $.h.k.4XyX",
"eX;X:.I Z V C A N 3 x W.^.(.(.^.Q.Y.Y.W./.}.+XL.6...%.f.c.l.:XeX",
"wX&X1.H C C A S R C 7 $ B.W.^.(.^.^.~./.[.oXK.| $.$.s.h.sXx.;XwX",
"wX&X{ H C A S D D A b % - P.Q.).).)._.`.{.G.P d.g.g.h.n.dXm.*XwX",
"qX&X' J A S S A M 7 & l I.Q.)._._.`.`.T.j 0 :.p.v.c.sXgXsX;XwX",
"wX&XU J S S C b < X . d A.U.~.`.'.`._.).(.W.l = i 4.b.gXcXfX;XwX",
"eX&XI ^ S C 9 & a M.Z.D.W.`.{.E.R.).).(.~.W.D.f , 8.xXvXaX:XeX",
"yX4XY ^ A b & a B.Z.P.Y./.}.XXp w S.(.^.~.Q.Y.U.F.v pXnXiX4XyX",
"uX8X;.^ A 6 o a B.A.P.W.^.}.@XK. .P @ W.~.^.(./.'.]. XjXvX1X8XuX",
"CXwX=X' F 8 : B.S.I.W.(.[.OX#X,.d.y.e M.Q.(.`.|.+XNXkXMXxX:X9XCX",
"CXyX4X,.! V 4 x I.Q.(.`.|.$X7Xy.h.l.*.: Y.(.{.$XVXlXZXmX5X4XeXCX",
"CXuX9X9.' ~ C 5 g D.).[.OX#X6.f.z.c.j.r x _.oXBXlXZXSXzX2X9XuXCX",
"CXkXyX8Xr./ ( E N w F.[.OX7Xy.g.z.n.b.5.h T..XkXZXSXbX3X8XtXCXCX",
"CXCXCXeX4X7._ ) ( S u c J.4.a.g.z.m.sXaXe.-XkXZXSXMX6X>XwXuXCXCX",
"CXCXCXuXwX2X6.o.` ` ( W Y X.s.h.c.sXhXcXbXbXZXAXbX6X>X9XuXCXCXCX",
"CXCXCXCXuXwX4Xq.X.O.O.+.$.f.h.n.sXgXvXmXZXZXmXzX3X>X9XuXCXCXCXCX",
"CXCXCXCXCXuXeX8X,Xu.#.s.g.c.m.dXgXcXvXnXnXxX5X2X8XwXuXCXCXCXCXCX",
"CXCXCXCXCXCXuXyX9X4X,Xw.i.l.x.m.sXfXaXiX1X2X4X9XtXuXCXCXCXCXCXCX",
"CXCXCXCXCXCXCXCXuXtXwX0X4X:X;X*X;X;X:X4X8X9XeXuXCXCXCXCXCXCXCXCX",
"CXCXCXCXCXCXCXCXCXCXCXuXyXeXwXwXwXwXeXyXuXCXCXCXCXCXCXCXCXCXCXCX"
};

View File

@@ -0,0 +1,284 @@
/* XPM */
static char *magick[] = {
/* columns rows colors chars-per-pixel */
"32 32 246 2",
" c #03030b",
". c #090903",
"X c #050515",
"o c #080813",
"O c #131305",
"+ c #111108",
"@ c #1f1f19",
"# c #02022a",
"$ c #090929",
"% c #000035",
"& c #02023b",
"* c #13133e",
"= c #191926",
"- c #232306",
"; c #24241e",
": c #292915",
"> c #3b3b11",
", c #2c2c31",
"< c #000042",
"1 c #0e0e45",
"2 c #03035c",
"3 c #0c0c50",
"4 c #16164a",
"5 c #15155a",
"6 c #000064",
"7 c #04046d",
"8 c #010174",
"9 c #00007d",
"0 c #1e1e64",
"q c #121279",
"w c #262646",
"e c #2c2c51",
"r c #373751",
"t c #272769",
"y c #2a2a6b",
"u c #242478",
"i c #313163",
"p c #363677",
"a c #444400",
"s c #484800",
"d c #5d5d01",
"f c #565603",
"g c #59591a",
"h c #4a4a31",
"j c #47472b",
"k c #646400",
"l c #6e6e03",
"z c #67670b",
"x c #787805",
"c c #6a6a53",
"v c #7a7a52",
"b c #000083",
"n c #02028d",
"m c #090987",
"M c #030392",
"N c #00009d",
"B c #19199b",
"V c #0303a3",
"C c #0101ac",
"Z c #0a0aa8",
"A c #0101b2",
"S c #0000b9",
"D c #0000be",
"F c #0c0cb9",
"G c #1414ab",
"H c #1c1cb3",
"J c #1414b8",
"K c #2e2e83",
"L c #323298",
"P c #2a2aa8",
"I c #2f2fb4",
"U c #2727bc",
"Y c #3d3dac",
"T c #3c3cbc",
"R c #0000c2",
"E c #0000cf",
"W c #0e0eca",
"Q c #0e0ec0",
"! c #0f0fd0",
"~ c #0606db",
"^ c #1616c5",
"/ c #1919da",
"( c #0909e9",
") c #0f0ff4",
"_ c #1c1ce6",
"` c #1818f9",
"' c #2828c5",
"] c #2020de",
"[ c #2b2bdb",
"{ c #3535c2",
"} c #3333cb",
"| c #3b3bcb",
" . c #3939c6",
".. c #3c3cdb",
"X. c #3636d6",
"o. c #2828e7",
"O. c #2727ff",
"+. c #2c2cfc",
"@. c #2929f4",
"#. c #3737e9",
"$. c #3d3dfb",
"%. c #3131f8",
"&. c #4a4a8f",
"*. c #49499c",
"=. c #565693",
"-. c #575798",
";. c #5c5c99",
":. c #4545ac",
">. c #4b4ba4",
",. c #4c4cac",
"<. c #4646a3",
"1. c #4343ba",
"2. c #4d4db2",
"3. c #4d4dba",
"4. c #5151ac",
"5. c #5d5da2",
"6. c #5b5bb4",
"7. c #5555b1",
"8. c #656595",
"9. c #7f7f9f",
"0. c #7e7e94",
"q. c #6c6cb3",
"w. c #6c6cb8",
"e. c #7c7ca5",
"r. c #6767a8",
"t. c #4444c6",
"y. c #4c4cd8",
"u. c #5656c3",
"i. c #5d5dce",
"p. c #5555db",
"a. c #4040f7",
"s. c #4444ff",
"d. c #4b4bf3",
"f. c #4c4cfc",
"g. c #5252ff",
"h. c #5b5bff",
"j. c #6666cd",
"k. c #6060d0",
"l. c #6262e6",
"z. c #6464ff",
"x. c #6c6cf7",
"c. c #6e6efe",
"v. c #6161f1",
"b. c #7979e8",
"n. c #7474ff",
"m. c #7a7aff",
"M. c #838302",
"N. c #8f8f00",
"B. c #949401",
"V. c #9c9c00",
"C. c #9c9c1e",
"Z. c #a4a400",
"A. c #acac00",
"S. c #b4b400",
"D. c #bcbc00",
"F. c #b7b70a",
"G. c #9a9a4d",
"H. c #8f8f7f",
"J. c #b2b25a",
"K. c #a8a874",
"L. c #b0b07f",
"P. c #c3c300",
"I. c #cbcb00",
"U. c #d3d300",
"Y. c #dcdc00",
"T. c #d8d817",
"R. c #d5d520",
"E. c #d7d736",
"W. c #e3e300",
"Q. c #ecec00",
"!. c #ecec0b",
"~. c #f1f100",
"^. c #f6f601",
"/. c #f6f60b",
"(. c #f9f900",
"). c #fdfd02",
"_. c #fdfd0b",
"`. c #fefe13",
"'. c #f8f81c",
"]. c #ebeb3d",
"[. c #ffff25",
"{. c #fcfc2a",
"}. c #fefe34",
"|. c #ffff3b",
" X c #c2c274",
".X c #dada6d",
"XX c #eded4c",
"oX c #fefe43",
"OX c #ffff4e",
"+X c #fefe59",
"@X c #ffff55",
"#X c #f6f669",
"$X c #fefe62",
"%X c #848493",
"&X c #8a8a93",
"*X c #8f8f99",
"=X c #83839b",
"-X c #9d9d84",
";X c #909097",
":X c #93939b",
">X c #9a9a9e",
",X c #8484a4",
"<X c #8787a7",
"1X c #8f8fb4",
"2X c #9595a2",
"3X c #9696af",
"4X c #9d9da2",
"5X c #9696bf",
"6X c #9999ba",
"7X c #a5a585",
"8X c #a4a4a5",
"9X c #aeaeae",
"0X c #a5a5a9",
"qX c #b1b1af",
"wX c #b2b2b1",
"eX c #b6b6b5",
"rX c #b5b5b3",
"tX c #b8b8b7",
"yX c #b9b9b8",
"uX c Gray74",
"iX c #8d8dcc",
"pX c #9999cc",
"aX c #8c8ce3",
"sX c #8484ff",
"dX c #8d8dff",
"fX c #8b8bf7",
"gX c #9b9bfe",
"hX c #9696ff",
"jX c #ababcb",
"kX c #b5b5c4",
"lX c #bbbbcf",
"zX c #a9a9e2",
"xX c #a3a3e8",
"cX c #a6a6ff",
"vX c #acacff",
"bX c #b6b6f4",
"nX c #b1b1ff",
"mX c #bcbcff",
"MX c #babaf5",
"NX c #dede88",
"BX c #e0e089",
"VX c #e3e393",
"CX c #c1c1c1",
"ZX c #c3c3fc",
"AX c #c8c8fc",
"SX c #d0d0ff",
/* pixels */
"CXCXCXCXCXCXCXCXCXCXkXuXtXeXwXwXwXwXeXyXuXCXCXCXCXCXCXCXCXCXCXCX",
"CXCXCXCXCXCXCXCXuXeXqX8X>X;X&X&X&X&X;X4X8XwXyXuXCXCXCXCXCXCXCXCX",
"CXCXCXCXCXCXuXyX9X>X%X8.*.:.1.t.t.t.1.,.5.=X4X9XyXuXCXCXCXCXCXCX",
"CXCXCXCXCXuXwX8X0.-.<.2.3.1.T T { { | X.X.{ 4.,X8XeXuXCXCXCXCXCX",
"CXCXCXCXuXqX>X8.>.4.&.p u B G F F F Q ^ ^ ' [ { r.4XwXuXCXCXCXCX",
"CXCXCXuXqX*X;.2.,.p * ; ; 2 N A S D D C n m G ] [ 6.2XwXuXCXCXCX",
"CXCXuXrX>X;.2.>.y $ + k N.> 8 S D R C 9 < # 1 V _ o.6.4XeXuXCXCX",
"CXCXtX8X8.,.>.t # O k V.S.S.& C R D n & s d * C o.#.q.8XyXCXCX",
"CXuX9X0.>.<.t # O k V.S.I.Y.z 6 S C 6 o a V.A.x * A @...<X9XuXCX",
"CXtX>X-.2.K & O k V.D.U.Q.~.Y.g 9 9 % O N.A.P.U.B.4 W +.u.4XtXCX",
"CX9X%X:.Y q $ d Z.D.U.Q.(.(.~.D.# % d A.I.W.~.!.C.L @.#.<XwXCX",
"uX8X8.1.P M 6 = l U.Q.^.(.).^.W.l O k Z.P.W._.{.|.].=.@.s.w.8XuX",
"yX>X>.T G V N b 1 M.~.).(.).(.Q.U.Z.S.P.W./.|.+X$XH.} $.h.k.4XyX",
"eX;X:.I Z V C A N 3 x W.^.(.(.^.Q.Y.Y.W./.}.+XL.6...%.f.c.l.:XeX",
"wX&X1.H C C A S R C 7 $ B.W.^.(.^.^.~./.[.oXK.| $.$.s.h.sXx.;XwX",
"wX&X{ H C A S D D A b % - P.Q.).).)._.`.{.G.P d.g.g.h.n.dXm.*XwX",
"qX&X' J A S S A M 7 & l I.Q.)._._.`.`.T.j 0 :.p.v.c.sXgXsX;XwX",
"wX&XU J S S C b < X . d A.U.~.`.'.`._.).(.W.l = i 4.b.gXcXfX;XwX",
"eX&XI ^ S C 9 & a M.Z.D.W.`.{.E.R.).).(.~.W.D.f , 8.xXvXaX:XeX",
"yX4XY ^ A b & a B.Z.P.Y./.}.XXp w S.(.^.~.Q.Y.U.F.v pXnXiX4XyX",
"uX8X;.^ A 6 o a B.A.P.W.^.}.@XK. .P @ W.~.^.(./.'.]. XjXvX1X8XuX",
"CXwX=X' F 8 : B.S.I.W.(.[.OX#X,.d.y.e M.Q.(.`.|.+XNXkXMXxX:X9XCX",
"CXyX4X,.! V 4 x I.Q.(.`.|.$X7Xy.h.l.*.: Y.(.{.$XVXlXZXmX5X4XeXCX",
"CXuX9X9.' ~ C 5 g D.).[.OX#X6.f.z.c.j.r x _.oXBXlXZXSXzX2X9XuXCX",
"CXkXyX8Xr./ ( E N w F.[.OX7Xy.g.z.n.b.5.h T..XkXZXSXbX3X8XtXCXCX",
"CXCXCXeX4X7._ ) ( S u c J.4.a.g.z.m.sXaXe.-XkXZXSXMX6X>XwXuXCXCX",
"CXCXCXuXwX2X6.o.` ` ( W Y X.s.h.c.sXhXcXbXbXZXAXbX6X>X9XuXCXCXCX",
"CXCXCXCXuXwX4Xq.X.O.O.+.$.f.h.n.sXgXvXmXZXZXmXzX3X>X9XuXCXCXCXCX",
"CXCXCXCXCXuXeX8X,Xu.#.s.g.c.m.dXgXcXvXnXnXxX5X2X8XwXuXCXCXCXCXCX",
"CXCXCXCXCXCXuXyX9X4X,Xw.i.l.x.m.sXfXaXiX1X2X4X9XtXuXCXCXCXCXCXCX",
"CXCXCXCXCXCXCXCXuXtXwX0X4X:X;X*X;X;X:X4X8X9XeXuXCXCXCXCXCXCXCXCX",
"CXCXCXCXCXCXCXCXCXCXCXuXyXeXwXwXwXwXeXyXuXCXCXCXCXCXCXCXCXCXCXCX"
};

View File

@@ -0,0 +1,352 @@
global proc AEDirectXShaderTemplate ( string $node )
{
editorTemplate -beginScrollLayout;
editorTemplate -label "Maya Viewer Color" -addControl "color" ;
editorTemplate -callCustom AEDirectXNew AEDirectXReplace $node;
editorTemplate -endLayout;
// Hide "Extra Attributes" UI for dynamic attributes.
editorTemplate -addExtraControls;
editorTemplate -endScrollLayout;
}
global proc AEDirectXNew( string $messagePlug )
{
AEDirectXReplace($messagePlug);
}
proc DxFxParameterLayout( string $shaderNode )
{
string $dxfxScript= `getAttr ($shaderNode + ".FxScript")`;
eval( $dxfxScript );
}
global proc DxFxScriptTest(string $shaderNode )
{
string $dxfxWindow= "FxShaderTest";
if ( `window -exists $dxfxWindow` )
deleteUI $dxfxWindow;
window -widthHeight 200 300 $dxfxWindow;
if ( `frameLayout -exists dxfxAEFrame` )
deleteUI dxfxAEFrame;
frameLayout -label "DirectX Effect Parameters"
-borderStyle "etchedIn"
-collapsable true
-marginWidth 10
-visible true
dxfxAEFrame;
{
columnLayout -adjustableColumn true -columnAlign "left";
{
DxFxParameterLayout($shaderNode);
setParent ..;
}
setParent ..;
}
showWindow $dxfxWindow;
}
global proc string plugNode( string $plug )
{
string $buffer[];
tokenize($plug, ".", $buffer);
return $buffer[0];
}
global proc dxfxDeleteAttribute(string $AttrName, string $Node)
{
if( `attributeExists $AttrName $Node` )
{
catch( `deleteAttr -attribute $AttrName $Node` );
}
}
global proc dxfxStackDown(int $change)
{
int $index;
for($index= $change; $index < 0; $index++)
{
setParent ..;
setParent ..;
}
}
global proc dxfxStackUp( string $UIName, int $NoChildren)
{
if($NoChildren)
{
columnLayout -adjustableColumn true;
}
else
{
frameLayout -label $UIName
-borderStyle "out"
-font "smallPlainLabelFont"
-marginWidth 10
-collapse true
-collapsable true
-visible true;
}
columnLayout -adjustableColumn true;
}
global proc dxfxControlColorCreate(string $UIName, string $plug, int $length)
{
string $colorUIName = $UIName;
if($length == 4)
$colorUIName = ($colorUIName + ".rgb");
string $colorSlider = `colorSliderGrp -label $colorUIName`;
string $quotedColorSlider = ("\"" + $colorSlider + "\"");
string $quotedPlug = ("\"" + $plug + "\"");
string $callback = "dxfxControlColorCallback( " + $quotedColorSlider + " , " + $quotedPlug + " )";
float $P0Value= `getAttr ($plug + "[0]")`;
float $P1Value= `getAttr ($plug + "[1]")`;
float $P2Value= `getAttr ($plug + "[2]")`;
//print ("ColorValues: " + $P0Value + " " + $P1Value + " " + $P2Value + " ");
colorSliderGrp -edit -rgbValue $P0Value $P1Value $P2Value $colorSlider;
//print ("ColorValues2: " + $P0Value + " " + $P1Value + " " + $P2Value + " ");
colorSliderGrp -edit -changeCommand $callback $colorSlider;
if($length == 4)
{
string $alphaPlug = ($plug + "[3]");
string $alphaUIName = ($UIName + ".a");
dxfxControlSliderCreate( "float", $alphaUIName, 0.0, 1.0, 0.01, $alphaPlug);;
}
}
global proc dxfxControlColorCallback(string $control, string $plug)
{
float $colorValues[3]= `colorSliderGrp -q -rgbValue $control`;
setAttr ($plug + "[0]") $colorValues[0];
setAttr ($plug + "[1]") $colorValues[1];
setAttr ($plug + "[2]") $colorValues[2];
}
global proc dxfxControlSliderCreate(string $type, string $UIName, float $min, float $max, float $step, string $plug)
{
string $quotedUIName = ("\"" + $UIName + "\"");
string $Slider;
if(0 == strcmp( $type, "float" ))
{
float $floatMin = $min;
float $floatMax = $max;
float $floatStep = $step;
$Slider = `floatSliderGrp -label $UIName -minValue $floatMin -maxValue $floatMax -step $floatStep -field true`;
}
else
{
if(0 == strcmp( $type, "int" ))
{
int $intMin = $min;
int $intMax = $max;
int $intStep = $step;
$Slider = `intSliderGrp -label $UIName -minValue $intMin -maxValue $intMax -step $intStep -field true`;
}
else
{
if(0 == strcmp( $type, "bool" ))
{
$Slider = `intSliderGrp -label $UIName -minValue 0 -maxValue 1 -step 1 -field true`;
}
else
{
return;
}
}
}
connectControl $Slider $plug;
}
global proc dxfxControlScalarCreate(string $type, string $UIName, string $plug)
{
string $control;
if(0 == strcmp( $type, "float" ))
{
$control = "floatFieldGrp";
}
else
{
if(0 == strcmp( $type, "int" ))
{
$control = "intFieldGrp";
}
else
{
if(0 == strcmp( $type, "bool" ))
{
$control = "checkBoxGrp";
}
else
{
return;
}
}
}
string $command = ( $control + " -numberOfFields 1" + " -label \"" + $UIName + "\"" + " -columnWidth 2 220" );
string $rowCtrl= eval($command);
connectControl -index 2 $rowCtrl $plug;
}
global proc dxfxControlVectorCreate(string $type, string $UIName, string $plug, int $length)
{
dxfxControlMatrixCreate($type, $UIName, $plug, 1, $length);
}
global proc dxfxControlMatrixCreate(string $type, string $UIName, string $plug, int $rows, int $columns )
{
string $control;
if(0 == strcmp( $type, "float" ))
{
$control = "floatFieldGrp";
}
else
{
if(0 == strcmp( $type, "int" ))
{
$control = "intFieldGrp";
}
else
{
if(0 == strcmp( $type, "bool" ))
{
$control = "checkBoxGrp";
}
else
{
return;
}
}
}
int $rowIndex;
for($rowIndex= 0; $rowIndex < $rows; $rowIndex++)
{
string $command;
int $columnIndex;
$command = ($control + " -numberOfFields " + $columns );
if($rowIndex == 0)
$command = ($command + " -label \"" + $UIName + "\"");
for( $columnIndex = 0; $columnIndex < $columns; $columnIndex++ )
{
$command = ($command + " -columnWidth " + ($columnIndex + 2) + " " + (220 / $columns) );
}
string $rowCtrl= eval($command);
for( $columnIndex = 0; $columnIndex < $columns; $columnIndex++ )
{
int $plugIndex = ( $rowIndex * $rows ) + $columnIndex;
string $subPlugName = ($plug + "[" + $plugIndex + "]");
connectControl -index ( $columnIndex + 2 ) $rowCtrl $subPlugName;
}
}
}
global proc dxfxControlStringCreate(string $UIName, string $plug)
{
string $rowCtrl= `textFieldGrp -label $UIName`;
connectControl -index 2 $rowCtrl $plug;
}
global proc dxfxControlTextureCreate(string $UIName, string $plug)
{
string $quotedPlug = ("\"" + $plug + "\"");
string $buttonCmd = ("setAttr -type \"string\" " + $quotedPlug + " `fileDialog -directoryMask \"*.dds;*.jpg;*.bmp;*.tga;*.png;*.ppm;*.dib;*.hdr;*.pfm\"`;");
string $rowCtrl= `textFieldButtonGrp -label $UIName -buttonLabel "..." -buttonCommand $buttonCmd`;
connectControl -index 2 $rowCtrl $plug;
}
global proc AEDirectXReplace( string $messagePlug )
{
string $shaderNode = plugNode($messagePlug);
{
string $dxfxFileAttribute = $shaderNode + ".FxFile";
string $dxfxFile= `getAttr $dxfxFileAttribute`;
string $dxfxSetFile = "setAttr -type \"string\" " + $dxfxFileAttribute + " `fileDialog -directoryMask \"*.fx\"`";
string $dxfxReloadFile = "setAttr -type \"string\" " + $dxfxFileAttribute + " `getAttr -asString " + $dxfxFileAttribute + "`";
if ( `textFieldButtonGrp -exists dxfxFileControl` )
deleteUI dxfxFileControl;
textFieldButtonGrp
-label "DirectX Effect File"
-text $dxfxFile
-editable false
-buttonLabel "..."
-buttonCommand $dxfxSetFile
dxfxFileControl;
scriptJob
-parent dxfxFileControl
-replacePrevious
-killWithScene
-runOnce false
-compressUndo true
-attributeChange $dxfxFileAttribute "refreshAE;";
if ( `button -exists dxfxReloadControl` )
deleteUI dxfxReloadControl;
button
-label "Reload Effect File"
-command $dxfxReloadFile
dxfxReloadControl;
if ( `frameLayout -exists dxfxRollOut` )
deleteUI dxfxRollOut;
frameLayout -label "DirectX Effect Parameters"
-collapse false
-collapsable true
-visible false
dxfxRollOut;
{
columnLayout -adjustableColumn true;
{
DxFxParameterLayout($shaderNode);
setParent ..;
}
layout -edit -visible true dxfxRollOut;
setParent ..;
}
setParent ..;
setUITemplate -popTemplate;
}
}

View File

@@ -0,0 +1,491 @@
global int $DXMLogFileId= 0;
global proc DXMLogStart( string $filename, int $append, string $runName )
{
global int $DXMLogFileId;
if($DXMLogFileId != 0)
return;
if($append)
{
$DXMLogFileId=`fopen $filename "a"`;
}
else
{
$DXMLogFileId=`fopen $filename`;
}
fprint $DXMLogFileId "<DXMLog";
if(size($runName) > 0)
{
fprint $DXMLogFileId " name=\"";
fprint $DXMLogFileId $runName;
fprint $DXMLogFileId "\"";
}
fprint $DXMLogFileId ">";
}
global proc DXMLogStop( )
{
global int $DXMLogFileId;
if($DXMLogFileId != 0)
{
fprint $DXMLogFileId "</DXMLog>";
fclose $DXMLogFileId;
$DXMLogFileId= 0;
}
}
global proc DXMLogTestBegin( string $testName)
{
global int $DXMLogFileId;
if($DXMLogFileId != 0)
{
fprint $DXMLogFileId "<DXMLogTest";
if(size($testName) > 0)
{
fprint $DXMLogFileId " name=\"";
fprint $DXMLogFileId $testName;
fprint $DXMLogFileId "\"";
}
fprint $DXMLogFileId ">";
}
}
global proc DXMLogTestEnd()
{
global int $DXMLogFileId;
if($DXMLogFileId != 0)
{
fprint $DXMLogFileId "\t</DXMLogTest>";
}
}
global proc DXMLogWarning( string $warnStr)
{
global int $DXMLogFileId;
warning $warnStr;
if($DXMLogFileId != 0)
{
fprint $DXMLogFileId "<DXMLogWarning>";
fprint $DXMLogFileId $warnStr;
fprint $DXMLogFileId "</DXMLogWarning>";
}
}
global proc DXMLogInfo( string $warnStr)
{
global int $DXMLogFileId;
if($DXMLogFileId != 0)
{
fprint $DXMLogFileId "<DXMLogInfo>";
fprint $DXMLogFileId $warnStr;
fprint $DXMLogFileId "</DXMLogInfo>";
}
}
global proc DXMLogResult( string $result)
{
global int $DXMLogFileId;
if($DXMLogFileId != 0)
{
fprint $DXMLogFileId "<DXMLogResult>";
fprint $DXMLogFileId $result;
fprint $DXMLogFileId "</DXMLogResult>";
}
}
global proc int DXMTestNodeOwnershipOfRoutes()
{
DXMLogTestBegin("DXMTestNodeOwnershipOfRoutes");
int $result= true;
int $iNode;
string $nodes[]= `ls -dagObjects`; //`DXMGraphListNodes "DXMSyncGraph"`;
for($iNode= 0; $iNode < size($nodes); $iNode++)
{
string $paths[] = `ls -long -allPaths $nodes[$iNode]`;
string $routes[] = `DXMNodeDagListRoutes "DXMSyncGraph" $nodes[$iNode]`;
string $pathsMinusRoutes[] =stringArrayRemove($routes, $paths);
int $iPath;
for($iPath= 0; $iPath < size($pathsMinusRoutes); $iPath++ )
{
DXMLogWarning("Path in maya not found on DXMNode. Node: " + $nodes[$iNode] + " Path: " + $pathsMinusRoutes[$iPath]);
$result= false;
}
string $routesMinusPaths[] =stringArrayRemove($paths, $routes);
int $iRoute;
for($iRoute= 0; $iRoute < size($routes); $iRoute++ )
{
DXMLogWarning("Route in DXMNode not found on in maya. Node: " + $nodes[$iNode] + " Route: " + $routesMinusPaths[$iRoute]);
$result= false;
}
}
DXMLogResult($result);
DXMLogTestEnd();
return $result;
}
global proc int DXMTestRouteVisibility()
{
DXMLogTestBegin("DXMTestRouteVisibility");
int $result= true;
int $iNode;
string $invisibleNodes[] = `ls -dagObjects -invisible`;
for($iNode= 0; $iNode < size($invisibleNodes); $iNode++)
{
int $iPath;
string $pathList[] = `ls -long -allPaths $invisibleNodes[$iNode]`;
for($iPath= 0; $iPath < size($pathList) && $result == true; $iPath++)
{
int $routeVis= `DXMRouteIsVisible "DXMSyncGraph" $pathList[$iPath]`;
if($routeVis == true)
{
DXMLogWarning( "Failure in node's immediate path: (Node: " + $invisibleNodes[$iNode] + ") (Path: " + $pathList[$iPath] + " )" );
$result= false;
}
int $iDecendent;
string $decendentList[] = `listRelatives -fullPath -allDescendents $pathList[$iPath]`;
for($iDecendent= 0; $iDecendent < size($decendentList) && $result == true; $iDecendent++)
{
$routeVis= `DXMRouteIsVisible "DXMSyncGraph" $decendentList[$iDecendent]`;
if($routeVis == true)
{
DXMLogWarning( "Failure in node's decendents paths (Node: " + $invisibleNodes[$iNode] + ") (Path: " + $decendentList[$iDecendent] + " )" );
$result= false;
}
}
}
}
DXMLogResult($result);
DXMLogTestEnd();
return $result;
}
global proc int DXMTestNodeExplicitInvisibility()
{
DXMLogTestBegin("DXMTestNodeExplicitInvisibility");
int $result= true;
int $iNode;
string $invisibleNodes[] = `ls -dagObjects -invisible`;
for($iNode= 0; $iNode < size($invisibleNodes); $iNode++)
{
if(0 == `DXMNodeDagIsExplicitlyInvisible "DXMSyncGraph" $invisibleNodes[$iNode]`)
{
DXMLogWarning( "DXMNode Visiblility does not match Maya: " + $invisibleNodes[$iNode] );
$result= false;
}
}
DXMLogResult($result);
DXMLogTestEnd();
return $result;
}
global proc int DXMTestRouteParents()
{
DXMLogTestBegin("DXMTestRouteParents");
int $result= true;
string $routeList[]= `DXMGraphListRoutes "DXMSyncGraph"`;
int $iRoute;
for($iRoute= 0; $iRoute < size($routeList); $iRoute++)
{
string $mayaParent[]= `listRelatives -fullPath -parent $routeList[$iRoute]`;
string $dxmParent[]= `DXMRouteGetParent "DXMSyncGraph" $routeList[$iRoute]`;
if( size($mayaParent) != 0 && size($dxmParent) != 0 )
{
if($dxmParent[0] != $mayaParent[0])
{
DXMLogWarning( "Parenting mismatch on route: " + $routeList[$iRoute] + " DXM: " + $dxmParent[0] + " Maya: " + $mayaParent[0] );
$result= false;
}
}
else
{
if(size($mayaParent) > 0)
{
DXMLogWarning( "Parenting mismatch on route: " + $routeList[$iRoute] + " Maya: " + $mayaParent[0] + " (DXM is empty)");
$result= false;
}
if(size($dxmParent) > 0)
{
DXMLogWarning( "Parenting mismatch on route: " + $routeList[$iRoute] + " DXM: " + $dxmParent[0] + " (Maya is empty)");
$result= false;
}
}
}
DXMLogResult($result);
DXMLogTestEnd();
return $result;
}
global proc int DXMTestFrameParents()
{
DXMLogTestBegin("DXMTestFrameParents");
int $result= true;
string $routeList[]= `DXMGraphListRoutes "DXMSyncGraph"`;
int $iRoute;
for($iRoute= 0; $iRoute < size($routeList); $iRoute++)
{
int $isFrameParentingEqual= `DXMRouteIsFrameParentingEqual "DXMSyncGraph" $routeList[$iRoute]`;
if($isFrameParentingEqual == false)
{
DXMLogWarning( "Route & Frame Parenting are not equal: " + $routeList[$iRoute] );
$result= false;
}
}
DXMLogResult($result);
DXMLogTestEnd();
return $result;
}
global proc int DXMTestAdapterOwnership()
{
DXMLogTestBegin("DXMTestAdapterOwnershipMatch");
int $result= true;
string $nodes[]= `DXMGraphListNodes "DXMSyncGraph"`;
int $iNode;
for($iNode= 0; $iNode < size($nodes); $iNode++)
{
string $nodeAdapters[]= `DXMNodeListAdapters "DXMSyncGraph" $nodes[$iNode]`;
int $iNA;
for($iNA= 0; $iNA < size($nodeAdapters); $iNA++)
{
string $graphAdapter= `DXMNodeAdapterGetOwner "DXMSyncGraph" $nodes[$iNode] $nodeAdapters[$iNA]`;
int $isInterested= `DXMGraphAdapterIsInterested "DXMSyncGraph" $graphAdapter $nodes[$iNode]`;
if($isInterested == false)
{
DXMLogWarning( "Node: " + $nodes[$iNode] + " NodeAdapter: " + $nodeAdapters[$iNA] + " GraphAdapter: " + $graphAdapter );
$result= false;
}
}
}
DXMLogResult($result);
DXMLogTestEnd();
return $result;
}
global proc int DXMTestAllNodesHaveAnAdapter()
{
DXMLogTestBegin("DXMTestAllNodesHaveAnAdapter");
int $result= true;
string $nodes[]= `DXMGraphListNodes "DXMSyncGraph"`;
int $iNode;
for($iNode= 0; $iNode < size($nodes); $iNode++)
{
string $nodeAdapters[]= `DXMNodeListAdapters "DXMSyncGraph" $nodes[$iNode]`;
if(size($nodeAdapters) == 0)
{
DXMLogWarning( "Failure at Node: " + $nodes[$iNode] );
$result= false;
}
}
DXMLogResult($result);
DXMLogTestEnd();
return $result;
}
global proc int DXMTestMeshVisibility()
{
DXMLogTestBegin("DXMTestMeshVisibility");
int $result= true;
string $nodes[]= `DXMGraphListNodes "DXMSyncGraph"`;
int $iNode;
for($iNode= 0; $iNode < size($nodes); $iNode++)
{
int $hasMesh= `DXMNodeHasAdapter "DXMSyncGraph" $nodes[$iNode] "DXMNodeMeshAdapter"`;
if($hasMesh == true)
{
int $meshIsVisible= `DXMNodeMeshIsAnyRouteVisible "DXMSyncGraph" $nodes[$iNode]`;
string $routeList[]= `DXMNodeDagListRoutes "DXMSyncGraph" $nodes[$iNode]`;
for($iRoute= 0; $iRoute < size($routeList); $iRoute++)
{
int $routeIsVisible= `DXMRouteIsVisible "DXMSyncGraph" $routeList[$iRoute]`;
if($meshIsVisible == false && $routeIsVisible == true)
{
DXMLogWarning( "Mesh is not visible but Route is! Mesh: " + $nodes[$iNode] + " Route: " + $routeList[$iRoute] );
$result= false;
}
}
}
}
DXMLogResult($result);
DXMLogTestEnd();
return $result;
}
global proc int DXMTestMeshMembership()
{
DXMLogTestBegin("DXMTestMeshMembership");
int $result= true;
string $nodes[]= `DXMGraphListNodes "DXMSyncGraph"`;
int $iNode;
for($iNode= 0; $iNode < size($nodes); $iNode++)
{
int $hasMesh= `DXMNodeHasAdapter "DXMSyncGraph" $nodes[$iNode] "DXMNodeMeshAdapter"`;
if($hasMesh == true)
{
string $routeList[]= `DXMNodeDagListRoutes "DXMSyncGraph" $nodes[$iNode]`;
for($iRoute= 0; $iRoute < size($routeList); $iRoute++)
{
int $routeIsVisible= `DXMRouteIsVisible "DXMSyncGraph" $routeList[$iRoute]`;
int $meshIsMemberOfRoute= `DXMNodeMeshIsMemberOfRoute "DXMSyncGraph" $nodes[$iNode] $routeList[$iRoute]`;
if($meshIsMemberOfRoute == true && $routeIsVisible == false)
{
DXMLogWarning( "Mesh is a member of an invisible route! Mesh: " + $nodes[$iNode] + " Route: " + $routeList[$iRoute] );
$result= false;
}
}
}
}
DXMLogResult($result);
DXMLogTestEnd();
return $result;
}
global proc int DXMTestAllRoutesValid()
{
DXMLogTestBegin("DXMTestAllRoutesValid");
int $result= (false == `DXMGraphHasInvalidRoutes "DXMSyncGraph"`);
DXMLogResult($result);
DXMLogTestEnd();
return $result;
}
global proc int DXMTestAllNodesValid()
{
DXMLogTestBegin("DXMTestAllNodesValid");
int $result= (false == `DXMGraphHasInvalidNodes "DXMSyncGraph"`);
DXMLogResult($result);
DXMLogTestEnd();
return $result;
}
/*EXAMPLE USAGE
proc string polyCubeReturnRoot()
{
string $result[]= `polyCube`;
return $result[0];
}
DXMTestStressCreateDelete("polyCubeReturnRoot()", "delete", 10);
*/
global proc int DXMTestStressCreateDelete(string $createScripty, string $deleteScripty, int $count)
{
DXMLogTestBegin("DXMTestStressCreateDelete");
int $result= true;
string $nodes[];
$nodes= `DXMGraphListNodes "DXMSyncGraph"`;
int $oldNodeCount= size($nodes);
int $index= 0;
for($index= 0; $index < $count; $index++)
{
string $deleteName= `eval $createScripty`;
eval $deleteScripty $deleteName;
}
DXCCRebuildDirty;
$nodes= `DXMGraphListNodes "DXMSyncGraph"`;
int $newNodeCount= size($nodes);
int $leakCount= $oldNodeCount - $newNodeCount;
if($leakCount != 0)
{
DXMLogWarning( "Leaked nodes: " + $leakCount );
$result= false;
}
DXMLogResult($result);
DXMLogTestEnd();
return $result;
}
/*EXAMPLE USAGE
proc string polyCube2()
{
string $result[]= `polyCube`;
return $result[0];
}
DXMTestStressCreateDelete("polyCube2()", "delete", 10);
*/

View File

@@ -0,0 +1,154 @@
global string $g_dxMenu;
global string $g_dxPreviewToggle;
global string $g_dxViewerStartupToggle;
{
DirectX_BuildMenu();
}
global proc DirectX_SetPreviewState(int $state)
{
global string $g_dxPreviewToggle;
menuItem -e -checkBox $state $g_dxPreviewToggle;
}
global proc int DirectX_GetPreviewState()
{
global string $g_dxPreviewToggle;
int $result= `menuItem -q -checkBox $g_dxPreviewToggle`;
return $result;
}
global proc DirectX_SetViewerStartupState(int $state)
{
global string $g_dxViewerStartupToggle;
menuItem -e -checkBox $state $g_dxViewerStartupToggle;
}
global proc int DirectX_GetViewerStartupState()
{
global string $g_dxViewerStartupToggle;
int $result= `menuItem -q -checkBox $g_dxViewerStartupToggle`;
return $result;
}
global proc DirectX_RemoveMenu()
{
global string $g_dxMenu;
if(`menu -q -exists $g_dxMenu`)
deleteUI $g_dxMenu;
}
global string $g_dxMenu;
global proc DirectX_BuildMenu()
{
global string $gMainWindow;
global string $g_dxMenu;
global string $g_dxPreviewToggle;
global string $g_dxSkinToggle;
global string $g_dxAnimationToggle;
global string $g_dxViewerStartupToggle;
// If menu exists or if main window doesn't exist, just return.
if(`menu -q -exists $g_dxMenu`
|| !(`window -q -exists $gMainWindow`))
return;
$g_dxMenu= `menu -parent $gMainWindow -tearOff true -aob true
-label "DirectX"`;
setParent -m $g_dxMenu;
$g_dxPreviewToggle= `menuItem -l "Realtime Previewing"
-annotation "Realtime Previewing of scene in Direct3D viewers."
-cb 1
-c ("DXCCPreviewChanged")`;
menuItem -d true;
menuItem -l "Rebuild All"
-annotation "Rebuild scene data for realtime viewers and export"
-c "DXCCRebuildScene"
dxRebuildSceneItem;
menuItem -l "Rebuild Dirty"
-aob true
-annotation "Rebuild dirty data for realtime viewers and export"
-c ("DXCCRebuildDirty")
dxRebuildDirtyItem;
menuItem -d true;
menuItem -l "Export All"
-annotation "Export the scene to an X-File."
-c ("DXCCExportScene")
dxExportSceneItem;
menuItem -l "Export Options"
-annotation "Popup the Export Options dialog"
-c ("DXCCExportOptions")
dxExportOptionsItem;
menuItem -d true;
menuItem -l "Viewers..."
-sm 1
-to 1
-annotation "Realtime Viewers"
dxViewerItem;
$g_dxViewerStartupToggle= `menuItem -l "Open on Startup"
-annotation "Open the viewer when Maya starts"
-cb 0`;
menuItem -l "None"
-annotation "Close the Viewer"
-c "DXCCCloseViewer"
dxCloseViewerItem;
menuItem -l "Floating"
-annotation "Floating Viewers"
-c "DXCCFloatingView"
dxFloatingViewerItem;
menuItem -l "Top"
-annotation "Place Viewer over Top Pane"
-c "DXCCTopView"
dxTopViewerItem;
menuItem -l "Side"
-annotation "Place Viewer over Side Pane"
-c "DXCCSideView"
dxSideViewerItem;
menuItem -l "Front"
-annotation "Place Viewer over Front Pane"
-c "DXCCFrontView"
dxFrontViewerItem;
menuItem -d true;
setParent -m $g_dxMenu;
menuItem -d true;
menuItem -l "Help"
-annotation "Help"
-c "DXMUiHelp"
dxHelpItem;
}