diff options
-rw-r--r-- | .gitattributes | 4 | ||||
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | README.md | 9 | ||||
-rw-r--r-- | SConstruct | 25 | ||||
-rw-r--r-- | core/bind/core_bind.cpp | 6 | ||||
-rw-r--r-- | core/bind/core_bind.h | 1 | ||||
-rw-r--r-- | core/hq2x.cpp | 2636 | ||||
-rw-r--r-- | core/hq2x.h | 19 | ||||
-rw-r--r-- | core/image.cpp | 40 | ||||
-rw-r--r-- | core/image.h | 1 | ||||
-rw-r--r-- | core/io/file_access_memory.cpp | 2 | ||||
-rw-r--r-- | core/io/resource_loader.cpp | 1 | ||||
-rw-r--r-- | core/io/translation_loader_po.cpp | 25 | ||||
-rw-r--r-- | core/io/translation_loader_po.h | 4 | ||||
-rw-r--r-- | core/object.cpp | 7 | ||||
-rw-r--r-- | core/object.h | 3 | ||||
-rw-r--r-- | core/os/input.cpp | 1 | ||||
-rw-r--r-- | core/os/input.h | 1 | ||||
-rw-r--r-- | core/os/main_loop.cpp | 10 | ||||
-rw-r--r-- | core/os/main_loop.h | 2 | ||||
-rw-r--r-- | core/os/memory.h | 9 | ||||
-rw-r--r-- | core/os/os.cpp | 1 | ||||
-rw-r--r-- | core/os/os.h | 3 | ||||
-rw-r--r-- | core/resource.cpp | 27 | ||||
-rw-r--r-- | core/resource.h | 4 | ||||
-rw-r--r-- | core/translation.cpp | 6 | ||||
-rw-r--r-- | demos/misc/window_management/control.gd | 4 | ||||
-rw-r--r-- | demos/misc/window_management/window_management.scn | bin | 4384 -> 3588 bytes | |||
-rw-r--r-- | doc/base/classes.xml | 64 | ||||
-rw-r--r-- | drivers/SCsub | 2 | ||||
-rw-r--r-- | drivers/freetype/FTL.TXT | 169 | ||||
-rw-r--r-- | drivers/freetype/LICENSE.TXT | 39 | ||||
-rw-r--r-- | drivers/freetype/SCsub (renamed from tools/freetype/SCsub) | 10 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/config/ftconfig.h (renamed from tools/freetype/freetype/include/freetype/config/ftconfig.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/config/ftheader.h (renamed from tools/freetype/freetype/include/freetype/config/ftheader.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/config/ftmodule.h (renamed from tools/freetype/freetype/include/freetype/config/ftmodule.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/config/ftoption.h (renamed from tools/freetype/freetype/include/freetype/config/ftoption.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/config/ftstdlib.h (renamed from tools/freetype/freetype/include/freetype/config/ftstdlib.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/freetype.h (renamed from tools/freetype/freetype/include/freetype/freetype.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftadvanc.h (renamed from tools/freetype/freetype/include/freetype/ftadvanc.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftautoh.h (renamed from tools/freetype/freetype/include/freetype/ftautoh.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftbbox.h (renamed from tools/freetype/freetype/include/freetype/ftbbox.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftbdf.h (renamed from tools/freetype/freetype/include/freetype/ftbdf.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftbitmap.h (renamed from tools/freetype/freetype/include/freetype/ftbitmap.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftbzip2.h (renamed from tools/freetype/freetype/include/freetype/ftbzip2.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftcache.h (renamed from tools/freetype/freetype/include/freetype/ftcache.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftcffdrv.h (renamed from tools/freetype/freetype/include/freetype/ftcffdrv.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftchapters.h (renamed from tools/freetype/freetype/include/freetype/ftchapters.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftcid.h (renamed from tools/freetype/freetype/include/freetype/ftcid.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/fterrdef.h (renamed from tools/freetype/freetype/include/freetype/fterrdef.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/fterrors.h (renamed from tools/freetype/freetype/include/freetype/fterrors.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftgasp.h (renamed from tools/freetype/freetype/include/freetype/ftgasp.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftglyph.h (renamed from tools/freetype/freetype/include/freetype/ftglyph.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftgxval.h (renamed from tools/freetype/freetype/include/freetype/ftgxval.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftgzip.h (renamed from tools/freetype/freetype/include/freetype/ftgzip.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftimage.h (renamed from tools/freetype/freetype/include/freetype/ftimage.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftincrem.h (renamed from tools/freetype/freetype/include/freetype/ftincrem.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftlcdfil.h (renamed from tools/freetype/freetype/include/freetype/ftlcdfil.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftlist.h (renamed from tools/freetype/freetype/include/freetype/ftlist.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftlzw.h (renamed from tools/freetype/freetype/include/freetype/ftlzw.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftmac.h (renamed from tools/freetype/freetype/include/freetype/ftmac.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftmm.h (renamed from tools/freetype/freetype/include/freetype/ftmm.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftmodapi.h (renamed from tools/freetype/freetype/include/freetype/ftmodapi.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftmoderr.h (renamed from tools/freetype/freetype/include/freetype/ftmoderr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftotval.h (renamed from tools/freetype/freetype/include/freetype/ftotval.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftoutln.h (renamed from tools/freetype/freetype/include/freetype/ftoutln.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftpfr.h (renamed from tools/freetype/freetype/include/freetype/ftpfr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftrender.h (renamed from tools/freetype/freetype/include/freetype/ftrender.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftsizes.h (renamed from tools/freetype/freetype/include/freetype/ftsizes.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftsnames.h (renamed from tools/freetype/freetype/include/freetype/ftsnames.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftstroke.h (renamed from tools/freetype/freetype/include/freetype/ftstroke.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftsynth.h (renamed from tools/freetype/freetype/include/freetype/ftsynth.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftsystem.h (renamed from tools/freetype/freetype/include/freetype/ftsystem.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/fttrigon.h (renamed from tools/freetype/freetype/include/freetype/fttrigon.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftttdrv.h (renamed from tools/freetype/freetype/include/freetype/ftttdrv.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/fttypes.h (renamed from tools/freetype/freetype/include/freetype/fttypes.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftwinfnt.h (renamed from tools/freetype/freetype/include/freetype/ftwinfnt.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ftxf86.h (renamed from tools/freetype/freetype/include/freetype/ftxf86.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/autohint.h (renamed from tools/freetype/freetype/include/freetype/internal/autohint.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftcalc.h (renamed from tools/freetype/freetype/include/freetype/internal/ftcalc.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftdebug.h (renamed from tools/freetype/freetype/include/freetype/internal/ftdebug.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftdriver.h (renamed from tools/freetype/freetype/include/freetype/internal/ftdriver.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftgloadr.h (renamed from tools/freetype/freetype/include/freetype/internal/ftgloadr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftmemory.h (renamed from tools/freetype/freetype/include/freetype/internal/ftmemory.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftobjs.h (renamed from tools/freetype/freetype/include/freetype/internal/ftobjs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftpic.h (renamed from tools/freetype/freetype/include/freetype/internal/ftpic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftrfork.h (renamed from tools/freetype/freetype/include/freetype/internal/ftrfork.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftserv.h (renamed from tools/freetype/freetype/include/freetype/internal/ftserv.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftstream.h (renamed from tools/freetype/freetype/include/freetype/internal/ftstream.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/fttrace.h (renamed from tools/freetype/freetype/include/freetype/internal/fttrace.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/ftvalid.h (renamed from tools/freetype/freetype/include/freetype/internal/ftvalid.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/internal.h (renamed from tools/freetype/freetype/include/freetype/internal/internal.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/psaux.h (renamed from tools/freetype/freetype/include/freetype/internal/psaux.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/pshints.h (renamed from tools/freetype/freetype/include/freetype/internal/pshints.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svbdf.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svbdf.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svcid.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svcid.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svgldict.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svgldict.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svgxval.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svgxval.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svkern.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svkern.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svmm.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svmm.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svotval.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svotval.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svpfr.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svpfr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svpostnm.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svpostnm.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svprop.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svprop.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svpscmap.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svpscmap.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svpsinfo.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svpsinfo.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svsfnt.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svsfnt.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svttcmap.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svttcmap.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svtteng.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svtteng.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svttglyf.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svttglyf.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svwinfnt.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svwinfnt.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/services/svxf86nm.h (renamed from tools/freetype/freetype/include/freetype/internal/services/svxf86nm.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/sfnt.h (renamed from tools/freetype/freetype/include/freetype/internal/sfnt.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/t1types.h (renamed from tools/freetype/freetype/include/freetype/internal/t1types.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/internal/tttypes.h (renamed from tools/freetype/freetype/include/freetype/internal/tttypes.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/t1tables.h (renamed from tools/freetype/freetype/include/freetype/t1tables.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ttnameid.h (renamed from tools/freetype/freetype/include/freetype/ttnameid.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/tttables.h (renamed from tools/freetype/freetype/include/freetype/tttables.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/tttags.h (renamed from tools/freetype/freetype/include/freetype/tttags.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/freetype/ttunpat.h (renamed from tools/freetype/freetype/include/freetype/ttunpat.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/include/ftoption.h (renamed from tools/freetype/freetype/include/ftoption.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/Jamfile (renamed from tools/freetype/freetype/src/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/Jamfile (renamed from tools/freetype/freetype/src/autofit/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afangles.c (renamed from tools/freetype/freetype/src/autofit/afangles.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afangles.h (renamed from tools/freetype/freetype/src/autofit/afangles.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afcjk.c (renamed from tools/freetype/freetype/src/autofit/afcjk.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afcjk.h (renamed from tools/freetype/freetype/src/autofit/afcjk.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afdummy.c (renamed from tools/freetype/freetype/src/autofit/afdummy.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afdummy.h (renamed from tools/freetype/freetype/src/autofit/afdummy.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/aferrors.h (renamed from tools/freetype/freetype/src/autofit/aferrors.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afglobal.c (renamed from tools/freetype/freetype/src/autofit/afglobal.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afglobal.h (renamed from tools/freetype/freetype/src/autofit/afglobal.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afhints.c (renamed from tools/freetype/freetype/src/autofit/afhints.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afhints.h (renamed from tools/freetype/freetype/src/autofit/afhints.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afindic.c (renamed from tools/freetype/freetype/src/autofit/afindic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afindic.h (renamed from tools/freetype/freetype/src/autofit/afindic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/aflatin.c (renamed from tools/freetype/freetype/src/autofit/aflatin.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/aflatin.h (renamed from tools/freetype/freetype/src/autofit/aflatin.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/aflatin2.c (renamed from tools/freetype/freetype/src/autofit/aflatin2.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/aflatin2.h (renamed from tools/freetype/freetype/src/autofit/aflatin2.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afloader.c (renamed from tools/freetype/freetype/src/autofit/afloader.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afloader.h (renamed from tools/freetype/freetype/src/autofit/afloader.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afmodule.c (renamed from tools/freetype/freetype/src/autofit/afmodule.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afmodule.h (renamed from tools/freetype/freetype/src/autofit/afmodule.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afpic.c (renamed from tools/freetype/freetype/src/autofit/afpic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afpic.h (renamed from tools/freetype/freetype/src/autofit/afpic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/aftypes.h (renamed from tools/freetype/freetype/src/autofit/aftypes.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afwarp.c (renamed from tools/freetype/freetype/src/autofit/afwarp.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/afwarp.h (renamed from tools/freetype/freetype/src/autofit/afwarp.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/autofit.c (renamed from tools/freetype/freetype/src/autofit/autofit.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/module.mk (renamed from tools/freetype/freetype/src/autofit/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/autofit/rules.mk (renamed from tools/freetype/freetype/src/autofit/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/Jamfile (renamed from tools/freetype/freetype/src/base/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/basepic.c (renamed from tools/freetype/freetype/src/base/basepic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/basepic.h (renamed from tools/freetype/freetype/src/base/basepic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftadvanc.c (renamed from tools/freetype/freetype/src/base/ftadvanc.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftapi.c (renamed from tools/freetype/freetype/src/base/ftapi.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftbase.c (renamed from tools/freetype/freetype/src/base/ftbase.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftbase.h (renamed from tools/freetype/freetype/src/base/ftbase.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftbbox.c (renamed from tools/freetype/freetype/src/base/ftbbox.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftbdf.c (renamed from tools/freetype/freetype/src/base/ftbdf.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftbitmap.c (renamed from tools/freetype/freetype/src/base/ftbitmap.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftcalc.c (renamed from tools/freetype/freetype/src/base/ftcalc.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftcid.c (renamed from tools/freetype/freetype/src/base/ftcid.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftdbgmem.c (renamed from tools/freetype/freetype/src/base/ftdbgmem.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftdebug.c (renamed from tools/freetype/freetype/src/base/ftdebug.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftfstype.c (renamed from tools/freetype/freetype/src/base/ftfstype.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftgasp.c (renamed from tools/freetype/freetype/src/base/ftgasp.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftgloadr.c (renamed from tools/freetype/freetype/src/base/ftgloadr.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftglyph.c (renamed from tools/freetype/freetype/src/base/ftglyph.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftgxval.c (renamed from tools/freetype/freetype/src/base/ftgxval.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftinit.c (renamed from tools/freetype/freetype/src/base/ftinit.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftlcdfil.c (renamed from tools/freetype/freetype/src/base/ftlcdfil.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftmac.c (renamed from tools/freetype/freetype/src/base/ftmac.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftmm.c (renamed from tools/freetype/freetype/src/base/ftmm.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftobjs.c (renamed from tools/freetype/freetype/src/base/ftobjs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftotval.c (renamed from tools/freetype/freetype/src/base/ftotval.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftoutln.c (renamed from tools/freetype/freetype/src/base/ftoutln.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftpatent.c (renamed from tools/freetype/freetype/src/base/ftpatent.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftpfr.c (renamed from tools/freetype/freetype/src/base/ftpfr.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftpic.c (renamed from tools/freetype/freetype/src/base/ftpic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftrfork.c (renamed from tools/freetype/freetype/src/base/ftrfork.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftsnames.c (renamed from tools/freetype/freetype/src/base/ftsnames.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftstream.c (renamed from tools/freetype/freetype/src/base/ftstream.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftstroke.c (renamed from tools/freetype/freetype/src/base/ftstroke.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftsynth.c (renamed from tools/freetype/freetype/src/base/ftsynth.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftsystem.c (renamed from tools/freetype/freetype/src/base/ftsystem.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/fttrigon.c (renamed from tools/freetype/freetype/src/base/fttrigon.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/fttype1.c (renamed from tools/freetype/freetype/src/base/fttype1.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftutil.c (renamed from tools/freetype/freetype/src/base/ftutil.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftwinfnt.c (renamed from tools/freetype/freetype/src/base/ftwinfnt.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/ftxf86.c (renamed from tools/freetype/freetype/src/base/ftxf86.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/md5.c (renamed from tools/freetype/freetype/src/base/md5.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/md5.h (renamed from tools/freetype/freetype/src/base/md5.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/base/rules.mk (renamed from tools/freetype/freetype/src/base/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/Jamfile (renamed from tools/freetype/freetype/src/bdf/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/README (renamed from tools/freetype/freetype/src/bdf/README) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/bdf.c (renamed from tools/freetype/freetype/src/bdf/bdf.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/bdf.h (renamed from tools/freetype/freetype/src/bdf/bdf.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/bdfdrivr.c (renamed from tools/freetype/freetype/src/bdf/bdfdrivr.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/bdfdrivr.h (renamed from tools/freetype/freetype/src/bdf/bdfdrivr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/bdferror.h (renamed from tools/freetype/freetype/src/bdf/bdferror.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/bdflib.c (renamed from tools/freetype/freetype/src/bdf/bdflib.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/module.mk (renamed from tools/freetype/freetype/src/bdf/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/bdf/rules.mk (renamed from tools/freetype/freetype/src/bdf/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/Jamfile (renamed from tools/freetype/freetype/src/cache/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcache.c (renamed from tools/freetype/freetype/src/cache/ftcache.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcbasic.c (renamed from tools/freetype/freetype/src/cache/ftcbasic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftccache.c (renamed from tools/freetype/freetype/src/cache/ftccache.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftccache.h (renamed from tools/freetype/freetype/src/cache/ftccache.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftccback.h (renamed from tools/freetype/freetype/src/cache/ftccback.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftccmap.c (renamed from tools/freetype/freetype/src/cache/ftccmap.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcerror.h (renamed from tools/freetype/freetype/src/cache/ftcerror.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcglyph.c (renamed from tools/freetype/freetype/src/cache/ftcglyph.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcglyph.h (renamed from tools/freetype/freetype/src/cache/ftcglyph.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcimage.c (renamed from tools/freetype/freetype/src/cache/ftcimage.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcimage.h (renamed from tools/freetype/freetype/src/cache/ftcimage.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcmanag.c (renamed from tools/freetype/freetype/src/cache/ftcmanag.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcmanag.h (renamed from tools/freetype/freetype/src/cache/ftcmanag.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcmru.c (renamed from tools/freetype/freetype/src/cache/ftcmru.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcmru.h (renamed from tools/freetype/freetype/src/cache/ftcmru.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcsbits.c (renamed from tools/freetype/freetype/src/cache/ftcsbits.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/ftcsbits.h (renamed from tools/freetype/freetype/src/cache/ftcsbits.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cache/rules.mk (renamed from tools/freetype/freetype/src/cache/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/Jamfile (renamed from tools/freetype/freetype/src/cff/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2arrst.c (renamed from tools/freetype/freetype/src/cff/cf2arrst.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2arrst.h (renamed from tools/freetype/freetype/src/cff/cf2arrst.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2blues.c (renamed from tools/freetype/freetype/src/cff/cf2blues.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2blues.h (renamed from tools/freetype/freetype/src/cff/cf2blues.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2error.c (renamed from tools/freetype/freetype/src/cff/cf2error.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2error.h (renamed from tools/freetype/freetype/src/cff/cf2error.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2fixed.h (renamed from tools/freetype/freetype/src/cff/cf2fixed.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2font.c (renamed from tools/freetype/freetype/src/cff/cf2font.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2font.h (renamed from tools/freetype/freetype/src/cff/cf2font.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2ft.c (renamed from tools/freetype/freetype/src/cff/cf2ft.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2ft.h (renamed from tools/freetype/freetype/src/cff/cf2ft.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2glue.h (renamed from tools/freetype/freetype/src/cff/cf2glue.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2hints.c (renamed from tools/freetype/freetype/src/cff/cf2hints.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2hints.h (renamed from tools/freetype/freetype/src/cff/cf2hints.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2intrp.c (renamed from tools/freetype/freetype/src/cff/cf2intrp.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2intrp.h (renamed from tools/freetype/freetype/src/cff/cf2intrp.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2read.c (renamed from tools/freetype/freetype/src/cff/cf2read.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2read.h (renamed from tools/freetype/freetype/src/cff/cf2read.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2stack.c (renamed from tools/freetype/freetype/src/cff/cf2stack.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2stack.h (renamed from tools/freetype/freetype/src/cff/cf2stack.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cf2types.h (renamed from tools/freetype/freetype/src/cff/cf2types.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cff.c (renamed from tools/freetype/freetype/src/cff/cff.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffcmap.c (renamed from tools/freetype/freetype/src/cff/cffcmap.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffcmap.h (renamed from tools/freetype/freetype/src/cff/cffcmap.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffdrivr.c (renamed from tools/freetype/freetype/src/cff/cffdrivr.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffdrivr.h (renamed from tools/freetype/freetype/src/cff/cffdrivr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cfferrs.h (renamed from tools/freetype/freetype/src/cff/cfferrs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffgload.c (renamed from tools/freetype/freetype/src/cff/cffgload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffgload.h (renamed from tools/freetype/freetype/src/cff/cffgload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffload.c (renamed from tools/freetype/freetype/src/cff/cffload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffload.h (renamed from tools/freetype/freetype/src/cff/cffload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffobjs.c (renamed from tools/freetype/freetype/src/cff/cffobjs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffobjs.h (renamed from tools/freetype/freetype/src/cff/cffobjs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffparse.c (renamed from tools/freetype/freetype/src/cff/cffparse.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffparse.h (renamed from tools/freetype/freetype/src/cff/cffparse.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffpic.c (renamed from tools/freetype/freetype/src/cff/cffpic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cffpic.h (renamed from tools/freetype/freetype/src/cff/cffpic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cfftoken.h (renamed from tools/freetype/freetype/src/cff/cfftoken.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/cfftypes.h (renamed from tools/freetype/freetype/src/cff/cfftypes.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/module.mk (renamed from tools/freetype/freetype/src/cff/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cff/rules.mk (renamed from tools/freetype/freetype/src/cff/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/Jamfile (renamed from tools/freetype/freetype/src/cid/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/ciderrs.h (renamed from tools/freetype/freetype/src/cid/ciderrs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidgload.c (renamed from tools/freetype/freetype/src/cid/cidgload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidgload.h (renamed from tools/freetype/freetype/src/cid/cidgload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidload.c (renamed from tools/freetype/freetype/src/cid/cidload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidload.h (renamed from tools/freetype/freetype/src/cid/cidload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidobjs.c (renamed from tools/freetype/freetype/src/cid/cidobjs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidobjs.h (renamed from tools/freetype/freetype/src/cid/cidobjs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidparse.c (renamed from tools/freetype/freetype/src/cid/cidparse.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidparse.h (renamed from tools/freetype/freetype/src/cid/cidparse.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidriver.c (renamed from tools/freetype/freetype/src/cid/cidriver.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidriver.h (renamed from tools/freetype/freetype/src/cid/cidriver.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/cidtoken.h (renamed from tools/freetype/freetype/src/cid/cidtoken.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/module.mk (renamed from tools/freetype/freetype/src/cid/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/rules.mk (renamed from tools/freetype/freetype/src/cid/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/cid/type1cid.c (renamed from tools/freetype/freetype/src/cid/type1cid.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/Jamfile (renamed from tools/freetype/freetype/src/gxvalid/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/README (renamed from tools/freetype/freetype/src/gxvalid/README) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvalid.c (renamed from tools/freetype/freetype/src/gxvalid/gxvalid.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvalid.h (renamed from tools/freetype/freetype/src/gxvalid/gxvalid.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvbsln.c (renamed from tools/freetype/freetype/src/gxvalid/gxvbsln.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvcommn.c (renamed from tools/freetype/freetype/src/gxvalid/gxvcommn.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvcommn.h (renamed from tools/freetype/freetype/src/gxvalid/gxvcommn.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxverror.h (renamed from tools/freetype/freetype/src/gxvalid/gxverror.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvfeat.c (renamed from tools/freetype/freetype/src/gxvalid/gxvfeat.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvfeat.h (renamed from tools/freetype/freetype/src/gxvalid/gxvfeat.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvfgen.c (renamed from tools/freetype/freetype/src/gxvalid/gxvfgen.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvjust.c (renamed from tools/freetype/freetype/src/gxvalid/gxvjust.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvkern.c (renamed from tools/freetype/freetype/src/gxvalid/gxvkern.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvlcar.c (renamed from tools/freetype/freetype/src/gxvalid/gxvlcar.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmod.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmod.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmod.h (renamed from tools/freetype/freetype/src/gxvalid/gxvmod.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmort.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmort.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmort.h (renamed from tools/freetype/freetype/src/gxvalid/gxvmort.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmort0.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmort0.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmort1.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmort1.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmort2.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmort2.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmort4.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmort4.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmort5.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmort5.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmorx.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmorx.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmorx.h (renamed from tools/freetype/freetype/src/gxvalid/gxvmorx.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmorx0.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmorx0.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmorx1.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmorx1.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmorx2.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmorx2.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmorx4.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmorx4.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvmorx5.c (renamed from tools/freetype/freetype/src/gxvalid/gxvmorx5.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvopbd.c (renamed from tools/freetype/freetype/src/gxvalid/gxvopbd.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvprop.c (renamed from tools/freetype/freetype/src/gxvalid/gxvprop.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/gxvtrak.c (renamed from tools/freetype/freetype/src/gxvalid/gxvtrak.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/module.mk (renamed from tools/freetype/freetype/src/gxvalid/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/gxvalid/rules.mk (renamed from tools/freetype/freetype/src/gxvalid/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/Jamfile (renamed from tools/freetype/freetype/src/otvalid/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/module.mk (renamed from tools/freetype/freetype/src/otvalid/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvalid.c (renamed from tools/freetype/freetype/src/otvalid/otvalid.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvalid.h (renamed from tools/freetype/freetype/src/otvalid/otvalid.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvbase.c (renamed from tools/freetype/freetype/src/otvalid/otvbase.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvcommn.c (renamed from tools/freetype/freetype/src/otvalid/otvcommn.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvcommn.h (renamed from tools/freetype/freetype/src/otvalid/otvcommn.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otverror.h (renamed from tools/freetype/freetype/src/otvalid/otverror.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvgdef.c (renamed from tools/freetype/freetype/src/otvalid/otvgdef.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvgpos.c (renamed from tools/freetype/freetype/src/otvalid/otvgpos.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvgpos.h (renamed from tools/freetype/freetype/src/otvalid/otvgpos.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvgsub.c (renamed from tools/freetype/freetype/src/otvalid/otvgsub.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvjstf.c (renamed from tools/freetype/freetype/src/otvalid/otvjstf.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvmath.c (renamed from tools/freetype/freetype/src/otvalid/otvmath.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvmod.c (renamed from tools/freetype/freetype/src/otvalid/otvmod.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/otvmod.h (renamed from tools/freetype/freetype/src/otvalid/otvmod.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/otvalid/rules.mk (renamed from tools/freetype/freetype/src/otvalid/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/Jamfile (renamed from tools/freetype/freetype/src/pcf/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/README (renamed from tools/freetype/freetype/src/pcf/README) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/module.mk (renamed from tools/freetype/freetype/src/pcf/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcf.c (renamed from tools/freetype/freetype/src/pcf/pcf.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcf.h (renamed from tools/freetype/freetype/src/pcf/pcf.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcfdrivr.c (renamed from tools/freetype/freetype/src/pcf/pcfdrivr.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcfdrivr.h (renamed from tools/freetype/freetype/src/pcf/pcfdrivr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcferror.h (renamed from tools/freetype/freetype/src/pcf/pcferror.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcfread.c (renamed from tools/freetype/freetype/src/pcf/pcfread.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcfread.h (renamed from tools/freetype/freetype/src/pcf/pcfread.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcfutil.c (renamed from tools/freetype/freetype/src/pcf/pcfutil.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/pcfutil.h (renamed from tools/freetype/freetype/src/pcf/pcfutil.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pcf/rules.mk (renamed from tools/freetype/freetype/src/pcf/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/Jamfile (renamed from tools/freetype/freetype/src/pfr/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/module.mk (renamed from tools/freetype/freetype/src/pfr/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfr.c (renamed from tools/freetype/freetype/src/pfr/pfr.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrcmap.c (renamed from tools/freetype/freetype/src/pfr/pfrcmap.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrcmap.h (renamed from tools/freetype/freetype/src/pfr/pfrcmap.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrdrivr.c (renamed from tools/freetype/freetype/src/pfr/pfrdrivr.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrdrivr.h (renamed from tools/freetype/freetype/src/pfr/pfrdrivr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrerror.h (renamed from tools/freetype/freetype/src/pfr/pfrerror.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrgload.c (renamed from tools/freetype/freetype/src/pfr/pfrgload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrgload.h (renamed from tools/freetype/freetype/src/pfr/pfrgload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrload.c (renamed from tools/freetype/freetype/src/pfr/pfrload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrload.h (renamed from tools/freetype/freetype/src/pfr/pfrload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrobjs.c (renamed from tools/freetype/freetype/src/pfr/pfrobjs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrobjs.h (renamed from tools/freetype/freetype/src/pfr/pfrobjs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrsbit.c (renamed from tools/freetype/freetype/src/pfr/pfrsbit.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrsbit.h (renamed from tools/freetype/freetype/src/pfr/pfrsbit.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/pfrtypes.h (renamed from tools/freetype/freetype/src/pfr/pfrtypes.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pfr/rules.mk (renamed from tools/freetype/freetype/src/pfr/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/Jamfile (renamed from tools/freetype/freetype/src/psaux/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/afmparse.c (renamed from tools/freetype/freetype/src/psaux/afmparse.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/afmparse.h (renamed from tools/freetype/freetype/src/psaux/afmparse.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/module.mk (renamed from tools/freetype/freetype/src/psaux/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/psaux.c (renamed from tools/freetype/freetype/src/psaux/psaux.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/psauxerr.h (renamed from tools/freetype/freetype/src/psaux/psauxerr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/psauxmod.c (renamed from tools/freetype/freetype/src/psaux/psauxmod.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/psauxmod.h (renamed from tools/freetype/freetype/src/psaux/psauxmod.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/psconv.c (renamed from tools/freetype/freetype/src/psaux/psconv.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/psconv.h (renamed from tools/freetype/freetype/src/psaux/psconv.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/psobjs.c (renamed from tools/freetype/freetype/src/psaux/psobjs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/psobjs.h (renamed from tools/freetype/freetype/src/psaux/psobjs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/rules.mk (renamed from tools/freetype/freetype/src/psaux/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/t1cmap.c (renamed from tools/freetype/freetype/src/psaux/t1cmap.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/t1cmap.h (renamed from tools/freetype/freetype/src/psaux/t1cmap.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/t1decode.c (renamed from tools/freetype/freetype/src/psaux/t1decode.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psaux/t1decode.h (renamed from tools/freetype/freetype/src/psaux/t1decode.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/Jamfile (renamed from tools/freetype/freetype/src/pshinter/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/module.mk (renamed from tools/freetype/freetype/src/pshinter/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshalgo.c (renamed from tools/freetype/freetype/src/pshinter/pshalgo.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshalgo.h (renamed from tools/freetype/freetype/src/pshinter/pshalgo.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshglob.c (renamed from tools/freetype/freetype/src/pshinter/pshglob.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshglob.h (renamed from tools/freetype/freetype/src/pshinter/pshglob.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshinter.c (renamed from tools/freetype/freetype/src/pshinter/pshinter.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshmod.c (renamed from tools/freetype/freetype/src/pshinter/pshmod.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshmod.h (renamed from tools/freetype/freetype/src/pshinter/pshmod.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshnterr.h (renamed from tools/freetype/freetype/src/pshinter/pshnterr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshpic.c (renamed from tools/freetype/freetype/src/pshinter/pshpic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshpic.h (renamed from tools/freetype/freetype/src/pshinter/pshpic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshrec.c (renamed from tools/freetype/freetype/src/pshinter/pshrec.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/pshrec.h (renamed from tools/freetype/freetype/src/pshinter/pshrec.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/pshinter/rules.mk (renamed from tools/freetype/freetype/src/pshinter/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/Jamfile (renamed from tools/freetype/freetype/src/psnames/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/module.mk (renamed from tools/freetype/freetype/src/psnames/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/psmodule.c (renamed from tools/freetype/freetype/src/psnames/psmodule.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/psmodule.h (renamed from tools/freetype/freetype/src/psnames/psmodule.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/psnamerr.h (renamed from tools/freetype/freetype/src/psnames/psnamerr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/psnames.c (renamed from tools/freetype/freetype/src/psnames/psnames.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/pspic.c (renamed from tools/freetype/freetype/src/psnames/pspic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/pspic.h (renamed from tools/freetype/freetype/src/psnames/pspic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/pstables.h (renamed from tools/freetype/freetype/src/psnames/pstables.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/psnames/rules.mk (renamed from tools/freetype/freetype/src/psnames/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/Jamfile (renamed from tools/freetype/freetype/src/raster/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/ftmisc.h (renamed from tools/freetype/freetype/src/raster/ftmisc.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/ftraster.c (renamed from tools/freetype/freetype/src/raster/ftraster.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/ftraster.h (renamed from tools/freetype/freetype/src/raster/ftraster.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/ftrend1.c (renamed from tools/freetype/freetype/src/raster/ftrend1.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/ftrend1.h (renamed from tools/freetype/freetype/src/raster/ftrend1.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/module.mk (renamed from tools/freetype/freetype/src/raster/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/raster.c (renamed from tools/freetype/freetype/src/raster/raster.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/rasterrs.h (renamed from tools/freetype/freetype/src/raster/rasterrs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/rastpic.c (renamed from tools/freetype/freetype/src/raster/rastpic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/rastpic.h (renamed from tools/freetype/freetype/src/raster/rastpic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/raster/rules.mk (renamed from tools/freetype/freetype/src/raster/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/Jamfile (renamed from tools/freetype/freetype/src/sfnt/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/module.mk (renamed from tools/freetype/freetype/src/sfnt/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/pngshim.c (renamed from tools/freetype/freetype/src/sfnt/pngshim.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/pngshim.h (renamed from tools/freetype/freetype/src/sfnt/pngshim.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/rules.mk (renamed from tools/freetype/freetype/src/sfnt/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/sfdriver.c (renamed from tools/freetype/freetype/src/sfnt/sfdriver.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/sfdriver.h (renamed from tools/freetype/freetype/src/sfnt/sfdriver.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/sferrors.h (renamed from tools/freetype/freetype/src/sfnt/sferrors.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/sfnt.c (renamed from tools/freetype/freetype/src/sfnt/sfnt.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/sfntpic.c (renamed from tools/freetype/freetype/src/sfnt/sfntpic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/sfntpic.h (renamed from tools/freetype/freetype/src/sfnt/sfntpic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/sfobjs.c (renamed from tools/freetype/freetype/src/sfnt/sfobjs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/sfobjs.h (renamed from tools/freetype/freetype/src/sfnt/sfobjs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttbdf.c (renamed from tools/freetype/freetype/src/sfnt/ttbdf.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttbdf.h (renamed from tools/freetype/freetype/src/sfnt/ttbdf.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttcmap.c (renamed from tools/freetype/freetype/src/sfnt/ttcmap.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttcmap.h (renamed from tools/freetype/freetype/src/sfnt/ttcmap.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttcmapc.h (renamed from tools/freetype/freetype/src/sfnt/ttcmapc.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttkern.c (renamed from tools/freetype/freetype/src/sfnt/ttkern.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttkern.h (renamed from tools/freetype/freetype/src/sfnt/ttkern.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttload.c (renamed from tools/freetype/freetype/src/sfnt/ttload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttload.h (renamed from tools/freetype/freetype/src/sfnt/ttload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttmtx.c (renamed from tools/freetype/freetype/src/sfnt/ttmtx.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttmtx.h (renamed from tools/freetype/freetype/src/sfnt/ttmtx.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttpost.c (renamed from tools/freetype/freetype/src/sfnt/ttpost.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttpost.h (renamed from tools/freetype/freetype/src/sfnt/ttpost.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttsbit.c (renamed from tools/freetype/freetype/src/sfnt/ttsbit.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/sfnt/ttsbit.h (renamed from tools/freetype/freetype/src/sfnt/ttsbit.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/Jamfile (renamed from tools/freetype/freetype/src/smooth/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/ftgrays.c (renamed from tools/freetype/freetype/src/smooth/ftgrays.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/ftgrays.h (renamed from tools/freetype/freetype/src/smooth/ftgrays.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/ftsmerrs.h (renamed from tools/freetype/freetype/src/smooth/ftsmerrs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/ftsmooth.c (renamed from tools/freetype/freetype/src/smooth/ftsmooth.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/ftsmooth.h (renamed from tools/freetype/freetype/src/smooth/ftsmooth.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/ftspic.c (renamed from tools/freetype/freetype/src/smooth/ftspic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/ftspic.h (renamed from tools/freetype/freetype/src/smooth/ftspic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/module.mk (renamed from tools/freetype/freetype/src/smooth/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/rules.mk (renamed from tools/freetype/freetype/src/smooth/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/smooth/smooth.c (renamed from tools/freetype/freetype/src/smooth/smooth.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/Jamfile (renamed from tools/freetype/freetype/src/truetype/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/module.mk (renamed from tools/freetype/freetype/src/truetype/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/rules.mk (renamed from tools/freetype/freetype/src/truetype/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/truetype.c (renamed from tools/freetype/freetype/src/truetype/truetype.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttdriver.c (renamed from tools/freetype/freetype/src/truetype/ttdriver.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttdriver.h (renamed from tools/freetype/freetype/src/truetype/ttdriver.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/tterrors.h (renamed from tools/freetype/freetype/src/truetype/tterrors.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttgload.c (renamed from tools/freetype/freetype/src/truetype/ttgload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttgload.h (renamed from tools/freetype/freetype/src/truetype/ttgload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttgxvar.c (renamed from tools/freetype/freetype/src/truetype/ttgxvar.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttgxvar.h (renamed from tools/freetype/freetype/src/truetype/ttgxvar.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttinterp.c (renamed from tools/freetype/freetype/src/truetype/ttinterp.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttinterp.h (renamed from tools/freetype/freetype/src/truetype/ttinterp.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttobjs.c (renamed from tools/freetype/freetype/src/truetype/ttobjs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttobjs.h (renamed from tools/freetype/freetype/src/truetype/ttobjs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttpic.c (renamed from tools/freetype/freetype/src/truetype/ttpic.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttpic.h (renamed from tools/freetype/freetype/src/truetype/ttpic.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttpload.c (renamed from tools/freetype/freetype/src/truetype/ttpload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttpload.h (renamed from tools/freetype/freetype/src/truetype/ttpload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttsubpix.c (renamed from tools/freetype/freetype/src/truetype/ttsubpix.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/truetype/ttsubpix.h (renamed from tools/freetype/freetype/src/truetype/ttsubpix.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/Jamfile (renamed from tools/freetype/freetype/src/type1/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/module.mk (renamed from tools/freetype/freetype/src/type1/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/rules.mk (renamed from tools/freetype/freetype/src/type1/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1afm.c (renamed from tools/freetype/freetype/src/type1/t1afm.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1afm.h (renamed from tools/freetype/freetype/src/type1/t1afm.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1driver.c (renamed from tools/freetype/freetype/src/type1/t1driver.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1driver.h (renamed from tools/freetype/freetype/src/type1/t1driver.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1errors.h (renamed from tools/freetype/freetype/src/type1/t1errors.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1gload.c (renamed from tools/freetype/freetype/src/type1/t1gload.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1gload.h (renamed from tools/freetype/freetype/src/type1/t1gload.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1load.c (renamed from tools/freetype/freetype/src/type1/t1load.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1load.h (renamed from tools/freetype/freetype/src/type1/t1load.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1objs.c (renamed from tools/freetype/freetype/src/type1/t1objs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1objs.h (renamed from tools/freetype/freetype/src/type1/t1objs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1parse.c (renamed from tools/freetype/freetype/src/type1/t1parse.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1parse.h (renamed from tools/freetype/freetype/src/type1/t1parse.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/t1tokens.h (renamed from tools/freetype/freetype/src/type1/t1tokens.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type1/type1.c (renamed from tools/freetype/freetype/src/type1/type1.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/Jamfile (renamed from tools/freetype/freetype/src/type42/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/module.mk (renamed from tools/freetype/freetype/src/type42/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/rules.mk (renamed from tools/freetype/freetype/src/type42/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/t42drivr.c (renamed from tools/freetype/freetype/src/type42/t42drivr.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/t42drivr.h (renamed from tools/freetype/freetype/src/type42/t42drivr.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/t42error.h (renamed from tools/freetype/freetype/src/type42/t42error.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/t42objs.c (renamed from tools/freetype/freetype/src/type42/t42objs.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/t42objs.h (renamed from tools/freetype/freetype/src/type42/t42objs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/t42parse.c (renamed from tools/freetype/freetype/src/type42/t42parse.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/t42parse.h (renamed from tools/freetype/freetype/src/type42/t42parse.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/t42types.h (renamed from tools/freetype/freetype/src/type42/t42types.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/type42/type42.c (renamed from tools/freetype/freetype/src/type42/type42.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/winfonts/Jamfile (renamed from tools/freetype/freetype/src/winfonts/Jamfile) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/winfonts/fnterrs.h (renamed from tools/freetype/freetype/src/winfonts/fnterrs.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/winfonts/module.mk (renamed from tools/freetype/freetype/src/winfonts/module.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/winfonts/rules.mk (renamed from tools/freetype/freetype/src/winfonts/rules.mk) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/winfonts/winfnt.c (renamed from tools/freetype/freetype/src/winfonts/winfnt.c) | 0 | ||||
-rw-r--r-- | drivers/freetype/freetype/src/winfonts/winfnt.h (renamed from tools/freetype/freetype/src/winfonts/winfnt.h) | 0 | ||||
-rw-r--r-- | drivers/freetype/ft2build.h (renamed from tools/freetype/ft2build.h) | 0 | ||||
-rw-r--r-- | drivers/gles2/rasterizer_gles2.cpp | 7 | ||||
-rw-r--r-- | drivers/gles2/rasterizer_gles2.h | 2 | ||||
-rw-r--r-- | drivers/register_driver_types.cpp | 3 | ||||
-rw-r--r-- | main/input_default.cpp | 14 | ||||
-rw-r--r-- | main/input_default.h | 3 | ||||
-rw-r--r-- | main/main.cpp | 14 | ||||
-rw-r--r-- | modules/gdscript/gd_parser.cpp | 2 | ||||
-rw-r--r-- | modules/gdscript/gd_script.cpp | 2 | ||||
-rw-r--r-- | platform/android/SCsub | 6 | ||||
-rw-r--r-- | platform/android/godot_android.cpp | 31 | ||||
-rw-r--r-- | platform/android/java/res/drawable/icon.png | bin | 12574 -> 12525 bytes | |||
-rw-r--r-- | platform/android/java/src/org/godotengine/godot/Godot.java | 13 | ||||
-rw-r--r-- | platform/android/java/src/org/godotengine/godot/GodotLib.java | 1 | ||||
-rw-r--r-- | platform/android/java_glue.cpp | 11 | ||||
-rw-r--r-- | platform/android/java_glue.h | 1 | ||||
-rw-r--r-- | platform/android/os_android.cpp | 5 | ||||
-rw-r--r-- | platform/android/os_android.h | 1 | ||||
-rw-r--r-- | platform/osx/detect.py | 4 | ||||
-rw-r--r-- | platform/osx/export/export.cpp | 9 | ||||
-rw-r--r-- | platform/osx/os_osx.h | 19 | ||||
-rw-r--r-- | platform/osx/os_osx.mm | 87 | ||||
-rw-r--r-- | platform/windows/detect.py | 11 | ||||
-rw-r--r-- | platform/windows/godot.ico | bin | 370070 -> 370070 bytes | |||
-rw-r--r-- | platform/windows/os_windows.cpp | 51 | ||||
-rw-r--r-- | platform/windows/os_windows.h | 3 | ||||
-rw-r--r-- | platform/x11/detect.py | 4 | ||||
-rw-r--r-- | platform/x11/os_x11.cpp | 165 | ||||
-rw-r--r-- | platform/x11/os_x11.h | 12 | ||||
-rw-r--r-- | scene/2d/area_2d.cpp | 6 | ||||
-rw-r--r-- | scene/2d/light_2d.cpp | 6 | ||||
-rw-r--r-- | scene/2d/polygon_2d.cpp | 27 | ||||
-rw-r--r-- | scene/2d/polygon_2d.h | 4 | ||||
-rw-r--r-- | scene/3d/mesh_instance.cpp | 87 | ||||
-rw-r--r-- | scene/3d/mesh_instance.h | 5 | ||||
-rw-r--r-- | scene/gui/box_container.cpp | 1 | ||||
-rw-r--r-- | scene/gui/dialogs.cpp | 87 | ||||
-rw-r--r-- | scene/gui/dialogs.h | 7 | ||||
-rw-r--r-- | scene/gui/item_list.cpp | 64 | ||||
-rw-r--r-- | scene/gui/item_list.h | 14 | ||||
-rw-r--r-- | scene/gui/tab_container.cpp | 5 | ||||
-rw-r--r-- | scene/gui/text_edit.cpp | 160 | ||||
-rw-r--r-- | scene/gui/text_edit.h | 22 | ||||
-rw-r--r-- | scene/gui/texture_frame.cpp | 46 | ||||
-rw-r--r-- | scene/gui/texture_frame.h | 15 | ||||
-rw-r--r-- | scene/main/scene_main_loop.cpp | 10 | ||||
-rw-r--r-- | scene/main/scene_main_loop.h | 1 | ||||
-rw-r--r-- | scene/register_scene_types.cpp | 5 | ||||
-rw-r--r-- | scene/resources/default_theme/default_theme.cpp | 277 | ||||
-rw-r--r-- | scene/resources/default_theme/default_theme.h | 2 | ||||
-rw-r--r-- | scene/resources/dynamic_font.cpp | 301 | ||||
-rw-r--r-- | scene/resources/dynamic_font.h | 76 | ||||
-rw-r--r-- | scene/resources/dynamic_font_stb.cpp | 527 | ||||
-rw-r--r-- | scene/resources/dynamic_font_stb.h | 178 | ||||
-rw-r--r-- | scene/resources/mesh.cpp | 5 | ||||
-rw-r--r-- | scene/scene_string_names.cpp | 7 | ||||
-rw-r--r-- | scene/scene_string_names.h | 6 | ||||
-rw-r--r-- | servers/physics/joints/hinge_joint_sw.cpp | 1 | ||||
-rw-r--r-- | servers/visual/rasterizer.h | 1 | ||||
-rw-r--r-- | servers/visual/visual_server_raster.cpp | 38 | ||||
-rw-r--r-- | servers/visual/visual_server_raster.h | 10 | ||||
-rw-r--r-- | servers/visual/visual_server_wrap_mt.h | 2 | ||||
-rw-r--r-- | servers/visual_server.h | 2 | ||||
-rw-r--r-- | tools/Godot.app/Contents/Resources/Godot.icns | bin | 260598 -> 120942 bytes | |||
-rw-r--r-- | tools/SCsub | 107 | ||||
-rw-r--r-- | tools/doc/doc_data.h | 3 | ||||
-rw-r--r-- | tools/editor/code_editor.cpp | 528 | ||||
-rw-r--r-- | tools/editor/code_editor.h | 77 | ||||
-rw-r--r-- | tools/editor/create_dialog.cpp | 9 | ||||
-rw-r--r-- | tools/editor/create_dialog.h | 1 | ||||
-rw-r--r-- | tools/editor/dependency_editor.cpp | 8 | ||||
-rw-r--r-- | tools/editor/editor_file_dialog.cpp | 9 | ||||
-rw-r--r-- | tools/editor/editor_file_system.cpp | 69 | ||||
-rw-r--r-- | tools/editor/editor_file_system.h | 8 | ||||
-rw-r--r-- | tools/editor/editor_fonts.cpp | 69 | ||||
-rw-r--r-- | tools/editor/editor_help.cpp | 56 | ||||
-rw-r--r-- | tools/editor/editor_import_export.cpp | 31 | ||||
-rw-r--r-- | tools/editor/editor_import_export.h | 3 | ||||
-rw-r--r-- | tools/editor/editor_node.cpp | 112 | ||||
-rw-r--r-- | tools/editor/editor_node.h | 8 | ||||
-rw-r--r-- | tools/editor/editor_plugin.cpp | 8 | ||||
-rw-r--r-- | tools/editor/editor_plugin.h | 3 | ||||
-rw-r--r-- | tools/editor/editor_plugin_settings.cpp | 9 | ||||
-rw-r--r-- | tools/editor/editor_profiler.cpp | 6 | ||||
-rw-r--r-- | tools/editor/editor_resource_preview.cpp | 97 | ||||
-rw-r--r-- | tools/editor/editor_resource_preview.h | 5 | ||||
-rw-r--r-- | tools/editor/editor_scale.cpp | 7 | ||||
-rw-r--r-- | tools/editor/editor_scale.h | 8 | ||||
-rw-r--r-- | tools/editor/editor_settings.cpp | 286 | ||||
-rw-r--r-- | tools/editor/editor_settings.h | 14 | ||||
-rw-r--r-- | tools/editor/icons/SCsub | 5 | ||||
-rw-r--r-- | tools/editor/icons/icon_checkerboard.png | bin | 0 -> 253 bytes | |||
-rw-r--r-- | tools/editor/icons/icon_dependency_changed.png | bin | 651 -> 649 bytes | |||
-rw-r--r-- | tools/editor/icons/icon_dependency_ok.png | bin | 685 -> 707 bytes | |||
-rw-r--r-- | tools/editor/icons/icon_godot.png | bin | 671 -> 754 bytes | |||
-rw-r--r-- | tools/editor/icons/icon_material_preview_cube.png | bin | 0 -> 502 bytes | |||
-rw-r--r-- | tools/editor/icons/icon_material_preview_cube_off.png | bin | 0 -> 493 bytes | |||
-rw-r--r-- | tools/editor/icons/icon_material_preview_light_1.png | bin | 0 -> 1283 bytes | |||
-rw-r--r-- | tools/editor/icons/icon_material_preview_light_1_off.png | bin | 0 -> 1329 bytes | |||
-rw-r--r-- | tools/editor/icons/icon_material_preview_light_2.png | bin | 0 -> 1341 bytes | |||
-rw-r--r-- | tools/editor/icons/icon_material_preview_light_2_off.png | bin | 0 -> 1363 bytes | |||
-rw-r--r-- | tools/editor/icons/icon_material_preview_sphere.png | bin | 0 -> 1051 bytes | |||
-rw-r--r-- | tools/editor/icons/icon_material_preview_sphere_off.png | bin | 0 -> 1006 bytes | |||
-rw-r--r-- | tools/editor/io_plugins/editor_font_import_plugin.cpp | 33 | ||||
-rw-r--r-- | tools/editor/io_plugins/editor_font_import_plugin.h | 1 | ||||
-rw-r--r-- | tools/editor/io_plugins/editor_mesh_import_plugin.cpp | 25 | ||||
-rw-r--r-- | tools/editor/io_plugins/editor_mesh_import_plugin.h | 1 | ||||
-rw-r--r-- | tools/editor/io_plugins/editor_sample_import_plugin.cpp | 63 | ||||
-rw-r--r-- | tools/editor/io_plugins/editor_sample_import_plugin.h | 3 | ||||
-rw-r--r-- | tools/editor/io_plugins/editor_scene_import_plugin.cpp | 621 | ||||
-rw-r--r-- | tools/editor/io_plugins/editor_scene_import_plugin.h | 18 | ||||
-rw-r--r-- | tools/editor/io_plugins/editor_texture_import_plugin.cpp | 384 | ||||
-rw-r--r-- | tools/editor/io_plugins/editor_texture_import_plugin.h | 14 | ||||
-rw-r--r-- | tools/editor/io_plugins/editor_translation_import_plugin.cpp | 34 | ||||
-rw-r--r-- | tools/editor/io_plugins/editor_translation_import_plugin.h | 1 | ||||
-rw-r--r-- | tools/editor/plugins/animation_player_editor_plugin.cpp | 4 | ||||
-rw-r--r-- | tools/editor/plugins/color_ramp_editor_plugin.cpp | 15 | ||||
-rw-r--r-- | tools/editor/plugins/color_ramp_editor_plugin.h | 2 | ||||
-rw-r--r-- | tools/editor/plugins/editor_preview_plugins.cpp | 9 | ||||
-rw-r--r-- | tools/editor/plugins/material_editor_plugin.cpp | 381 | ||||
-rw-r--r-- | tools/editor/plugins/material_editor_plugin.h | 71 | ||||
-rw-r--r-- | tools/editor/plugins/mesh_editor_plugin.cpp | 349 | ||||
-rw-r--r-- | tools/editor/plugins/mesh_editor_plugin.h | 60 | ||||
-rw-r--r-- | tools/editor/plugins/mesh_instance_editor_plugin.cpp | 300 | ||||
-rw-r--r-- | tools/editor/plugins/mesh_instance_editor_plugin.h | 69 | ||||
-rw-r--r-- | tools/editor/plugins/sample_editor_plugin.cpp | 9 | ||||
-rw-r--r-- | tools/editor/plugins/script_editor_plugin.cpp | 151 | ||||
-rw-r--r-- | tools/editor/plugins/script_editor_plugin.h | 14 | ||||
-rw-r--r-- | tools/editor/plugins/shader_editor_plugin.cpp | 21 | ||||
-rw-r--r-- | tools/editor/plugins/shader_editor_plugin.h | 2 | ||||
-rw-r--r-- | tools/editor/plugins/spatial_editor_plugin.cpp | 14 | ||||
-rw-r--r-- | tools/editor/plugins/sprite_region_editor_plugin.cpp | 2 | ||||
-rw-r--r-- | tools/editor/plugins/texture_editor_plugin.cpp | 141 | ||||
-rw-r--r-- | tools/editor/plugins/texture_editor_plugin.h | 49 | ||||
-rw-r--r-- | tools/editor/plugins/tile_map_editor_plugin.cpp | 22 | ||||
-rw-r--r-- | tools/editor/plugins/tile_map_editor_plugin.h | 2 | ||||
-rw-r--r-- | tools/editor/progress_dialog.cpp | 6 | ||||
-rw-r--r-- | tools/editor/project_export.cpp | 4 | ||||
-rw-r--r-- | tools/editor/project_manager.cpp | 2 | ||||
-rw-r--r-- | tools/editor/project_settings.cpp | 12 | ||||
-rw-r--r-- | tools/editor/property_editor.cpp | 47 | ||||
-rw-r--r-- | tools/editor/property_editor.h | 2 | ||||
-rw-r--r-- | tools/editor/scene_tree_dock.cpp | 9 | ||||
-rw-r--r-- | tools/editor/scene_tree_dock.h | 1 | ||||
-rw-r--r-- | tools/editor/scenes_dock.cpp | 438 | ||||
-rw-r--r-- | tools/editor/scenes_dock.h | 11 | ||||
-rw-r--r-- | tools/editor/script_editor_debugger.cpp | 15 | ||||
-rw-r--r-- | tools/editor/settings_config_dialog.cpp | 3 | ||||
-rw-r--r-- | tools/editor_fonts/droid_sans.ttf | bin | 0 -> 6314324 bytes | |||
-rw-r--r-- | tools/editor_fonts/source_code_pro.otf | bin | 0 -> 140088 bytes | |||
-rw-r--r-- | tools/osx_template.app/Contents/Resources/icon.icns | bin | 260598 -> 120942 bytes | |||
-rw-r--r-- | tools/translations/Makefile | 20 | ||||
-rwxr-xr-x | tools/translations/extract.py | 17 | ||||
-rw-r--r-- | tools/translations/fr.po | 6001 | ||||
-rw-r--r-- | tools/translations/it.po | 6032 | ||||
-rw-r--r-- | tools/translations/ru.po | 5960 | ||||
-rw-r--r-- | tools/translations/tools.pot | 709 | ||||
-rw-r--r-- | tools/translations/zh_CN.po | 5900 | ||||
-rw-r--r-- | tools/translations/zh_HK.po | 5832 |
674 files changed, 39133 insertions, 1944 deletions
diff --git a/.gitattributes b/.gitattributes index f1e99ee8ca..36620d50f5 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,7 @@ +# Properly detect languages on Github +*.h linguist-language=cpp +drivers/* linguist-vendored + *.cpp eol=lf *.h eol=lf *.py eol=lf diff --git a/.gitignore b/.gitignore index 65af0c69ee..ef17e13534 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,8 @@ tools/editor/register_exporters.cpp tools/editor/doc_data_compressed.h tools/editor/certs_compressed.h tools/editor/editor_icons.cpp +tools/editor/translations.h +tools/editor/builtin_fonts.h -fpic .fscache make.bat @@ -147,6 +149,8 @@ ipch/ *.opensdf *.sdf *.cachefile +*.VC.db +*.VC.VC.opendb # Visual Studio profiler *.psess @@ -1,6 +1,6 @@  -http://www.godotengine.org +https://godotengine.org ### The Engine @@ -13,17 +13,18 @@ Godot has been developed by Juan Linietsky and Ariel Manzur for several years, a ### Documentation -Documentation has been moved to [ReadTheDocs](http://docs.godotengine.org). +Documentation is hosted on [ReadTheDocs](http://docs.godotengine.org). ### Binary Downloads, Community, etc. Binary downloads, community, etc. can be found in Godot homepage: -http://www.godotengine.org +https://godotengine.org ### Compiling from Source -Compilation instructions for every platform can be found in the Wiki: +See docs for compilation instructions for every platform: http://docs.godotengine.org/en/latest/reference/_compiling.html [](https://travis-ci.org/godotengine/godot) +[](http://www.codetriage.com/godotengine/godot) diff --git a/SConstruct b/SConstruct index 8a3a7c4565..5e821751f3 100644 --- a/SConstruct +++ b/SConstruct @@ -396,14 +396,25 @@ if selected_platform in platform_list: AddToVSProject(env.servers_sources) AddToVSProject(env.tool_sources) + # this env flag won't work, it needs to be set in env_base=Environment(MSVC_VERSION='9.0') + # Even then, SCons still seems to ignore it and builds with the latest MSVC... + # That said, it's not needed to be set so far but I'm leaving it here so that this comment + # has a purpose. #env['MSVS_VERSION']='9.0' - env['MSVSBUILDCOM'] = "scons platform=" + selected_platform + " target=" + env["target"] + " bits=" + env["bits"] + " tools=yes" - env['MSVSREBUILDCOM'] = "scons platform=" + selected_platform + " target=" + env["target"] + " bits=" + env["bits"] + " tools=yes vsproj=true" - env['MSVSCLEANCOM'] = "scons --clean platform=" + selected_platform + " target=" + env["target"] + " bits=" + env["bits"] + " tools=yes" - - debug_variants = ['Debug|Win32']+['Debug|x64'] - release_variants = ['Release|Win32']+['Release|x64'] - release_debug_variants = ['Release_Debug|Win32']+['Release_Debug|x64'] + + + # Calls a CMD with /C(lose) and /V(delayed environment variable expansion) options. + # And runs vcvarsall bat for the propper arhitecture and scons for propper configuration + env['MSVSBUILDCOM'] = 'cmd /V /C set "plat=$(PlatformTarget)" ^& (if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64")) ^& set "tools=yes" ^& (if "$(Configuration)"=="release" (set "tools=no")) ^& call "$(VCInstallDir)vcvarsall.bat" !plat! ^& scons platform=windows target=$(Configuration) tools=!tools! -j2' + env['MSVSREBUILDCOM'] = 'cmd /V /C set "plat=$(PlatformTarget)" ^& (if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64")) ^& set "tools=yes" ^& (if "$(Configuration)"=="release" (set "tools=no")) & call "$(VCInstallDir)vcvarsall.bat" !plat! ^& scons platform=windows target=$(Configuration) tools=!tools! vsproj=yes -j2' + env['MSVSCLEANCOM'] = 'cmd /V /C set "plat=$(PlatformTarget)" ^& (if "$(PlatformTarget)"=="x64" (set "plat=x86_amd64")) ^& set "tools=yes" ^& (if "$(Configuration)"=="release" (set "tools=no")) ^& call "$(VCInstallDir)vcvarsall.bat" !plat! ^& scons --clean platform=windows target=$(Configuration) tools=!tools! -j2' + + # This version information (Win32, x64, Debug, Release, Release_Debug seems to be + # required for Visual Studio to understand that it needs to generate an NMAKE + # project. Do not modify without knowing what you are doing. + debug_variants = ['debug|Win32']+['debug|x64'] + release_variants = ['release|Win32']+['release|x64'] + release_debug_variants = ['release_debug|Win32']+['release_debug|x64'] variants = debug_variants + release_variants + release_debug_variants debug_targets = ['Debug']+['Debug'] release_targets = ['Release']+['Release'] diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp index e8703dccca..addc26525e 100644 --- a/core/bind/core_bind.cpp +++ b/core/bind/core_bind.cpp @@ -226,6 +226,11 @@ Size2 _OS::get_screen_size(int p_screen) const { return OS::get_singleton()->get_screen_size(p_screen); } +int _OS::get_screen_dpi(int p_screen) const { + + return OS::get_singleton()->get_screen_dpi(p_screen); +} + Point2 _OS::get_window_position() const { return OS::get_singleton()->get_window_position(); } @@ -984,6 +989,7 @@ void _OS::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_current_screen","screen"),&_OS::set_current_screen); ObjectTypeDB::bind_method(_MD("get_screen_position","screen"),&_OS::get_screen_position,DEFVAL(0)); ObjectTypeDB::bind_method(_MD("get_screen_size","screen"),&_OS::get_screen_size,DEFVAL(0)); + ObjectTypeDB::bind_method(_MD("get_screen_dpi","screen"),&_OS::get_screen_dpi,DEFVAL(0)); ObjectTypeDB::bind_method(_MD("get_window_position"),&_OS::get_window_position); ObjectTypeDB::bind_method(_MD("set_window_position","position"),&_OS::set_window_position); ObjectTypeDB::bind_method(_MD("get_window_size"),&_OS::get_window_size); diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h index 0c768651ff..af89536c45 100644 --- a/core/bind/core_bind.h +++ b/core/bind/core_bind.h @@ -117,6 +117,7 @@ public: virtual void set_current_screen(int p_screen); virtual Point2 get_screen_position(int p_screen=0) const; virtual Size2 get_screen_size(int p_screen=0) const; + virtual int get_screen_dpi(int p_screen=0) const; virtual Point2 get_window_position() const; virtual void set_window_position(const Point2& p_position); virtual Size2 get_window_size() const; diff --git a/core/hq2x.cpp b/core/hq2x.cpp new file mode 100644 index 0000000000..6495c77b2a --- /dev/null +++ b/core/hq2x.cpp @@ -0,0 +1,2636 @@ +/* + * Copyright 2016 Bruno Ribeiro + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include "hq2x.h" +#include "math_funcs.h" + + +static const uint32_t AMASK = 0xFF000000; +static const uint32_t YMASK = 0x00FF0000; +static const uint32_t UMASK = 0x0000FF00; +static const uint32_t VMASK = 0x000000FF; + +_FORCE_INLINE_ static uint32_t ARGBtoAYUV( + uint32_t value ) +{ + uint32_t A, R, G, B, Y, U, V; +//todo big endian check + A = value >> 24; + R = (value >> 16) & 0xFF; + G = (value >> 8) & 0xFF; + B = value & 0xFF; + + Y = Math::fast_ftoi( 0.299 * R + 0.587 * G + 0.114 * B); + U = Math::fast_ftoi(-0.169 * R - 0.331 * G + 0.5 * B) + 128; + V = Math::fast_ftoi( 0.5 * R - 0.419 * G - 0.081 * B) + 128; + return (A << 24) + (Y << 16) + (U << 8) + V; +} + + +/* + * Use this function for sharper images (good for cartoon style, used by DOSBOX) + */ + +_FORCE_INLINE_ static bool isDifferent( + uint32_t color1, + uint32_t color2, + uint32_t trY, + uint32_t trU, + uint32_t trV, + uint32_t trA ) +{ + color1 = ARGBtoAYUV(color1); + color2 = ARGBtoAYUV(color2); + + uint32_t value; + + value = ((color1 & YMASK) - (color2 & YMASK)); + value = (value ^ (value >> 31)) - (value >> 31); + if (value > trY) return true; + + value = ((color1 & UMASK) - (color2 & UMASK)); + value = (value ^ (value >> 31)) - (value >> 31); + if (value > trU) return true; + + value = ((color1 & VMASK) - (color2 & VMASK)); + value = (value ^ (value >> 31)) - (value >> 31); + if (value > trV) return true; + + value = ((color1 & AMASK) - (color2 & AMASK)); + value = (value ^ (value >> 31)) - (value >> 31); + if (value > trA) return true; + + return false; + +} + + + +#define MASK_RB 0x00FF00FF +#define MASK_G 0x0000FF00 +#define MASK_A 0xFF000000 + + +/** + * @brief Mixes two colors using the given weights. + */ +#define HQX_MIX_2(C0,C1,W0,W1) \ + ((((C0 & MASK_RB) * W0 + (C1 & MASK_RB) * W1) / (W0 + W1)) & MASK_RB) | \ + ((((C0 & MASK_G) * W0 + (C1 & MASK_G) * W1) / (W0 + W1)) & MASK_G) | \ + (((((C0 & MASK_A) >> 8) * W0 + ((C1 & MASK_A) >> 8) * W1) / (W0 + W1)) << 8) & MASK_A + +/** + * @brief Mixes three colors using the given weights. + */ +#define HQX_MIX_3(C0,C1,C2,W0,W1,W2) \ + ((((C0 & MASK_RB) * W0 + (C1 & MASK_RB) * W1 + (C2 & MASK_RB) * W2) / (W0 + W1 + W2)) & MASK_RB) | \ + ((((C0 & MASK_G) * W0 + (C1 & MASK_G) * W1 + (C2 & MASK_G) * W2) / (W0 + W1 + W2)) & MASK_G) | \ + (((((C0 & MASK_A) >> 8) * W0 + ((C1 & MASK_A) >> 8) * W1 + ((C2 & MASK_A) >> 8) * W2) / (W0 + W1 + W2)) << 8) & MASK_A + + +#define MIX_00_4 *output = w[4]; +#define MIX_00_MIX_00_4_0_3_1 *output = HQX_MIX_2(w[4],w[0],3U,1U); +#define MIX_00_4_3_3_1 *output = HQX_MIX_2(w[4],w[3],3U,1U); +#define MIX_00_4_1_3_1 *output = HQX_MIX_2(w[4],w[1],3U,1U); +#define MIX_00_3_1_1_1 *output = HQX_MIX_2(w[3],w[1],1U,1U); +#define MIX_00_4_3_1_2_1_1 *output = HQX_MIX_3(w[4],w[3],w[1],2U,1U,1U); +#define MIX_00_4_3_1_2_7_7 *output = HQX_MIX_3(w[4],w[3],w[1],2U,7U,7U); +#define MIX_00_4_0_1_2_1_1 *output = HQX_MIX_3(w[4],w[0],w[1],2U,1U,1U); +#define MIX_00_4_0_3_2_1_1 *output = HQX_MIX_3(w[4],w[0],w[3],2U,1U,1U); +#define MIX_00_4_1_3_5_2_1 *output = HQX_MIX_3(w[4],w[1],w[3],5U,2U,1U); +#define MIX_00_4_3_1_5_2_1 *output = HQX_MIX_3(w[4],w[3],w[1],5U,2U,1U); +#define MIX_00_4_3_1_6_1_1 *output = HQX_MIX_3(w[4],w[3],w[1],6U,1U,1U); +#define MIX_00_4_3_1_2_3_3 *output = HQX_MIX_3(w[4],w[3],w[1],2U,3U,3U); +#define MIX_00_MIX_00_4_0_3_10 *output = HQX_MIX_3(w[4],w[3],w[1],14U,1U,1U); + +#define MIX_01_4 *(output + 1) = w[4]; +#define MIX_01_4_2_3_1 *(output + 1) = HQX_MIX_2(w[4],w[2],3U,1U); +#define MIX_01_4_1_3_1 *(output + 1) = HQX_MIX_2(w[4],w[1],3U,1U); +#define MIX_01_1_4_3_1 *(output + 1) = HQX_MIX_2(w[1],w[4],3U,1U); +#define MIX_01_4_5_3_1 *(output + 1) = HQX_MIX_2(w[4],w[5],3U,1U); +#define MIX_01_4_1_7_1 *(output + 1) = HQX_MIX_2(w[4],w[1],7U,1U); +#define MIX_01_4_1_5_2_1_1 *(output + 1) = HQX_MIX_3(w[4],w[1],w[5],2U,1U,1U); +#define MIX_01_4_2_5_2_1_1 *(output + 1) = HQX_MIX_3(w[4],w[2],w[5],2U,1U,1U); +#define MIX_01_4_2_1_2_1_1 *(output + 1) = HQX_MIX_3(w[4],w[2],w[1],2U,1U,1U); +#define MIX_01_4_5_1_5_2_1 *(output + 1) = HQX_MIX_3(w[4],w[5],w[1],5U,2U,1U); +#define MIX_01_4_1_5_5_2_1 *(output + 1) = HQX_MIX_3(w[4],w[1],w[5],5U,2U,1U); +#define MIX_01_4_1_5_6_1_1 *(output + 1) = HQX_MIX_3(w[4],w[1],w[5],6U,1U,1U); +#define MIX_01_4_1_5_2_3_3 *(output + 1) = HQX_MIX_3(w[4],w[1],w[5],2U,3U,3U); +#define MIX_01_4_2_3_10 *(output + 1) = HQX_MIX_3(w[4],w[1],w[5],14U,1U,1U); + +#define MIX_02_4 *(output + 2) = w[4]; +#define MIX_02_4_2_3_1 *(output + 2) = HQX_MIX_2(w[4],w[2],3U,1U); +#define MIX_02_4_1_3_1 *(output + 2) = HQX_MIX_2(w[4],w[1],3U,1U); +#define MIX_02_4_5_3_1 *(output + 2) = HQX_MIX_2(w[4],w[5],3U,1U); +#define MIX_02_4_1_5_2_1_1 *(output + 2) = HQX_MIX_3(w[4],w[1],w[5],2U,1U,1U); +#define MIX_02_4_1_5_2_7_7 *(output + 2) = HQX_MIX_3(w[4],w[1],w[5],2U,7U,7U); +#define MIX_02_1_5_1_1 *(output + 2) = HQX_MIX_2(w[1],w[5],1U,1U); + +#define MIX_10_4 *(output + lineSize) = w[4]; +#define MIX_10_4_6_3_1 *(output + lineSize) = HQX_MIX_2(w[4],w[6],3U,1U); +#define MIX_10_4_7_3_1 *(output + lineSize) = HQX_MIX_2(w[4],w[7],3U,1U); +#define MIX_10_4_3_3_1 *(output + lineSize) = HQX_MIX_2(w[4],w[3],3U,1U); +#define MIX_10_4_7_3_2_1_1 *(output + lineSize) = HQX_MIX_3(w[4],w[7],w[3],2U,1U,1U); +#define MIX_10_4_6_3_2_1_1 *(output + lineSize) = HQX_MIX_3(w[4],w[6],w[3],2U,1U,1U); +#define MIX_10_4_6_7_2_1_1 *(output + lineSize) = HQX_MIX_3(w[4],w[6],w[7],2U,1U,1U); +#define MIX_10_4_3_7_5_2_1 *(output + lineSize) = HQX_MIX_3(w[4],w[3],w[7],5U,2U,1U); +#define MIX_10_4_7_3_5_2_1 *(output + lineSize) = HQX_MIX_3(w[4],w[7],w[3],5U,2U,1U); +#define MIX_10_4_7_3_6_1_1 *(output + lineSize) = HQX_MIX_3(w[4],w[7],w[3],6U,1U,1U); +#define MIX_10_4_7_3_2_3_3 *(output + lineSize) = HQX_MIX_3(w[4],w[7],w[3],2U,3U,3U); +#define MIX_10_4_6_3_10 *(output + lineSize) = HQX_MIX_3(w[4],w[7],w[3],14U,1U,1U); +#define MIX_10_4_3_7_1 *(output + lineSize) = HQX_MIX_2(w[4],w[3],7U,1U); +#define MIX_10_3_4_3_1 *(output + lineSize) = HQX_MIX_2(w[3],w[4],3U,1U); + +#define MIX_11_4 *(output + lineSize + 1) = w[4]; +#define MIX_11_4_8_3_1 *(output + lineSize + 1) = HQX_MIX_2(w[4],w[8],3U,1U); +#define MIX_11_4_5_3_1 *(output + lineSize + 1) = HQX_MIX_2(w[4],w[5],3U,1U); +#define MIX_11_4_7_3_1 *(output + lineSize + 1) = HQX_MIX_2(w[4],w[7],3U,1U); +#define MIX_11_4_5_7_2_1_1 *(output + lineSize + 1) = HQX_MIX_3(w[4],w[5],w[7],2U,1U,1U); +#define MIX_11_4_8_7_2_1_1 *(output + lineSize + 1) = HQX_MIX_3(w[4],w[8],w[7],2U,1U,1U); +#define MIX_11_4_8_5_2_1_1 *(output + lineSize + 1) = HQX_MIX_3(w[4],w[8],w[5],2U,1U,1U); +#define MIX_11_4_7_5_5_2_1 *(output + lineSize + 1) = HQX_MIX_3(w[4],w[7],w[5],5U,2U,1U); +#define MIX_11_4_5_7_5_2_1 *(output + lineSize + 1) = HQX_MIX_3(w[4],w[5],w[7],5U,2U,1U); +#define MIX_11_4_5_7_6_1_1 *(output + lineSize + 1) = HQX_MIX_3(w[4],w[5],w[7],6U,1U,1U); +#define MIX_11_4_5_7_2_3_3 *(output + lineSize + 1) = HQX_MIX_3(w[4],w[5],w[7],2U,3U,3U); +#define MIX_11_4_8_3_10 *(output + lineSize + 1) = HQX_MIX_3(w[4],w[5],w[7],14U,1U,1U); + +#define MIX_12_4 *(output + lineSize + 2) = w[4]; +#define MIX_12_4_5_3_1 *(output + lineSize + 2) = HQX_MIX_2(w[4],w[5],3U,1U); +#define MIX_12_4_5_7_1 *(output + lineSize + 2) = HQX_MIX_2(w[4],w[5],7U,1U); +#define MIX_12_5_4_3_1 *(output + lineSize + 2) = HQX_MIX_2(w[5],w[4],3U,1U); + +#define MIX_20_4 *(output + lineSize + lineSize) = w[4]; +#define MIX_20_4_6_3_1 *(output + lineSize + lineSize) = HQX_MIX_2(w[4],w[6],3U,1U); +#define MIX_20_4_7_3_1 *(output + lineSize + lineSize) = HQX_MIX_2(w[4],w[7],3U,1U); +#define MIX_20_4_3_3_1 *(output + lineSize + lineSize) = HQX_MIX_2(w[4],w[3],3U,1U); +#define MIX_20_4_7_3_2_1_1 *(output + lineSize + lineSize) = HQX_MIX_3(w[4],w[7],w[3],2U,1U,1U); +#define MIX_20_4_7_3_2_7_7 *(output + lineSize + lineSize) = HQX_MIX_3(w[4],w[7],w[3],2U,7U,7U); +#define MIX_20_7_3_1_1 *(output + lineSize + lineSize) = HQX_MIX_2(w[7],w[3],1U,1U); + +#define MIX_21_4 *(output + lineSize + lineSize + 1) = w[4]; +#define MIX_21_4_7_3_1 *(output + lineSize + lineSize + 1) = HQX_MIX_2(w[4],w[7],3U,1U); +#define MIX_21_4_7_7_1 *(output + lineSize + lineSize + 1) = HQX_MIX_2(w[4],w[7],7U,1U); +#define MIX_21_7_4_3_1 *(output + lineSize + lineSize + 1) = HQX_MIX_2(w[7],w[4],3U,1U); + +#define MIX_22_4 *(output + lineSize + lineSize + 2) = w[4]; +#define MIX_22_4_8_3_1 *(output + lineSize + lineSize + 2) = HQX_MIX_2(w[4],w[8],3U,1U); +#define MIX_22_4_7_3_1 *(output + lineSize + lineSize + 2) = HQX_MIX_2(w[4],w[7],3U,1U); +#define MIX_22_4_5_3_1 *(output + lineSize + lineSize + 2) = HQX_MIX_2(w[4],w[5],3U,1U); +#define MIX_22_4_5_7_2_1_1 *(output + lineSize + lineSize + 2) = HQX_MIX_3(w[4],w[5],w[7],2U,1U,1U); +#define MIX_22_4_5_7_2_7_7 *(output + lineSize + lineSize + 2) = HQX_MIX_3(w[4],w[5],w[7],2U,7U,7U); +#define MIX_22_5_7_1_1 *(output + lineSize + lineSize + 2) = HQX_MIX_2(w[5],w[7],1U,1U); + + + +uint32_t *hq2x_resize( + const uint32_t *image, + uint32_t width, + uint32_t height, + uint32_t *output, + uint32_t trY, + uint32_t trU, + uint32_t trV, + uint32_t trA, + bool wrapX, + bool wrapY ) +{ + int lineSize = width * 2; + + int previous, next; + uint32_t w[9]; + + trY <<= 16; + trU <<= 8; + trA <<= 24; + + // iterates between the lines + for (uint32_t row = 0; row < height; row++) + { + /* + * Note: this function uses a 3x3 sliding window over the original image. + * + * +----+----+----+ + * | | | | + * | w0 | w1 | w2 | + * +----+----+----+ + * | | | | + * | w3 | w4 | w5 | + * +----+----+----+ + * | | | | + * | w6 | w7 | w8 | + * +----+----+----+ + */ + + // adjusts the previous and next line pointers + if (row > 0) + previous = -width; + else + { + if (wrapY) + previous = width * (height - 1); + else + previous = 0; + } + if (row < height - 1) + next = width; + else + { + if (wrapY) + next = -(width * (height - 1)); + else + next = 0; + } + + // iterates between the columns + for (uint32_t col = 0; col < width; col++) + { + w[1] = *(image + previous); + w[4] = *image; + w[7] = *(image + next); + + if (col > 0) + { + w[0] = *(image + previous - 1); + w[3] = *(image - 1); + w[6] = *(image + next - 1); + } + else + { + if (wrapX) + { + w[0] = *(image + previous + width - 1); + w[3] = *(image + width - 1); + w[6] = *(image + next + width - 1); + } + else + { + w[0] = w[1]; + w[3] = w[4]; + w[6] = w[7]; + } + } + + if (col < width - 1) + { + w[2] = *(image + previous + 1); + w[5] = *(image + 1); + w[8] = *(image + next + 1); + } + else + { + if (wrapX) + { + w[2] = *(image + previous - width + 1); + w[5] = *(image - width + 1); + w[8] = *(image + next - width + 1); + } + else + { + w[2] = w[1]; + w[5] = w[4]; + w[8] = w[7]; + } + } + + int pattern = 0; + + // computes the pattern to be used considering the neighbor pixels + for (int k = 0, flag = 1; k < 9; k++) + { + // ignores the central pixel + if (k == 4) continue; + + if (w[k] != w[4]) + if (isDifferent(w[4], w[k], trY, trU, trV, trA)) pattern |= flag; + flag <<= 1; + } + + switch (pattern) + { + case 0: + case 1: + case 4: + case 32: + case 128: + case 5: + case 132: + case 160: + case 33: + case 129: + case 36: + case 133: + case 164: + case 161: + case 37: + case 165: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 2: + case 34: + case 130: + case 162: + MIX_00_4_0_3_2_1_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 16: + case 17: + case 48: + case 49: + MIX_00_4_3_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 64: + case 65: + case 68: + case 69: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_8_5_2_1_1 + break; + case 8: + case 12: + case 136: + case 140: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 3: + case 35: + case 131: + case 163: + MIX_00_4_3_3_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 6: + case 38: + case 134: + case 166: + MIX_00_4_0_3_2_1_1 + MIX_01_4_5_3_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 20: + case 21: + case 52: + case 53: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 144: + case 145: + case 176: + case 177: + MIX_00_4_3_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_7_3_1 + break; + case 192: + case 193: + case 196: + case 197: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_5_3_1 + break; + case 96: + case 97: + case 100: + case 101: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_3_3_1 + MIX_11_4_8_5_2_1_1 + break; + case 40: + case 44: + case 168: + case 172: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_7_3_1 + MIX_11_4_5_7_2_1_1 + break; + case 9: + case 13: + case 137: + case 141: + MIX_00_4_1_3_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 18: + case 50: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_7_3_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 80: + case 81: + MIX_00_4_3_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_6_3_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 72: + case 76: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_5_2_1_1 + break; + case 10: + case 138: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_5_2_1_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 66: + MIX_00_4_0_3_2_1_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_8_5_2_1_1 + break; + case 24: + MIX_00_4_0_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 7: + case 39: + case 135: + MIX_00_4_3_3_1 + MIX_01_4_5_3_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 148: + case 149: + case 180: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_7_3_1 + break; + case 224: + case 228: + case 225: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_3_3_1 + MIX_11_4_5_3_1 + break; + case 41: + case 169: + case 45: + MIX_00_4_1_3_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_7_3_1 + MIX_11_4_5_7_2_1_1 + break; + case 22: + case 54: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_7_3_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 208: + case 209: + MIX_00_4_3_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_6_3_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 104: + case 108: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_5_2_1_1 + break; + case 11: + case 139: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_5_2_1_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 19: + case 51: + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_00_4_3_3_1 + MIX_01_4_2_3_1 + } + else + { + MIX_00_4_1_3_5_2_1 + MIX_01_4_1_5_2_3_3 + } + MIX_10_4_7_3_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 146: + case 178: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + MIX_11_4_7_3_1 + } + else + { + MIX_01_4_1_5_2_3_3 + MIX_11_4_5_7_5_2_1 + } + MIX_10_4_7_3_2_1_1 + break; + case 84: + case 85: + MIX_00_4_3_1_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_01_4_1_3_1 + MIX_11_4_8_3_1 + } + else + { + MIX_01_4_5_1_5_2_1 + MIX_11_4_5_7_2_3_3 + } + MIX_10_4_6_3_2_1_1 + break; + case 112: + case 113: + MIX_00_4_3_1_2_1_1 + MIX_01_4_2_1_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_10_4_3_3_1 + MIX_11_4_8_3_1 + } + else + { + MIX_10_4_7_3_5_2_1 + MIX_11_4_5_7_2_3_3 + } + break; + case 200: + case 204: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + MIX_11_4_5_3_1 + } + else + { + MIX_10_4_7_3_2_3_3 + MIX_11_4_7_5_5_2_1 + } + break; + case 73: + case 77: + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_00_4_1_3_1 + MIX_10_4_6_3_1 + } + else + { + MIX_00_4_3_1_5_2_1 + MIX_10_4_7_3_2_3_3 + } + MIX_01_4_1_5_2_1_1 + MIX_11_4_8_5_2_1_1 + break; + case 42: + case 170: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + MIX_10_4_7_3_1 + } + else + { + MIX_00_4_3_1_2_3_3 + MIX_10_4_3_7_5_2_1 + } + MIX_01_4_2_5_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 14: + case 142: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + MIX_01_4_5_3_1 + } + else + { + MIX_00_4_3_1_2_3_3 + MIX_01_4_1_5_5_2_1 + } + MIX_10_4_6_7_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 67: + MIX_00_4_3_3_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_8_5_2_1_1 + break; + case 70: + MIX_00_4_0_3_2_1_1 + MIX_01_4_5_3_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_8_5_2_1_1 + break; + case 28: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 152: + MIX_00_4_0_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_7_3_1 + break; + case 194: + MIX_00_4_0_3_2_1_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_5_3_1 + break; + case 98: + MIX_00_4_0_3_2_1_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_3_3_1 + MIX_11_4_8_5_2_1_1 + break; + case 56: + MIX_00_4_0_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_7_3_1 + MIX_11_4_8_7_2_1_1 + break; + case 25: + MIX_00_4_1_3_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 26: + case 31: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_6_7_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 82: + case 214: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_6_3_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 88: + case 248: + MIX_00_4_0_1_2_1_1 + MIX_01_4_2_1_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 74: + case 107: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_5_2_1_1 + break; + case 27: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_3_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 86: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_6_3_2_1_1 + MIX_11_4_8_3_1 + break; + case 216: + MIX_00_4_0_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_6_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 106: + MIX_00_MIX_00_4_0_3_1 + MIX_01_4_2_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_5_2_1_1 + break; + case 30: + MIX_00_MIX_00_4_0_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_6_7_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 210: + MIX_00_4_0_3_2_1_1 + MIX_01_4_2_3_1 + MIX_10_4_6_3_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 120: + MIX_00_4_0_1_2_1_1 + MIX_01_4_2_1_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_3_1 + break; + case 75: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_5_2_1_1 + MIX_10_4_6_3_1 + MIX_11_4_8_5_2_1_1 + break; + case 29: + MIX_00_4_1_3_1 + MIX_01_4_1_3_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 198: + MIX_00_4_0_3_2_1_1 + MIX_01_4_5_3_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_5_3_1 + break; + case 184: + MIX_00_4_0_1_2_1_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_7_3_1 + MIX_11_4_7_3_1 + break; + case 99: + MIX_00_4_3_3_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_3_3_1 + MIX_11_4_8_5_2_1_1 + break; + case 57: + MIX_00_4_1_3_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_7_3_1 + MIX_11_4_8_7_2_1_1 + break; + case 71: + MIX_00_4_3_3_1 + MIX_01_4_5_3_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_8_5_2_1_1 + break; + case 156: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_7_3_1 + break; + case 226: + MIX_00_4_0_3_2_1_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_3_3_1 + MIX_11_4_5_3_1 + break; + case 60: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_7_3_1 + MIX_11_4_8_7_2_1_1 + break; + case 195: + MIX_00_4_3_3_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_5_3_1 + break; + case 102: + MIX_00_4_0_3_2_1_1 + MIX_01_4_5_3_1 + MIX_10_4_3_3_1 + MIX_11_4_8_5_2_1_1 + break; + case 153: + MIX_00_4_1_3_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_7_3_1 + break; + case 58: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_7_3_1 + MIX_11_4_8_7_2_1_1 + break; + case 83: + MIX_00_4_3_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_6_3_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 92: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 202: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + MIX_01_4_2_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + MIX_11_4_5_3_1 + break; + case 78: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + MIX_01_4_5_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + MIX_11_4_8_5_2_1_1 + break; + case 154: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_6_7_2_1_1 + MIX_11_4_7_3_1 + break; + case 114: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_3_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 89: + MIX_00_4_1_3_1 + MIX_01_4_2_1_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 90: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 55: + case 23: + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_00_4_3_3_1 + MIX_01_4 + } + else + { + MIX_00_4_1_3_5_2_1 + MIX_01_4_1_5_2_3_3 + } + MIX_10_4_7_3_2_1_1 + MIX_11_4_8_7_2_1_1 + break; + case 182: + case 150: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + MIX_11_4_7_3_1 + } + else + { + MIX_01_4_1_5_2_3_3 + MIX_11_4_5_7_5_2_1 + } + MIX_10_4_7_3_2_1_1 + break; + case 213: + case 212: + MIX_00_4_3_1_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_01_4_1_3_1 + MIX_11_4 + } + else + { + MIX_01_4_5_1_5_2_1 + MIX_11_4_5_7_2_3_3 + } + MIX_10_4_6_3_2_1_1 + break; + case 241: + case 240: + MIX_00_4_3_1_2_1_1 + MIX_01_4_2_1_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_10_4_3_3_1 + MIX_11_4 + } + else + { + MIX_10_4_7_3_5_2_1 + MIX_11_4_5_7_2_3_3 + } + break; + case 236: + case 232: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + MIX_11_4_5_3_1 + } + else + { + MIX_10_4_7_3_2_3_3 + MIX_11_4_7_5_5_2_1 + } + break; + case 109: + case 105: + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_00_4_1_3_1 + MIX_10_4 + } + else + { + MIX_00_4_3_1_5_2_1 + MIX_10_4_7_3_2_3_3 + } + MIX_01_4_1_5_2_1_1 + MIX_11_4_8_5_2_1_1 + break; + case 171: + case 43: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + MIX_10_4_7_3_1 + } + else + { + MIX_00_4_3_1_2_3_3 + MIX_10_4_3_7_5_2_1 + } + MIX_01_4_2_5_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 143: + case 15: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + MIX_01_4_5_3_1 + } + else + { + MIX_00_4_3_1_2_3_3 + MIX_01_4_1_5_5_2_1 + } + MIX_10_4_6_7_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 124: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_3_1 + break; + case 203: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_5_2_1_1 + MIX_10_4_6_3_1 + MIX_11_4_5_3_1 + break; + case 62: + MIX_00_MIX_00_4_0_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_7_3_1 + MIX_11_4_8_7_2_1_1 + break; + case 211: + MIX_00_4_3_3_1 + MIX_01_4_2_3_1 + MIX_10_4_6_3_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 118: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_3_3_1 + MIX_11_4_8_3_1 + break; + case 217: + MIX_00_4_1_3_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_6_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 110: + MIX_00_MIX_00_4_0_3_1 + MIX_01_4_5_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_5_2_1_1 + break; + case 155: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_3_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_7_3_1 + break; + case 188: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_7_3_1 + MIX_11_4_7_3_1 + break; + case 185: + MIX_00_4_1_3_1 + MIX_01_4_2_1_2_1_1 + MIX_10_4_7_3_1 + MIX_11_4_7_3_1 + break; + case 61: + MIX_00_4_1_3_1 + MIX_01_4_1_3_1 + MIX_10_4_7_3_1 + MIX_11_4_8_7_2_1_1 + break; + case 157: + MIX_00_4_1_3_1 + MIX_01_4_1_3_1 + MIX_10_4_6_7_2_1_1 + MIX_11_4_7_3_1 + break; + case 103: + MIX_00_4_3_3_1 + MIX_01_4_5_3_1 + MIX_10_4_3_3_1 + MIX_11_4_8_5_2_1_1 + break; + case 227: + MIX_00_4_3_3_1 + MIX_01_4_2_5_2_1_1 + MIX_10_4_3_3_1 + MIX_11_4_5_3_1 + break; + case 230: + MIX_00_4_0_3_2_1_1 + MIX_01_4_5_3_1 + MIX_10_4_3_3_1 + MIX_11_4_5_3_1 + break; + case 199: + MIX_00_4_3_3_1 + MIX_01_4_5_3_1 + MIX_10_4_6_3_2_1_1 + MIX_11_4_5_3_1 + break; + case 220: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 158: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_6_7_2_1_1 + MIX_11_4_7_3_1 + break; + case 234: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + MIX_01_4_2_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_5_3_1 + break; + case 242: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_3_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 59: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_7_3_1 + MIX_11_4_8_7_2_1_1 + break; + case 121: + MIX_00_4_1_3_1 + MIX_01_4_2_1_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 87: + MIX_00_4_3_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_6_3_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 79: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_5_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + MIX_11_4_8_5_2_1_1 + break; + case 122: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 94: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 218: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 91: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 229: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_3_3_1 + MIX_11_4_5_3_1 + break; + case 167: + MIX_00_4_3_3_1 + MIX_01_4_5_3_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_5_7_2_1_1 + break; + case 173: + MIX_00_4_1_3_1 + MIX_01_4_1_5_2_1_1 + MIX_10_4_7_3_1 + MIX_11_4_5_7_2_1_1 + break; + case 181: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_7_3_2_1_1 + MIX_11_4_7_3_1 + break; + case 186: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_7_3_1 + MIX_11_4_7_3_1 + break; + case 115: + MIX_00_4_3_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_3_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 93: + MIX_00_4_1_3_1 + MIX_01_4_1_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 206: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + MIX_01_4_5_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + MIX_11_4_5_3_1 + break; + case 205: + case 201: + MIX_00_4_1_3_1 + MIX_01_4_1_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4_6_3_1 + } + else + { + MIX_10_4_7_3_6_1_1 + } + MIX_11_4_5_3_1 + break; + case 174: + case 46: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_MIX_00_4_0_3_1 + } + else + { + MIX_00_4_3_1_6_1_1 + } + MIX_01_4_5_3_1 + MIX_10_4_7_3_1 + MIX_11_4_5_7_2_1_1 + break; + case 179: + case 147: + MIX_00_4_3_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4_2_3_1 + } + else + { + MIX_01_4_1_5_6_1_1 + } + MIX_10_4_7_3_2_1_1 + MIX_11_4_7_3_1 + break; + case 117: + case 116: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_3_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4_8_3_1 + } + else + { + MIX_11_4_5_7_6_1_1 + } + break; + case 189: + MIX_00_4_1_3_1 + MIX_01_4_1_3_1 + MIX_10_4_7_3_1 + MIX_11_4_7_3_1 + break; + case 231: + MIX_00_4_3_3_1 + MIX_01_4_5_3_1 + MIX_10_4_3_3_1 + MIX_11_4_5_3_1 + break; + case 126: + MIX_00_MIX_00_4_0_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_3_1 + break; + case 219: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_3_1 + MIX_10_4_6_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 125: + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_00_4_1_3_1 + MIX_10_4 + } + else + { + MIX_00_4_3_1_5_2_1 + MIX_10_4_7_3_2_3_3 + } + MIX_01_4_1_3_1 + MIX_11_4_8_3_1 + break; + case 221: + MIX_00_4_1_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_01_4_1_3_1 + MIX_11_4 + } + else + { + MIX_01_4_5_1_5_2_1 + MIX_11_4_5_7_2_3_3 + } + MIX_10_4_6_3_1 + break; + case 207: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + MIX_01_4_5_3_1 + } + else + { + MIX_00_4_3_1_2_3_3 + MIX_01_4_1_5_5_2_1 + } + MIX_10_4_6_3_1 + MIX_11_4_5_3_1 + break; + case 238: + MIX_00_MIX_00_4_0_3_1 + MIX_01_4_5_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + MIX_11_4_5_3_1 + } + else + { + MIX_10_4_7_3_2_3_3 + MIX_11_4_7_5_5_2_1 + } + break; + case 190: + MIX_00_MIX_00_4_0_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + MIX_11_4_7_3_1 + } + else + { + MIX_01_4_1_5_2_3_3 + MIX_11_4_5_7_5_2_1 + } + MIX_10_4_7_3_1 + break; + case 187: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + MIX_10_4_7_3_1 + } + else + { + MIX_00_4_3_1_2_3_3 + MIX_10_4_3_7_5_2_1 + } + MIX_01_4_2_3_1 + MIX_11_4_7_3_1 + break; + case 243: + MIX_00_4_3_3_1 + MIX_01_4_2_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_10_4_3_3_1 + MIX_11_4 + } + else + { + MIX_10_4_7_3_5_2_1 + MIX_11_4_5_7_2_3_3 + } + break; + case 119: + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_00_4_3_3_1 + MIX_01_4 + } + else + { + MIX_00_4_1_3_5_2_1 + MIX_01_4_1_5_2_3_3 + } + MIX_10_4_3_3_1 + MIX_11_4_8_3_1 + break; + case 237: + case 233: + MIX_00_4_1_3_1 + MIX_01_4_1_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_6_3_10 + } + MIX_11_4_5_3_1 + break; + case 175: + case 47: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_MIX_00_4_0_3_10 + } + MIX_01_4_5_3_1 + MIX_10_4_7_3_1 + MIX_11_4_5_7_2_1_1 + break; + case 183: + case 151: + MIX_00_4_3_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_2_3_10 + } + MIX_10_4_7_3_2_1_1 + MIX_11_4_7_3_1 + break; + case 245: + case 244: + MIX_00_4_3_1_2_1_1 + MIX_01_4_1_3_1 + MIX_10_4_3_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_8_3_10 + } + break; + case 250: + MIX_00_MIX_00_4_0_3_1 + MIX_01_4_2_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 123: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_3_1 + break; + case 95: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_6_3_1 + MIX_11_4_8_3_1 + break; + case 222: + MIX_00_MIX_00_4_0_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_6_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 252: + MIX_00_4_0_1_2_1_1 + MIX_01_4_1_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_8_3_10 + } + break; + case 249: + MIX_00_4_1_3_1 + MIX_01_4_2_1_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_6_3_10 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 235: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_5_2_1_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_6_3_10 + } + MIX_11_4_5_3_1 + break; + case 111: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_MIX_00_4_0_3_10 + } + MIX_01_4_5_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_5_2_1_1 + break; + case 63: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_MIX_00_4_0_3_10 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_7_3_1 + MIX_11_4_8_7_2_1_1 + break; + case 159: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_2_3_10 + } + MIX_10_4_6_7_2_1_1 + MIX_11_4_7_3_1 + break; + case 215: + MIX_00_4_3_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_2_3_10 + } + MIX_10_4_6_3_2_1_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 246: + MIX_00_4_0_3_2_1_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + MIX_10_4_3_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_8_3_10 + } + break; + case 254: + MIX_00_MIX_00_4_0_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_8_3_10 + } + break; + case 253: + MIX_00_4_1_3_1 + MIX_01_4_1_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_6_3_10 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_8_3_10 + } + break; + case 251: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + MIX_01_4_2_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_6_3_10 + } + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 239: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_MIX_00_4_0_3_10 + } + MIX_01_4_5_3_1 + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_6_3_10 + } + MIX_11_4_5_3_1 + break; + case 127: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_MIX_00_4_0_3_10 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_1_5_2_1_1 + } + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + { + MIX_10_4 + } + else + { + MIX_10_4_7_3_2_1_1 + } + MIX_11_4_8_3_1 + break; + case 191: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_MIX_00_4_0_3_10 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_2_3_10 + } + MIX_10_4_7_3_1 + MIX_11_4_7_3_1 + break; + case 223: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + { + MIX_00_4 + } + else + { + MIX_00_4_3_1_2_1_1 + } + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_2_3_10 + } + MIX_10_4_6_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_5_7_2_1_1 + } + break; + case 247: + MIX_00_4_3_3_1 + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + { + MIX_01_4 + } + else + { + MIX_01_4_2_3_10 + } + MIX_10_4_3_3_1 + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + { + MIX_11_4 + } + else + { + MIX_11_4_8_3_10 + } + break; + case 255: + if (isDifferent(w[3], w[1], trY, trU, trV, trA)) + MIX_00_4 + else + MIX_00_MIX_00_4_0_3_10 + + if (isDifferent(w[1], w[5], trY, trU, trV, trA)) + MIX_01_4 + else + MIX_01_4_2_3_10 + + if (isDifferent(w[7], w[3], trY, trU, trV, trA)) + MIX_10_4 + else + MIX_10_4_6_3_10 + + if (isDifferent(w[5], w[7], trY, trU, trV, trA)) + MIX_11_4 + else + MIX_11_4_8_3_10 + break; + } + image++; + output += 2; + } + output += lineSize; + } + + return output; +} diff --git a/core/hq2x.h b/core/hq2x.h new file mode 100644 index 0000000000..8f119d2a01 --- /dev/null +++ b/core/hq2x.h @@ -0,0 +1,19 @@ +#ifndef HQ2X_H +#define HQ2X_H + +#include "typedefs.h" + + +uint32_t *hq2x_resize( + const uint32_t *image, + uint32_t width, + uint32_t height, + uint32_t *output, + uint32_t trY = 0x30, + uint32_t trU = 0x07, + uint32_t trV = 0x06, + uint32_t trA = 0x50, + bool wrapX = false, + bool wrapY = false ); + +#endif // HQ2X_H diff --git a/core/image.cpp b/core/image.cpp index 8635aa1b29..57496683ef 100644 --- a/core/image.cpp +++ b/core/image.cpp @@ -30,7 +30,7 @@ #include "hash_map.h" #include "core/io/image_loader.h" #include "core/os/copymem.h" - +#include "hq2x.h" #include "print_string.h" #include <stdio.h> @@ -901,6 +901,44 @@ static void _generate_po2_mipmap(const uint8_t* p_src, uint8_t* p_dst, uint32_t } +void Image::expand_x2_hq2x() { + + ERR_FAIL_COND(format>=FORMAT_INDEXED); + + Format current = format; + bool mipmaps=get_mipmaps(); + if (mipmaps) { + clear_mipmaps(); + } + + if (current!=FORMAT_RGBA) + convert(FORMAT_RGBA); + + DVector<uint8_t> dest; + dest.resize(width*2*height*2*4); + + { + DVector<uint8_t>::Read r = data.read(); + DVector<uint8_t>::Write w = dest.write(); + + hq2x_resize((const uint32_t*)r.ptr(),width,height,(uint32_t*)w.ptr()); + + } + + width*=2; + height*=2; + data=dest; + + + if (current!=FORMAT_RGBA) + convert(current); + + if (mipmaps) { + generate_mipmaps(); + } + +} + void Image::shrink_x2() { ERR_FAIL_COND(format==FORMAT_INDEXED || format==FORMAT_INDEXED_ALPHA); diff --git a/core/image.h b/core/image.h index 35bbd1a684..0f0b345eb9 100644 --- a/core/image.h +++ b/core/image.h @@ -250,6 +250,7 @@ public: void resize( int p_width, int p_height, Interpolation p_interpolation=INTERPOLATE_BILINEAR ); Image resized( int p_width, int p_height, int p_interpolation=INTERPOLATE_BILINEAR ); void shrink_x2(); + void expand_x2_hq2x(); /** * Crop the image to a specific size, if larger, then the image is filled by black */ diff --git a/core/io/file_access_memory.cpp b/core/io/file_access_memory.cpp index 2cc52a9e2d..7db3499505 100644 --- a/core/io/file_access_memory.cpp +++ b/core/io/file_access_memory.cpp @@ -135,7 +135,7 @@ size_t FileAccessMemory::get_len() const { bool FileAccessMemory::eof_reached() const { - return pos >= length; + return pos > length; } uint8_t FileAccessMemory::get_8() const { diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp index abb1082256..b547dc0e85 100644 --- a/core/io/resource_loader.cpp +++ b/core/io/resource_loader.cpp @@ -243,6 +243,7 @@ Ref<ResourceImportMetadata> ResourceLoader::load_import_metadata(const String &p break; } + return ret; } diff --git a/core/io/translation_loader_po.cpp b/core/io/translation_loader_po.cpp index fe101a8676..4ddb276a27 100644 --- a/core/io/translation_loader_po.cpp +++ b/core/io/translation_loader_po.cpp @@ -30,13 +30,8 @@ #include "os/file_access.h" #include "translation.h" -RES TranslationLoaderPO::load(const String &p_path, const String& p_original_path, Error *r_error) { - if (r_error) - *r_error=ERR_CANT_OPEN; - - FileAccess *f=FileAccess::open(p_path,FileAccess::READ); - ERR_FAIL_COND_V(!f,RES()); +RES TranslationLoaderPO::load_translation(FileAccess *f, Error *r_error, const String &p_path) { String l = f->get_line(); @@ -52,6 +47,8 @@ RES TranslationLoaderPO::load(const String &p_path, const String& p_original_pat String msg_id; String msg_str; String config; + int msg_line=0; + if (r_error) *r_error=ERR_FILE_CORRUPT; @@ -87,7 +84,7 @@ RES TranslationLoaderPO::load(const String &p_path, const String& p_original_pat if (status==STATUS_READING_ID) { memdelete(f); - ERR_EXPLAIN(p_path+":"+itos(line)+" nexpected 'msgid', was expecting 'msgstr' while parsing: "); + ERR_EXPLAIN(p_path+":"+itos(line)+" Unexpected 'msgid', was expecting 'msgstr' while parsing: "); ERR_FAIL_V(RES()); } @@ -100,6 +97,7 @@ RES TranslationLoaderPO::load(const String &p_path, const String& p_original_pat status=STATUS_READING_ID; msg_id=""; msg_str=""; + msg_line=line; } if (l.begins_with("msgstr")) { @@ -113,6 +111,7 @@ RES TranslationLoaderPO::load(const String &p_path, const String& p_original_pat l=l.substr(6,l.length()).strip_edges(); status=STATUS_READING_STRING; + msg_line=line; } if (l=="" || l.begins_with("#")) { @@ -183,6 +182,18 @@ RES TranslationLoaderPO::load(const String &p_path, const String& p_original_pat *r_error=OK; return translation; +} + +RES TranslationLoaderPO::load(const String &p_path, const String& p_original_path, Error *r_error) { + + if (r_error) + *r_error=ERR_CANT_OPEN; + + FileAccess *f=FileAccess::open(p_path,FileAccess::READ); + ERR_FAIL_COND_V(!f,RES()); + + + return load_translation(f,r_error); } diff --git a/core/io/translation_loader_po.h b/core/io/translation_loader_po.h index a569674d80..b0c4e42682 100644 --- a/core/io/translation_loader_po.h +++ b/core/io/translation_loader_po.h @@ -30,10 +30,12 @@ #define TRANSLATION_LOADER_PO_H #include "io/resource_loader.h" - +#include "translation.h" +#include "os/file_access.h" class TranslationLoaderPO : public ResourceFormatLoader { public: + static RES load_translation(FileAccess *f, Error *r_error,const String& p_path=String()); virtual RES load(const String &p_path,const String& p_original_path="",Error *r_error=NULL); virtual void get_recognized_extensions(List<String> *p_extensions) const; virtual bool handles_type(const String& p_type) const; diff --git a/core/object.cpp b/core/object.cpp index 3cfc0329bc..d7878fd623 100644 --- a/core/object.cpp +++ b/core/object.cpp @@ -1756,6 +1756,7 @@ bool Object::is_queued_for_deletion() const { void Object::set_edited(bool p_edited) { _edited=p_edited; + _edited_version++; } bool Object::is_edited() const { @@ -1763,6 +1764,11 @@ bool Object::is_edited() const { return _edited; } + +uint32_t Object::get_edited_version() const { + + return _edited_version; +} #endif Object::Object() { @@ -1778,6 +1784,7 @@ Object::Object() { #ifdef TOOLS_ENABLED _edited=false; + _edited_version=0; #endif #ifdef DEBUG_ENABLED diff --git a/core/object.h b/core/object.h index 3945d1d0ba..f4a2472e88 100644 --- a/core/object.h +++ b/core/object.h @@ -85,6 +85,7 @@ enum PropertyUsageFlags { PROPERTY_USAGE_STORE_IF_NONZERO=512, //only store if nonzero PROPERTY_USAGE_STORE_IF_NONONE=1024, //only store if false PROPERTY_USAGE_NO_INSTANCE_STATE=2048, + PROPERTY_USAGE_RESTART_IF_CHANGED=4096, PROPERTY_USAGE_DEFAULT=PROPERTY_USAGE_STORAGE|PROPERTY_USAGE_EDITOR|PROPERTY_USAGE_NETWORK, PROPERTY_USAGE_DEFAULT_INTL=PROPERTY_USAGE_STORAGE|PROPERTY_USAGE_EDITOR|PROPERTY_USAGE_NETWORK|PROPERTY_USAGE_INTERNATIONALIZED, @@ -388,6 +389,7 @@ friend void postinitialize_handler(Object*); bool _can_translate; #ifdef TOOLS_ENABLED bool _edited; + uint32_t _edited_version; #endif ScriptInstance *script_instance; RefPtr script; @@ -589,6 +591,7 @@ public: #ifdef TOOLS_ENABLED void set_edited(bool p_edited); bool is_edited() const; + uint32_t get_edited_version() const; //this function is used to check when something changed beyond a point, it's used mainly for generating previews #endif void set_script_instance(ScriptInstance *p_instance); diff --git a/core/os/input.cpp b/core/os/input.cpp index 6e1e618d9a..a766ef87fc 100644 --- a/core/os/input.cpp +++ b/core/os/input.cpp @@ -60,6 +60,7 @@ void Input::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_joy_name","device"),&Input::get_joy_name); ObjectTypeDB::bind_method(_MD("get_joy_guid","device"),&Input::get_joy_guid); ObjectTypeDB::bind_method(_MD("get_accelerometer"),&Input::get_accelerometer); + ObjectTypeDB::bind_method(_MD("get_magnetometer"),&Input::get_magnetometer); //ObjectTypeDB::bind_method(_MD("get_mouse_pos"),&Input::get_mouse_pos); - this is not the function you want ObjectTypeDB::bind_method(_MD("get_mouse_speed"),&Input::get_mouse_speed); ObjectTypeDB::bind_method(_MD("get_mouse_button_mask"),&Input::get_mouse_button_mask); diff --git a/core/os/input.h b/core/os/input.h index 535776f39c..46edb30aa1 100644 --- a/core/os/input.h +++ b/core/os/input.h @@ -75,6 +75,7 @@ public: virtual void warp_mouse_pos(const Vector2& p_to)=0; virtual Vector3 get_accelerometer()=0; + virtual Vector3 get_magnetometer()=0; virtual void action_press(const StringName& p_action)=0; virtual void action_release(const StringName& p_action)=0; diff --git a/core/os/main_loop.cpp b/core/os/main_loop.cpp index 310bbaa3b8..e5feebfbfc 100644 --- a/core/os/main_loop.cpp +++ b/core/os/main_loop.cpp @@ -43,6 +43,7 @@ void MainLoop::_bind_methods() { BIND_VMETHOD( MethodInfo("_initialize") ); BIND_VMETHOD( MethodInfo("_iteration",PropertyInfo(Variant::REAL,"delta")) ); BIND_VMETHOD( MethodInfo("_idle",PropertyInfo(Variant::REAL,"delta")) ); + BIND_VMETHOD( MethodInfo("_drop_files",PropertyInfo(Variant::STRING_ARRAY,"files"),PropertyInfo(Variant::INT,"screen")) ); BIND_VMETHOD( MethodInfo("_finalize") ); BIND_CONSTANT(NOTIFICATION_WM_MOUSE_ENTER); @@ -108,6 +109,15 @@ bool MainLoop::idle(float p_time) { return false; } + +void MainLoop::drop_files(const Vector<String>& p_files,int p_from_screen) { + + + if (get_script_instance()) + get_script_instance()->call("_drop_files",p_files,p_from_screen); + +} + void MainLoop::finish() { if (get_script_instance()) { diff --git a/core/os/main_loop.h b/core/os/main_loop.h index a34014983e..57185d9d3d 100644 --- a/core/os/main_loop.h +++ b/core/os/main_loop.h @@ -64,6 +64,8 @@ public: virtual bool idle(float p_time); virtual void finish(); + virtual void drop_files(const Vector<String>& p_files,int p_from_screen=0); + void set_init_script(const Ref<Script>& p_init_script); MainLoop(); diff --git a/core/os/memory.h b/core/os/memory.h index 8257e66851..5f4c6f929c 100644 --- a/core/os/memory.h +++ b/core/os/memory.h @@ -211,7 +211,7 @@ void * operator new(size_t p_size,void *p_pointer,size_t check, const char *p_de #ifdef DEBUG_MEMORY_ENABLED -#define memalloc(m_size) Memory::alloc_static(m_size, __FILE__":"__STR(__LINE__)", memalloc.") +#define memalloc(m_size) Memory::alloc_static(m_size, __FILE__ ":" __STR(__LINE__) ", memalloc.") #define memrealloc(m_mem,m_size) Memory::realloc_static(m_mem,m_size) #define memfree(m_size) Memory::free_static(m_size) @@ -224,8 +224,7 @@ void * operator new(size_t p_size,void *p_pointer,size_t check, const char *p_de #endif #ifdef DEBUG_MEMORY_ENABLED - -#define dynalloc(m_size) Memory::alloc_dynamic(m_size, __FILE__":"__STR(__LINE__)", type: DYNAMIC") +#define dynalloc(m_size) Memory::alloc_dynamic(m_size, __FILE__ ":" __STR(__LINE__) ", type: DYNAMIC") #define dynrealloc(m_mem,m_size) m_mem.resize(m_size) #else @@ -248,7 +247,7 @@ _ALWAYS_INLINE_ T *_post_initialize(T *p_obj) { #ifdef DEBUG_MEMORY_ENABLED -#define memnew(m_class) _post_initialize(new(__FILE__":"__STR(__LINE__)", memnew type: "__STR(m_class)) m_class) +#define memnew(m_class) _post_initialize(new(__FILE__ ":" __STR(__LINE__) ", memnew type: " __STR(m_class)) m_class) #else @@ -291,7 +290,7 @@ void memdelete_allocator(T *p_class) { #define memdelete_notnull(m_v) { if (m_v) memdelete(m_v); } #ifdef DEBUG_MEMORY_ENABLED -#define memnew_arr( m_class, m_count ) memnew_arr_template<m_class>(m_count,__FILE__":"__STR(__LINE__)", memnew_arr type: "_STR(m_class)) +#define memnew_arr( m_class, m_count ) memnew_arr_template<m_class>(m_count,__FILE__ ":" __STR(__LINE__) ", memnew_arr type: " _STR(m_class)) #else diff --git a/core/os/os.cpp b/core/os/os.cpp index 1aee6d9aa2..6910b368d3 100644 --- a/core/os/os.cpp +++ b/core/os/os.cpp @@ -548,6 +548,7 @@ OS::OS() { _render_thread_mode=RENDER_THREAD_SAFE; _time_scale=1.0; _pixel_snap=false; + _allow_hidpi=true; Math::seed(1234567); } diff --git a/core/os/os.h b/core/os/os.h index 160c0495bb..76dd235d24 100644 --- a/core/os/os.h +++ b/core/os/os.h @@ -60,6 +60,7 @@ class OS { int _target_fps; float _time_scale; bool _pixel_snap; + bool _allow_hidpi; char *last_error; @@ -160,6 +161,7 @@ public: virtual void set_current_screen(int p_screen) { } virtual Point2 get_screen_position(int p_screen=0) const { return Point2(); } virtual Size2 get_screen_size(int p_screen=0) const { return get_window_size(); } + virtual int get_screen_dpi(int p_screen=0) const { return 72; } virtual Point2 get_window_position() const { return Vector2(); } virtual void set_window_position(const Point2& p_position) {} virtual Size2 get_window_size() const=0; @@ -417,6 +419,7 @@ public: virtual void set_context(int p_context); + bool is_hidpi_allowed() const { return _allow_hidpi; } OS(); virtual ~OS(); diff --git a/core/resource.cpp b/core/resource.cpp index 672e64b1bb..b7a5bad4b8 100644 --- a/core/resource.cpp +++ b/core/resource.cpp @@ -330,6 +330,31 @@ Ref<ResourceImportMetadata> Resource::get_import_metadata() const { } +#ifdef TOOLS_ENABLED + +uint32_t Resource::hash_edited_version() const { + + uint32_t hash = hash_djb2_one_32(get_edited_version()); + + List<PropertyInfo> plist; + get_property_list(&plist); + + for (List<PropertyInfo>::Element *E=plist.front();E;E=E->next()) { + + if (E->get().type==Variant::OBJECT && E->get().hint==PROPERTY_HINT_RESOURCE_TYPE) { + RES res = get(E->get().name); + if (res.is_valid()) { + hash = hash_djb2_one_32(res->hash_edited_version(),hash); + } + } + } + + return hash; + +} + +#endif + Resource::Resource() { @@ -341,6 +366,8 @@ Resource::Resource() { } + + Resource::~Resource() { if (path_cache!="") diff --git a/core/resource.h b/core/resource.h index 8bcdd6b4b7..958414f62b 100644 --- a/core/resource.h +++ b/core/resource.h @@ -142,8 +142,12 @@ public: Ref<ResourceImportMetadata> get_import_metadata() const; + + #ifdef TOOLS_ENABLED + uint32_t hash_edited_version() const; + virtual void set_last_modified_time(uint64_t p_time) { last_modified_time=p_time; } uint64_t get_last_modified_time() const { return last_modified_time; } diff --git a/core/translation.cpp b/core/translation.cpp index 85e207e08d..ee0ef2ea09 100644 --- a/core/translation.cpp +++ b/core/translation.cpp @@ -672,9 +672,11 @@ void TranslationServer::set_tool_translation(const Ref<Translation>& p_translati StringName TranslationServer::tool_translate(const StringName& p_message) const { if (tool_translation.is_valid()) { - StringName r = tool_translation->tr(p_message); - if (r) + StringName r = tool_translation->get_message(p_message); + + if (r) { return r; + } } return p_message; diff --git a/demos/misc/window_management/control.gd b/demos/misc/window_management/control.gd index cd8e0e185b..c856555122 100644 --- a/demos/misc/window_management/control.gd +++ b/demos/misc/window_management/control.gd @@ -43,6 +43,8 @@ func _fixed_process(delta): get_node("Label_Screen0_Resolution").set_text(str("Screen0 Resolution:\n", OS.get_screen_size())) get_node("Label_Screen0_Position").set_text(str("Screen0 Position:\n", OS.get_screen_position())) + + get_node("Label_Screen0_DPI").set_text(str("Screen0 DPI:\n", OS.get_screen_dpi())) if(OS.get_screen_count() > 1): get_node("Button_Screen0").show() @@ -51,11 +53,13 @@ func _fixed_process(delta): get_node("Label_Screen1_Position").show() get_node("Label_Screen1_Resolution").set_text(str("Screen1 Resolution:\n", OS.get_screen_size(1))) get_node("Label_Screen1_Position").set_text(str("Screen1 Position:\n", OS.get_screen_position(1))) + get_node("Label_Screen1_DPI").set_text(str("Screen1 DPI:\n", OS.get_screen_dpi(1))) else: get_node("Button_Screen0").hide() get_node("Button_Screen1").hide() get_node("Label_Screen1_Resolution").hide() get_node("Label_Screen1_Position").hide() + get_node("Label_Screen1_DPI").hide() get_node("Button_Fullscreen").set_pressed(OS.is_window_fullscreen()) get_node("Button_FixedSize").set_pressed(!OS.is_window_resizable()) diff --git a/demos/misc/window_management/window_management.scn b/demos/misc/window_management/window_management.scn Binary files differindex 35662871f1..91174669cd 100644 --- a/demos/misc/window_management/window_management.scn +++ b/demos/misc/window_management/window_management.scn diff --git a/doc/base/classes.xml b/doc/base/classes.xml index e4b5434059..074c14443c 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -5123,41 +5123,50 @@ </class> <class name="BackBufferCopy" inherits="Node2D" category="Core"> <brief_description> + Copies a region of the screen (or the whole screen) to a buffer so it can be accessed with the texscreen() shader instruction. </brief_description> <description> + Node for back-buffering the currently displayed screen. The region defined in the BackBufferCopy node is bufferized with the content of the screen it covers, or the entire screen according to the copy mode set. Accessing this buffer is done with the texscreen() shader instruction. </description> <methods> <method name="set_rect"> <argument index="0" name="rect" type="Rect2"> </argument> <description> + Defines the area covered by the BackBufferCopy. </description> </method> <method name="get_rect" qualifiers="const"> <return type="Rect2"> </return> <description> + Return the area covered by the BackBufferCopy. </description> </method> <method name="set_copy_mode"> <argument index="0" name="copy_mode" type="int"> </argument> <description> + Set the copy mode of the BackBufferCopy (refer to constants section). </description> </method> <method name="get_copy_mode" qualifiers="const"> <return type="int"> </return> <description> + Return the copy mode currently applied to the BackBufferCopy (refer to constants section). </description> </method> </methods> <constants> <constant name="COPY_MODE_DISABLED" value="0"> + Disables the buffering mode. This means the BackBufferCopy node will directly use the portion of screen it covers. </constant> <constant name="COPY_MODE_RECT" value="1"> + Sets the copy mode to a region. </constant> <constant name="COPY_MODE_VIEWPORT" value="2"> + Sets the copy mode to the entire screen. </constant> </constants> </class> @@ -15378,6 +15387,13 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) If the device has an accelerometer, this will return the movement. </description> </method> + <method name="get_magnetometer"> + <return type="Vector3"> + </return> + <description> + If the device has a magnetometer, this will return the magnetic field strength in micro-Tesla for all axes. + </description> + </method> <method name="get_mouse_speed" qualifiers="const"> <return type="Vector2"> </return> @@ -17742,266 +17758,314 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </class> <class name="Light2D" inherits="Node2D" category="Core"> <brief_description> + Node that casts light in a 2D environment. </brief_description> <description> + Node that casts light in a 2D environment. Light is defined by a (usually grayscale) texture, a color, an energy value, a mode (see constants), and various other parameters (range and shadows-related). Note that Light2D can be used as a mask. </description> <methods> <method name="set_enabled"> <argument index="0" name="enabled" type="bool"> </argument> <description> + Switches the Light2D on or off, depending on the 'enabled' parameter. </description> </method> <method name="is_enabled" qualifiers="const"> <return type="bool"> </return> <description> + Return true if the Light2D is enabled, false if it is not. </description> </method> <method name="set_texture"> <argument index="0" name="texture" type="Object"> </argument> <description> + Set the texture of the Light2D. </description> </method> <method name="get_texture" qualifiers="const"> <return type="Object"> </return> <description> + Return the texture of the Light2D. </description> </method> <method name="set_texture_offset"> <argument index="0" name="texture_offset" type="Vector2"> </argument> <description> + Set the offset of the light texture. </description> </method> <method name="get_texture_offset" qualifiers="const"> <return type="Vector2"> </return> <description> + Return the offset of the light texture. </description> </method> <method name="set_color"> <argument index="0" name="color" type="Color"> </argument> <description> + Set the color of the Light2D. </description> </method> <method name="get_color" qualifiers="const"> <return type="Color"> </return> <description> + Return the color of the Light2D. </description> </method> <method name="set_height"> <argument index="0" name="height" type="float"> </argument> <description> + Set the height of the Light2D. Used with 2D normalmapping. </description> </method> <method name="get_height" qualifiers="const"> <return type="float"> </return> <description> + Return the height of the Light2D. Used with 2D normalmapping. </description> </method> <method name="set_energy"> <argument index="0" name="energy" type="float"> </argument> <description> + Set the energy value of the Light2D. The bigger the value, the stronger the light. </description> </method> <method name="get_energy" qualifiers="const"> <return type="float"> </return> <description> + Return the energy value of the Light2D. </description> </method> <method name="set_texture_scale"> <argument index="0" name="texture_scale" type="float"> </argument> <description> + Set the scale value of the light texture. </description> </method> <method name="get_texture_scale" qualifiers="const"> <return type="float"> </return> <description> + Return the scale value of the light texture. </description> </method> <method name="set_z_range_min"> <argument index="0" name="z" type="int"> </argument> <description> + Set the minimum Z value that objects of the scene have to be in order to be affected by the Light2D. </description> </method> <method name="get_z_range_min" qualifiers="const"> <return type="int"> </return> <description> + Get the minimum Z value that objects of the scene have to be in order to be affected by the Light2D. </description> </method> <method name="set_z_range_max"> <argument index="0" name="z" type="int"> </argument> <description> + Set the maximum Z value that objects of the scene can be in order to be affected by the Light2D. </description> </method> <method name="get_z_range_max" qualifiers="const"> <return type="int"> </return> <description> + Get the maximum Z value that objects of the scene can be in order to be affected by the Light2D. </description> </method> <method name="set_layer_range_min"> <argument index="0" name="layer" type="int"> </argument> <description> + Set the minimum layer value of objects of the scene that are affected by the Light2D. </description> </method> <method name="get_layer_range_min" qualifiers="const"> <return type="int"> </return> <description> + Get the minimum layer value of objects of the scene that are affected by the Light2D. </description> </method> <method name="set_layer_range_max"> <argument index="0" name="layer" type="int"> </argument> <description> + Set the maximum layer value of objects of the scene that are affected by the Light2D. </description> </method> <method name="get_layer_range_max" qualifiers="const"> <return type="int"> </return> <description> + Set the maximum layer value of objects of the scene that are affected by the Light2D. </description> </method> <method name="set_item_mask"> <argument index="0" name="item_mask" type="int"> </argument> <description> + Set the item mask of the Light2D to 'item_mask' value. </description> </method> <method name="get_item_mask" qualifiers="const"> <return type="int"> </return> <description> + Return the item mask of the Light2D. </description> </method> <method name="set_item_shadow_mask"> <argument index="0" name="item_shadow_mask" type="int"> </argument> <description> + Set the item shadow mask to 'item_shadow_mask' value. </description> </method> <method name="get_item_shadow_mask" qualifiers="const"> <return type="int"> </return> <description> + Return the item shadow mask of the Light2D. </description> </method> <method name="set_mode"> <argument index="0" name="mode" type="int"> </argument> <description> + Set the behaviour mode of the Light2D. Use constants defined in the constants section. </description> </method> <method name="get_mode" qualifiers="const"> <return type="int"> </return> <description> + Return the current mode set to the Light2D. </description> </method> <method name="set_shadow_enabled"> <argument index="0" name="enabled" type="bool"> </argument> <description> + Enable or disable shadows casting from this Light2D according to the 'enabled' parameter. </description> </method> <method name="is_shadow_enabled" qualifiers="const"> <return type="bool"> </return> <description> + Return true if shadow casting is enabled for this Light2D, else return false. </description> </method> <method name="set_shadow_buffer_size"> <argument index="0" name="size" type="int"> </argument> <description> + Set the shadow buffer size. </description> </method> <method name="get_shadow_buffer_size" qualifiers="const"> <return type="int"> </return> <description> + Return the shadow buffer size. </description> </method> <method name="set_shadow_esm_multiplier"> <argument index="0" name="multiplier" type="float"> </argument> <description> + Set the Exponential Shadow Multiplier (ESM) value of the Light2D. </description> </method> <method name="get_shadow_esm_multiplier" qualifiers="const"> <return type="float"> </return> <description> + Return the Exponential Shadow Multiplier (ESM) value of the Light2D. </description> </method> <method name="set_shadow_color"> <argument index="0" name="shadow_color" type="Color"> </argument> <description> + Set the color of casted shadows for this Light2D. </description> </method> <method name="get_shadow_color" qualifiers="const"> <return type="Color"> </return> <description> + Return the color of casted shadows for this Light2D. </description> </method> </methods> <constants> <constant name="MODE_ADD" value="0"> + Adds the value of pixels corresponding to the Light2D to the values of pixels under it. This is the common behaviour of a light. </constant> <constant name="MODE_SUB" value="1"> + Substract the value of pixels corresponding to the Light2D to the values of pixels under it, resulting in inversed light effect. </constant> <constant name="MODE_MIX" value="2"> + Mix the value of pixels corresponding to the Light2D to the values of pixels under it by linear interpolation. </constant> <constant name="MODE_MASK" value="3"> + The light texture of the Light2D is used as a mask, hiding or revealing parts of the screen underneath depending on the value of each pixel of the light (mask) texture. </constant> </constants> </class> <class name="LightOccluder2D" inherits="Node2D" category="Core"> <brief_description> + Occludes light cast by a Light2D, thus casting shadows. </brief_description> <description> + Occludes light cast by a Light2D, thus casting shadows. The LightOccluder2D must be provided with a shape (see OccluderPolygon2D) that allows the shadow to be computed. This shape affects the resulting shadow, while the shape of the representating asset shadowed does not actually affect shadows. </description> <methods> <method name="set_occluder_polygon"> <argument index="0" name="polygon" type="OccluderPolygon2D"> </argument> <description> + Set the OccluderPolygon2D that defines the LightOccluder2D. </description> </method> <method name="get_occluder_polygon" qualifiers="const"> <return type="OccluderPolygon2D"> </return> <description> + Return the OccluderPolygon2D that defines the LightOccluder2D. </description> </method> <method name="set_occluder_light_mask"> <argument index="0" name="mask" type="int"> </argument> <description> + Set the LightOccluder2D light mask. The LightOccluder2D will cast shadows only from Light2Ds that belong to the same light mask(s). </description> </method> <method name="get_occluder_light_mask" qualifiers="const"> <return type="int"> </return> <description> + Return the light mask of the LightOccluder2D. </description> </method> </methods> diff --git a/drivers/SCsub b/drivers/SCsub index 7337482628..79cbe50685 100644 --- a/drivers/SCsub +++ b/drivers/SCsub @@ -59,6 +59,8 @@ if (env['musepack']=='yes'): SConscript("mpc/SCsub"); if (env["squish"]=="yes" and env["tools"]=="yes"): SConscript("squish/SCsub"); +if (env["freetype"]!="no"): + SConscript("freetype/SCsub"); num = 0 cur_base = "" diff --git a/drivers/freetype/FTL.TXT b/drivers/freetype/FTL.TXT new file mode 100644 index 0000000000..433ab060e3 --- /dev/null +++ b/drivers/freetype/FTL.TXT @@ -0,0 +1,169 @@ + The FreeType Project LICENSE + ---------------------------- + + 2006-Jan-27 + + Copyright 1996-2002, 2006 by + David Turner, Robert Wilhelm, and Werner Lemberg + + + +Introduction +============ + + The FreeType Project is distributed in several archive packages; + some of them may contain, in addition to the FreeType font engine, + various tools and contributions which rely on, or relate to, the + FreeType Project. + + This license applies to all files found in such packages, and + which do not fall under their own explicit license. The license + affects thus the FreeType font engine, the test programs, + documentation and makefiles, at the very least. + + This license was inspired by the BSD, Artistic, and IJG + (Independent JPEG Group) licenses, which all encourage inclusion + and use of free software in commercial and freeware products + alike. As a consequence, its main points are that: + + o We don't promise that this software works. However, we will be + interested in any kind of bug reports. (`as is' distribution) + + o You can use this software for whatever you want, in parts or + full form, without having to pay us. (`royalty-free' usage) + + o You may not pretend that you wrote this software. If you use + it, or only parts of it, in a program, you must acknowledge + somewhere in your documentation that you have used the + FreeType code. (`credits') + + We specifically permit and encourage the inclusion of this + software, with or without modifications, in commercial products. + We disclaim all warranties covering The FreeType Project and + assume no liability related to The FreeType Project. + + + Finally, many people asked us for a preferred form for a + credit/disclaimer to use in compliance with this license. We thus + encourage you to use the following text: + + """ + Portions of this software are copyright © <year> The FreeType + Project (www.freetype.org). All rights reserved. + """ + + Please replace <year> with the value from the FreeType version you + actually use. + + +Legal Terms +=========== + +0. Definitions +-------------- + + Throughout this license, the terms `package', `FreeType Project', + and `FreeType archive' refer to the set of files originally + distributed by the authors (David Turner, Robert Wilhelm, and + Werner Lemberg) as the `FreeType Project', be they named as alpha, + beta or final release. + + `You' refers to the licensee, or person using the project, where + `using' is a generic term including compiling the project's source + code as well as linking it to form a `program' or `executable'. + This program is referred to as `a program using the FreeType + engine'. + + This license applies to all files distributed in the original + FreeType Project, including all source code, binaries and + documentation, unless otherwise stated in the file in its + original, unmodified form as distributed in the original archive. + If you are unsure whether or not a particular file is covered by + this license, you must contact us to verify this. + + The FreeType Project is copyright (C) 1996-2000 by David Turner, + Robert Wilhelm, and Werner Lemberg. All rights reserved except as + specified below. + +1. No Warranty +-------------- + + THE FREETYPE PROJECT IS PROVIDED `AS IS' WITHOUT WARRANTY OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE. IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS + BE LIABLE FOR ANY DAMAGES CAUSED BY THE USE OR THE INABILITY TO + USE, OF THE FREETYPE PROJECT. + +2. Redistribution +----------------- + + This license grants a worldwide, royalty-free, perpetual and + irrevocable right and license to use, execute, perform, compile, + display, copy, create derivative works of, distribute and + sublicense the FreeType Project (in both source and object code + forms) and derivative works thereof for any purpose; and to + authorize others to exercise some or all of the rights granted + herein, subject to the following conditions: + + o Redistribution of source code must retain this license file + (`FTL.TXT') unaltered; any additions, deletions or changes to + the original files must be clearly indicated in accompanying + documentation. The copyright notices of the unaltered, + original files must be preserved in all copies of source + files. + + o Redistribution in binary form must provide a disclaimer that + states that the software is based in part of the work of the + FreeType Team, in the distribution documentation. We also + encourage you to put an URL to the FreeType web page in your + documentation, though this isn't mandatory. + + These conditions apply to any software derived from or based on + the FreeType Project, not just the unmodified files. If you use + our work, you must acknowledge us. However, no fee need be paid + to us. + +3. Advertising +-------------- + + Neither the FreeType authors and contributors nor you shall use + the name of the other for commercial, advertising, or promotional + purposes without specific prior written permission. + + We suggest, but do not require, that you use one or more of the + following phrases to refer to this software in your documentation + or advertising materials: `FreeType Project', `FreeType Engine', + `FreeType library', or `FreeType Distribution'. + + As you have not signed this license, you are not required to + accept it. However, as the FreeType Project is copyrighted + material, only this license, or another one contracted with the + authors, grants you the right to use, distribute, and modify it. + Therefore, by using, distributing, or modifying the FreeType + Project, you indicate that you understand and accept all the terms + of this license. + +4. Contacts +----------- + + There are two mailing lists related to FreeType: + + o freetype@nongnu.org + + Discusses general use and applications of FreeType, as well as + future and wanted additions to the library and distribution. + If you are looking for support, start in this list if you + haven't found anything to help you in the documentation. + + o freetype-devel@nongnu.org + + Discusses bugs, as well as engine internals, design issues, + specific licenses, porting, etc. + + Our home page can be found at + + http://www.freetype.org + + +--- end of FTL.TXT --- diff --git a/drivers/freetype/LICENSE.TXT b/drivers/freetype/LICENSE.TXT new file mode 100644 index 0000000000..af5a1c50f6 --- /dev/null +++ b/drivers/freetype/LICENSE.TXT @@ -0,0 +1,39 @@ + +The FreeType 2 font engine is copyrighted work and cannot be used +legally without a software license. In order to make this project +usable to a vast majority of developers, we distribute it under two +mutually exclusive open-source licenses. + +This means that *you* must choose *one* of the two licenses described +below, then obey all its terms and conditions when using FreeType 2 in +any of your projects or products. + + - The FreeType License, found in the file `FTL.TXT', which is similar + to the original BSD license *with* an advertising clause that forces + you to explicitly cite the FreeType project in your product's + documentation. All details are in the license file. This license + is suited to products which don't use the GNU General Public + License. + + Note that this license is compatible to the GNU General Public + License version 3, but not version 2. + + - The GNU General Public License version 2, found in `GPLv2.TXT' (any + later version can be used also), for programs which already use the + GPL. Note that the FTL is incompatible with GPLv2 due to its + advertisement clause. + +The contributed BDF and PCF drivers come with a license similar to that +of the X Window System. It is compatible to the above two licenses (see +file src/bdf/README and src/pcf/README). The same holds for the files +`fthash.c' and `fthash.h'; their code was part of the BDF driver in +earlier FreeType versions. + +The gzip module uses the zlib license (see src/gzip/zlib.h) which too is +compatible to the above two licenses. + +The MD5 checksum support (only used for debugging in development builds) +is in the public domain. + + +--- end of LICENSE.TXT --- diff --git a/tools/freetype/SCsub b/drivers/freetype/SCsub index 65b4827f9c..c0921c683a 100644 --- a/tools/freetype/SCsub +++ b/drivers/freetype/SCsub @@ -58,12 +58,14 @@ if (env["freetype"]=="builtin"): else: half1.append(x) - lib = env.Library("freetype_builtin1",half1) - env.Prepend(LIBS=[lib]) - lib = env.Library("freetype_builtin2",half2) - env.Prepend(LIBS=[lib]) + lib = env.Library("freetype_builtin1",half2) + env.Append(LIBS=[lib]) + lib = env.Library("freetype_builtin2",half1) + env.Append(LIBS=[lib]) # lib = env.Library("freetype_builtin",ft_sources) # env.Prepend(LIBS=[lib]) + + Export('env') diff --git a/tools/freetype/freetype/include/freetype/config/ftconfig.h b/drivers/freetype/freetype/include/freetype/config/ftconfig.h index 5dce30ef3e..5dce30ef3e 100644 --- a/tools/freetype/freetype/include/freetype/config/ftconfig.h +++ b/drivers/freetype/freetype/include/freetype/config/ftconfig.h diff --git a/tools/freetype/freetype/include/freetype/config/ftheader.h b/drivers/freetype/freetype/include/freetype/config/ftheader.h index 8371a31611..8371a31611 100644 --- a/tools/freetype/freetype/include/freetype/config/ftheader.h +++ b/drivers/freetype/freetype/include/freetype/config/ftheader.h diff --git a/tools/freetype/freetype/include/freetype/config/ftmodule.h b/drivers/freetype/freetype/include/freetype/config/ftmodule.h index 76d271a74b..76d271a74b 100644 --- a/tools/freetype/freetype/include/freetype/config/ftmodule.h +++ b/drivers/freetype/freetype/include/freetype/config/ftmodule.h diff --git a/tools/freetype/freetype/include/freetype/config/ftoption.h b/drivers/freetype/freetype/include/freetype/config/ftoption.h index d162780665..d162780665 100644 --- a/tools/freetype/freetype/include/freetype/config/ftoption.h +++ b/drivers/freetype/freetype/include/freetype/config/ftoption.h diff --git a/tools/freetype/freetype/include/freetype/config/ftstdlib.h b/drivers/freetype/freetype/include/freetype/config/ftstdlib.h index b940efc427..b940efc427 100644 --- a/tools/freetype/freetype/include/freetype/config/ftstdlib.h +++ b/drivers/freetype/freetype/include/freetype/config/ftstdlib.h diff --git a/tools/freetype/freetype/include/freetype/freetype.h b/drivers/freetype/freetype/include/freetype/freetype.h index fe46d22978..fe46d22978 100644 --- a/tools/freetype/freetype/include/freetype/freetype.h +++ b/drivers/freetype/freetype/include/freetype/freetype.h diff --git a/tools/freetype/freetype/include/freetype/ftadvanc.h b/drivers/freetype/freetype/include/freetype/ftadvanc.h index 012b74b812..012b74b812 100644 --- a/tools/freetype/freetype/include/freetype/ftadvanc.h +++ b/drivers/freetype/freetype/include/freetype/ftadvanc.h diff --git a/tools/freetype/freetype/include/freetype/ftautoh.h b/drivers/freetype/freetype/include/freetype/ftautoh.h index 5e1153a1c1..5e1153a1c1 100644 --- a/tools/freetype/freetype/include/freetype/ftautoh.h +++ b/drivers/freetype/freetype/include/freetype/ftautoh.h diff --git a/tools/freetype/freetype/include/freetype/ftbbox.h b/drivers/freetype/freetype/include/freetype/ftbbox.h index 976691956f..976691956f 100644 --- a/tools/freetype/freetype/include/freetype/ftbbox.h +++ b/drivers/freetype/freetype/include/freetype/ftbbox.h diff --git a/tools/freetype/freetype/include/freetype/ftbdf.h b/drivers/freetype/freetype/include/freetype/ftbdf.h index 4f8baf8401..4f8baf8401 100644 --- a/tools/freetype/freetype/include/freetype/ftbdf.h +++ b/drivers/freetype/freetype/include/freetype/ftbdf.h diff --git a/tools/freetype/freetype/include/freetype/ftbitmap.h b/drivers/freetype/freetype/include/freetype/ftbitmap.h index 7dbf5ba3fe..7dbf5ba3fe 100644 --- a/tools/freetype/freetype/include/freetype/ftbitmap.h +++ b/drivers/freetype/freetype/include/freetype/ftbitmap.h diff --git a/tools/freetype/freetype/include/freetype/ftbzip2.h b/drivers/freetype/freetype/include/freetype/ftbzip2.h index 1bf81b15e8..1bf81b15e8 100644 --- a/tools/freetype/freetype/include/freetype/ftbzip2.h +++ b/drivers/freetype/freetype/include/freetype/ftbzip2.h diff --git a/tools/freetype/freetype/include/freetype/ftcache.h b/drivers/freetype/freetype/include/freetype/ftcache.h index 4ec9587cf6..4ec9587cf6 100644 --- a/tools/freetype/freetype/include/freetype/ftcache.h +++ b/drivers/freetype/freetype/include/freetype/ftcache.h diff --git a/tools/freetype/freetype/include/freetype/ftcffdrv.h b/drivers/freetype/freetype/include/freetype/ftcffdrv.h index ccbcbccaa8..ccbcbccaa8 100644 --- a/tools/freetype/freetype/include/freetype/ftcffdrv.h +++ b/drivers/freetype/freetype/include/freetype/ftcffdrv.h diff --git a/tools/freetype/freetype/include/freetype/ftchapters.h b/drivers/freetype/freetype/include/freetype/ftchapters.h index c55670d1d2..c55670d1d2 100644 --- a/tools/freetype/freetype/include/freetype/ftchapters.h +++ b/drivers/freetype/freetype/include/freetype/ftchapters.h diff --git a/tools/freetype/freetype/include/freetype/ftcid.h b/drivers/freetype/freetype/include/freetype/ftcid.h index 203a30caf8..203a30caf8 100644 --- a/tools/freetype/freetype/include/freetype/ftcid.h +++ b/drivers/freetype/freetype/include/freetype/ftcid.h diff --git a/tools/freetype/freetype/include/freetype/fterrdef.h b/drivers/freetype/freetype/include/freetype/fterrdef.h index 76c7b9e36f..76c7b9e36f 100644 --- a/tools/freetype/freetype/include/freetype/fterrdef.h +++ b/drivers/freetype/freetype/include/freetype/fterrdef.h diff --git a/tools/freetype/freetype/include/freetype/fterrors.h b/drivers/freetype/freetype/include/freetype/fterrors.h index 0fa3e4dce1..0fa3e4dce1 100644 --- a/tools/freetype/freetype/include/freetype/fterrors.h +++ b/drivers/freetype/freetype/include/freetype/fterrors.h diff --git a/tools/freetype/freetype/include/freetype/ftgasp.h b/drivers/freetype/freetype/include/freetype/ftgasp.h index 453d4fa42c..453d4fa42c 100644 --- a/tools/freetype/freetype/include/freetype/ftgasp.h +++ b/drivers/freetype/freetype/include/freetype/ftgasp.h diff --git a/tools/freetype/freetype/include/freetype/ftglyph.h b/drivers/freetype/freetype/include/freetype/ftglyph.h index 31dc33187d..31dc33187d 100644 --- a/tools/freetype/freetype/include/freetype/ftglyph.h +++ b/drivers/freetype/freetype/include/freetype/ftglyph.h diff --git a/tools/freetype/freetype/include/freetype/ftgxval.h b/drivers/freetype/freetype/include/freetype/ftgxval.h index 497015c101..497015c101 100644 --- a/tools/freetype/freetype/include/freetype/ftgxval.h +++ b/drivers/freetype/freetype/include/freetype/ftgxval.h diff --git a/tools/freetype/freetype/include/freetype/ftgzip.h b/drivers/freetype/freetype/include/freetype/ftgzip.h index acbc4f0327..acbc4f0327 100644 --- a/tools/freetype/freetype/include/freetype/ftgzip.h +++ b/drivers/freetype/freetype/include/freetype/ftgzip.h diff --git a/tools/freetype/freetype/include/freetype/ftimage.h b/drivers/freetype/freetype/include/freetype/ftimage.h index 3b826b1d32..3b826b1d32 100644 --- a/tools/freetype/freetype/include/freetype/ftimage.h +++ b/drivers/freetype/freetype/include/freetype/ftimage.h diff --git a/tools/freetype/freetype/include/freetype/ftincrem.h b/drivers/freetype/freetype/include/freetype/ftincrem.h index aaf689ff16..aaf689ff16 100644 --- a/tools/freetype/freetype/include/freetype/ftincrem.h +++ b/drivers/freetype/freetype/include/freetype/ftincrem.h diff --git a/tools/freetype/freetype/include/freetype/ftlcdfil.h b/drivers/freetype/freetype/include/freetype/ftlcdfil.h index 8b253f118b..8b253f118b 100644 --- a/tools/freetype/freetype/include/freetype/ftlcdfil.h +++ b/drivers/freetype/freetype/include/freetype/ftlcdfil.h diff --git a/tools/freetype/freetype/include/freetype/ftlist.h b/drivers/freetype/freetype/include/freetype/ftlist.h index bb6f7f119d..bb6f7f119d 100644 --- a/tools/freetype/freetype/include/freetype/ftlist.h +++ b/drivers/freetype/freetype/include/freetype/ftlist.h diff --git a/tools/freetype/freetype/include/freetype/ftlzw.h b/drivers/freetype/freetype/include/freetype/ftlzw.h index 00d40169a7..00d40169a7 100644 --- a/tools/freetype/freetype/include/freetype/ftlzw.h +++ b/drivers/freetype/freetype/include/freetype/ftlzw.h diff --git a/tools/freetype/freetype/include/freetype/ftmac.h b/drivers/freetype/freetype/include/freetype/ftmac.h index ab5bab5170..ab5bab5170 100644 --- a/tools/freetype/freetype/include/freetype/ftmac.h +++ b/drivers/freetype/freetype/include/freetype/ftmac.h diff --git a/tools/freetype/freetype/include/freetype/ftmm.h b/drivers/freetype/freetype/include/freetype/ftmm.h index 3aefb9e4f2..3aefb9e4f2 100644 --- a/tools/freetype/freetype/include/freetype/ftmm.h +++ b/drivers/freetype/freetype/include/freetype/ftmm.h diff --git a/tools/freetype/freetype/include/freetype/ftmodapi.h b/drivers/freetype/freetype/include/freetype/ftmodapi.h index 8abffb558f..8abffb558f 100644 --- a/tools/freetype/freetype/include/freetype/ftmodapi.h +++ b/drivers/freetype/freetype/include/freetype/ftmodapi.h diff --git a/tools/freetype/freetype/include/freetype/ftmoderr.h b/drivers/freetype/freetype/include/freetype/ftmoderr.h index 5a27db151a..5a27db151a 100644 --- a/tools/freetype/freetype/include/freetype/ftmoderr.h +++ b/drivers/freetype/freetype/include/freetype/ftmoderr.h diff --git a/tools/freetype/freetype/include/freetype/ftotval.h b/drivers/freetype/freetype/include/freetype/ftotval.h index 027f2e8865..027f2e8865 100644 --- a/tools/freetype/freetype/include/freetype/ftotval.h +++ b/drivers/freetype/freetype/include/freetype/ftotval.h diff --git a/tools/freetype/freetype/include/freetype/ftoutln.h b/drivers/freetype/freetype/include/freetype/ftoutln.h index fd69f28292..fd69f28292 100644 --- a/tools/freetype/freetype/include/freetype/ftoutln.h +++ b/drivers/freetype/freetype/include/freetype/ftoutln.h diff --git a/tools/freetype/freetype/include/freetype/ftpfr.h b/drivers/freetype/freetype/include/freetype/ftpfr.h index 0b7b7d427c..0b7b7d427c 100644 --- a/tools/freetype/freetype/include/freetype/ftpfr.h +++ b/drivers/freetype/freetype/include/freetype/ftpfr.h diff --git a/tools/freetype/freetype/include/freetype/ftrender.h b/drivers/freetype/freetype/include/freetype/ftrender.h index dd0229b815..dd0229b815 100644 --- a/tools/freetype/freetype/include/freetype/ftrender.h +++ b/drivers/freetype/freetype/include/freetype/ftrender.h diff --git a/tools/freetype/freetype/include/freetype/ftsizes.h b/drivers/freetype/freetype/include/freetype/ftsizes.h index 3e548cc39f..3e548cc39f 100644 --- a/tools/freetype/freetype/include/freetype/ftsizes.h +++ b/drivers/freetype/freetype/include/freetype/ftsizes.h diff --git a/tools/freetype/freetype/include/freetype/ftsnames.h b/drivers/freetype/freetype/include/freetype/ftsnames.h index 485e4e162e..485e4e162e 100644 --- a/tools/freetype/freetype/include/freetype/ftsnames.h +++ b/drivers/freetype/freetype/include/freetype/ftsnames.h diff --git a/tools/freetype/freetype/include/freetype/ftstroke.h b/drivers/freetype/freetype/include/freetype/ftstroke.h index a498e4a883..a498e4a883 100644 --- a/tools/freetype/freetype/include/freetype/ftstroke.h +++ b/drivers/freetype/freetype/include/freetype/ftstroke.h diff --git a/tools/freetype/freetype/include/freetype/ftsynth.h b/drivers/freetype/freetype/include/freetype/ftsynth.h index 2074503cf6..2074503cf6 100644 --- a/tools/freetype/freetype/include/freetype/ftsynth.h +++ b/drivers/freetype/freetype/include/freetype/ftsynth.h diff --git a/tools/freetype/freetype/include/freetype/ftsystem.h b/drivers/freetype/freetype/include/freetype/ftsystem.h index e07460c55d..e07460c55d 100644 --- a/tools/freetype/freetype/include/freetype/ftsystem.h +++ b/drivers/freetype/freetype/include/freetype/ftsystem.h diff --git a/tools/freetype/freetype/include/freetype/fttrigon.h b/drivers/freetype/freetype/include/freetype/fttrigon.h index 65143cb8c8..65143cb8c8 100644 --- a/tools/freetype/freetype/include/freetype/fttrigon.h +++ b/drivers/freetype/freetype/include/freetype/fttrigon.h diff --git a/tools/freetype/freetype/include/freetype/ftttdrv.h b/drivers/freetype/freetype/include/freetype/ftttdrv.h index d5d3f1ccc1..d5d3f1ccc1 100644 --- a/tools/freetype/freetype/include/freetype/ftttdrv.h +++ b/drivers/freetype/freetype/include/freetype/ftttdrv.h diff --git a/tools/freetype/freetype/include/freetype/fttypes.h b/drivers/freetype/freetype/include/freetype/fttypes.h index 027e59ce11..027e59ce11 100644 --- a/tools/freetype/freetype/include/freetype/fttypes.h +++ b/drivers/freetype/freetype/include/freetype/fttypes.h diff --git a/tools/freetype/freetype/include/freetype/ftwinfnt.h b/drivers/freetype/freetype/include/freetype/ftwinfnt.h index ea33353536..ea33353536 100644 --- a/tools/freetype/freetype/include/freetype/ftwinfnt.h +++ b/drivers/freetype/freetype/include/freetype/ftwinfnt.h diff --git a/tools/freetype/freetype/include/freetype/ftxf86.h b/drivers/freetype/freetype/include/freetype/ftxf86.h index 8c68afdcc5..8c68afdcc5 100644 --- a/tools/freetype/freetype/include/freetype/ftxf86.h +++ b/drivers/freetype/freetype/include/freetype/ftxf86.h diff --git a/tools/freetype/freetype/include/freetype/internal/autohint.h b/drivers/freetype/freetype/include/freetype/internal/autohint.h index 545de938c2..545de938c2 100644 --- a/tools/freetype/freetype/include/freetype/internal/autohint.h +++ b/drivers/freetype/freetype/include/freetype/internal/autohint.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftcalc.h b/drivers/freetype/freetype/include/freetype/internal/ftcalc.h index faac3a3867..faac3a3867 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftcalc.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftcalc.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftdebug.h b/drivers/freetype/freetype/include/freetype/internal/ftdebug.h index 58a3916d7e..58a3916d7e 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftdebug.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftdebug.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftdriver.h b/drivers/freetype/freetype/include/freetype/internal/ftdriver.h index 940218e62d..940218e62d 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftdriver.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftdriver.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftgloadr.h b/drivers/freetype/freetype/include/freetype/internal/ftgloadr.h index ce4dc6c9cc..ce4dc6c9cc 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftgloadr.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftgloadr.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftmemory.h b/drivers/freetype/freetype/include/freetype/internal/ftmemory.h index 3d51aeec69..3d51aeec69 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftmemory.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftmemory.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftobjs.h b/drivers/freetype/freetype/include/freetype/internal/ftobjs.h index 701c850eb7..701c850eb7 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftobjs.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftobjs.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftpic.h b/drivers/freetype/freetype/include/freetype/internal/ftpic.h index 485ce7a24e..485ce7a24e 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftpic.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftpic.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftrfork.h b/drivers/freetype/freetype/include/freetype/internal/ftrfork.h index 6307f2d0c5..6307f2d0c5 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftrfork.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftrfork.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftserv.h b/drivers/freetype/freetype/include/freetype/internal/ftserv.h index cd5fbd0fac..cd5fbd0fac 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftserv.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftserv.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftstream.h b/drivers/freetype/freetype/include/freetype/internal/ftstream.h index 2661858320..2661858320 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftstream.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftstream.h diff --git a/tools/freetype/freetype/include/freetype/internal/fttrace.h b/drivers/freetype/freetype/include/freetype/internal/fttrace.h index a9d98b60aa..a9d98b60aa 100644 --- a/tools/freetype/freetype/include/freetype/internal/fttrace.h +++ b/drivers/freetype/freetype/include/freetype/internal/fttrace.h diff --git a/tools/freetype/freetype/include/freetype/internal/ftvalid.h b/drivers/freetype/freetype/include/freetype/internal/ftvalid.h index 12ad03685a..12ad03685a 100644 --- a/tools/freetype/freetype/include/freetype/internal/ftvalid.h +++ b/drivers/freetype/freetype/include/freetype/internal/ftvalid.h diff --git a/tools/freetype/freetype/include/freetype/internal/internal.h b/drivers/freetype/freetype/include/freetype/internal/internal.h index 262afcfa8a..262afcfa8a 100644 --- a/tools/freetype/freetype/include/freetype/internal/internal.h +++ b/drivers/freetype/freetype/include/freetype/internal/internal.h diff --git a/tools/freetype/freetype/include/freetype/internal/psaux.h b/drivers/freetype/freetype/include/freetype/internal/psaux.h index e903114f84..e903114f84 100644 --- a/tools/freetype/freetype/include/freetype/internal/psaux.h +++ b/drivers/freetype/freetype/include/freetype/internal/psaux.h diff --git a/tools/freetype/freetype/include/freetype/internal/pshints.h b/drivers/freetype/freetype/include/freetype/internal/pshints.h index 3fb18dc2d5..3fb18dc2d5 100644 --- a/tools/freetype/freetype/include/freetype/internal/pshints.h +++ b/drivers/freetype/freetype/include/freetype/internal/pshints.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svbdf.h b/drivers/freetype/freetype/include/freetype/internal/services/svbdf.h index 0974752a79..0974752a79 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svbdf.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svbdf.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svcid.h b/drivers/freetype/freetype/include/freetype/internal/services/svcid.h index 6be3f9374d..6be3f9374d 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svcid.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svcid.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svgldict.h b/drivers/freetype/freetype/include/freetype/internal/services/svgldict.h index 1d12534725..1d12534725 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svgldict.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svgldict.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svgxval.h b/drivers/freetype/freetype/include/freetype/internal/services/svgxval.h index 2cdab50655..2cdab50655 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svgxval.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svgxval.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svkern.h b/drivers/freetype/freetype/include/freetype/internal/services/svkern.h index 1488adf493..1488adf493 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svkern.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svkern.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svmm.h b/drivers/freetype/freetype/include/freetype/internal/services/svmm.h index b08a663d66..b08a663d66 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svmm.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svmm.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svotval.h b/drivers/freetype/freetype/include/freetype/internal/services/svotval.h index 970bbd5759..970bbd5759 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svotval.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svotval.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svpfr.h b/drivers/freetype/freetype/include/freetype/internal/services/svpfr.h index 462786f9ce..462786f9ce 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svpfr.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svpfr.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svpostnm.h b/drivers/freetype/freetype/include/freetype/internal/services/svpostnm.h index a76b4fe057..a76b4fe057 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svpostnm.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svpostnm.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svprop.h b/drivers/freetype/freetype/include/freetype/internal/services/svprop.h index 22da0bbc69..22da0bbc69 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svprop.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svprop.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svpscmap.h b/drivers/freetype/freetype/include/freetype/internal/services/svpscmap.h index 030948ea64..030948ea64 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svpscmap.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svpscmap.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svpsinfo.h b/drivers/freetype/freetype/include/freetype/internal/services/svpsinfo.h index 4bfb506711..4bfb506711 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svpsinfo.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svpsinfo.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svsfnt.h b/drivers/freetype/freetype/include/freetype/internal/services/svsfnt.h index d3835aa1c2..d3835aa1c2 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svsfnt.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svsfnt.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svttcmap.h b/drivers/freetype/freetype/include/freetype/internal/services/svttcmap.h index 83994aaf8a..83994aaf8a 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svttcmap.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svttcmap.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svtteng.h b/drivers/freetype/freetype/include/freetype/internal/services/svtteng.h index 58e02a6f9d..58e02a6f9d 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svtteng.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svtteng.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svttglyf.h b/drivers/freetype/freetype/include/freetype/internal/services/svttglyf.h index 369eb8421b..369eb8421b 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svttglyf.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svttglyf.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svwinfnt.h b/drivers/freetype/freetype/include/freetype/internal/services/svwinfnt.h index 57f7765d92..57f7765d92 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svwinfnt.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svwinfnt.h diff --git a/tools/freetype/freetype/include/freetype/internal/services/svxf86nm.h b/drivers/freetype/freetype/include/freetype/internal/services/svxf86nm.h index ca5d884a83..ca5d884a83 100644 --- a/tools/freetype/freetype/include/freetype/internal/services/svxf86nm.h +++ b/drivers/freetype/freetype/include/freetype/internal/services/svxf86nm.h diff --git a/tools/freetype/freetype/include/freetype/internal/sfnt.h b/drivers/freetype/freetype/include/freetype/internal/sfnt.h index 6b5e41f1ad..6b5e41f1ad 100644 --- a/tools/freetype/freetype/include/freetype/internal/sfnt.h +++ b/drivers/freetype/freetype/include/freetype/internal/sfnt.h diff --git a/tools/freetype/freetype/include/freetype/internal/t1types.h b/drivers/freetype/freetype/include/freetype/internal/t1types.h index e20237c14d..e20237c14d 100644 --- a/tools/freetype/freetype/include/freetype/internal/t1types.h +++ b/drivers/freetype/freetype/include/freetype/internal/t1types.h diff --git a/tools/freetype/freetype/include/freetype/internal/tttypes.h b/drivers/freetype/freetype/include/freetype/internal/tttypes.h index 1bbfe499c5..1bbfe499c5 100644 --- a/tools/freetype/freetype/include/freetype/internal/tttypes.h +++ b/drivers/freetype/freetype/include/freetype/internal/tttypes.h diff --git a/tools/freetype/freetype/include/freetype/t1tables.h b/drivers/freetype/freetype/include/freetype/t1tables.h index a14255e5f5..a14255e5f5 100644 --- a/tools/freetype/freetype/include/freetype/t1tables.h +++ b/drivers/freetype/freetype/include/freetype/t1tables.h diff --git a/tools/freetype/freetype/include/freetype/ttnameid.h b/drivers/freetype/freetype/include/freetype/ttnameid.h index 173f88c950..173f88c950 100644 --- a/tools/freetype/freetype/include/freetype/ttnameid.h +++ b/drivers/freetype/freetype/include/freetype/ttnameid.h diff --git a/tools/freetype/freetype/include/freetype/tttables.h b/drivers/freetype/freetype/include/freetype/tttables.h index fe07117b0b..fe07117b0b 100644 --- a/tools/freetype/freetype/include/freetype/tttables.h +++ b/drivers/freetype/freetype/include/freetype/tttables.h diff --git a/tools/freetype/freetype/include/freetype/tttags.h b/drivers/freetype/freetype/include/freetype/tttags.h index be8c524edb..be8c524edb 100644 --- a/tools/freetype/freetype/include/freetype/tttags.h +++ b/drivers/freetype/freetype/include/freetype/tttags.h diff --git a/tools/freetype/freetype/include/freetype/ttunpat.h b/drivers/freetype/freetype/include/freetype/ttunpat.h index a0162759b7..a0162759b7 100644 --- a/tools/freetype/freetype/include/freetype/ttunpat.h +++ b/drivers/freetype/freetype/include/freetype/ttunpat.h diff --git a/tools/freetype/freetype/include/ftoption.h b/drivers/freetype/freetype/include/ftoption.h index c9f4708691..c9f4708691 100644 --- a/tools/freetype/freetype/include/ftoption.h +++ b/drivers/freetype/freetype/include/ftoption.h diff --git a/tools/freetype/freetype/src/Jamfile b/drivers/freetype/freetype/src/Jamfile index 76ee0f46e6..76ee0f46e6 100644 --- a/tools/freetype/freetype/src/Jamfile +++ b/drivers/freetype/freetype/src/Jamfile diff --git a/tools/freetype/freetype/src/autofit/Jamfile b/drivers/freetype/freetype/src/autofit/Jamfile index 2714765b5b..2714765b5b 100644 --- a/tools/freetype/freetype/src/autofit/Jamfile +++ b/drivers/freetype/freetype/src/autofit/Jamfile diff --git a/tools/freetype/freetype/src/autofit/afangles.c b/drivers/freetype/freetype/src/autofit/afangles.c index b44a5ba2c6..b44a5ba2c6 100644 --- a/tools/freetype/freetype/src/autofit/afangles.c +++ b/drivers/freetype/freetype/src/autofit/afangles.c diff --git a/tools/freetype/freetype/src/autofit/afangles.h b/drivers/freetype/freetype/src/autofit/afangles.h index f33f9e108e..f33f9e108e 100644 --- a/tools/freetype/freetype/src/autofit/afangles.h +++ b/drivers/freetype/freetype/src/autofit/afangles.h diff --git a/tools/freetype/freetype/src/autofit/afcjk.c b/drivers/freetype/freetype/src/autofit/afcjk.c index f69a528e3b..f69a528e3b 100644 --- a/tools/freetype/freetype/src/autofit/afcjk.c +++ b/drivers/freetype/freetype/src/autofit/afcjk.c diff --git a/tools/freetype/freetype/src/autofit/afcjk.h b/drivers/freetype/freetype/src/autofit/afcjk.h index ab816f20b1..ab816f20b1 100644 --- a/tools/freetype/freetype/src/autofit/afcjk.h +++ b/drivers/freetype/freetype/src/autofit/afcjk.h diff --git a/tools/freetype/freetype/src/autofit/afdummy.c b/drivers/freetype/freetype/src/autofit/afdummy.c index 22944559da..22944559da 100644 --- a/tools/freetype/freetype/src/autofit/afdummy.c +++ b/drivers/freetype/freetype/src/autofit/afdummy.c diff --git a/tools/freetype/freetype/src/autofit/afdummy.h b/drivers/freetype/freetype/src/autofit/afdummy.h index 95d8f8cf19..95d8f8cf19 100644 --- a/tools/freetype/freetype/src/autofit/afdummy.h +++ b/drivers/freetype/freetype/src/autofit/afdummy.h diff --git a/tools/freetype/freetype/src/autofit/aferrors.h b/drivers/freetype/freetype/src/autofit/aferrors.h index 50e1a22dd5..50e1a22dd5 100644 --- a/tools/freetype/freetype/src/autofit/aferrors.h +++ b/drivers/freetype/freetype/src/autofit/aferrors.h diff --git a/tools/freetype/freetype/src/autofit/afglobal.c b/drivers/freetype/freetype/src/autofit/afglobal.c index 3e41465756..3e41465756 100644 --- a/tools/freetype/freetype/src/autofit/afglobal.c +++ b/drivers/freetype/freetype/src/autofit/afglobal.c diff --git a/tools/freetype/freetype/src/autofit/afglobal.h b/drivers/freetype/freetype/src/autofit/afglobal.h index 2e24900822..2e24900822 100644 --- a/tools/freetype/freetype/src/autofit/afglobal.h +++ b/drivers/freetype/freetype/src/autofit/afglobal.h diff --git a/tools/freetype/freetype/src/autofit/afhints.c b/drivers/freetype/freetype/src/autofit/afhints.c index e8defaa88d..e8defaa88d 100644 --- a/tools/freetype/freetype/src/autofit/afhints.c +++ b/drivers/freetype/freetype/src/autofit/afhints.c diff --git a/tools/freetype/freetype/src/autofit/afhints.h b/drivers/freetype/freetype/src/autofit/afhints.h index 776b3c844e..776b3c844e 100644 --- a/tools/freetype/freetype/src/autofit/afhints.h +++ b/drivers/freetype/freetype/src/autofit/afhints.h diff --git a/tools/freetype/freetype/src/autofit/afindic.c b/drivers/freetype/freetype/src/autofit/afindic.c index 8c24972598..8c24972598 100644 --- a/tools/freetype/freetype/src/autofit/afindic.c +++ b/drivers/freetype/freetype/src/autofit/afindic.c diff --git a/tools/freetype/freetype/src/autofit/afindic.h b/drivers/freetype/freetype/src/autofit/afindic.h index c252cf20da..c252cf20da 100644 --- a/tools/freetype/freetype/src/autofit/afindic.h +++ b/drivers/freetype/freetype/src/autofit/afindic.h diff --git a/tools/freetype/freetype/src/autofit/aflatin.c b/drivers/freetype/freetype/src/autofit/aflatin.c index ef0157a13e..ef0157a13e 100644 --- a/tools/freetype/freetype/src/autofit/aflatin.c +++ b/drivers/freetype/freetype/src/autofit/aflatin.c diff --git a/tools/freetype/freetype/src/autofit/aflatin.h b/drivers/freetype/freetype/src/autofit/aflatin.h index d9170b3dcc..d9170b3dcc 100644 --- a/tools/freetype/freetype/src/autofit/aflatin.h +++ b/drivers/freetype/freetype/src/autofit/aflatin.h diff --git a/tools/freetype/freetype/src/autofit/aflatin2.c b/drivers/freetype/freetype/src/autofit/aflatin2.c index b1e9658d5d..b1e9658d5d 100644 --- a/tools/freetype/freetype/src/autofit/aflatin2.c +++ b/drivers/freetype/freetype/src/autofit/aflatin2.c diff --git a/tools/freetype/freetype/src/autofit/aflatin2.h b/drivers/freetype/freetype/src/autofit/aflatin2.h index cbfa395522..cbfa395522 100644 --- a/tools/freetype/freetype/src/autofit/aflatin2.h +++ b/drivers/freetype/freetype/src/autofit/aflatin2.h diff --git a/tools/freetype/freetype/src/autofit/afloader.c b/drivers/freetype/freetype/src/autofit/afloader.c index 17a6fb7c3b..17a6fb7c3b 100644 --- a/tools/freetype/freetype/src/autofit/afloader.c +++ b/drivers/freetype/freetype/src/autofit/afloader.c diff --git a/tools/freetype/freetype/src/autofit/afloader.h b/drivers/freetype/freetype/src/autofit/afloader.h index 1f34d17cce..1f34d17cce 100644 --- a/tools/freetype/freetype/src/autofit/afloader.h +++ b/drivers/freetype/freetype/src/autofit/afloader.h diff --git a/tools/freetype/freetype/src/autofit/afmodule.c b/drivers/freetype/freetype/src/autofit/afmodule.c index b1bb5ee0ed..b1bb5ee0ed 100644 --- a/tools/freetype/freetype/src/autofit/afmodule.c +++ b/drivers/freetype/freetype/src/autofit/afmodule.c diff --git a/tools/freetype/freetype/src/autofit/afmodule.h b/drivers/freetype/freetype/src/autofit/afmodule.h index c4e8f8f66a..c4e8f8f66a 100644 --- a/tools/freetype/freetype/src/autofit/afmodule.h +++ b/drivers/freetype/freetype/src/autofit/afmodule.h diff --git a/tools/freetype/freetype/src/autofit/afpic.c b/drivers/freetype/freetype/src/autofit/afpic.c index 45e1448c08..45e1448c08 100644 --- a/tools/freetype/freetype/src/autofit/afpic.c +++ b/drivers/freetype/freetype/src/autofit/afpic.c diff --git a/tools/freetype/freetype/src/autofit/afpic.h b/drivers/freetype/freetype/src/autofit/afpic.h index 0acf803894..0acf803894 100644 --- a/tools/freetype/freetype/src/autofit/afpic.h +++ b/drivers/freetype/freetype/src/autofit/afpic.h diff --git a/tools/freetype/freetype/src/autofit/aftypes.h b/drivers/freetype/freetype/src/autofit/aftypes.h index 9acd7ad6d2..9acd7ad6d2 100644 --- a/tools/freetype/freetype/src/autofit/aftypes.h +++ b/drivers/freetype/freetype/src/autofit/aftypes.h diff --git a/tools/freetype/freetype/src/autofit/afwarp.c b/drivers/freetype/freetype/src/autofit/afwarp.c index 34a97ffc57..34a97ffc57 100644 --- a/tools/freetype/freetype/src/autofit/afwarp.c +++ b/drivers/freetype/freetype/src/autofit/afwarp.c diff --git a/tools/freetype/freetype/src/autofit/afwarp.h b/drivers/freetype/freetype/src/autofit/afwarp.h index 7343fdd5ef..7343fdd5ef 100644 --- a/tools/freetype/freetype/src/autofit/afwarp.h +++ b/drivers/freetype/freetype/src/autofit/afwarp.h diff --git a/tools/freetype/freetype/src/autofit/autofit.c b/drivers/freetype/freetype/src/autofit/autofit.c index 3883a0a706..3883a0a706 100644 --- a/tools/freetype/freetype/src/autofit/autofit.c +++ b/drivers/freetype/freetype/src/autofit/autofit.c diff --git a/tools/freetype/freetype/src/autofit/module.mk b/drivers/freetype/freetype/src/autofit/module.mk index 6ec60912ab..6ec60912ab 100644 --- a/tools/freetype/freetype/src/autofit/module.mk +++ b/drivers/freetype/freetype/src/autofit/module.mk diff --git a/tools/freetype/freetype/src/autofit/rules.mk b/drivers/freetype/freetype/src/autofit/rules.mk index b76bb79ab4..b76bb79ab4 100644 --- a/tools/freetype/freetype/src/autofit/rules.mk +++ b/drivers/freetype/freetype/src/autofit/rules.mk diff --git a/tools/freetype/freetype/src/base/Jamfile b/drivers/freetype/freetype/src/base/Jamfile index 832e8b8424..832e8b8424 100644 --- a/tools/freetype/freetype/src/base/Jamfile +++ b/drivers/freetype/freetype/src/base/Jamfile diff --git a/tools/freetype/freetype/src/base/basepic.c b/drivers/freetype/freetype/src/base/basepic.c index 0af770ebc2..0af770ebc2 100644 --- a/tools/freetype/freetype/src/base/basepic.c +++ b/drivers/freetype/freetype/src/base/basepic.c diff --git a/tools/freetype/freetype/src/base/basepic.h b/drivers/freetype/freetype/src/base/basepic.h index 329d7c8fd6..329d7c8fd6 100644 --- a/tools/freetype/freetype/src/base/basepic.h +++ b/drivers/freetype/freetype/src/base/basepic.h diff --git a/tools/freetype/freetype/src/base/ftadvanc.c b/drivers/freetype/freetype/src/base/ftadvanc.c index 52078478df..52078478df 100644 --- a/tools/freetype/freetype/src/base/ftadvanc.c +++ b/drivers/freetype/freetype/src/base/ftadvanc.c diff --git a/tools/freetype/freetype/src/base/ftapi.c b/drivers/freetype/freetype/src/base/ftapi.c index 8914d1f4e9..8914d1f4e9 100644 --- a/tools/freetype/freetype/src/base/ftapi.c +++ b/drivers/freetype/freetype/src/base/ftapi.c diff --git a/tools/freetype/freetype/src/base/ftbase.c b/drivers/freetype/freetype/src/base/ftbase.c index 5e5d70ec4b..5e5d70ec4b 100644 --- a/tools/freetype/freetype/src/base/ftbase.c +++ b/drivers/freetype/freetype/src/base/ftbase.c diff --git a/tools/freetype/freetype/src/base/ftbase.h b/drivers/freetype/freetype/src/base/ftbase.h index 51a1db18b8..51a1db18b8 100644 --- a/tools/freetype/freetype/src/base/ftbase.h +++ b/drivers/freetype/freetype/src/base/ftbase.h diff --git a/tools/freetype/freetype/src/base/ftbbox.c b/drivers/freetype/freetype/src/base/ftbbox.c index 6d1c44cb2e..6d1c44cb2e 100644 --- a/tools/freetype/freetype/src/base/ftbbox.c +++ b/drivers/freetype/freetype/src/base/ftbbox.c diff --git a/tools/freetype/freetype/src/base/ftbdf.c b/drivers/freetype/freetype/src/base/ftbdf.c index 5755f8558d..5755f8558d 100644 --- a/tools/freetype/freetype/src/base/ftbdf.c +++ b/drivers/freetype/freetype/src/base/ftbdf.c diff --git a/tools/freetype/freetype/src/base/ftbitmap.c b/drivers/freetype/freetype/src/base/ftbitmap.c index 975818e14f..975818e14f 100644 --- a/tools/freetype/freetype/src/base/ftbitmap.c +++ b/drivers/freetype/freetype/src/base/ftbitmap.c diff --git a/tools/freetype/freetype/src/base/ftcalc.c b/drivers/freetype/freetype/src/base/ftcalc.c index 0ec0d78930..0ec0d78930 100644 --- a/tools/freetype/freetype/src/base/ftcalc.c +++ b/drivers/freetype/freetype/src/base/ftcalc.c diff --git a/tools/freetype/freetype/src/base/ftcid.c b/drivers/freetype/freetype/src/base/ftcid.c index 741879d922..741879d922 100644 --- a/tools/freetype/freetype/src/base/ftcid.c +++ b/drivers/freetype/freetype/src/base/ftcid.c diff --git a/tools/freetype/freetype/src/base/ftdbgmem.c b/drivers/freetype/freetype/src/base/ftdbgmem.c index 6fb86fe77d..6fb86fe77d 100644 --- a/tools/freetype/freetype/src/base/ftdbgmem.c +++ b/drivers/freetype/freetype/src/base/ftdbgmem.c diff --git a/tools/freetype/freetype/src/base/ftdebug.c b/drivers/freetype/freetype/src/base/ftdebug.c index b9156d15ee..b9156d15ee 100644 --- a/tools/freetype/freetype/src/base/ftdebug.c +++ b/drivers/freetype/freetype/src/base/ftdebug.c diff --git a/tools/freetype/freetype/src/base/ftfstype.c b/drivers/freetype/freetype/src/base/ftfstype.c index d0ef7b7c1b..d0ef7b7c1b 100644 --- a/tools/freetype/freetype/src/base/ftfstype.c +++ b/drivers/freetype/freetype/src/base/ftfstype.c diff --git a/tools/freetype/freetype/src/base/ftgasp.c b/drivers/freetype/freetype/src/base/ftgasp.c index 8485d29259..8485d29259 100644 --- a/tools/freetype/freetype/src/base/ftgasp.c +++ b/drivers/freetype/freetype/src/base/ftgasp.c diff --git a/tools/freetype/freetype/src/base/ftgloadr.c b/drivers/freetype/freetype/src/base/ftgloadr.c index 3cc5c7a805..3cc5c7a805 100644 --- a/tools/freetype/freetype/src/base/ftgloadr.c +++ b/drivers/freetype/freetype/src/base/ftgloadr.c diff --git a/tools/freetype/freetype/src/base/ftglyph.c b/drivers/freetype/freetype/src/base/ftglyph.c index 5dd28a8c52..5dd28a8c52 100644 --- a/tools/freetype/freetype/src/base/ftglyph.c +++ b/drivers/freetype/freetype/src/base/ftglyph.c diff --git a/tools/freetype/freetype/src/base/ftgxval.c b/drivers/freetype/freetype/src/base/ftgxval.c index a8ec44ac00..a8ec44ac00 100644 --- a/tools/freetype/freetype/src/base/ftgxval.c +++ b/drivers/freetype/freetype/src/base/ftgxval.c diff --git a/tools/freetype/freetype/src/base/ftinit.c b/drivers/freetype/freetype/src/base/ftinit.c index 85f321fd2d..85f321fd2d 100644 --- a/tools/freetype/freetype/src/base/ftinit.c +++ b/drivers/freetype/freetype/src/base/ftinit.c diff --git a/tools/freetype/freetype/src/base/ftlcdfil.c b/drivers/freetype/freetype/src/base/ftlcdfil.c index 852fb32982..852fb32982 100644 --- a/tools/freetype/freetype/src/base/ftlcdfil.c +++ b/drivers/freetype/freetype/src/base/ftlcdfil.c diff --git a/tools/freetype/freetype/src/base/ftmac.c b/drivers/freetype/freetype/src/base/ftmac.c index 5b5aae61cc..5b5aae61cc 100644 --- a/tools/freetype/freetype/src/base/ftmac.c +++ b/drivers/freetype/freetype/src/base/ftmac.c diff --git a/tools/freetype/freetype/src/base/ftmm.c b/drivers/freetype/freetype/src/base/ftmm.c index 18ff879bfc..18ff879bfc 100644 --- a/tools/freetype/freetype/src/base/ftmm.c +++ b/drivers/freetype/freetype/src/base/ftmm.c diff --git a/tools/freetype/freetype/src/base/ftobjs.c b/drivers/freetype/freetype/src/base/ftobjs.c index 157bf45634..157bf45634 100644 --- a/tools/freetype/freetype/src/base/ftobjs.c +++ b/drivers/freetype/freetype/src/base/ftobjs.c diff --git a/tools/freetype/freetype/src/base/ftotval.c b/drivers/freetype/freetype/src/base/ftotval.c index 5fc73d76ab..5fc73d76ab 100644 --- a/tools/freetype/freetype/src/base/ftotval.c +++ b/drivers/freetype/freetype/src/base/ftotval.c diff --git a/tools/freetype/freetype/src/base/ftoutln.c b/drivers/freetype/freetype/src/base/ftoutln.c index 54ca5cdcf6..54ca5cdcf6 100644 --- a/tools/freetype/freetype/src/base/ftoutln.c +++ b/drivers/freetype/freetype/src/base/ftoutln.c diff --git a/tools/freetype/freetype/src/base/ftpatent.c b/drivers/freetype/freetype/src/base/ftpatent.c index 82b42f0343..82b42f0343 100644 --- a/tools/freetype/freetype/src/base/ftpatent.c +++ b/drivers/freetype/freetype/src/base/ftpatent.c diff --git a/tools/freetype/freetype/src/base/ftpfr.c b/drivers/freetype/freetype/src/base/ftpfr.c index 0ba955f01f..0ba955f01f 100644 --- a/tools/freetype/freetype/src/base/ftpfr.c +++ b/drivers/freetype/freetype/src/base/ftpfr.c diff --git a/tools/freetype/freetype/src/base/ftpic.c b/drivers/freetype/freetype/src/base/ftpic.c index 1c87101696..1c87101696 100644 --- a/tools/freetype/freetype/src/base/ftpic.c +++ b/drivers/freetype/freetype/src/base/ftpic.c diff --git a/tools/freetype/freetype/src/base/ftrfork.c b/drivers/freetype/freetype/src/base/ftrfork.c index 804911721d..804911721d 100644 --- a/tools/freetype/freetype/src/base/ftrfork.c +++ b/drivers/freetype/freetype/src/base/ftrfork.c diff --git a/tools/freetype/freetype/src/base/ftsnames.c b/drivers/freetype/freetype/src/base/ftsnames.c index 260e91c148..260e91c148 100644 --- a/tools/freetype/freetype/src/base/ftsnames.c +++ b/drivers/freetype/freetype/src/base/ftsnames.c diff --git a/tools/freetype/freetype/src/base/ftstream.c b/drivers/freetype/freetype/src/base/ftstream.c index d965333daa..d965333daa 100644 --- a/tools/freetype/freetype/src/base/ftstream.c +++ b/drivers/freetype/freetype/src/base/ftstream.c diff --git a/tools/freetype/freetype/src/base/ftstroke.c b/drivers/freetype/freetype/src/base/ftstroke.c index ee61ceca0e..ee61ceca0e 100644 --- a/tools/freetype/freetype/src/base/ftstroke.c +++ b/drivers/freetype/freetype/src/base/ftstroke.c diff --git a/tools/freetype/freetype/src/base/ftsynth.c b/drivers/freetype/freetype/src/base/ftsynth.c index 241d37f426..241d37f426 100644 --- a/tools/freetype/freetype/src/base/ftsynth.c +++ b/drivers/freetype/freetype/src/base/ftsynth.c diff --git a/tools/freetype/freetype/src/base/ftsystem.c b/drivers/freetype/freetype/src/base/ftsystem.c index 2c6ddac10c..2c6ddac10c 100644 --- a/tools/freetype/freetype/src/base/ftsystem.c +++ b/drivers/freetype/freetype/src/base/ftsystem.c diff --git a/tools/freetype/freetype/src/base/fttrigon.c b/drivers/freetype/freetype/src/base/fttrigon.c index 4ffdcb77f1..4ffdcb77f1 100644 --- a/tools/freetype/freetype/src/base/fttrigon.c +++ b/drivers/freetype/freetype/src/base/fttrigon.c diff --git a/tools/freetype/freetype/src/base/fttype1.c b/drivers/freetype/freetype/src/base/fttype1.c index c1f9931dbb..c1f9931dbb 100644 --- a/tools/freetype/freetype/src/base/fttype1.c +++ b/drivers/freetype/freetype/src/base/fttype1.c diff --git a/tools/freetype/freetype/src/base/ftutil.c b/drivers/freetype/freetype/src/base/ftutil.c index 879d027529..879d027529 100644 --- a/tools/freetype/freetype/src/base/ftutil.c +++ b/drivers/freetype/freetype/src/base/ftutil.c diff --git a/tools/freetype/freetype/src/base/ftwinfnt.c b/drivers/freetype/freetype/src/base/ftwinfnt.c index 463ae761d8..463ae761d8 100644 --- a/tools/freetype/freetype/src/base/ftwinfnt.c +++ b/drivers/freetype/freetype/src/base/ftwinfnt.c diff --git a/tools/freetype/freetype/src/base/ftxf86.c b/drivers/freetype/freetype/src/base/ftxf86.c index a4bf767dfa..a4bf767dfa 100644 --- a/tools/freetype/freetype/src/base/ftxf86.c +++ b/drivers/freetype/freetype/src/base/ftxf86.c diff --git a/tools/freetype/freetype/src/base/md5.c b/drivers/freetype/freetype/src/base/md5.c index 2f01c9302c..2f01c9302c 100644 --- a/tools/freetype/freetype/src/base/md5.c +++ b/drivers/freetype/freetype/src/base/md5.c diff --git a/tools/freetype/freetype/src/base/md5.h b/drivers/freetype/freetype/src/base/md5.h index f1a6857640..f1a6857640 100644 --- a/tools/freetype/freetype/src/base/md5.h +++ b/drivers/freetype/freetype/src/base/md5.h diff --git a/tools/freetype/freetype/src/base/rules.mk b/drivers/freetype/freetype/src/base/rules.mk index e932191157..e932191157 100644 --- a/tools/freetype/freetype/src/base/rules.mk +++ b/drivers/freetype/freetype/src/base/rules.mk diff --git a/tools/freetype/freetype/src/bdf/Jamfile b/drivers/freetype/freetype/src/bdf/Jamfile index da23ccd0ad..da23ccd0ad 100644 --- a/tools/freetype/freetype/src/bdf/Jamfile +++ b/drivers/freetype/freetype/src/bdf/Jamfile diff --git a/tools/freetype/freetype/src/bdf/README b/drivers/freetype/freetype/src/bdf/README index b761aba2b2..b761aba2b2 100644 --- a/tools/freetype/freetype/src/bdf/README +++ b/drivers/freetype/freetype/src/bdf/README diff --git a/tools/freetype/freetype/src/bdf/bdf.c b/drivers/freetype/freetype/src/bdf/bdf.c index f95fb76225..f95fb76225 100644 --- a/tools/freetype/freetype/src/bdf/bdf.c +++ b/drivers/freetype/freetype/src/bdf/bdf.c diff --git a/tools/freetype/freetype/src/bdf/bdf.h b/drivers/freetype/freetype/src/bdf/bdf.h index d11be6f147..d11be6f147 100644 --- a/tools/freetype/freetype/src/bdf/bdf.h +++ b/drivers/freetype/freetype/src/bdf/bdf.h diff --git a/tools/freetype/freetype/src/bdf/bdfdrivr.c b/drivers/freetype/freetype/src/bdf/bdfdrivr.c index 0ea0a5ea5e..0ea0a5ea5e 100644 --- a/tools/freetype/freetype/src/bdf/bdfdrivr.c +++ b/drivers/freetype/freetype/src/bdf/bdfdrivr.c diff --git a/tools/freetype/freetype/src/bdf/bdfdrivr.h b/drivers/freetype/freetype/src/bdf/bdfdrivr.h index ca0dae50d2..ca0dae50d2 100644 --- a/tools/freetype/freetype/src/bdf/bdfdrivr.h +++ b/drivers/freetype/freetype/src/bdf/bdfdrivr.h diff --git a/tools/freetype/freetype/src/bdf/bdferror.h b/drivers/freetype/freetype/src/bdf/bdferror.h index ea545aca06..ea545aca06 100644 --- a/tools/freetype/freetype/src/bdf/bdferror.h +++ b/drivers/freetype/freetype/src/bdf/bdferror.h diff --git a/tools/freetype/freetype/src/bdf/bdflib.c b/drivers/freetype/freetype/src/bdf/bdflib.c index 0b8412d9eb..0b8412d9eb 100644 --- a/tools/freetype/freetype/src/bdf/bdflib.c +++ b/drivers/freetype/freetype/src/bdf/bdflib.c diff --git a/tools/freetype/freetype/src/bdf/module.mk b/drivers/freetype/freetype/src/bdf/module.mk index fe06ae8e06..fe06ae8e06 100644 --- a/tools/freetype/freetype/src/bdf/module.mk +++ b/drivers/freetype/freetype/src/bdf/module.mk diff --git a/tools/freetype/freetype/src/bdf/rules.mk b/drivers/freetype/freetype/src/bdf/rules.mk index 6ff1614dde..6ff1614dde 100644 --- a/tools/freetype/freetype/src/bdf/rules.mk +++ b/drivers/freetype/freetype/src/bdf/rules.mk diff --git a/tools/freetype/freetype/src/cache/Jamfile b/drivers/freetype/freetype/src/cache/Jamfile index 340cff7742..340cff7742 100644 --- a/tools/freetype/freetype/src/cache/Jamfile +++ b/drivers/freetype/freetype/src/cache/Jamfile diff --git a/tools/freetype/freetype/src/cache/ftcache.c b/drivers/freetype/freetype/src/cache/ftcache.c index d41e91e5ec..d41e91e5ec 100644 --- a/tools/freetype/freetype/src/cache/ftcache.c +++ b/drivers/freetype/freetype/src/cache/ftcache.c diff --git a/tools/freetype/freetype/src/cache/ftcbasic.c b/drivers/freetype/freetype/src/cache/ftcbasic.c index 84d336d5d6..84d336d5d6 100644 --- a/tools/freetype/freetype/src/cache/ftcbasic.c +++ b/drivers/freetype/freetype/src/cache/ftcbasic.c diff --git a/tools/freetype/freetype/src/cache/ftccache.c b/drivers/freetype/freetype/src/cache/ftccache.c index f20dd4502c..f20dd4502c 100644 --- a/tools/freetype/freetype/src/cache/ftccache.c +++ b/drivers/freetype/freetype/src/cache/ftccache.c diff --git a/tools/freetype/freetype/src/cache/ftccache.h b/drivers/freetype/freetype/src/cache/ftccache.h index 4155f320e0..4155f320e0 100644 --- a/tools/freetype/freetype/src/cache/ftccache.h +++ b/drivers/freetype/freetype/src/cache/ftccache.h diff --git a/tools/freetype/freetype/src/cache/ftccback.h b/drivers/freetype/freetype/src/cache/ftccback.h index 9528279273..9528279273 100644 --- a/tools/freetype/freetype/src/cache/ftccback.h +++ b/drivers/freetype/freetype/src/cache/ftccback.h diff --git a/tools/freetype/freetype/src/cache/ftccmap.c b/drivers/freetype/freetype/src/cache/ftccmap.c index 848349be2d..848349be2d 100644 --- a/tools/freetype/freetype/src/cache/ftccmap.c +++ b/drivers/freetype/freetype/src/cache/ftccmap.c diff --git a/tools/freetype/freetype/src/cache/ftcerror.h b/drivers/freetype/freetype/src/cache/ftcerror.h index 0e055709bb..0e055709bb 100644 --- a/tools/freetype/freetype/src/cache/ftcerror.h +++ b/drivers/freetype/freetype/src/cache/ftcerror.h diff --git a/tools/freetype/freetype/src/cache/ftcglyph.c b/drivers/freetype/freetype/src/cache/ftcglyph.c index 441e177238..441e177238 100644 --- a/tools/freetype/freetype/src/cache/ftcglyph.c +++ b/drivers/freetype/freetype/src/cache/ftcglyph.c diff --git a/tools/freetype/freetype/src/cache/ftcglyph.h b/drivers/freetype/freetype/src/cache/ftcglyph.h index 5fed19cb8f..5fed19cb8f 100644 --- a/tools/freetype/freetype/src/cache/ftcglyph.h +++ b/drivers/freetype/freetype/src/cache/ftcglyph.h diff --git a/tools/freetype/freetype/src/cache/ftcimage.c b/drivers/freetype/freetype/src/cache/ftcimage.c index c242ece021..c242ece021 100644 --- a/tools/freetype/freetype/src/cache/ftcimage.c +++ b/drivers/freetype/freetype/src/cache/ftcimage.c diff --git a/tools/freetype/freetype/src/cache/ftcimage.h b/drivers/freetype/freetype/src/cache/ftcimage.h index 20d5d3e07d..20d5d3e07d 100644 --- a/tools/freetype/freetype/src/cache/ftcimage.h +++ b/drivers/freetype/freetype/src/cache/ftcimage.h diff --git a/tools/freetype/freetype/src/cache/ftcmanag.c b/drivers/freetype/freetype/src/cache/ftcmanag.c index 4eb2c5bfd6..4eb2c5bfd6 100644 --- a/tools/freetype/freetype/src/cache/ftcmanag.c +++ b/drivers/freetype/freetype/src/cache/ftcmanag.c diff --git a/tools/freetype/freetype/src/cache/ftcmanag.h b/drivers/freetype/freetype/src/cache/ftcmanag.h index 0aec33c584..0aec33c584 100644 --- a/tools/freetype/freetype/src/cache/ftcmanag.h +++ b/drivers/freetype/freetype/src/cache/ftcmanag.h diff --git a/tools/freetype/freetype/src/cache/ftcmru.c b/drivers/freetype/freetype/src/cache/ftcmru.c index dc8b4cc397..dc8b4cc397 100644 --- a/tools/freetype/freetype/src/cache/ftcmru.c +++ b/drivers/freetype/freetype/src/cache/ftcmru.c diff --git a/tools/freetype/freetype/src/cache/ftcmru.h b/drivers/freetype/freetype/src/cache/ftcmru.h index 6fccf11781..6fccf11781 100644 --- a/tools/freetype/freetype/src/cache/ftcmru.h +++ b/drivers/freetype/freetype/src/cache/ftcmru.h diff --git a/tools/freetype/freetype/src/cache/ftcsbits.c b/drivers/freetype/freetype/src/cache/ftcsbits.c index 6df1c19930..6df1c19930 100644 --- a/tools/freetype/freetype/src/cache/ftcsbits.c +++ b/drivers/freetype/freetype/src/cache/ftcsbits.c diff --git a/tools/freetype/freetype/src/cache/ftcsbits.h b/drivers/freetype/freetype/src/cache/ftcsbits.h index df55dca806..df55dca806 100644 --- a/tools/freetype/freetype/src/cache/ftcsbits.h +++ b/drivers/freetype/freetype/src/cache/ftcsbits.h diff --git a/tools/freetype/freetype/src/cache/rules.mk b/drivers/freetype/freetype/src/cache/rules.mk index ed75a6a91f..ed75a6a91f 100644 --- a/tools/freetype/freetype/src/cache/rules.mk +++ b/drivers/freetype/freetype/src/cache/rules.mk diff --git a/tools/freetype/freetype/src/cff/Jamfile b/drivers/freetype/freetype/src/cff/Jamfile index 6705d3cfdb..6705d3cfdb 100644 --- a/tools/freetype/freetype/src/cff/Jamfile +++ b/drivers/freetype/freetype/src/cff/Jamfile diff --git a/tools/freetype/freetype/src/cff/cf2arrst.c b/drivers/freetype/freetype/src/cff/cf2arrst.c index c8d6f13098..c8d6f13098 100644 --- a/tools/freetype/freetype/src/cff/cf2arrst.c +++ b/drivers/freetype/freetype/src/cff/cf2arrst.c diff --git a/tools/freetype/freetype/src/cff/cf2arrst.h b/drivers/freetype/freetype/src/cff/cf2arrst.h index ff5ad8b126..ff5ad8b126 100644 --- a/tools/freetype/freetype/src/cff/cf2arrst.h +++ b/drivers/freetype/freetype/src/cff/cf2arrst.h diff --git a/tools/freetype/freetype/src/cff/cf2blues.c b/drivers/freetype/freetype/src/cff/cf2blues.c index 5b348398af..5b348398af 100644 --- a/tools/freetype/freetype/src/cff/cf2blues.c +++ b/drivers/freetype/freetype/src/cff/cf2blues.c diff --git a/tools/freetype/freetype/src/cff/cf2blues.h b/drivers/freetype/freetype/src/cff/cf2blues.h index 2f38fcad8f..2f38fcad8f 100644 --- a/tools/freetype/freetype/src/cff/cf2blues.h +++ b/drivers/freetype/freetype/src/cff/cf2blues.h diff --git a/tools/freetype/freetype/src/cff/cf2error.c b/drivers/freetype/freetype/src/cff/cf2error.c index b5595a3d1f..b5595a3d1f 100644 --- a/tools/freetype/freetype/src/cff/cf2error.c +++ b/drivers/freetype/freetype/src/cff/cf2error.c diff --git a/tools/freetype/freetype/src/cff/cf2error.h b/drivers/freetype/freetype/src/cff/cf2error.h index 6453ebcb7b..6453ebcb7b 100644 --- a/tools/freetype/freetype/src/cff/cf2error.h +++ b/drivers/freetype/freetype/src/cff/cf2error.h diff --git a/tools/freetype/freetype/src/cff/cf2fixed.h b/drivers/freetype/freetype/src/cff/cf2fixed.h index ed1452a7da..ed1452a7da 100644 --- a/tools/freetype/freetype/src/cff/cf2fixed.h +++ b/drivers/freetype/freetype/src/cff/cf2fixed.h diff --git a/tools/freetype/freetype/src/cff/cf2font.c b/drivers/freetype/freetype/src/cff/cf2font.c index 479d9125d1..479d9125d1 100644 --- a/tools/freetype/freetype/src/cff/cf2font.c +++ b/drivers/freetype/freetype/src/cff/cf2font.c diff --git a/tools/freetype/freetype/src/cff/cf2font.h b/drivers/freetype/freetype/src/cff/cf2font.h index f9dd1bbd40..f9dd1bbd40 100644 --- a/tools/freetype/freetype/src/cff/cf2font.h +++ b/drivers/freetype/freetype/src/cff/cf2font.h diff --git a/tools/freetype/freetype/src/cff/cf2ft.c b/drivers/freetype/freetype/src/cff/cf2ft.c index c09a0244a8..c09a0244a8 100644 --- a/tools/freetype/freetype/src/cff/cf2ft.c +++ b/drivers/freetype/freetype/src/cff/cf2ft.c diff --git a/tools/freetype/freetype/src/cff/cf2ft.h b/drivers/freetype/freetype/src/cff/cf2ft.h index 731da3ca8c..731da3ca8c 100644 --- a/tools/freetype/freetype/src/cff/cf2ft.h +++ b/drivers/freetype/freetype/src/cff/cf2ft.h diff --git a/tools/freetype/freetype/src/cff/cf2glue.h b/drivers/freetype/freetype/src/cff/cf2glue.h index a24da39e93..a24da39e93 100644 --- a/tools/freetype/freetype/src/cff/cf2glue.h +++ b/drivers/freetype/freetype/src/cff/cf2glue.h diff --git a/tools/freetype/freetype/src/cff/cf2hints.c b/drivers/freetype/freetype/src/cff/cf2hints.c index 96bd49f186..96bd49f186 100644 --- a/tools/freetype/freetype/src/cff/cf2hints.c +++ b/drivers/freetype/freetype/src/cff/cf2hints.c diff --git a/tools/freetype/freetype/src/cff/cf2hints.h b/drivers/freetype/freetype/src/cff/cf2hints.h index c4fa922a39..c4fa922a39 100644 --- a/tools/freetype/freetype/src/cff/cf2hints.h +++ b/drivers/freetype/freetype/src/cff/cf2hints.h diff --git a/tools/freetype/freetype/src/cff/cf2intrp.c b/drivers/freetype/freetype/src/cff/cf2intrp.c index 5610917cc3..5610917cc3 100644 --- a/tools/freetype/freetype/src/cff/cf2intrp.c +++ b/drivers/freetype/freetype/src/cff/cf2intrp.c diff --git a/tools/freetype/freetype/src/cff/cf2intrp.h b/drivers/freetype/freetype/src/cff/cf2intrp.h index b5d8947838..b5d8947838 100644 --- a/tools/freetype/freetype/src/cff/cf2intrp.h +++ b/drivers/freetype/freetype/src/cff/cf2intrp.h diff --git a/tools/freetype/freetype/src/cff/cf2read.c b/drivers/freetype/freetype/src/cff/cf2read.c index 2b429e3eeb..2b429e3eeb 100644 --- a/tools/freetype/freetype/src/cff/cf2read.c +++ b/drivers/freetype/freetype/src/cff/cf2read.c diff --git a/tools/freetype/freetype/src/cff/cf2read.h b/drivers/freetype/freetype/src/cff/cf2read.h index 7ef7c8c149..7ef7c8c149 100644 --- a/tools/freetype/freetype/src/cff/cf2read.h +++ b/drivers/freetype/freetype/src/cff/cf2read.h diff --git a/tools/freetype/freetype/src/cff/cf2stack.c b/drivers/freetype/freetype/src/cff/cf2stack.c index 8332b5d91a..8332b5d91a 100644 --- a/tools/freetype/freetype/src/cff/cf2stack.c +++ b/drivers/freetype/freetype/src/cff/cf2stack.c diff --git a/tools/freetype/freetype/src/cff/cf2stack.h b/drivers/freetype/freetype/src/cff/cf2stack.h index 7d6d1961fe..7d6d1961fe 100644 --- a/tools/freetype/freetype/src/cff/cf2stack.h +++ b/drivers/freetype/freetype/src/cff/cf2stack.h diff --git a/tools/freetype/freetype/src/cff/cf2types.h b/drivers/freetype/freetype/src/cff/cf2types.h index ac6a02266e..ac6a02266e 100644 --- a/tools/freetype/freetype/src/cff/cf2types.h +++ b/drivers/freetype/freetype/src/cff/cf2types.h diff --git a/tools/freetype/freetype/src/cff/cff.c b/drivers/freetype/freetype/src/cff/cff.c index c3840b5838..c3840b5838 100644 --- a/tools/freetype/freetype/src/cff/cff.c +++ b/drivers/freetype/freetype/src/cff/cff.c diff --git a/tools/freetype/freetype/src/cff/cffcmap.c b/drivers/freetype/freetype/src/cff/cffcmap.c index f6e03c6420..f6e03c6420 100644 --- a/tools/freetype/freetype/src/cff/cffcmap.c +++ b/drivers/freetype/freetype/src/cff/cffcmap.c diff --git a/tools/freetype/freetype/src/cff/cffcmap.h b/drivers/freetype/freetype/src/cff/cffcmap.h index 3f7f67bbe0..3f7f67bbe0 100644 --- a/tools/freetype/freetype/src/cff/cffcmap.h +++ b/drivers/freetype/freetype/src/cff/cffcmap.h diff --git a/tools/freetype/freetype/src/cff/cffdrivr.c b/drivers/freetype/freetype/src/cff/cffdrivr.c index c8ca96ba49..c8ca96ba49 100644 --- a/tools/freetype/freetype/src/cff/cffdrivr.c +++ b/drivers/freetype/freetype/src/cff/cffdrivr.c diff --git a/tools/freetype/freetype/src/cff/cffdrivr.h b/drivers/freetype/freetype/src/cff/cffdrivr.h index 50e8138701..50e8138701 100644 --- a/tools/freetype/freetype/src/cff/cffdrivr.h +++ b/drivers/freetype/freetype/src/cff/cffdrivr.h diff --git a/tools/freetype/freetype/src/cff/cfferrs.h b/drivers/freetype/freetype/src/cff/cfferrs.h index 801d73ec6b..801d73ec6b 100644 --- a/tools/freetype/freetype/src/cff/cfferrs.h +++ b/drivers/freetype/freetype/src/cff/cfferrs.h diff --git a/tools/freetype/freetype/src/cff/cffgload.c b/drivers/freetype/freetype/src/cff/cffgload.c index 6a8494fa9f..6a8494fa9f 100644 --- a/tools/freetype/freetype/src/cff/cffgload.c +++ b/drivers/freetype/freetype/src/cff/cffgload.c diff --git a/tools/freetype/freetype/src/cff/cffgload.h b/drivers/freetype/freetype/src/cff/cffgload.h index 41df7db692..41df7db692 100644 --- a/tools/freetype/freetype/src/cff/cffgload.h +++ b/drivers/freetype/freetype/src/cff/cffgload.h diff --git a/tools/freetype/freetype/src/cff/cffload.c b/drivers/freetype/freetype/src/cff/cffload.c index 64b497168d..64b497168d 100644 --- a/tools/freetype/freetype/src/cff/cffload.c +++ b/drivers/freetype/freetype/src/cff/cffload.c diff --git a/tools/freetype/freetype/src/cff/cffload.h b/drivers/freetype/freetype/src/cff/cffload.h index 804961964b..804961964b 100644 --- a/tools/freetype/freetype/src/cff/cffload.h +++ b/drivers/freetype/freetype/src/cff/cffload.h diff --git a/tools/freetype/freetype/src/cff/cffobjs.c b/drivers/freetype/freetype/src/cff/cffobjs.c index dd750d1041..dd750d1041 100644 --- a/tools/freetype/freetype/src/cff/cffobjs.c +++ b/drivers/freetype/freetype/src/cff/cffobjs.c diff --git a/tools/freetype/freetype/src/cff/cffobjs.h b/drivers/freetype/freetype/src/cff/cffobjs.h index b375c20c74..b375c20c74 100644 --- a/tools/freetype/freetype/src/cff/cffobjs.h +++ b/drivers/freetype/freetype/src/cff/cffobjs.h diff --git a/tools/freetype/freetype/src/cff/cffparse.c b/drivers/freetype/freetype/src/cff/cffparse.c index 96222120b0..96222120b0 100644 --- a/tools/freetype/freetype/src/cff/cffparse.c +++ b/drivers/freetype/freetype/src/cff/cffparse.c diff --git a/tools/freetype/freetype/src/cff/cffparse.h b/drivers/freetype/freetype/src/cff/cffparse.h index 61d91ed2e2..61d91ed2e2 100644 --- a/tools/freetype/freetype/src/cff/cffparse.h +++ b/drivers/freetype/freetype/src/cff/cffparse.h diff --git a/tools/freetype/freetype/src/cff/cffpic.c b/drivers/freetype/freetype/src/cff/cffpic.c index f22e4f0d53..f22e4f0d53 100644 --- a/tools/freetype/freetype/src/cff/cffpic.c +++ b/drivers/freetype/freetype/src/cff/cffpic.c diff --git a/tools/freetype/freetype/src/cff/cffpic.h b/drivers/freetype/freetype/src/cff/cffpic.h index 50bab4c173..50bab4c173 100644 --- a/tools/freetype/freetype/src/cff/cffpic.h +++ b/drivers/freetype/freetype/src/cff/cffpic.h diff --git a/tools/freetype/freetype/src/cff/cfftoken.h b/drivers/freetype/freetype/src/cff/cfftoken.h index bcb4276a78..bcb4276a78 100644 --- a/tools/freetype/freetype/src/cff/cfftoken.h +++ b/drivers/freetype/freetype/src/cff/cfftoken.h diff --git a/tools/freetype/freetype/src/cff/cfftypes.h b/drivers/freetype/freetype/src/cff/cfftypes.h index 8727446664..8727446664 100644 --- a/tools/freetype/freetype/src/cff/cfftypes.h +++ b/drivers/freetype/freetype/src/cff/cfftypes.h diff --git a/tools/freetype/freetype/src/cff/module.mk b/drivers/freetype/freetype/src/cff/module.mk index ef1391c279..ef1391c279 100644 --- a/tools/freetype/freetype/src/cff/module.mk +++ b/drivers/freetype/freetype/src/cff/module.mk diff --git a/tools/freetype/freetype/src/cff/rules.mk b/drivers/freetype/freetype/src/cff/rules.mk index 13115c2550..13115c2550 100644 --- a/tools/freetype/freetype/src/cff/rules.mk +++ b/drivers/freetype/freetype/src/cff/rules.mk diff --git a/tools/freetype/freetype/src/cid/Jamfile b/drivers/freetype/freetype/src/cid/Jamfile index ebeaed54ea..ebeaed54ea 100644 --- a/tools/freetype/freetype/src/cid/Jamfile +++ b/drivers/freetype/freetype/src/cid/Jamfile diff --git a/tools/freetype/freetype/src/cid/ciderrs.h b/drivers/freetype/freetype/src/cid/ciderrs.h index ef13155504..ef13155504 100644 --- a/tools/freetype/freetype/src/cid/ciderrs.h +++ b/drivers/freetype/freetype/src/cid/ciderrs.h diff --git a/tools/freetype/freetype/src/cid/cidgload.c b/drivers/freetype/freetype/src/cid/cidgload.c index a1a8658693..a1a8658693 100644 --- a/tools/freetype/freetype/src/cid/cidgload.c +++ b/drivers/freetype/freetype/src/cid/cidgload.c diff --git a/tools/freetype/freetype/src/cid/cidgload.h b/drivers/freetype/freetype/src/cid/cidgload.h index a0a91bfea8..a0a91bfea8 100644 --- a/tools/freetype/freetype/src/cid/cidgload.h +++ b/drivers/freetype/freetype/src/cid/cidgload.h diff --git a/tools/freetype/freetype/src/cid/cidload.c b/drivers/freetype/freetype/src/cid/cidload.c index f2a18ea510..f2a18ea510 100644 --- a/tools/freetype/freetype/src/cid/cidload.c +++ b/drivers/freetype/freetype/src/cid/cidload.c diff --git a/tools/freetype/freetype/src/cid/cidload.h b/drivers/freetype/freetype/src/cid/cidload.h index 8c172ffee2..8c172ffee2 100644 --- a/tools/freetype/freetype/src/cid/cidload.h +++ b/drivers/freetype/freetype/src/cid/cidload.h diff --git a/tools/freetype/freetype/src/cid/cidobjs.c b/drivers/freetype/freetype/src/cid/cidobjs.c index 46555e2dc8..46555e2dc8 100644 --- a/tools/freetype/freetype/src/cid/cidobjs.c +++ b/drivers/freetype/freetype/src/cid/cidobjs.c diff --git a/tools/freetype/freetype/src/cid/cidobjs.h b/drivers/freetype/freetype/src/cid/cidobjs.h index aee346d1c8..aee346d1c8 100644 --- a/tools/freetype/freetype/src/cid/cidobjs.h +++ b/drivers/freetype/freetype/src/cid/cidobjs.h diff --git a/tools/freetype/freetype/src/cid/cidparse.c b/drivers/freetype/freetype/src/cid/cidparse.c index 53df3155d1..53df3155d1 100644 --- a/tools/freetype/freetype/src/cid/cidparse.c +++ b/drivers/freetype/freetype/src/cid/cidparse.c diff --git a/tools/freetype/freetype/src/cid/cidparse.h b/drivers/freetype/freetype/src/cid/cidparse.h index ca37deab93..ca37deab93 100644 --- a/tools/freetype/freetype/src/cid/cidparse.h +++ b/drivers/freetype/freetype/src/cid/cidparse.h diff --git a/tools/freetype/freetype/src/cid/cidriver.c b/drivers/freetype/freetype/src/cid/cidriver.c index 6132a27763..6132a27763 100644 --- a/tools/freetype/freetype/src/cid/cidriver.c +++ b/drivers/freetype/freetype/src/cid/cidriver.c diff --git a/tools/freetype/freetype/src/cid/cidriver.h b/drivers/freetype/freetype/src/cid/cidriver.h index 3c45e06886..3c45e06886 100644 --- a/tools/freetype/freetype/src/cid/cidriver.h +++ b/drivers/freetype/freetype/src/cid/cidriver.h diff --git a/tools/freetype/freetype/src/cid/cidtoken.h b/drivers/freetype/freetype/src/cid/cidtoken.h index 904cb09cf4..904cb09cf4 100644 --- a/tools/freetype/freetype/src/cid/cidtoken.h +++ b/drivers/freetype/freetype/src/cid/cidtoken.h diff --git a/tools/freetype/freetype/src/cid/module.mk b/drivers/freetype/freetype/src/cid/module.mk index ce30bfd7ae..ce30bfd7ae 100644 --- a/tools/freetype/freetype/src/cid/module.mk +++ b/drivers/freetype/freetype/src/cid/module.mk diff --git a/tools/freetype/freetype/src/cid/rules.mk b/drivers/freetype/freetype/src/cid/rules.mk index f362744612..f362744612 100644 --- a/tools/freetype/freetype/src/cid/rules.mk +++ b/drivers/freetype/freetype/src/cid/rules.mk diff --git a/tools/freetype/freetype/src/cid/type1cid.c b/drivers/freetype/freetype/src/cid/type1cid.c index 0b866e97c4..0b866e97c4 100644 --- a/tools/freetype/freetype/src/cid/type1cid.c +++ b/drivers/freetype/freetype/src/cid/type1cid.c diff --git a/tools/freetype/freetype/src/gxvalid/Jamfile b/drivers/freetype/freetype/src/gxvalid/Jamfile index 88049a625d..88049a625d 100644 --- a/tools/freetype/freetype/src/gxvalid/Jamfile +++ b/drivers/freetype/freetype/src/gxvalid/Jamfile diff --git a/tools/freetype/freetype/src/gxvalid/README b/drivers/freetype/freetype/src/gxvalid/README index 28e535b0bc..28e535b0bc 100644 --- a/tools/freetype/freetype/src/gxvalid/README +++ b/drivers/freetype/freetype/src/gxvalid/README diff --git a/tools/freetype/freetype/src/gxvalid/gxvalid.c b/drivers/freetype/freetype/src/gxvalid/gxvalid.c index bc36e675d1..bc36e675d1 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvalid.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvalid.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvalid.h b/drivers/freetype/freetype/src/gxvalid/gxvalid.h index 27be9ecca8..27be9ecca8 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvalid.h +++ b/drivers/freetype/freetype/src/gxvalid/gxvalid.h diff --git a/tools/freetype/freetype/src/gxvalid/gxvbsln.c b/drivers/freetype/freetype/src/gxvalid/gxvbsln.c index 3d10031563..3d10031563 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvbsln.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvbsln.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvcommn.c b/drivers/freetype/freetype/src/gxvalid/gxvcommn.c index 2ac80be8c7..2ac80be8c7 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvcommn.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvcommn.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvcommn.h b/drivers/freetype/freetype/src/gxvalid/gxvcommn.h index 1ff87e4423..1ff87e4423 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvcommn.h +++ b/drivers/freetype/freetype/src/gxvalid/gxvcommn.h diff --git a/tools/freetype/freetype/src/gxvalid/gxverror.h b/drivers/freetype/freetype/src/gxvalid/gxverror.h index c573b72de7..c573b72de7 100644 --- a/tools/freetype/freetype/src/gxvalid/gxverror.h +++ b/drivers/freetype/freetype/src/gxvalid/gxverror.h diff --git a/tools/freetype/freetype/src/gxvalid/gxvfeat.c b/drivers/freetype/freetype/src/gxvalid/gxvfeat.c index 6f75650991..6f75650991 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvfeat.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvfeat.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvfeat.h b/drivers/freetype/freetype/src/gxvalid/gxvfeat.h index 049d23a0b9..049d23a0b9 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvfeat.h +++ b/drivers/freetype/freetype/src/gxvalid/gxvfeat.h diff --git a/tools/freetype/freetype/src/gxvalid/gxvfgen.c b/drivers/freetype/freetype/src/gxvalid/gxvfgen.c index e48778a2a1..e48778a2a1 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvfgen.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvfgen.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvjust.c b/drivers/freetype/freetype/src/gxvalid/gxvjust.c index 7816e0b7fb..7816e0b7fb 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvjust.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvjust.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvkern.c b/drivers/freetype/freetype/src/gxvalid/gxvkern.c index 557c5f1fe4..557c5f1fe4 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvkern.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvkern.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvlcar.c b/drivers/freetype/freetype/src/gxvalid/gxvlcar.c index f14fa5b131..f14fa5b131 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvlcar.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvlcar.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmod.c b/drivers/freetype/freetype/src/gxvalid/gxvmod.c index 278d47688a..278d47688a 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmod.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmod.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmod.h b/drivers/freetype/freetype/src/gxvalid/gxvmod.h index 22732ba992..22732ba992 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmod.h +++ b/drivers/freetype/freetype/src/gxvalid/gxvmod.h diff --git a/tools/freetype/freetype/src/gxvalid/gxvmort.c b/drivers/freetype/freetype/src/gxvalid/gxvmort.c index 5356e67ca7..5356e67ca7 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmort.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmort.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmort.h b/drivers/freetype/freetype/src/gxvalid/gxvmort.h index 1e5a1f5ab6..1e5a1f5ab6 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmort.h +++ b/drivers/freetype/freetype/src/gxvalid/gxvmort.h diff --git a/tools/freetype/freetype/src/gxvalid/gxvmort0.c b/drivers/freetype/freetype/src/gxvalid/gxvmort0.c index b136ceda27..b136ceda27 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmort0.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmort0.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmort1.c b/drivers/freetype/freetype/src/gxvalid/gxvmort1.c index 1c17a5d92a..1c17a5d92a 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmort1.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmort1.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmort2.c b/drivers/freetype/freetype/src/gxvalid/gxvmort2.c index 9e08fb792a..9e08fb792a 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmort2.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmort2.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmort4.c b/drivers/freetype/freetype/src/gxvalid/gxvmort4.c index 83470988c0..83470988c0 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmort4.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmort4.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmort5.c b/drivers/freetype/freetype/src/gxvalid/gxvmort5.c index 32cfb03639..32cfb03639 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmort5.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmort5.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmorx.c b/drivers/freetype/freetype/src/gxvalid/gxvmorx.c index 5ae04d3212..5ae04d3212 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmorx.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmorx.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmorx.h b/drivers/freetype/freetype/src/gxvalid/gxvmorx.h index 28c1a44f6f..28c1a44f6f 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmorx.h +++ b/drivers/freetype/freetype/src/gxvalid/gxvmorx.h diff --git a/tools/freetype/freetype/src/gxvalid/gxvmorx0.c b/drivers/freetype/freetype/src/gxvalid/gxvmorx0.c index 6a736c1775..6a736c1775 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmorx0.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmorx0.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmorx1.c b/drivers/freetype/freetype/src/gxvalid/gxvmorx1.c index ce0009a16f..ce0009a16f 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmorx1.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmorx1.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmorx2.c b/drivers/freetype/freetype/src/gxvalid/gxvmorx2.c index 9d2b0bc4af..9d2b0bc4af 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmorx2.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmorx2.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmorx4.c b/drivers/freetype/freetype/src/gxvalid/gxvmorx4.c index c0d2f78e39..c0d2f78e39 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmorx4.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmorx4.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvmorx5.c b/drivers/freetype/freetype/src/gxvalid/gxvmorx5.c index d8cf700797..d8cf700797 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvmorx5.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvmorx5.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvopbd.c b/drivers/freetype/freetype/src/gxvalid/gxvopbd.c index e125060946..e125060946 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvopbd.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvopbd.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvprop.c b/drivers/freetype/freetype/src/gxvalid/gxvprop.c index 0be21336f8..0be21336f8 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvprop.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvprop.c diff --git a/tools/freetype/freetype/src/gxvalid/gxvtrak.c b/drivers/freetype/freetype/src/gxvalid/gxvtrak.c index 11fbd7ccfb..11fbd7ccfb 100644 --- a/tools/freetype/freetype/src/gxvalid/gxvtrak.c +++ b/drivers/freetype/freetype/src/gxvalid/gxvtrak.c diff --git a/tools/freetype/freetype/src/gxvalid/module.mk b/drivers/freetype/freetype/src/gxvalid/module.mk index 9fd098e2c5..9fd098e2c5 100644 --- a/tools/freetype/freetype/src/gxvalid/module.mk +++ b/drivers/freetype/freetype/src/gxvalid/module.mk diff --git a/tools/freetype/freetype/src/gxvalid/rules.mk b/drivers/freetype/freetype/src/gxvalid/rules.mk index 57bc0823db..57bc0823db 100644 --- a/tools/freetype/freetype/src/gxvalid/rules.mk +++ b/drivers/freetype/freetype/src/gxvalid/rules.mk diff --git a/tools/freetype/freetype/src/otvalid/Jamfile b/drivers/freetype/freetype/src/otvalid/Jamfile index b457143de4..b457143de4 100644 --- a/tools/freetype/freetype/src/otvalid/Jamfile +++ b/drivers/freetype/freetype/src/otvalid/Jamfile diff --git a/tools/freetype/freetype/src/otvalid/module.mk b/drivers/freetype/freetype/src/otvalid/module.mk index 9cadde55e4..9cadde55e4 100644 --- a/tools/freetype/freetype/src/otvalid/module.mk +++ b/drivers/freetype/freetype/src/otvalid/module.mk diff --git a/tools/freetype/freetype/src/otvalid/otvalid.c b/drivers/freetype/freetype/src/otvalid/otvalid.c index d5c2b75abb..d5c2b75abb 100644 --- a/tools/freetype/freetype/src/otvalid/otvalid.c +++ b/drivers/freetype/freetype/src/otvalid/otvalid.c diff --git a/tools/freetype/freetype/src/otvalid/otvalid.h b/drivers/freetype/freetype/src/otvalid/otvalid.h index eb99b9cc48..eb99b9cc48 100644 --- a/tools/freetype/freetype/src/otvalid/otvalid.h +++ b/drivers/freetype/freetype/src/otvalid/otvalid.h diff --git a/tools/freetype/freetype/src/otvalid/otvbase.c b/drivers/freetype/freetype/src/otvalid/otvbase.c index d742d2dc95..d742d2dc95 100644 --- a/tools/freetype/freetype/src/otvalid/otvbase.c +++ b/drivers/freetype/freetype/src/otvalid/otvbase.c diff --git a/tools/freetype/freetype/src/otvalid/otvcommn.c b/drivers/freetype/freetype/src/otvalid/otvcommn.c index a4f885b51f..a4f885b51f 100644 --- a/tools/freetype/freetype/src/otvalid/otvcommn.c +++ b/drivers/freetype/freetype/src/otvalid/otvcommn.c diff --git a/tools/freetype/freetype/src/otvalid/otvcommn.h b/drivers/freetype/freetype/src/otvalid/otvcommn.h index 898887fc95..898887fc95 100644 --- a/tools/freetype/freetype/src/otvalid/otvcommn.h +++ b/drivers/freetype/freetype/src/otvalid/otvcommn.h diff --git a/tools/freetype/freetype/src/otvalid/otverror.h b/drivers/freetype/freetype/src/otvalid/otverror.h index b6f00c9dba..b6f00c9dba 100644 --- a/tools/freetype/freetype/src/otvalid/otverror.h +++ b/drivers/freetype/freetype/src/otvalid/otverror.h diff --git a/tools/freetype/freetype/src/otvalid/otvgdef.c b/drivers/freetype/freetype/src/otvalid/otvgdef.c index 3633ad0de1..3633ad0de1 100644 --- a/tools/freetype/freetype/src/otvalid/otvgdef.c +++ b/drivers/freetype/freetype/src/otvalid/otvgdef.c diff --git a/tools/freetype/freetype/src/otvalid/otvgpos.c b/drivers/freetype/freetype/src/otvalid/otvgpos.c index 49b46183a3..49b46183a3 100644 --- a/tools/freetype/freetype/src/otvalid/otvgpos.c +++ b/drivers/freetype/freetype/src/otvalid/otvgpos.c diff --git a/tools/freetype/freetype/src/otvalid/otvgpos.h b/drivers/freetype/freetype/src/otvalid/otvgpos.h index 14ca408261..14ca408261 100644 --- a/tools/freetype/freetype/src/otvalid/otvgpos.h +++ b/drivers/freetype/freetype/src/otvalid/otvgpos.h diff --git a/tools/freetype/freetype/src/otvalid/otvgsub.c b/drivers/freetype/freetype/src/otvalid/otvgsub.c index ed499d1e92..ed499d1e92 100644 --- a/tools/freetype/freetype/src/otvalid/otvgsub.c +++ b/drivers/freetype/freetype/src/otvalid/otvgsub.c diff --git a/tools/freetype/freetype/src/otvalid/otvjstf.c b/drivers/freetype/freetype/src/otvalid/otvjstf.c index a616a23432..a616a23432 100644 --- a/tools/freetype/freetype/src/otvalid/otvjstf.c +++ b/drivers/freetype/freetype/src/otvalid/otvjstf.c diff --git a/tools/freetype/freetype/src/otvalid/otvmath.c b/drivers/freetype/freetype/src/otvalid/otvmath.c index 96f841f2a9..96f841f2a9 100644 --- a/tools/freetype/freetype/src/otvalid/otvmath.c +++ b/drivers/freetype/freetype/src/otvalid/otvmath.c diff --git a/tools/freetype/freetype/src/otvalid/otvmod.c b/drivers/freetype/freetype/src/otvalid/otvmod.c index 37c6e869dd..37c6e869dd 100644 --- a/tools/freetype/freetype/src/otvalid/otvmod.c +++ b/drivers/freetype/freetype/src/otvalid/otvmod.c diff --git a/tools/freetype/freetype/src/otvalid/otvmod.h b/drivers/freetype/freetype/src/otvalid/otvmod.h index f7e1550787..f7e1550787 100644 --- a/tools/freetype/freetype/src/otvalid/otvmod.h +++ b/drivers/freetype/freetype/src/otvalid/otvmod.h diff --git a/tools/freetype/freetype/src/otvalid/rules.mk b/drivers/freetype/freetype/src/otvalid/rules.mk index 53bd41e5e7..53bd41e5e7 100644 --- a/tools/freetype/freetype/src/otvalid/rules.mk +++ b/drivers/freetype/freetype/src/otvalid/rules.mk diff --git a/tools/freetype/freetype/src/pcf/Jamfile b/drivers/freetype/freetype/src/pcf/Jamfile index 752fcac2a1..752fcac2a1 100644 --- a/tools/freetype/freetype/src/pcf/Jamfile +++ b/drivers/freetype/freetype/src/pcf/Jamfile diff --git a/tools/freetype/freetype/src/pcf/README b/drivers/freetype/freetype/src/pcf/README index 10eff15fbe..10eff15fbe 100644 --- a/tools/freetype/freetype/src/pcf/README +++ b/drivers/freetype/freetype/src/pcf/README diff --git a/tools/freetype/freetype/src/pcf/module.mk b/drivers/freetype/freetype/src/pcf/module.mk index df383ff0fb..df383ff0fb 100644 --- a/tools/freetype/freetype/src/pcf/module.mk +++ b/drivers/freetype/freetype/src/pcf/module.mk diff --git a/tools/freetype/freetype/src/pcf/pcf.c b/drivers/freetype/freetype/src/pcf/pcf.c index 11d5b7b2a0..11d5b7b2a0 100644 --- a/tools/freetype/freetype/src/pcf/pcf.c +++ b/drivers/freetype/freetype/src/pcf/pcf.c diff --git a/tools/freetype/freetype/src/pcf/pcf.h b/drivers/freetype/freetype/src/pcf/pcf.h index af0ffc3378..af0ffc3378 100644 --- a/tools/freetype/freetype/src/pcf/pcf.h +++ b/drivers/freetype/freetype/src/pcf/pcf.h diff --git a/tools/freetype/freetype/src/pcf/pcfdrivr.c b/drivers/freetype/freetype/src/pcf/pcfdrivr.c index df25a645a0..df25a645a0 100644 --- a/tools/freetype/freetype/src/pcf/pcfdrivr.c +++ b/drivers/freetype/freetype/src/pcf/pcfdrivr.c diff --git a/tools/freetype/freetype/src/pcf/pcfdrivr.h b/drivers/freetype/freetype/src/pcf/pcfdrivr.h index 54614951b5..54614951b5 100644 --- a/tools/freetype/freetype/src/pcf/pcfdrivr.h +++ b/drivers/freetype/freetype/src/pcf/pcfdrivr.h diff --git a/tools/freetype/freetype/src/pcf/pcferror.h b/drivers/freetype/freetype/src/pcf/pcferror.h index e51fff8ea6..e51fff8ea6 100644 --- a/tools/freetype/freetype/src/pcf/pcferror.h +++ b/drivers/freetype/freetype/src/pcf/pcferror.h diff --git a/tools/freetype/freetype/src/pcf/pcfread.c b/drivers/freetype/freetype/src/pcf/pcfread.c index 3c1bb7dfa2..3c1bb7dfa2 100644 --- a/tools/freetype/freetype/src/pcf/pcfread.c +++ b/drivers/freetype/freetype/src/pcf/pcfread.c diff --git a/tools/freetype/freetype/src/pcf/pcfread.h b/drivers/freetype/freetype/src/pcf/pcfread.h index c9524f1346..c9524f1346 100644 --- a/tools/freetype/freetype/src/pcf/pcfread.h +++ b/drivers/freetype/freetype/src/pcf/pcfread.h diff --git a/tools/freetype/freetype/src/pcf/pcfutil.c b/drivers/freetype/freetype/src/pcf/pcfutil.c index b91274f935..b91274f935 100644 --- a/tools/freetype/freetype/src/pcf/pcfutil.c +++ b/drivers/freetype/freetype/src/pcf/pcfutil.c diff --git a/tools/freetype/freetype/src/pcf/pcfutil.h b/drivers/freetype/freetype/src/pcf/pcfutil.h index ce10fb541d..ce10fb541d 100644 --- a/tools/freetype/freetype/src/pcf/pcfutil.h +++ b/drivers/freetype/freetype/src/pcf/pcfutil.h diff --git a/tools/freetype/freetype/src/pcf/rules.mk b/drivers/freetype/freetype/src/pcf/rules.mk index 78641528fa..78641528fa 100644 --- a/tools/freetype/freetype/src/pcf/rules.mk +++ b/drivers/freetype/freetype/src/pcf/rules.mk diff --git a/tools/freetype/freetype/src/pfr/Jamfile b/drivers/freetype/freetype/src/pfr/Jamfile index 9e2f2b8d05..9e2f2b8d05 100644 --- a/tools/freetype/freetype/src/pfr/Jamfile +++ b/drivers/freetype/freetype/src/pfr/Jamfile diff --git a/tools/freetype/freetype/src/pfr/module.mk b/drivers/freetype/freetype/src/pfr/module.mk index 8d1d28a9d2..8d1d28a9d2 100644 --- a/tools/freetype/freetype/src/pfr/module.mk +++ b/drivers/freetype/freetype/src/pfr/module.mk diff --git a/tools/freetype/freetype/src/pfr/pfr.c b/drivers/freetype/freetype/src/pfr/pfr.c index eb2c4edb7e..eb2c4edb7e 100644 --- a/tools/freetype/freetype/src/pfr/pfr.c +++ b/drivers/freetype/freetype/src/pfr/pfr.c diff --git a/tools/freetype/freetype/src/pfr/pfrcmap.c b/drivers/freetype/freetype/src/pfr/pfrcmap.c index 740c433d66..740c433d66 100644 --- a/tools/freetype/freetype/src/pfr/pfrcmap.c +++ b/drivers/freetype/freetype/src/pfr/pfrcmap.c diff --git a/tools/freetype/freetype/src/pfr/pfrcmap.h b/drivers/freetype/freetype/src/pfr/pfrcmap.h index a626953054..a626953054 100644 --- a/tools/freetype/freetype/src/pfr/pfrcmap.h +++ b/drivers/freetype/freetype/src/pfr/pfrcmap.h diff --git a/tools/freetype/freetype/src/pfr/pfrdrivr.c b/drivers/freetype/freetype/src/pfr/pfrdrivr.c index 4c43947bf4..4c43947bf4 100644 --- a/tools/freetype/freetype/src/pfr/pfrdrivr.c +++ b/drivers/freetype/freetype/src/pfr/pfrdrivr.c diff --git a/tools/freetype/freetype/src/pfr/pfrdrivr.h b/drivers/freetype/freetype/src/pfr/pfrdrivr.h index 75f86c5cdd..75f86c5cdd 100644 --- a/tools/freetype/freetype/src/pfr/pfrdrivr.h +++ b/drivers/freetype/freetype/src/pfr/pfrdrivr.h diff --git a/tools/freetype/freetype/src/pfr/pfrerror.h b/drivers/freetype/freetype/src/pfr/pfrerror.h index 94dc8c5e1c..94dc8c5e1c 100644 --- a/tools/freetype/freetype/src/pfr/pfrerror.h +++ b/drivers/freetype/freetype/src/pfr/pfrerror.h diff --git a/tools/freetype/freetype/src/pfr/pfrgload.c b/drivers/freetype/freetype/src/pfr/pfrgload.c index 88b4d66a13..88b4d66a13 100644 --- a/tools/freetype/freetype/src/pfr/pfrgload.c +++ b/drivers/freetype/freetype/src/pfr/pfrgload.c diff --git a/tools/freetype/freetype/src/pfr/pfrgload.h b/drivers/freetype/freetype/src/pfr/pfrgload.h index 7cc7a8702a..7cc7a8702a 100644 --- a/tools/freetype/freetype/src/pfr/pfrgload.h +++ b/drivers/freetype/freetype/src/pfr/pfrgload.h diff --git a/tools/freetype/freetype/src/pfr/pfrload.c b/drivers/freetype/freetype/src/pfr/pfrload.c index c19fceb1ee..c19fceb1ee 100644 --- a/tools/freetype/freetype/src/pfr/pfrload.c +++ b/drivers/freetype/freetype/src/pfr/pfrload.c diff --git a/tools/freetype/freetype/src/pfr/pfrload.h b/drivers/freetype/freetype/src/pfr/pfrload.h index ed010715d1..ed010715d1 100644 --- a/tools/freetype/freetype/src/pfr/pfrload.h +++ b/drivers/freetype/freetype/src/pfr/pfrload.h diff --git a/tools/freetype/freetype/src/pfr/pfrobjs.c b/drivers/freetype/freetype/src/pfr/pfrobjs.c index 75fc4c3f1f..75fc4c3f1f 100644 --- a/tools/freetype/freetype/src/pfr/pfrobjs.c +++ b/drivers/freetype/freetype/src/pfr/pfrobjs.c diff --git a/tools/freetype/freetype/src/pfr/pfrobjs.h b/drivers/freetype/freetype/src/pfr/pfrobjs.h index f6aa8b44cc..f6aa8b44cc 100644 --- a/tools/freetype/freetype/src/pfr/pfrobjs.h +++ b/drivers/freetype/freetype/src/pfr/pfrobjs.h diff --git a/tools/freetype/freetype/src/pfr/pfrsbit.c b/drivers/freetype/freetype/src/pfr/pfrsbit.c index 2da1500707..2da1500707 100644 --- a/tools/freetype/freetype/src/pfr/pfrsbit.c +++ b/drivers/freetype/freetype/src/pfr/pfrsbit.c diff --git a/tools/freetype/freetype/src/pfr/pfrsbit.h b/drivers/freetype/freetype/src/pfr/pfrsbit.h index 015e9e6dad..015e9e6dad 100644 --- a/tools/freetype/freetype/src/pfr/pfrsbit.h +++ b/drivers/freetype/freetype/src/pfr/pfrsbit.h diff --git a/tools/freetype/freetype/src/pfr/pfrtypes.h b/drivers/freetype/freetype/src/pfr/pfrtypes.h index 918310814c..918310814c 100644 --- a/tools/freetype/freetype/src/pfr/pfrtypes.h +++ b/drivers/freetype/freetype/src/pfr/pfrtypes.h diff --git a/tools/freetype/freetype/src/pfr/rules.mk b/drivers/freetype/freetype/src/pfr/rules.mk index 60b96c7415..60b96c7415 100644 --- a/tools/freetype/freetype/src/pfr/rules.mk +++ b/drivers/freetype/freetype/src/pfr/rules.mk diff --git a/tools/freetype/freetype/src/psaux/Jamfile b/drivers/freetype/freetype/src/psaux/Jamfile index faeded9044..faeded9044 100644 --- a/tools/freetype/freetype/src/psaux/Jamfile +++ b/drivers/freetype/freetype/src/psaux/Jamfile diff --git a/tools/freetype/freetype/src/psaux/afmparse.c b/drivers/freetype/freetype/src/psaux/afmparse.c index 6a40e110dc..6a40e110dc 100644 --- a/tools/freetype/freetype/src/psaux/afmparse.c +++ b/drivers/freetype/freetype/src/psaux/afmparse.c diff --git a/tools/freetype/freetype/src/psaux/afmparse.h b/drivers/freetype/freetype/src/psaux/afmparse.h index 35d96046c5..35d96046c5 100644 --- a/tools/freetype/freetype/src/psaux/afmparse.h +++ b/drivers/freetype/freetype/src/psaux/afmparse.h diff --git a/tools/freetype/freetype/src/psaux/module.mk b/drivers/freetype/freetype/src/psaux/module.mk index 42bf6f5199..42bf6f5199 100644 --- a/tools/freetype/freetype/src/psaux/module.mk +++ b/drivers/freetype/freetype/src/psaux/module.mk diff --git a/tools/freetype/freetype/src/psaux/psaux.c b/drivers/freetype/freetype/src/psaux/psaux.c index a4b9c5c6e4..a4b9c5c6e4 100644 --- a/tools/freetype/freetype/src/psaux/psaux.c +++ b/drivers/freetype/freetype/src/psaux/psaux.c diff --git a/tools/freetype/freetype/src/psaux/psauxerr.h b/drivers/freetype/freetype/src/psaux/psauxerr.h index d52375f8cb..d52375f8cb 100644 --- a/tools/freetype/freetype/src/psaux/psauxerr.h +++ b/drivers/freetype/freetype/src/psaux/psauxerr.h diff --git a/tools/freetype/freetype/src/psaux/psauxmod.c b/drivers/freetype/freetype/src/psaux/psauxmod.c index 4b1249d49b..4b1249d49b 100644 --- a/tools/freetype/freetype/src/psaux/psauxmod.c +++ b/drivers/freetype/freetype/src/psaux/psauxmod.c diff --git a/tools/freetype/freetype/src/psaux/psauxmod.h b/drivers/freetype/freetype/src/psaux/psauxmod.h index 1217236924..1217236924 100644 --- a/tools/freetype/freetype/src/psaux/psauxmod.h +++ b/drivers/freetype/freetype/src/psaux/psauxmod.h diff --git a/tools/freetype/freetype/src/psaux/psconv.c b/drivers/freetype/freetype/src/psaux/psconv.c index d0d8861c22..d0d8861c22 100644 --- a/tools/freetype/freetype/src/psaux/psconv.c +++ b/drivers/freetype/freetype/src/psaux/psconv.c diff --git a/tools/freetype/freetype/src/psaux/psconv.h b/drivers/freetype/freetype/src/psaux/psconv.h index d91c762210..d91c762210 100644 --- a/tools/freetype/freetype/src/psaux/psconv.h +++ b/drivers/freetype/freetype/src/psaux/psconv.h diff --git a/tools/freetype/freetype/src/psaux/psobjs.c b/drivers/freetype/freetype/src/psaux/psobjs.c index dd976d3a96..dd976d3a96 100644 --- a/tools/freetype/freetype/src/psaux/psobjs.c +++ b/drivers/freetype/freetype/src/psaux/psobjs.c diff --git a/tools/freetype/freetype/src/psaux/psobjs.h b/drivers/freetype/freetype/src/psaux/psobjs.h index e380c60dab..e380c60dab 100644 --- a/tools/freetype/freetype/src/psaux/psobjs.h +++ b/drivers/freetype/freetype/src/psaux/psobjs.h diff --git a/tools/freetype/freetype/src/psaux/rules.mk b/drivers/freetype/freetype/src/psaux/rules.mk index 7a1be37b69..7a1be37b69 100644 --- a/tools/freetype/freetype/src/psaux/rules.mk +++ b/drivers/freetype/freetype/src/psaux/rules.mk diff --git a/tools/freetype/freetype/src/psaux/t1cmap.c b/drivers/freetype/freetype/src/psaux/t1cmap.c index 9e5bd34ffe..9e5bd34ffe 100644 --- a/tools/freetype/freetype/src/psaux/t1cmap.c +++ b/drivers/freetype/freetype/src/psaux/t1cmap.c diff --git a/tools/freetype/freetype/src/psaux/t1cmap.h b/drivers/freetype/freetype/src/psaux/t1cmap.h index 7ae65d2fa1..7ae65d2fa1 100644 --- a/tools/freetype/freetype/src/psaux/t1cmap.h +++ b/drivers/freetype/freetype/src/psaux/t1cmap.h diff --git a/tools/freetype/freetype/src/psaux/t1decode.c b/drivers/freetype/freetype/src/psaux/t1decode.c index 6ce370bfaa..6ce370bfaa 100644 --- a/tools/freetype/freetype/src/psaux/t1decode.c +++ b/drivers/freetype/freetype/src/psaux/t1decode.c diff --git a/tools/freetype/freetype/src/psaux/t1decode.h b/drivers/freetype/freetype/src/psaux/t1decode.h index 00728db501..00728db501 100644 --- a/tools/freetype/freetype/src/psaux/t1decode.h +++ b/drivers/freetype/freetype/src/psaux/t1decode.h diff --git a/tools/freetype/freetype/src/pshinter/Jamfile b/drivers/freetype/freetype/src/pshinter/Jamfile index 779f1b0b82..779f1b0b82 100644 --- a/tools/freetype/freetype/src/pshinter/Jamfile +++ b/drivers/freetype/freetype/src/pshinter/Jamfile diff --git a/tools/freetype/freetype/src/pshinter/module.mk b/drivers/freetype/freetype/src/pshinter/module.mk index ed24eb7fa8..ed24eb7fa8 100644 --- a/tools/freetype/freetype/src/pshinter/module.mk +++ b/drivers/freetype/freetype/src/pshinter/module.mk diff --git a/tools/freetype/freetype/src/pshinter/pshalgo.c b/drivers/freetype/freetype/src/pshinter/pshalgo.c index 343472ddb3..343472ddb3 100644 --- a/tools/freetype/freetype/src/pshinter/pshalgo.c +++ b/drivers/freetype/freetype/src/pshinter/pshalgo.c diff --git a/tools/freetype/freetype/src/pshinter/pshalgo.h b/drivers/freetype/freetype/src/pshinter/pshalgo.h index c70f31ea94..c70f31ea94 100644 --- a/tools/freetype/freetype/src/pshinter/pshalgo.h +++ b/drivers/freetype/freetype/src/pshinter/pshalgo.h diff --git a/tools/freetype/freetype/src/pshinter/pshglob.c b/drivers/freetype/freetype/src/pshinter/pshglob.c index 9285efc9e1..9285efc9e1 100644 --- a/tools/freetype/freetype/src/pshinter/pshglob.c +++ b/drivers/freetype/freetype/src/pshinter/pshglob.c diff --git a/tools/freetype/freetype/src/pshinter/pshglob.h b/drivers/freetype/freetype/src/pshinter/pshglob.h index c511626157..c511626157 100644 --- a/tools/freetype/freetype/src/pshinter/pshglob.h +++ b/drivers/freetype/freetype/src/pshinter/pshglob.h diff --git a/tools/freetype/freetype/src/pshinter/pshinter.c b/drivers/freetype/freetype/src/pshinter/pshinter.c index b35a2a91c5..b35a2a91c5 100644 --- a/tools/freetype/freetype/src/pshinter/pshinter.c +++ b/drivers/freetype/freetype/src/pshinter/pshinter.c diff --git a/tools/freetype/freetype/src/pshinter/pshmod.c b/drivers/freetype/freetype/src/pshinter/pshmod.c index cdeaca18c9..cdeaca18c9 100644 --- a/tools/freetype/freetype/src/pshinter/pshmod.c +++ b/drivers/freetype/freetype/src/pshinter/pshmod.c diff --git a/tools/freetype/freetype/src/pshinter/pshmod.h b/drivers/freetype/freetype/src/pshinter/pshmod.h index 0ae7e96f54..0ae7e96f54 100644 --- a/tools/freetype/freetype/src/pshinter/pshmod.h +++ b/drivers/freetype/freetype/src/pshinter/pshmod.h diff --git a/tools/freetype/freetype/src/pshinter/pshnterr.h b/drivers/freetype/freetype/src/pshinter/pshnterr.h index 7cc180f0ca..7cc180f0ca 100644 --- a/tools/freetype/freetype/src/pshinter/pshnterr.h +++ b/drivers/freetype/freetype/src/pshinter/pshnterr.h diff --git a/tools/freetype/freetype/src/pshinter/pshpic.c b/drivers/freetype/freetype/src/pshinter/pshpic.c index 568f4ac4b0..568f4ac4b0 100644 --- a/tools/freetype/freetype/src/pshinter/pshpic.c +++ b/drivers/freetype/freetype/src/pshinter/pshpic.c diff --git a/tools/freetype/freetype/src/pshinter/pshpic.h b/drivers/freetype/freetype/src/pshinter/pshpic.h index b46f853113..b46f853113 100644 --- a/tools/freetype/freetype/src/pshinter/pshpic.h +++ b/drivers/freetype/freetype/src/pshinter/pshpic.h diff --git a/tools/freetype/freetype/src/pshinter/pshrec.c b/drivers/freetype/freetype/src/pshinter/pshrec.c index cd66ea869a..cd66ea869a 100644 --- a/tools/freetype/freetype/src/pshinter/pshrec.c +++ b/drivers/freetype/freetype/src/pshinter/pshrec.c diff --git a/tools/freetype/freetype/src/pshinter/pshrec.h b/drivers/freetype/freetype/src/pshinter/pshrec.h index dcb3197f94..dcb3197f94 100644 --- a/tools/freetype/freetype/src/pshinter/pshrec.h +++ b/drivers/freetype/freetype/src/pshinter/pshrec.h diff --git a/tools/freetype/freetype/src/pshinter/rules.mk b/drivers/freetype/freetype/src/pshinter/rules.mk index 888ece1058..888ece1058 100644 --- a/tools/freetype/freetype/src/pshinter/rules.mk +++ b/drivers/freetype/freetype/src/pshinter/rules.mk diff --git a/tools/freetype/freetype/src/psnames/Jamfile b/drivers/freetype/freetype/src/psnames/Jamfile index 06c0dda66f..06c0dda66f 100644 --- a/tools/freetype/freetype/src/psnames/Jamfile +++ b/drivers/freetype/freetype/src/psnames/Jamfile diff --git a/tools/freetype/freetype/src/psnames/module.mk b/drivers/freetype/freetype/src/psnames/module.mk index a6e908257c..a6e908257c 100644 --- a/tools/freetype/freetype/src/psnames/module.mk +++ b/drivers/freetype/freetype/src/psnames/module.mk diff --git a/tools/freetype/freetype/src/psnames/psmodule.c b/drivers/freetype/freetype/src/psnames/psmodule.c index 0a5bcb7d2a..0a5bcb7d2a 100644 --- a/tools/freetype/freetype/src/psnames/psmodule.c +++ b/drivers/freetype/freetype/src/psnames/psmodule.c diff --git a/tools/freetype/freetype/src/psnames/psmodule.h b/drivers/freetype/freetype/src/psnames/psmodule.h index 28fa14807c..28fa14807c 100644 --- a/tools/freetype/freetype/src/psnames/psmodule.h +++ b/drivers/freetype/freetype/src/psnames/psmodule.h diff --git a/tools/freetype/freetype/src/psnames/psnamerr.h b/drivers/freetype/freetype/src/psnames/psnamerr.h index acda7f967e..acda7f967e 100644 --- a/tools/freetype/freetype/src/psnames/psnamerr.h +++ b/drivers/freetype/freetype/src/psnames/psnamerr.h diff --git a/tools/freetype/freetype/src/psnames/psnames.c b/drivers/freetype/freetype/src/psnames/psnames.c index 1ede225dc9..1ede225dc9 100644 --- a/tools/freetype/freetype/src/psnames/psnames.c +++ b/drivers/freetype/freetype/src/psnames/psnames.c diff --git a/tools/freetype/freetype/src/psnames/pspic.c b/drivers/freetype/freetype/src/psnames/pspic.c index 3820f65a74..3820f65a74 100644 --- a/tools/freetype/freetype/src/psnames/pspic.c +++ b/drivers/freetype/freetype/src/psnames/pspic.c diff --git a/tools/freetype/freetype/src/psnames/pspic.h b/drivers/freetype/freetype/src/psnames/pspic.h index 6ff002c603..6ff002c603 100644 --- a/tools/freetype/freetype/src/psnames/pspic.h +++ b/drivers/freetype/freetype/src/psnames/pspic.h diff --git a/tools/freetype/freetype/src/psnames/pstables.h b/drivers/freetype/freetype/src/psnames/pstables.h index 0a6637f985..0a6637f985 100644 --- a/tools/freetype/freetype/src/psnames/pstables.h +++ b/drivers/freetype/freetype/src/psnames/pstables.h diff --git a/tools/freetype/freetype/src/psnames/rules.mk b/drivers/freetype/freetype/src/psnames/rules.mk index 4cd39a8ccf..4cd39a8ccf 100644 --- a/tools/freetype/freetype/src/psnames/rules.mk +++ b/drivers/freetype/freetype/src/psnames/rules.mk diff --git a/tools/freetype/freetype/src/raster/Jamfile b/drivers/freetype/freetype/src/raster/Jamfile index 4f60e87c78..4f60e87c78 100644 --- a/tools/freetype/freetype/src/raster/Jamfile +++ b/drivers/freetype/freetype/src/raster/Jamfile diff --git a/tools/freetype/freetype/src/raster/ftmisc.h b/drivers/freetype/freetype/src/raster/ftmisc.h index 703155a429..703155a429 100644 --- a/tools/freetype/freetype/src/raster/ftmisc.h +++ b/drivers/freetype/freetype/src/raster/ftmisc.h diff --git a/tools/freetype/freetype/src/raster/ftraster.c b/drivers/freetype/freetype/src/raster/ftraster.c index bbd503d97d..bbd503d97d 100644 --- a/tools/freetype/freetype/src/raster/ftraster.c +++ b/drivers/freetype/freetype/src/raster/ftraster.c diff --git a/tools/freetype/freetype/src/raster/ftraster.h b/drivers/freetype/freetype/src/raster/ftraster.h index 80fe46deba..80fe46deba 100644 --- a/tools/freetype/freetype/src/raster/ftraster.h +++ b/drivers/freetype/freetype/src/raster/ftraster.h diff --git a/tools/freetype/freetype/src/raster/ftrend1.c b/drivers/freetype/freetype/src/raster/ftrend1.c index aa7f6d5664..aa7f6d5664 100644 --- a/tools/freetype/freetype/src/raster/ftrend1.c +++ b/drivers/freetype/freetype/src/raster/ftrend1.c diff --git a/tools/freetype/freetype/src/raster/ftrend1.h b/drivers/freetype/freetype/src/raster/ftrend1.h index 4cf128622a..4cf128622a 100644 --- a/tools/freetype/freetype/src/raster/ftrend1.h +++ b/drivers/freetype/freetype/src/raster/ftrend1.h diff --git a/tools/freetype/freetype/src/raster/module.mk b/drivers/freetype/freetype/src/raster/module.mk index cbff5df96e..cbff5df96e 100644 --- a/tools/freetype/freetype/src/raster/module.mk +++ b/drivers/freetype/freetype/src/raster/module.mk diff --git a/tools/freetype/freetype/src/raster/raster.c b/drivers/freetype/freetype/src/raster/raster.c index 1202a116cd..1202a116cd 100644 --- a/tools/freetype/freetype/src/raster/raster.c +++ b/drivers/freetype/freetype/src/raster/raster.c diff --git a/tools/freetype/freetype/src/raster/rasterrs.h b/drivers/freetype/freetype/src/raster/rasterrs.h index ab85c002a3..ab85c002a3 100644 --- a/tools/freetype/freetype/src/raster/rasterrs.h +++ b/drivers/freetype/freetype/src/raster/rasterrs.h diff --git a/tools/freetype/freetype/src/raster/rastpic.c b/drivers/freetype/freetype/src/raster/rastpic.c index 5e9f7cc9c4..5e9f7cc9c4 100644 --- a/tools/freetype/freetype/src/raster/rastpic.c +++ b/drivers/freetype/freetype/src/raster/rastpic.c diff --git a/tools/freetype/freetype/src/raster/rastpic.h b/drivers/freetype/freetype/src/raster/rastpic.h index e0ddba624e..e0ddba624e 100644 --- a/tools/freetype/freetype/src/raster/rastpic.h +++ b/drivers/freetype/freetype/src/raster/rastpic.h diff --git a/tools/freetype/freetype/src/raster/rules.mk b/drivers/freetype/freetype/src/raster/rules.mk index 0e0b5e4ebd..0e0b5e4ebd 100644 --- a/tools/freetype/freetype/src/raster/rules.mk +++ b/drivers/freetype/freetype/src/raster/rules.mk diff --git a/tools/freetype/freetype/src/sfnt/Jamfile b/drivers/freetype/freetype/src/sfnt/Jamfile index cb20b1b04b..cb20b1b04b 100644 --- a/tools/freetype/freetype/src/sfnt/Jamfile +++ b/drivers/freetype/freetype/src/sfnt/Jamfile diff --git a/tools/freetype/freetype/src/sfnt/module.mk b/drivers/freetype/freetype/src/sfnt/module.mk index 95fd6a3143..95fd6a3143 100644 --- a/tools/freetype/freetype/src/sfnt/module.mk +++ b/drivers/freetype/freetype/src/sfnt/module.mk diff --git a/tools/freetype/freetype/src/sfnt/pngshim.c b/drivers/freetype/freetype/src/sfnt/pngshim.c index 408f879c34..408f879c34 100644 --- a/tools/freetype/freetype/src/sfnt/pngshim.c +++ b/drivers/freetype/freetype/src/sfnt/pngshim.c diff --git a/tools/freetype/freetype/src/sfnt/pngshim.h b/drivers/freetype/freetype/src/sfnt/pngshim.h index 8a2e69ccf9..8a2e69ccf9 100644 --- a/tools/freetype/freetype/src/sfnt/pngshim.h +++ b/drivers/freetype/freetype/src/sfnt/pngshim.h diff --git a/tools/freetype/freetype/src/sfnt/rules.mk b/drivers/freetype/freetype/src/sfnt/rules.mk index a6c956ab65..a6c956ab65 100644 --- a/tools/freetype/freetype/src/sfnt/rules.mk +++ b/drivers/freetype/freetype/src/sfnt/rules.mk diff --git a/tools/freetype/freetype/src/sfnt/sfdriver.c b/drivers/freetype/freetype/src/sfnt/sfdriver.c index a368b8caea..a368b8caea 100644 --- a/tools/freetype/freetype/src/sfnt/sfdriver.c +++ b/drivers/freetype/freetype/src/sfnt/sfdriver.c diff --git a/tools/freetype/freetype/src/sfnt/sfdriver.h b/drivers/freetype/freetype/src/sfnt/sfdriver.h index 5de25d51ca..5de25d51ca 100644 --- a/tools/freetype/freetype/src/sfnt/sfdriver.h +++ b/drivers/freetype/freetype/src/sfnt/sfdriver.h diff --git a/tools/freetype/freetype/src/sfnt/sferrors.h b/drivers/freetype/freetype/src/sfnt/sferrors.h index e981e1d26f..e981e1d26f 100644 --- a/tools/freetype/freetype/src/sfnt/sferrors.h +++ b/drivers/freetype/freetype/src/sfnt/sferrors.h diff --git a/tools/freetype/freetype/src/sfnt/sfnt.c b/drivers/freetype/freetype/src/sfnt/sfnt.c index d62ed4e0b5..d62ed4e0b5 100644 --- a/tools/freetype/freetype/src/sfnt/sfnt.c +++ b/drivers/freetype/freetype/src/sfnt/sfnt.c diff --git a/tools/freetype/freetype/src/sfnt/sfntpic.c b/drivers/freetype/freetype/src/sfnt/sfntpic.c index b3fb24b3f0..b3fb24b3f0 100644 --- a/tools/freetype/freetype/src/sfnt/sfntpic.c +++ b/drivers/freetype/freetype/src/sfnt/sfntpic.c diff --git a/tools/freetype/freetype/src/sfnt/sfntpic.h b/drivers/freetype/freetype/src/sfnt/sfntpic.h index b09a9141e0..b09a9141e0 100644 --- a/tools/freetype/freetype/src/sfnt/sfntpic.h +++ b/drivers/freetype/freetype/src/sfnt/sfntpic.h diff --git a/tools/freetype/freetype/src/sfnt/sfobjs.c b/drivers/freetype/freetype/src/sfnt/sfobjs.c index f975e71c3b..f975e71c3b 100644 --- a/tools/freetype/freetype/src/sfnt/sfobjs.c +++ b/drivers/freetype/freetype/src/sfnt/sfobjs.c diff --git a/tools/freetype/freetype/src/sfnt/sfobjs.h b/drivers/freetype/freetype/src/sfnt/sfobjs.h index 6241c93b39..6241c93b39 100644 --- a/tools/freetype/freetype/src/sfnt/sfobjs.h +++ b/drivers/freetype/freetype/src/sfnt/sfobjs.h diff --git a/tools/freetype/freetype/src/sfnt/ttbdf.c b/drivers/freetype/freetype/src/sfnt/ttbdf.c index 9401dae5f8..9401dae5f8 100644 --- a/tools/freetype/freetype/src/sfnt/ttbdf.c +++ b/drivers/freetype/freetype/src/sfnt/ttbdf.c diff --git a/tools/freetype/freetype/src/sfnt/ttbdf.h b/drivers/freetype/freetype/src/sfnt/ttbdf.h index 48a10d6e9b..48a10d6e9b 100644 --- a/tools/freetype/freetype/src/sfnt/ttbdf.h +++ b/drivers/freetype/freetype/src/sfnt/ttbdf.h diff --git a/tools/freetype/freetype/src/sfnt/ttcmap.c b/drivers/freetype/freetype/src/sfnt/ttcmap.c index 1507202ea8..1507202ea8 100644 --- a/tools/freetype/freetype/src/sfnt/ttcmap.c +++ b/drivers/freetype/freetype/src/sfnt/ttcmap.c diff --git a/tools/freetype/freetype/src/sfnt/ttcmap.h b/drivers/freetype/freetype/src/sfnt/ttcmap.h index 0fde1676bf..0fde1676bf 100644 --- a/tools/freetype/freetype/src/sfnt/ttcmap.h +++ b/drivers/freetype/freetype/src/sfnt/ttcmap.h diff --git a/tools/freetype/freetype/src/sfnt/ttcmapc.h b/drivers/freetype/freetype/src/sfnt/ttcmapc.h index 2ea204309c..2ea204309c 100644 --- a/tools/freetype/freetype/src/sfnt/ttcmapc.h +++ b/drivers/freetype/freetype/src/sfnt/ttcmapc.h diff --git a/tools/freetype/freetype/src/sfnt/ttkern.c b/drivers/freetype/freetype/src/sfnt/ttkern.c index 60ee546d79..60ee546d79 100644 --- a/tools/freetype/freetype/src/sfnt/ttkern.c +++ b/drivers/freetype/freetype/src/sfnt/ttkern.c diff --git a/tools/freetype/freetype/src/sfnt/ttkern.h b/drivers/freetype/freetype/src/sfnt/ttkern.h index df1da9b273..df1da9b273 100644 --- a/tools/freetype/freetype/src/sfnt/ttkern.h +++ b/drivers/freetype/freetype/src/sfnt/ttkern.h diff --git a/tools/freetype/freetype/src/sfnt/ttload.c b/drivers/freetype/freetype/src/sfnt/ttload.c index fbe70f7974..fbe70f7974 100644 --- a/tools/freetype/freetype/src/sfnt/ttload.c +++ b/drivers/freetype/freetype/src/sfnt/ttload.c diff --git a/tools/freetype/freetype/src/sfnt/ttload.h b/drivers/freetype/freetype/src/sfnt/ttload.h index 49a1aee163..49a1aee163 100644 --- a/tools/freetype/freetype/src/sfnt/ttload.h +++ b/drivers/freetype/freetype/src/sfnt/ttload.h diff --git a/tools/freetype/freetype/src/sfnt/ttmtx.c b/drivers/freetype/freetype/src/sfnt/ttmtx.c index 371a9edabe..371a9edabe 100644 --- a/tools/freetype/freetype/src/sfnt/ttmtx.c +++ b/drivers/freetype/freetype/src/sfnt/ttmtx.c diff --git a/tools/freetype/freetype/src/sfnt/ttmtx.h b/drivers/freetype/freetype/src/sfnt/ttmtx.h index 8b91a113d8..8b91a113d8 100644 --- a/tools/freetype/freetype/src/sfnt/ttmtx.h +++ b/drivers/freetype/freetype/src/sfnt/ttmtx.h diff --git a/tools/freetype/freetype/src/sfnt/ttpost.c b/drivers/freetype/freetype/src/sfnt/ttpost.c index 47a85c0c9f..47a85c0c9f 100644 --- a/tools/freetype/freetype/src/sfnt/ttpost.c +++ b/drivers/freetype/freetype/src/sfnt/ttpost.c diff --git a/tools/freetype/freetype/src/sfnt/ttpost.h b/drivers/freetype/freetype/src/sfnt/ttpost.h index 6f06d75a71..6f06d75a71 100644 --- a/tools/freetype/freetype/src/sfnt/ttpost.h +++ b/drivers/freetype/freetype/src/sfnt/ttpost.h diff --git a/tools/freetype/freetype/src/sfnt/ttsbit.c b/drivers/freetype/freetype/src/sfnt/ttsbit.c index cd3e5a4a00..cd3e5a4a00 100644 --- a/tools/freetype/freetype/src/sfnt/ttsbit.c +++ b/drivers/freetype/freetype/src/sfnt/ttsbit.c diff --git a/tools/freetype/freetype/src/sfnt/ttsbit.h b/drivers/freetype/freetype/src/sfnt/ttsbit.h index ea0b5f8ada..ea0b5f8ada 100644 --- a/tools/freetype/freetype/src/sfnt/ttsbit.h +++ b/drivers/freetype/freetype/src/sfnt/ttsbit.h diff --git a/tools/freetype/freetype/src/smooth/Jamfile b/drivers/freetype/freetype/src/smooth/Jamfile index a8496aa2c2..a8496aa2c2 100644 --- a/tools/freetype/freetype/src/smooth/Jamfile +++ b/drivers/freetype/freetype/src/smooth/Jamfile diff --git a/tools/freetype/freetype/src/smooth/ftgrays.c b/drivers/freetype/freetype/src/smooth/ftgrays.c index 7532a35829..7532a35829 100644 --- a/tools/freetype/freetype/src/smooth/ftgrays.c +++ b/drivers/freetype/freetype/src/smooth/ftgrays.c diff --git a/tools/freetype/freetype/src/smooth/ftgrays.h b/drivers/freetype/freetype/src/smooth/ftgrays.h index f20f55f14b..f20f55f14b 100644 --- a/tools/freetype/freetype/src/smooth/ftgrays.h +++ b/drivers/freetype/freetype/src/smooth/ftgrays.h diff --git a/tools/freetype/freetype/src/smooth/ftsmerrs.h b/drivers/freetype/freetype/src/smooth/ftsmerrs.h index 413d2f1f70..413d2f1f70 100644 --- a/tools/freetype/freetype/src/smooth/ftsmerrs.h +++ b/drivers/freetype/freetype/src/smooth/ftsmerrs.h diff --git a/tools/freetype/freetype/src/smooth/ftsmooth.c b/drivers/freetype/freetype/src/smooth/ftsmooth.c index 89088cd091..89088cd091 100644 --- a/tools/freetype/freetype/src/smooth/ftsmooth.c +++ b/drivers/freetype/freetype/src/smooth/ftsmooth.c diff --git a/tools/freetype/freetype/src/smooth/ftsmooth.h b/drivers/freetype/freetype/src/smooth/ftsmooth.h index 3708790df1..3708790df1 100644 --- a/tools/freetype/freetype/src/smooth/ftsmooth.h +++ b/drivers/freetype/freetype/src/smooth/ftsmooth.h diff --git a/tools/freetype/freetype/src/smooth/ftspic.c b/drivers/freetype/freetype/src/smooth/ftspic.c index 67a2b8310c..67a2b8310c 100644 --- a/tools/freetype/freetype/src/smooth/ftspic.c +++ b/drivers/freetype/freetype/src/smooth/ftspic.c diff --git a/tools/freetype/freetype/src/smooth/ftspic.h b/drivers/freetype/freetype/src/smooth/ftspic.h index 334b51c3f1..334b51c3f1 100644 --- a/tools/freetype/freetype/src/smooth/ftspic.h +++ b/drivers/freetype/freetype/src/smooth/ftspic.h diff --git a/tools/freetype/freetype/src/smooth/module.mk b/drivers/freetype/freetype/src/smooth/module.mk index 47f6c04076..47f6c04076 100644 --- a/tools/freetype/freetype/src/smooth/module.mk +++ b/drivers/freetype/freetype/src/smooth/module.mk diff --git a/tools/freetype/freetype/src/smooth/rules.mk b/drivers/freetype/freetype/src/smooth/rules.mk index 88d0aa53ac..88d0aa53ac 100644 --- a/tools/freetype/freetype/src/smooth/rules.mk +++ b/drivers/freetype/freetype/src/smooth/rules.mk diff --git a/tools/freetype/freetype/src/smooth/smooth.c b/drivers/freetype/freetype/src/smooth/smooth.c index a8ac51f9f8..a8ac51f9f8 100644 --- a/tools/freetype/freetype/src/smooth/smooth.c +++ b/drivers/freetype/freetype/src/smooth/smooth.c diff --git a/tools/freetype/freetype/src/truetype/Jamfile b/drivers/freetype/freetype/src/truetype/Jamfile index a8cccfe137..a8cccfe137 100644 --- a/tools/freetype/freetype/src/truetype/Jamfile +++ b/drivers/freetype/freetype/src/truetype/Jamfile diff --git a/tools/freetype/freetype/src/truetype/module.mk b/drivers/freetype/freetype/src/truetype/module.mk index baee81a773..baee81a773 100644 --- a/tools/freetype/freetype/src/truetype/module.mk +++ b/drivers/freetype/freetype/src/truetype/module.mk diff --git a/tools/freetype/freetype/src/truetype/rules.mk b/drivers/freetype/freetype/src/truetype/rules.mk index d4b69f578b..d4b69f578b 100644 --- a/tools/freetype/freetype/src/truetype/rules.mk +++ b/drivers/freetype/freetype/src/truetype/rules.mk diff --git a/tools/freetype/freetype/src/truetype/truetype.c b/drivers/freetype/freetype/src/truetype/truetype.c index 576912b219..576912b219 100644 --- a/tools/freetype/freetype/src/truetype/truetype.c +++ b/drivers/freetype/freetype/src/truetype/truetype.c diff --git a/tools/freetype/freetype/src/truetype/ttdriver.c b/drivers/freetype/freetype/src/truetype/ttdriver.c index fb25706ab8..fb25706ab8 100644 --- a/tools/freetype/freetype/src/truetype/ttdriver.c +++ b/drivers/freetype/freetype/src/truetype/ttdriver.c diff --git a/tools/freetype/freetype/src/truetype/ttdriver.h b/drivers/freetype/freetype/src/truetype/ttdriver.h index aae00f2617..aae00f2617 100644 --- a/tools/freetype/freetype/src/truetype/ttdriver.h +++ b/drivers/freetype/freetype/src/truetype/ttdriver.h diff --git a/tools/freetype/freetype/src/truetype/tterrors.h b/drivers/freetype/freetype/src/truetype/tterrors.h index 78d138fab2..78d138fab2 100644 --- a/tools/freetype/freetype/src/truetype/tterrors.h +++ b/drivers/freetype/freetype/src/truetype/tterrors.h diff --git a/tools/freetype/freetype/src/truetype/ttgload.c b/drivers/freetype/freetype/src/truetype/ttgload.c index f640a6c78e..f640a6c78e 100644 --- a/tools/freetype/freetype/src/truetype/ttgload.c +++ b/drivers/freetype/freetype/src/truetype/ttgload.c diff --git a/tools/freetype/freetype/src/truetype/ttgload.h b/drivers/freetype/freetype/src/truetype/ttgload.h index 05f75882dc..05f75882dc 100644 --- a/tools/freetype/freetype/src/truetype/ttgload.h +++ b/drivers/freetype/freetype/src/truetype/ttgload.h diff --git a/tools/freetype/freetype/src/truetype/ttgxvar.c b/drivers/freetype/freetype/src/truetype/ttgxvar.c index 7899d3671d..7899d3671d 100644 --- a/tools/freetype/freetype/src/truetype/ttgxvar.c +++ b/drivers/freetype/freetype/src/truetype/ttgxvar.c diff --git a/tools/freetype/freetype/src/truetype/ttgxvar.h b/drivers/freetype/freetype/src/truetype/ttgxvar.h index 82dfc4431f..82dfc4431f 100644 --- a/tools/freetype/freetype/src/truetype/ttgxvar.h +++ b/drivers/freetype/freetype/src/truetype/ttgxvar.h diff --git a/tools/freetype/freetype/src/truetype/ttinterp.c b/drivers/freetype/freetype/src/truetype/ttinterp.c index e7ffb987ce..e7ffb987ce 100644 --- a/tools/freetype/freetype/src/truetype/ttinterp.c +++ b/drivers/freetype/freetype/src/truetype/ttinterp.c diff --git a/tools/freetype/freetype/src/truetype/ttinterp.h b/drivers/freetype/freetype/src/truetype/ttinterp.h index 69f5011ed4..69f5011ed4 100644 --- a/tools/freetype/freetype/src/truetype/ttinterp.h +++ b/drivers/freetype/freetype/src/truetype/ttinterp.h diff --git a/tools/freetype/freetype/src/truetype/ttobjs.c b/drivers/freetype/freetype/src/truetype/ttobjs.c index 7897efa77a..7897efa77a 100644 --- a/tools/freetype/freetype/src/truetype/ttobjs.c +++ b/drivers/freetype/freetype/src/truetype/ttobjs.c diff --git a/tools/freetype/freetype/src/truetype/ttobjs.h b/drivers/freetype/freetype/src/truetype/ttobjs.h index a11dd3752a..a11dd3752a 100644 --- a/tools/freetype/freetype/src/truetype/ttobjs.h +++ b/drivers/freetype/freetype/src/truetype/ttobjs.h diff --git a/tools/freetype/freetype/src/truetype/ttpic.c b/drivers/freetype/freetype/src/truetype/ttpic.c index edefae72c5..edefae72c5 100644 --- a/tools/freetype/freetype/src/truetype/ttpic.c +++ b/drivers/freetype/freetype/src/truetype/ttpic.c diff --git a/tools/freetype/freetype/src/truetype/ttpic.h b/drivers/freetype/freetype/src/truetype/ttpic.h index cfb4ee6281..cfb4ee6281 100644 --- a/tools/freetype/freetype/src/truetype/ttpic.h +++ b/drivers/freetype/freetype/src/truetype/ttpic.h diff --git a/tools/freetype/freetype/src/truetype/ttpload.c b/drivers/freetype/freetype/src/truetype/ttpload.c index 9723a515b9..9723a515b9 100644 --- a/tools/freetype/freetype/src/truetype/ttpload.c +++ b/drivers/freetype/freetype/src/truetype/ttpload.c diff --git a/tools/freetype/freetype/src/truetype/ttpload.h b/drivers/freetype/freetype/src/truetype/ttpload.h index f61ac079ce..f61ac079ce 100644 --- a/tools/freetype/freetype/src/truetype/ttpload.h +++ b/drivers/freetype/freetype/src/truetype/ttpload.h diff --git a/tools/freetype/freetype/src/truetype/ttsubpix.c b/drivers/freetype/freetype/src/truetype/ttsubpix.c index 28470ad655..28470ad655 100644 --- a/tools/freetype/freetype/src/truetype/ttsubpix.c +++ b/drivers/freetype/freetype/src/truetype/ttsubpix.c diff --git a/tools/freetype/freetype/src/truetype/ttsubpix.h b/drivers/freetype/freetype/src/truetype/ttsubpix.h index 8a54fc7cc7..8a54fc7cc7 100644 --- a/tools/freetype/freetype/src/truetype/ttsubpix.h +++ b/drivers/freetype/freetype/src/truetype/ttsubpix.h diff --git a/tools/freetype/freetype/src/type1/Jamfile b/drivers/freetype/freetype/src/type1/Jamfile index 8e366baae5..8e366baae5 100644 --- a/tools/freetype/freetype/src/type1/Jamfile +++ b/drivers/freetype/freetype/src/type1/Jamfile diff --git a/tools/freetype/freetype/src/type1/module.mk b/drivers/freetype/freetype/src/type1/module.mk index ade0210d76..ade0210d76 100644 --- a/tools/freetype/freetype/src/type1/module.mk +++ b/drivers/freetype/freetype/src/type1/module.mk diff --git a/tools/freetype/freetype/src/type1/rules.mk b/drivers/freetype/freetype/src/type1/rules.mk index 15087b0304..15087b0304 100644 --- a/tools/freetype/freetype/src/type1/rules.mk +++ b/drivers/freetype/freetype/src/type1/rules.mk diff --git a/tools/freetype/freetype/src/type1/t1afm.c b/drivers/freetype/freetype/src/type1/t1afm.c index de9c1997c4..de9c1997c4 100644 --- a/tools/freetype/freetype/src/type1/t1afm.c +++ b/drivers/freetype/freetype/src/type1/t1afm.c diff --git a/tools/freetype/freetype/src/type1/t1afm.h b/drivers/freetype/freetype/src/type1/t1afm.h index 8eb1764de7..8eb1764de7 100644 --- a/tools/freetype/freetype/src/type1/t1afm.h +++ b/drivers/freetype/freetype/src/type1/t1afm.h diff --git a/tools/freetype/freetype/src/type1/t1driver.c b/drivers/freetype/freetype/src/type1/t1driver.c index 697288d66d..697288d66d 100644 --- a/tools/freetype/freetype/src/type1/t1driver.c +++ b/drivers/freetype/freetype/src/type1/t1driver.c diff --git a/tools/freetype/freetype/src/type1/t1driver.h b/drivers/freetype/freetype/src/type1/t1driver.h index 639cd4a7ad..639cd4a7ad 100644 --- a/tools/freetype/freetype/src/type1/t1driver.h +++ b/drivers/freetype/freetype/src/type1/t1driver.h diff --git a/tools/freetype/freetype/src/type1/t1errors.h b/drivers/freetype/freetype/src/type1/t1errors.h index 8740530eef..8740530eef 100644 --- a/tools/freetype/freetype/src/type1/t1errors.h +++ b/drivers/freetype/freetype/src/type1/t1errors.h diff --git a/tools/freetype/freetype/src/type1/t1gload.c b/drivers/freetype/freetype/src/type1/t1gload.c index 23478d1288..23478d1288 100644 --- a/tools/freetype/freetype/src/type1/t1gload.c +++ b/drivers/freetype/freetype/src/type1/t1gload.c diff --git a/tools/freetype/freetype/src/type1/t1gload.h b/drivers/freetype/freetype/src/type1/t1gload.h index 0bdea3a8d5..0bdea3a8d5 100644 --- a/tools/freetype/freetype/src/type1/t1gload.h +++ b/drivers/freetype/freetype/src/type1/t1gload.h diff --git a/tools/freetype/freetype/src/type1/t1load.c b/drivers/freetype/freetype/src/type1/t1load.c index 1c834a17bb..1c834a17bb 100644 --- a/tools/freetype/freetype/src/type1/t1load.c +++ b/drivers/freetype/freetype/src/type1/t1load.c diff --git a/tools/freetype/freetype/src/type1/t1load.h b/drivers/freetype/freetype/src/type1/t1load.h index 546fc33530..546fc33530 100644 --- a/tools/freetype/freetype/src/type1/t1load.h +++ b/drivers/freetype/freetype/src/type1/t1load.h diff --git a/tools/freetype/freetype/src/type1/t1objs.c b/drivers/freetype/freetype/src/type1/t1objs.c index 837b7911d4..837b7911d4 100644 --- a/tools/freetype/freetype/src/type1/t1objs.c +++ b/drivers/freetype/freetype/src/type1/t1objs.c diff --git a/tools/freetype/freetype/src/type1/t1objs.h b/drivers/freetype/freetype/src/type1/t1objs.h index 54ccbb996a..54ccbb996a 100644 --- a/tools/freetype/freetype/src/type1/t1objs.h +++ b/drivers/freetype/freetype/src/type1/t1objs.h diff --git a/tools/freetype/freetype/src/type1/t1parse.c b/drivers/freetype/freetype/src/type1/t1parse.c index 106e4e7ecd..106e4e7ecd 100644 --- a/tools/freetype/freetype/src/type1/t1parse.c +++ b/drivers/freetype/freetype/src/type1/t1parse.c diff --git a/tools/freetype/freetype/src/type1/t1parse.h b/drivers/freetype/freetype/src/type1/t1parse.h index fb1c8a8830..fb1c8a8830 100644 --- a/tools/freetype/freetype/src/type1/t1parse.h +++ b/drivers/freetype/freetype/src/type1/t1parse.h diff --git a/tools/freetype/freetype/src/type1/t1tokens.h b/drivers/freetype/freetype/src/type1/t1tokens.h index e37276b908..e37276b908 100644 --- a/tools/freetype/freetype/src/type1/t1tokens.h +++ b/drivers/freetype/freetype/src/type1/t1tokens.h diff --git a/tools/freetype/freetype/src/type1/type1.c b/drivers/freetype/freetype/src/type1/type1.c index ccc12be103..ccc12be103 100644 --- a/tools/freetype/freetype/src/type1/type1.c +++ b/drivers/freetype/freetype/src/type1/type1.c diff --git a/tools/freetype/freetype/src/type42/Jamfile b/drivers/freetype/freetype/src/type42/Jamfile index 00371d54f3..00371d54f3 100644 --- a/tools/freetype/freetype/src/type42/Jamfile +++ b/drivers/freetype/freetype/src/type42/Jamfile diff --git a/tools/freetype/freetype/src/type42/module.mk b/drivers/freetype/freetype/src/type42/module.mk index b3f10a8d3c..b3f10a8d3c 100644 --- a/tools/freetype/freetype/src/type42/module.mk +++ b/drivers/freetype/freetype/src/type42/module.mk diff --git a/tools/freetype/freetype/src/type42/rules.mk b/drivers/freetype/freetype/src/type42/rules.mk index eac1081eb1..eac1081eb1 100644 --- a/tools/freetype/freetype/src/type42/rules.mk +++ b/drivers/freetype/freetype/src/type42/rules.mk diff --git a/tools/freetype/freetype/src/type42/t42drivr.c b/drivers/freetype/freetype/src/type42/t42drivr.c index 3ad1bde79f..3ad1bde79f 100644 --- a/tools/freetype/freetype/src/type42/t42drivr.c +++ b/drivers/freetype/freetype/src/type42/t42drivr.c diff --git a/tools/freetype/freetype/src/type42/t42drivr.h b/drivers/freetype/freetype/src/type42/t42drivr.h index 9a1e97e30e..9a1e97e30e 100644 --- a/tools/freetype/freetype/src/type42/t42drivr.h +++ b/drivers/freetype/freetype/src/type42/t42drivr.h diff --git a/tools/freetype/freetype/src/type42/t42error.h b/drivers/freetype/freetype/src/type42/t42error.h index 217ae8bd52..217ae8bd52 100644 --- a/tools/freetype/freetype/src/type42/t42error.h +++ b/drivers/freetype/freetype/src/type42/t42error.h diff --git a/tools/freetype/freetype/src/type42/t42objs.c b/drivers/freetype/freetype/src/type42/t42objs.c index 18e2c0b625..18e2c0b625 100644 --- a/tools/freetype/freetype/src/type42/t42objs.c +++ b/drivers/freetype/freetype/src/type42/t42objs.c diff --git a/tools/freetype/freetype/src/type42/t42objs.h b/drivers/freetype/freetype/src/type42/t42objs.h index 02d13259be..02d13259be 100644 --- a/tools/freetype/freetype/src/type42/t42objs.h +++ b/drivers/freetype/freetype/src/type42/t42objs.h diff --git a/tools/freetype/freetype/src/type42/t42parse.c b/drivers/freetype/freetype/src/type42/t42parse.c index 3cdd8a1acf..3cdd8a1acf 100644 --- a/tools/freetype/freetype/src/type42/t42parse.c +++ b/drivers/freetype/freetype/src/type42/t42parse.c diff --git a/tools/freetype/freetype/src/type42/t42parse.h b/drivers/freetype/freetype/src/type42/t42parse.h index f77ec4af4f..f77ec4af4f 100644 --- a/tools/freetype/freetype/src/type42/t42parse.h +++ b/drivers/freetype/freetype/src/type42/t42parse.h diff --git a/tools/freetype/freetype/src/type42/t42types.h b/drivers/freetype/freetype/src/type42/t42types.h index c7c2db490d..c7c2db490d 100644 --- a/tools/freetype/freetype/src/type42/t42types.h +++ b/drivers/freetype/freetype/src/type42/t42types.h diff --git a/tools/freetype/freetype/src/type42/type42.c b/drivers/freetype/freetype/src/type42/type42.c index d13df56b10..d13df56b10 100644 --- a/tools/freetype/freetype/src/type42/type42.c +++ b/drivers/freetype/freetype/src/type42/type42.c diff --git a/tools/freetype/freetype/src/winfonts/Jamfile b/drivers/freetype/freetype/src/winfonts/Jamfile index 71cf5678e8..71cf5678e8 100644 --- a/tools/freetype/freetype/src/winfonts/Jamfile +++ b/drivers/freetype/freetype/src/winfonts/Jamfile diff --git a/tools/freetype/freetype/src/winfonts/fnterrs.h b/drivers/freetype/freetype/src/winfonts/fnterrs.h index 463ba77ee2..463ba77ee2 100644 --- a/tools/freetype/freetype/src/winfonts/fnterrs.h +++ b/drivers/freetype/freetype/src/winfonts/fnterrs.h diff --git a/tools/freetype/freetype/src/winfonts/module.mk b/drivers/freetype/freetype/src/winfonts/module.mk index b44d7f0570..b44d7f0570 100644 --- a/tools/freetype/freetype/src/winfonts/module.mk +++ b/drivers/freetype/freetype/src/winfonts/module.mk diff --git a/tools/freetype/freetype/src/winfonts/rules.mk b/drivers/freetype/freetype/src/winfonts/rules.mk index 71a7df2d8a..71a7df2d8a 100644 --- a/tools/freetype/freetype/src/winfonts/rules.mk +++ b/drivers/freetype/freetype/src/winfonts/rules.mk diff --git a/tools/freetype/freetype/src/winfonts/winfnt.c b/drivers/freetype/freetype/src/winfonts/winfnt.c index e8055c0898..e8055c0898 100644 --- a/tools/freetype/freetype/src/winfonts/winfnt.c +++ b/drivers/freetype/freetype/src/winfonts/winfnt.c diff --git a/tools/freetype/freetype/src/winfonts/winfnt.h b/drivers/freetype/freetype/src/winfonts/winfnt.h index b7a80736d8..b7a80736d8 100644 --- a/tools/freetype/freetype/src/winfonts/winfnt.h +++ b/drivers/freetype/freetype/src/winfonts/winfnt.h diff --git a/tools/freetype/ft2build.h b/drivers/freetype/ft2build.h index 5137b50f38..5137b50f38 100644 --- a/tools/freetype/ft2build.h +++ b/drivers/freetype/ft2build.h diff --git a/drivers/gles2/rasterizer_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp index c7b2d65a13..79465638d1 100644 --- a/drivers/gles2/rasterizer_gles2.cpp +++ b/drivers/gles2/rasterizer_gles2.cpp @@ -4737,10 +4737,10 @@ void RasterizerGLES2::_update_shader( Shader* p_shader) const { } -void RasterizerGLES2::_add_geometry( const Geometry* p_geometry, const InstanceData *p_instance, const Geometry *p_geometry_cmp, const GeometryOwner *p_owner) { +void RasterizerGLES2::_add_geometry( const Geometry* p_geometry, const InstanceData *p_instance, const Geometry *p_geometry_cmp, const GeometryOwner *p_owner,int p_material) { Material *m=NULL; - RID m_src=p_instance->material_override.is_valid() ? p_instance->material_override : p_geometry->material; + RID m_src=p_instance->material_override.is_valid() ? p_instance->material_override :(p_material>=0?p_instance->materials[p_material]:p_geometry->material); #ifdef DEBUG_ENABLED if (current_debug==VS::SCENARIO_DEBUG_OVERDRAW) { @@ -4988,8 +4988,9 @@ void RasterizerGLES2::add_mesh( const RID& p_mesh, const InstanceData *p_data) { for (int i=0;i<ssize;i++) { + int mat_idx = p_data->materials[i].is_valid() ? i : -1; Surface *s = mesh->surfaces[i]; - _add_geometry(s,p_data,s,NULL); + _add_geometry(s,p_data,s,NULL,mat_idx); } mesh->last_pass=frame; diff --git a/drivers/gles2/rasterizer_gles2.h b/drivers/gles2/rasterizer_gles2.h index b52918c02f..35efedc9c8 100644 --- a/drivers/gles2/rasterizer_gles2.h +++ b/drivers/gles2/rasterizer_gles2.h @@ -1070,7 +1070,7 @@ class RasterizerGLES2 : public Rasterizer { Plane camera_plane; - void _add_geometry( const Geometry* p_geometry, const InstanceData *p_instance, const Geometry *p_geometry_cmp, const GeometryOwner *p_owner); + void _add_geometry( const Geometry* p_geometry, const InstanceData *p_instance, const Geometry *p_geometry_cmp, const GeometryOwner *p_owner,int p_material=-1); void _render_list_forward(RenderList *p_render_list,const Transform& p_view_transform,const Transform& p_view_transform_inverse, const CameraMatrix& p_projection,bool p_reverse_cull=false,bool p_fragment_light=false,bool p_alpha_pass=false); //void _setup_light(LightInstance* p_instance, int p_idx); diff --git a/drivers/register_driver_types.cpp b/drivers/register_driver_types.cpp index 235438f126..afa5f34bea 100644 --- a/drivers/register_driver_types.cpp +++ b/drivers/register_driver_types.cpp @@ -113,6 +113,7 @@ static ResourceFormatLoaderAudioStreamMPC * mpc_stream_loader=NULL; #endif + static ResourceFormatPBM * pbm_loader=NULL; void register_core_driver_types() { @@ -141,6 +142,7 @@ void register_core_driver_types() { ImageLoader::add_image_format_loader( image_loader_jpg ); #endif + pbm_loader = memnew( ResourceFormatPBM ); ResourceLoader::add_resource_format_loader(pbm_loader); @@ -250,6 +252,7 @@ void register_driver_types() { void unregister_driver_types() { + #ifdef TREMOR_ENABLED memdelete( vorbis_stream_loader ); #endif diff --git a/main/input_default.cpp b/main/input_default.cpp index c8b8062eee..5b4ae7f2cb 100644 --- a/main/input_default.cpp +++ b/main/input_default.cpp @@ -200,6 +200,12 @@ Vector3 InputDefault::get_accelerometer() { return accelerometer; } +Vector3 InputDefault::get_magnetometer() { + + _THREAD_SAFE_METHOD_ + return magnetometer; +} + void InputDefault::parse_input_event(const InputEvent& p_event) { _THREAD_SAFE_METHOD_ @@ -296,6 +302,14 @@ void InputDefault::set_accelerometer(const Vector3& p_accel) { } +void InputDefault::set_magnetometer(const Vector3& p_magnetometer) { + + _THREAD_SAFE_METHOD_ + + magnetometer=p_magnetometer; + +} + void InputDefault::set_main_loop(MainLoop *p_main_loop) { main_loop=p_main_loop; diff --git a/main/input_default.h b/main/input_default.h index 471ae9e692..8f6a430436 100644 --- a/main/input_default.h +++ b/main/input_default.h @@ -14,6 +14,7 @@ class InputDefault : public Input { Map<int,float> _joy_axis; Map<StringName,int> custom_action_press; Vector3 accelerometer; + Vector3 magnetometer; Vector2 mouse_pos; MainLoop *main_loop; @@ -132,6 +133,7 @@ public: void parse_joystick_mapping(String p_mapping, bool p_update_existing); virtual Vector3 get_accelerometer(); + virtual Vector3 get_magnetometer(); virtual Point2 get_mouse_pos() const; virtual Point2 get_mouse_speed() const; @@ -142,6 +144,7 @@ public: void parse_input_event(const InputEvent& p_event); void set_accelerometer(const Vector3& p_accel); + void set_magnetometer(const Vector3& p_magnetometer); void set_joy_axis(int p_device,int p_axis,float p_value); void set_main_loop(MainLoop *main_loop); diff --git a/main/main.cpp b/main/main.cpp index 9352055246..fba7a781bf 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -101,12 +101,13 @@ static bool init_fullscreen=false; static bool init_use_custom_pos=false; static bool debug_collisions=false; static bool debug_navigation=false; +static bool allow_hidpi=true; static Vector2 init_custom_pos; static int video_driver_idx=-1; static int audio_driver_idx=-1; static String locale; static bool use_debug_profiler=false; - +static bool force_lowdpi=false; static int init_screen=-1; static String unescape_cmdline(const String& p_str) { @@ -157,6 +158,8 @@ void Main::print_help(const char* p_binary) { OS::get_singleton()->print("%s",OS::get_singleton()->get_video_driver_name(i)); } OS::get_singleton()->print(")\n"); + OS::get_singleton()->print("\t-ldpi\t : Force low-dpi mode (OSX Only)"); + OS::get_singleton()->print("\t-ad DRIVER\t : Audio Driver ("); for (int i=0;i<OS::get_singleton()->get_audio_driver_count();i++) { @@ -386,6 +389,9 @@ Error Main::setup(const char *execpath,int argc, char *argv[],bool p_second_phas goto error; } + } else if (I->get()=="-ldpi") { // language + + force_lowdpi=true; } else if (I->get()=="-rfs") { // language if (I->next()) { @@ -691,6 +697,9 @@ Error Main::setup(const char *execpath,int argc, char *argv[],bool p_second_phas video_mode.width=globals->get("display/width"); if (!force_res &&use_custom_res && globals->has("display/height")) video_mode.height=globals->get("display/height"); + if (!editor && (!bool(globals->get("display/allow_hidpi")) || force_lowdpi)) { + OS::get_singleton()->_allow_hidpi=false; + } if (use_custom_res && globals->has("display/fullscreen")) video_mode.fullscreen=globals->get("display/fullscreen"); if (use_custom_res && globals->has("display/resizable")) @@ -710,6 +719,7 @@ Error Main::setup(const char *execpath,int argc, char *argv[],bool p_second_phas GLOBAL_DEF("display/width",video_mode.width); GLOBAL_DEF("display/height",video_mode.height); + GLOBAL_DEF("display/allow_hidpi",false); GLOBAL_DEF("display/fullscreen",video_mode.fullscreen); GLOBAL_DEF("display/resizable",video_mode.resizable); GLOBAL_DEF("display/borderless_window", video_mode.borderless_window); @@ -1639,7 +1649,7 @@ bool Main::iteration() { } if (OS::get_singleton()->is_in_low_processor_usage_mode() || !OS::get_singleton()->can_draw()) - OS::get_singleton()->delay_usec(25000); //apply some delay to force idle time + OS::get_singleton()->delay_usec(16600); //apply some delay to force idle time (results in about 60 FPS max) else { uint32_t frame_delay = OS::get_singleton()->get_frame_delay(); if (frame_delay) diff --git a/modules/gdscript/gd_parser.cpp b/modules/gdscript/gd_parser.cpp index b713dc318f..9e90027a70 100644 --- a/modules/gdscript/gd_parser.cpp +++ b/modules/gdscript/gd_parser.cpp @@ -86,7 +86,7 @@ bool GDParser::_enter_indent_block(BlockNode* p_block) { while(true) { if (tokenizer->get_token()!=GDTokenizer::TK_NEWLINE) { - print_line("no newline"); + return false; //wtf } else if (tokenizer->get_token(1)!=GDTokenizer::TK_NEWLINE) { diff --git a/modules/gdscript/gd_script.cpp b/modules/gdscript/gd_script.cpp index cd5e35db31..b1919b3468 100644 --- a/modules/gdscript/gd_script.cpp +++ b/modules/gdscript/gd_script.cpp @@ -812,7 +812,7 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a if (E) { - *dst=((GDFunction*)&E->get())->call(p_instance,(const Variant**)argptrs,argc,err); + *dst=E->get()->call(p_instance,(const Variant**)argptrs,argc,err); } else if (gds->native.ptr()) { if (*methodname!=GDScriptLanguage::get_singleton()->strings._init) { diff --git a/platform/android/SCsub b/platform/android/SCsub index fab8458b26..c8feac8690 100644 --- a/platform/android/SCsub +++ b/platform/android/SCsub @@ -65,17 +65,17 @@ for x in env.android_java_dirs: gradle_res_dirs_text="" for x in env.android_res_dirs: - gradle_res_dirs_text+=",'"+x+"'" + gradle_res_dirs_text+=",'"+x.replace("\\","/")+"'" gradle_aidl_dirs_text="" for x in env.android_aidl_dirs: - gradle_aidl_dirs_text+=",'"+x+"'" + gradle_aidl_dirs_text+=",'"+x.replace("\\","/")+"'" gradle_jni_dirs_text="" for x in env.android_jni_dirs: - gradle_jni_dirs_text+=",'"+x+"'" + gradle_jni_dirs_text+=",'"+x.replace("\\","/")+"'" gradle_asset_dirs_text="" diff --git a/platform/android/godot_android.cpp b/platform/android/godot_android.cpp index f9feb3481f..edb051575f 100644 --- a/platform/android/godot_android.cpp +++ b/platform/android/godot_android.cpp @@ -313,6 +313,7 @@ struct engine { ASensorManager* sensorManager; const ASensor* accelerometerSensor; + const ASensor* magnetometerSensor; ASensorEventQueue* sensorEventQueue; bool display_active; @@ -736,15 +737,28 @@ static void engine_handle_cmd(struct android_app* app, int32_t cmd) { engine->accelerometerSensor, (1000L/60)*1000); } + // Also start monitoring the magnetometer. + if (engine->magnetometerSensor != NULL) { + ASensorEventQueue_enableSensor(engine->sensorEventQueue, + engine->magnetometerSensor); + // We'd like to get 60 events per second (in us). + ASensorEventQueue_setEventRate(engine->sensorEventQueue, + engine->magnetometerSensor, (1000L/60)*1000); + + } engine->animating = 1; break; case APP_CMD_LOST_FOCUS: - // When our app loses focus, we stop monitoring the accelerometer. + // When our app loses focus, we stop monitoring the sensors. // This is to avoid consuming battery while not being used. if (engine->accelerometerSensor != NULL) { ASensorEventQueue_disableSensor(engine->sensorEventQueue, engine->accelerometerSensor); } + if (engine->magnetometerSensor != NULL) { + ASensorEventQueue_disableSensor(engine->sensorEventQueue, + engine->magnetometerSensor); + } // Also stop animating. engine->animating = 0; engine_draw_frame(engine); @@ -768,10 +782,12 @@ void android_main(struct android_app* state) { FileAccessAndroid::asset_manager=state->activity->assetManager; - // Prepare to monitor accelerometer + // Prepare to monitor sensors engine.sensorManager = ASensorManager_getInstance(); engine.accelerometerSensor = ASensorManager_getDefaultSensor(engine.sensorManager, - ASENSOR_TYPE_ACCELEROMETER); + ASENSOR_TYPE_ACCELEROMETER); + engine.magnetometerSensor = ASensorManager_getDefaultSensor(engine.sensorManager, + ASENSOR_TYPE_MAGNETIC_FIELD); engine.sensorEventQueue = ASensorManager_createEventQueue(engine.sensorManager, state->looper, LOOPER_ID_USER, NULL, NULL); @@ -812,16 +828,21 @@ void android_main(struct android_app* state) { // If a sensor has data, process it now. // LOGI("events\n"); if (ident == LOOPER_ID_USER) { - if (engine.accelerometerSensor != NULL) { + if (engine.accelerometerSensor != NULL || engine.magnetometerSensor != NULL) { ASensorEvent event; while (ASensorEventQueue_getEvents(engine.sensorEventQueue, &event, 1) > 0) { if (engine.os) { + if (event.acceleration != NULL) { engine.os->process_accelerometer(Vector3(event.acceleration.x, event.acceleration.y, event.acceleration.z)); - + } + if (event.magnetic != NULL) { + engine.os->process_magnetometer(Vector3(event.magnetic.x, event.magnetic.y, + event.magnetic.z)); + } } } diff --git a/platform/android/java/res/drawable/icon.png b/platform/android/java/res/drawable/icon.png Binary files differindex 013632ddf1..e334f5fa78 100644 --- a/platform/android/java/res/drawable/icon.png +++ b/platform/android/java/res/drawable/icon.png diff --git a/platform/android/java/src/org/godotengine/godot/Godot.java b/platform/android/java/src/org/godotengine/godot/Godot.java index 1f208f8fb6..c4ba2da751 100644 --- a/platform/android/java/src/org/godotengine/godot/Godot.java +++ b/platform/android/java/src/org/godotengine/godot/Godot.java @@ -206,6 +206,7 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC private SensorManager mSensorManager; private Sensor mAccelerometer; + private Sensor mMagnetometer; public FrameLayout layout; public RelativeLayout adLayout; @@ -374,6 +375,8 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_GAME); + mMagnetometer = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); + mSensorManager.registerListener(this, mMagnetometer, SensorManager.SENSOR_DELAY_GAME); result_callback = null; @@ -588,6 +591,7 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC mView.onResume(); mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); + mSensorManager.registerListener(this, mMagnetometer, SensorManager.SENSOR_DELAY_NORMAL); GodotLib.focusin(); if(use_immersive && Build.VERSION.SDK_INT >= 19.0){ // check if the application runs on an android 4.4+ Window window = getWindow(); @@ -646,7 +650,14 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC float x = adjustedValues[0]; float y = adjustedValues[1]; float z = adjustedValues[2]; - GodotLib.accelerometer(x,y,z); + + int typeOfSensor = event.sensor.getType(); + if (typeOfSensor == event.sensor.TYPE_ACCELEROMETER) { + GodotLib.accelerometer(x,y,z); + } + if (typeOfSensor == event.sensor.TYPE_MAGNETIC_FIELD) { + GodotLib.magnetometer(x,y,z); + } } @Override public final void onAccuracyChanged(Sensor sensor, int accuracy) { diff --git a/platform/android/java/src/org/godotengine/godot/GodotLib.java b/platform/android/java/src/org/godotengine/godot/GodotLib.java index 7c5ac33c85..df181ae1bb 100644 --- a/platform/android/java/src/org/godotengine/godot/GodotLib.java +++ b/platform/android/java/src/org/godotengine/godot/GodotLib.java @@ -51,6 +51,7 @@ public class GodotLib { public static native void step(); public static native void touch(int what,int pointer,int howmany, int[] arr); public static native void accelerometer(float x, float y, float z); + public static native void magnetometer(float x, float y, float z); public static native void key(int p_scancode, int p_unicode_char, boolean p_pressed); public static native void joybutton(int p_device, int p_but, boolean p_pressed); public static native void joyaxis(int p_device, int p_axis, float p_value); diff --git a/platform/android/java_glue.cpp b/platform/android/java_glue.cpp index b5beb8fa2c..1ea7cd7ebb 100644 --- a/platform/android/java_glue.cpp +++ b/platform/android/java_glue.cpp @@ -650,6 +650,7 @@ static bool resized_reload=false; static bool quit_request=false; static Size2 new_size; static Vector3 accelerometer; +static Vector3 magnetometer; static HashMap<String,JNISingleton*> jni_singletons; static jobject godot_io; @@ -1088,6 +1089,8 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_step(JNIEnv * env, jo os_android->process_accelerometer(accelerometer); + os_android->process_magnetometer(magnetometer); + if (os_android->main_loop_iterate()==true) { jclass cls = env->FindClass("org/godotengine/godot/Godot"); @@ -1488,6 +1491,14 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_accelerometer(JNIEnv } +JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_magnetometer(JNIEnv * env, jobject obj, jfloat x, jfloat y, jfloat z) { + + input_mutex->lock(); + magnetometer=Vector3(x,y,z); + input_mutex->unlock(); + +} + JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_focusin(JNIEnv * env, jobject obj){ if (!suspend_mutex) diff --git a/platform/android/java_glue.h b/platform/android/java_glue.h index 1d65d21251..f7916efe2c 100644 --- a/platform/android/java_glue.h +++ b/platform/android/java_glue.h @@ -49,6 +49,7 @@ extern "C" { JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_joyconnectionchanged(JNIEnv * env, jobject obj, jint p_device, jboolean p_connected, jstring p_name); JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_audio(JNIEnv * env, jobject obj); JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_accelerometer(JNIEnv * env, jobject obj, jfloat x, jfloat y, jfloat z); + JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_magnetometer(JNIEnv * env, jobject obj, jfloat x, jfloat y, jfloat z); JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_focusin(JNIEnv * env, jobject obj); JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_focusout(JNIEnv * env, jobject obj); JNIEXPORT void JNICALL Java_org_godotengine_godot_GodotLib_singleton(JNIEnv * env, jobject obj, jstring name,jobject p_object); diff --git a/platform/android/os_android.cpp b/platform/android/os_android.cpp index 2ef28333be..4e6dfb2db2 100644 --- a/platform/android/os_android.cpp +++ b/platform/android/os_android.cpp @@ -609,6 +609,11 @@ void OS_Android::process_accelerometer(const Vector3& p_accelerometer) { input->set_accelerometer(p_accelerometer); } +void OS_Android::process_magnetometer(const Vector3& p_magnetometer) { + + input->set_magnetometer(p_magnetometer); +} + bool OS_Android::has_touchscreen_ui_hint() const { return true; diff --git a/platform/android/os_android.h b/platform/android/os_android.h index ec1f4119b4..843b3c4788 100644 --- a/platform/android/os_android.h +++ b/platform/android/os_android.h @@ -239,6 +239,7 @@ public: void process_accelerometer(const Vector3& p_accelerometer); + void process_magnetometer(const Vector3& p_magnetometer); void process_touch(int p_what,int p_pointer, const Vector<TouchPos>& p_points); void process_joy_event(JoystickEvent p_event); void process_event(InputEvent p_event); diff --git a/platform/osx/detect.py b/platform/osx/detect.py index 28bc42f6bb..d668509b90 100644 --- a/platform/osx/detect.py +++ b/platform/osx/detect.py @@ -58,8 +58,8 @@ def configure(env): if (env["freetype"]!="no"): env.Append(CCFLAGS=['-DFREETYPE_ENABLED']) - env.Append(CPPPATH=['#tools/freetype']) - env.Append(CPPPATH=['#tools/freetype/freetype/include']) + env.Append(CPPPATH=['#drivers/freetype']) + env.Append(CPPPATH=['#drivers/freetype/freetype/include']) diff --git a/platform/osx/export/export.cpp b/platform/osx/export/export.cpp index 3bc4ebdb1a..2604c2c15a 100644 --- a/platform/osx/export/export.cpp +++ b/platform/osx/export/export.cpp @@ -32,6 +32,7 @@ class EditorExportPlatformOSX : public EditorExportPlatform { String signature; String copyright; bool use64; + bool useFat; bool high_resolution; Ref<ImageTexture> logo; @@ -95,6 +96,8 @@ bool EditorExportPlatformOSX::_set(const StringName& p_name, const Variant& p_va copyright=p_value; else if (n=="application/64_bits") use64=p_value; + else if (n=="application/fat_bits") + useFat=p_value; else if (n=="display/high_res") high_resolution=p_value; else @@ -129,6 +132,8 @@ bool EditorExportPlatformOSX::_get(const StringName& p_name,Variant &r_ret) cons r_ret=copyright; else if (n=="application/64_bits") r_ret=use64; + else if (n=="application/fat_bits") + r_ret=useFat; else if (n=="display/high_res") r_ret=high_resolution; else @@ -150,6 +155,7 @@ void EditorExportPlatformOSX::_get_property_list( List<PropertyInfo> *p_list) co p_list->push_back( PropertyInfo( Variant::STRING, "application/version") ); p_list->push_back( PropertyInfo( Variant::STRING, "application/copyright") ); p_list->push_back( PropertyInfo( Variant::BOOL, "application/64_bits") ); + p_list->push_back( PropertyInfo( Variant::BOOL, "application/fat_bits") ); p_list->push_back( PropertyInfo( Variant::BOOL, "display/high_res") ); @@ -287,7 +293,7 @@ Error EditorExportPlatformOSX::export_project(const String& p_path, bool p_debug io2.opaque=&dst_f; zipFile dpkg=zipOpen2(p_path.utf8().get_data(),APPEND_STATUS_CREATE,NULL,&io2); - String binary_to_use="godot_osx_"+String(p_debug?"debug":"release")+"."+String(use64?"64":"32"); + String binary_to_use="godot_osx_"+String(p_debug?"debug":"release")+"."+String(useFat?"fat":use64?"64":"32"); print_line("binary: "+binary_to_use); String pkg_name; @@ -459,6 +465,7 @@ EditorExportPlatformOSX::EditorExportPlatformOSX() { short_version="1.0"; version="1.0"; use64=false; + useFat=false; high_resolution=false; } diff --git a/platform/osx/os_osx.h b/platform/osx/os_osx.h index d88dd89002..8d64686335 100644 --- a/platform/osx/os_osx.h +++ b/platform/osx/os_osx.h @@ -59,7 +59,7 @@ public: bool force_quit; Rasterizer *rasterizer; VisualServer *visual_server; - VideoMode current_videomode; + List<String> args; MainLoop *main_loop; unsigned int event_id; @@ -104,9 +104,22 @@ public: bool minimized; bool maximized; bool zoomed; + Vector<Rect2> screens; + Vector<int> screen_dpi; + + Size2 window_size; int current_screen; Rect2 restore_rect; + + float _mouse_scale(float p_scale) { + if (display_scale>1.0) + return p_scale; + else + return 1.0; + } + + float display_scale; protected: virtual int get_video_driver_count() const; @@ -173,6 +186,9 @@ public: virtual int get_current_screen() const; virtual void set_current_screen(int p_screen); virtual Point2 get_screen_position(int p_screen=0) const; + virtual Size2 get_screen_size(int p_screen=0) const; + virtual int get_screen_dpi(int p_screen=0) const; + virtual Point2 get_window_position() const; virtual void set_window_position(const Point2& p_position); virtual void set_window_size(const Size2 p_size); @@ -184,7 +200,6 @@ public: virtual bool is_window_minimized() const; virtual void set_window_maximized(bool p_enabled); virtual bool is_window_maximized() const; - Size2 get_screen_size(int p_screen=0) const; void run(); diff --git a/platform/osx/os_osx.mm b/platform/osx/os_osx.mm index c443fc2d0e..b614dd57aa 100644 --- a/platform/osx/os_osx.mm +++ b/platform/osx/os_osx.mm @@ -202,10 +202,10 @@ static int button_mask=0; [OS_OSX::singleton->context update]; const NSRect contentRect = [OS_OSX::singleton->window_view frame]; - const NSRect fbRect = convertRectToBacking(contentRect); + const NSRect fbRect = contentRect;//convertRectToBacking(contentRect); - OS_OSX::singleton->current_videomode.width=fbRect.size.width; - OS_OSX::singleton->current_videomode.height=fbRect.size.height; + OS_OSX::singleton->window_size.width=fbRect.size.width*OS_OSX::singleton->display_scale; + OS_OSX::singleton->window_size.height=fbRect.size.height*OS_OSX::singleton->display_scale; // _GodotInputFramebufferSize(window, fbRect.size.width, fbRect.size.height); @@ -324,7 +324,7 @@ static int button_mask=0; - (void)mouseDown:(NSEvent *)event { - print_line("mouse down:"); + //print_line("mouse down:"); button_mask|=BUTTON_MASK_LEFT; InputEvent ev; ev.type=InputEvent::MOUSE_BUTTON; @@ -383,14 +383,14 @@ static int button_mask=0; prev_mouse_y=mouse_y; const NSRect contentRect = [OS_OSX::singleton->window_view frame]; const NSPoint p = [event locationInWindow]; - mouse_x = p.x * [[event window] backingScaleFactor]; - mouse_y = (contentRect.size.height - p.y) * [[event window] backingScaleFactor]; + mouse_x = p.x * OS_OSX::singleton->_mouse_scale([[event window] backingScaleFactor]); + mouse_y = (contentRect.size.height - p.y) * OS_OSX::singleton->_mouse_scale([[event window] backingScaleFactor]); ev.mouse_motion.x=mouse_x; ev.mouse_motion.y=mouse_y; ev.mouse_motion.global_x=mouse_x; ev.mouse_motion.global_y=mouse_y; - ev.mouse_motion.relative_x=[event deltaX] * [[event window] backingScaleFactor]; - ev.mouse_motion.relative_y=[event deltaY] * [[event window] backingScaleFactor]; + ev.mouse_motion.relative_x=[event deltaX] * OS_OSX::singleton->_mouse_scale([[event window] backingScaleFactor]); + ev.mouse_motion.relative_y=[event deltaY] * OS_OSX::singleton->_mouse_scale([[event window] backingScaleFactor]); ev.mouse_motion.mod = translateFlags([event modifierFlags]); OS_OSX::singleton->input->set_mouse_pos(Point2(mouse_x,mouse_y)); @@ -893,6 +893,15 @@ void OS_OSX::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi kTISNotifySelectedKeyboardInputSourceChanged, NULL, CFNotificationSuspensionBehaviorDeliverImmediately); + if (is_hidpi_allowed() && [[NSScreen mainScreen] respondsToSelector:@selector(backingScaleFactor)]) { + for (NSScreen *screen in [NSScreen screens]) { + float s = [screen backingScaleFactor]; + if (s > display_scale) { + display_scale=s; + } + } + } + window_delegate = [[GodotWindowDelegate alloc] init]; // Don't use accumulation buffer support; it's not accelerated @@ -902,7 +911,7 @@ void OS_OSX::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi window_object = [[GodotWindow alloc] - initWithContentRect:NSMakeRect(0, 0, p_desired.width, p_desired.height) + initWithContentRect:NSMakeRect(0, 0, p_desired.width/display_scale, p_desired.height/display_scale) styleMask:styleMask backing:NSBackingStoreBuffered defer:NO]; @@ -911,15 +920,11 @@ void OS_OSX::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi window_view = [[GodotContentView alloc] init]; - current_videomode = p_desired; - - // Adjust for display density - const NSRect fbRect = convertRectToBacking(NSMakeRect(0, 0, p_desired.width, p_desired.height)); - current_videomode.width = fbRect.size.width; - current_videomode.height = fbRect.size.height; + window_size.width = p_desired.width; + window_size.height = p_desired.height; #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 - if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6) { + if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_6 && display_scale>1) { [window_view setWantsBestResolutionOpenGLSurface:YES]; //if (current_videomode.resizable) [window_object setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; @@ -1062,9 +1067,28 @@ void OS_OSX::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi printf("nscreen count %i\n", (int)[screenArray count]); for (int i=0; i<[screenArray count]; i++) { + float displayScale = 1.0; + + if (display_scale>1.0 && [[screenArray objectAtIndex: i] respondsToSelector:@selector(backingScaleFactor)]) { + displayScale = [[screenArray objectAtIndex: i] backingScaleFactor]; + } + NSRect nsrect = [[screenArray objectAtIndex: i] visibleFrame]; - screens.push_back(Rect2(nsrect.origin.x, nsrect.origin.y, nsrect.size.width, nsrect.size.height)); - printf("added screen %i\n", screens.size()); + Rect2 rect = Rect2(nsrect.origin.x, nsrect.origin.y, nsrect.size.width, nsrect.size.height); + rect.pos*=displayScale; + rect.size*=displayScale; + screens.push_back(rect); + + NSDictionary *description = [[screenArray objectAtIndex: i] deviceDescription]; + NSSize displayPixelSize = [[description objectForKey:NSDeviceSize] sizeValue]; + CGSize displayPhysicalSize = CGDisplayScreenSize( + [[description objectForKey:@"NSScreenNumber"] unsignedIntValue]); + + //printf("width: %i pwidth %i rect width %i\n",int(displayPixelSize.width*displayScale),int(displayPhysicalSize.width*displayScale),int(nsrect.size.width)); + int dpi = (displayPixelSize.width * 25.4f / displayPhysicalSize.width)*displayScale; + + screen_dpi.push_back(dpi); + }; restore_rect = Rect2(get_window_position(), get_window_size()); } @@ -1326,7 +1350,11 @@ void OS_OSX::set_video_mode(const VideoMode& p_video_mode,int p_screen) { OS::VideoMode OS_OSX::get_video_mode(int p_screen) const { - return current_videomode; + VideoMode vm; + vm.width=window_size.width; + vm.height=window_size.height; + + return vm; } void OS_OSX::get_fullscreen_mode_list(List<VideoMode> *p_list,int p_screen) const { @@ -1354,6 +1382,12 @@ Point2 OS_OSX::get_screen_position(int p_screen) const { return screens[p_screen].pos; }; +int OS_OSX::get_screen_dpi(int p_screen) const { + + ERR_FAIL_INDEX_V(p_screen, screens.size(), 72); + return screen_dpi[p_screen]; +} + Size2 OS_OSX::get_screen_size(int p_screen) const { ERR_FAIL_INDEX_V(p_screen, screens.size(), Point2()); @@ -1362,24 +1396,29 @@ Size2 OS_OSX::get_screen_size(int p_screen) const { Point2 OS_OSX::get_window_position() const { - return Size2([window_object frame].origin.x, [window_object frame].origin.y); + Size2 wp([window_object frame].origin.x, [window_object frame].origin.y); + wp*=display_scale; }; void OS_OSX::set_window_position(const Point2& p_position) { - [window_object setFrame:NSMakeRect(p_position.x, p_position.y, [window_object frame].size.width, [window_object frame].size.height) display:YES]; + Point2 size=p_position; + size/=display_scale; + [window_object setFrame:NSMakeRect(size.x, size.y, [window_object frame].size.width, [window_object frame].size.height) display:YES]; }; Size2 OS_OSX::get_window_size() const { - return Size2([window_object frame].size.width, [window_object frame].size.height); + return window_size; + }; void OS_OSX::set_window_size(const Size2 p_size) { + Size2 size=p_size; NSRect frame = [window_object frame]; - [window_object setFrame:NSMakeRect(frame.origin.x, frame.origin.y, p_size.x, p_size.y) display:YES]; + [window_object setFrame:NSMakeRect(frame.origin.x, frame.origin.y, size.x, size.y) display:YES]; }; void OS_OSX::set_window_fullscreen(bool p_enabled) { @@ -1690,5 +1729,7 @@ OS_OSX::OS_OSX() { maximized = false; minimized = false; + window_size=Vector2(1024,600); zoomed = false; + display_scale=1.0; } diff --git a/platform/windows/detect.py b/platform/windows/detect.py index 56e8a5d45d..4edae9cceb 100644 --- a/platform/windows/detect.py +++ b/platform/windows/detect.py @@ -204,8 +204,8 @@ def configure(env): if (env["freetype"]!="no"): env.Append(CCFLAGS=['/DFREETYPE_ENABLED']) - env.Append(CPPPATH=['#tools/freetype']) - env.Append(CPPPATH=['#tools/freetype/freetype/include']) + env.Append(CPPPATH=['#drivers/freetype']) + env.Append(CPPPATH=['#drivers/freetype/freetype/include']) if (env["target"]=="release"): @@ -243,7 +243,7 @@ def configure(env): env.Append(CCFLAGS=['/DGLES2_ENABLED']) env.Append(CCFLAGS=['/DGLEW_ENABLED']) - LIBS=['winmm','opengl32','dsound','kernel32','ole32','oleaut32','user32','gdi32', 'IPHLPAPI','Shlwapi', 'wsock32', 'shell32','advapi32','dinput8','dxguid'] + LIBS=['winmm','opengl32','dsound','kernel32','ole32','oleaut32','user32','gdi32', 'IPHLPAPI','Shcore','Shlwapi', 'wsock32', 'shell32','advapi32','dinput8','dxguid'] env.Append(LINKFLAGS=[p+env["LIBSUFFIX"] for p in LIBS]) env.Append(LIBPATH=[os.getenv("WindowsSdkDir")+"/Lib"]) @@ -352,8 +352,9 @@ def configure(env): if (env["freetype"]!="no"): env.Append(CCFLAGS=['-DFREETYPE_ENABLED']) - env.Append(CPPPATH=['#tools/freetype']) - env.Append(CPPPATH=['#tools/freetype/freetype/include']) + env.Append(CPPPATH=['#drivers/freetype']) + env.Append(CPPPATH=['#drivers/freetype/freetype/include']) + env["CC"]=mingw_prefix+"gcc" env['AS']=mingw_prefix+"as" diff --git a/platform/windows/godot.ico b/platform/windows/godot.ico Binary files differindex e57ce36529..3e52f2e52f 100644 --- a/platform/windows/godot.ico +++ b/platform/windows/godot.ico diff --git a/platform/windows/os_windows.cpp b/platform/windows/os_windows.cpp index c9c7780a2a..8bb5de5d5d 100644 --- a/platform/windows/os_windows.cpp +++ b/platform/windows/os_windows.cpp @@ -57,6 +57,13 @@ #include <regstr.h> #include <process.h> +#if (_MSC_VER >= 1700) +#define HIDPI_SUPPORT +#endif + +#ifdef HIDPI_SUPPORT +#include <ShellScalingAPI.h> +#endif static const WORD MAX_CONSOLE_LINES = 1500; extern "C" { @@ -724,6 +731,32 @@ LRESULT OS_Windows::WndProc(HWND hWnd,UINT uMsg, WPARAM wParam, LPARAM lParam) { } } break; + case WM_DROPFILES: { + + HDROP hDropInfo = NULL; + hDropInfo = (HDROP) wParam; + const int buffsize=4096; + wchar_t buf[buffsize]; + + int fcount = DragQueryFileW(hDropInfo, 0xFFFFFFFF,NULL,0); + + Vector<String> files; + + for(int i=0;i<fcount;i++) { + + DragQueryFileW(hDropInfo, i, buf, buffsize); + String file=buf; + files.push_back(file); + } + + if (files.size() && main_loop) { + main_loop->drop_files(files,0); + } + + + } break; + + default: { @@ -828,7 +861,13 @@ BOOL CALLBACK OS_Windows::MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPR minfo.rect.pos.y=lprcMonitor->top; minfo.rect.size.x=lprcMonitor->right - lprcMonitor->left; minfo.rect.size.y=lprcMonitor->bottom - lprcMonitor->top; - +#ifdef HIDPI_SUPPORT + UINT dpix,dpiy; + GetDpiForMonitor(hMonitor,MDT_EFFECTIVE_DPI,&dpix,&dpiy); + minfo.dpi=(dpix + dpiy)/2; +#else + minfo.dpi=72; +#endif self->monitor_info.push_back(minfo); return TRUE; @@ -1035,6 +1074,8 @@ void OS_Windows::initialize(const VideoMode& p_desired,int p_video_driver,int p_ _ensure_data_dir(); + DragAcceptFiles(hWnd,true); + } @@ -1338,6 +1379,14 @@ Size2 OS_Windows::get_screen_size(int p_screen) const{ return Vector2( monitor_info[p_screen].rect.size ); } + +int OS_Windows::get_screen_dpi(int p_screen) const { + + ERR_FAIL_INDEX_V(p_screen,monitor_info.size(),72); + UINT dpix,dpiy; + return monitor_info[p_screen].dpi; + +} Point2 OS_Windows::get_window_position() const{ RECT r; diff --git a/platform/windows/os_windows.h b/platform/windows/os_windows.h index 810da1b3cd..6dd5b78bfd 100644 --- a/platform/windows/os_windows.h +++ b/platform/windows/os_windows.h @@ -172,6 +172,7 @@ protected: HMONITOR hMonitor; HDC hdcMonitor; Rect2 rect; + int dpi; }; @@ -213,6 +214,8 @@ public: virtual void set_current_screen(int p_screen); virtual Point2 get_screen_position(int p_screen=0) const; virtual Size2 get_screen_size(int p_screen=0) const; + virtual int get_screen_dpi(int p_screen=0) const; + virtual Point2 get_window_position() const; virtual void set_window_position(const Point2& p_position); virtual Size2 get_window_size() const; diff --git a/platform/x11/detect.py b/platform/x11/detect.py index 6b3f7147ef..5a43bf9323 100644 --- a/platform/x11/detect.py +++ b/platform/x11/detect.py @@ -143,8 +143,8 @@ def configure(env): if (env["freetype"]!="no"): env.Append(CCFLAGS=['-DFREETYPE_ENABLED']) if (env["freetype"]=="builtin"): - env.Append(CPPPATH=['#tools/freetype']) - env.Append(CPPPATH=['#tools/freetype/freetype/include']) + env.Append(CPPPATH=['#drivers/freetype']) + env.Append(CPPPATH=['#drivers/freetype/freetype/include']) env.Append(CPPFLAGS=['-DOPENGL_ENABLED','-DGLEW_ENABLED']) diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp index 4d7532d637..66723c0295 100644 --- a/platform/x11/os_x11.cpp +++ b/platform/x11/os_x11.cpp @@ -105,6 +105,7 @@ void OS_X11::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi last_timestamp=0; last_mouse_pos_valid=false; last_keyrelease_time=0; + xdnd_version = 0; if (get_render_thread_mode()==RENDER_SEPARATE_THREAD) { XInitThreads(); @@ -415,6 +416,19 @@ void OS_X11::initialize(const VideoMode& p_desired,int p_video_driver,int p_audi } set_cursor_shape(CURSOR_BUSY); + //Set Xdnd (drag & drop) support + Atom XdndAware = XInternAtom(x11_display, "XdndAware", False); + Atom version=5; + XChangeProperty(x11_display, x11_window, XdndAware, XA_ATOM, 32, PropModeReplace, (unsigned char*)&version, 1); + + xdnd_enter = XInternAtom(x11_display, "XdndEnter", False); + xdnd_position = XInternAtom(x11_display, "XdndPosition", False); + xdnd_status = XInternAtom(x11_display, "XdndStatus", False); + xdnd_action_copy = XInternAtom(x11_display, "XdndActionCopy", False); + xdnd_drop = XInternAtom(x11_display, "XdndDrop", False); + xdnd_finished = XInternAtom(x11_display, "XdndFinished", False); + xdnd_selection = XInternAtom(x11_display, "XdndSelection", False); + requested = None; visual_server->init(); // @@ -1166,6 +1180,72 @@ void OS_X11::handle_key_event(XKeyEvent *p_event, bool p_echo) { input->parse_input_event( event); } +struct Property +{ + unsigned char *data; + int format, nitems; + Atom type; +}; + +static Property read_property(Display* p_display, Window p_window, Atom p_property) { + + Atom actual_type; + int actual_format; + unsigned long nitems; + unsigned long bytes_after; + unsigned char *ret=0; + + int read_bytes = 1024; + + //Keep trying to read the property until there are no + //bytes unread. + do + { + if(ret != 0) + XFree(ret); + + XGetWindowProperty(p_display, p_window, p_property, 0, read_bytes, False, AnyPropertyType, + &actual_type, &actual_format, &nitems, &bytes_after, + &ret); + + read_bytes *= 2; + + }while(bytes_after != 0); + + Property p = {ret, actual_format, nitems, actual_type}; + + return p; +} + +static Atom pick_target_from_list(Display* p_display, Atom *p_list, int p_count) { + + static const char* target_type = "text/uri-list"; + + for (int i = 0; i < p_count; i++) { + + Atom atom = p_list[i]; + + if (atom != None && String(XGetAtomName(p_display, atom)) == target_type) + return atom; + } + return None; +} + +static Atom pick_target_from_atoms(Display* p_disp, Atom p_t1, Atom p_t2, Atom p_t3) { + + static const char* target_type = "text/uri-list"; + if (p_t1 != None && String(XGetAtomName(p_disp, p_t1)) == target_type) + return p_t1; + + if (p_t2 != None && String(XGetAtomName(p_disp, p_t2)) == target_type) + return p_t2; + + if (p_t3 != None && String(XGetAtomName(p_disp, p_t3)) == target_type) + return p_t3; + + return None; +} + void OS_X11::process_xevents() { //printf("checking events %i\n", XPending(x11_display)); @@ -1456,11 +1536,96 @@ void OS_X11::process_xevents() { XFlush (x11_display); } break; + case SelectionNotify: + + if (event.xselection.target == requested) { + + Property p = read_property(x11_display, x11_window, XInternAtom(x11_display, "PRIMARY", 0)); + + Vector<String> files = String((char *)p.data).split("\n", false); + for (int i = 0; i < files.size(); i++) { + files[i] = files[i].replace("file://", "").replace("%20", " ").strip_escapes(); + } + main_loop->drop_files(files); + + //Reply that all is well. + XClientMessageEvent m; + memset(&m, sizeof(m), 0); + m.type = ClientMessage; + m.display = x11_display; + m.window = xdnd_source_window; + m.message_type = xdnd_finished; + m.format=32; + m.data.l[0] = x11_window; + m.data.l[1] = 1; + m.data.l[2] = xdnd_action_copy; //We only ever copy. + + XSendEvent(x11_display, xdnd_source_window, False, NoEventMask, (XEvent*)&m); + } + break; case ClientMessage: if ((unsigned int)event.xclient.data.l[0]==(unsigned int)wm_delete) main_loop->notification(MainLoop::NOTIFICATION_WM_QUIT_REQUEST); + + else if ((unsigned int)event.xclient.message_type == (unsigned int)xdnd_enter) { + + //File(s) have been dragged over the window, check for supported target (text/uri-list) + xdnd_version = ( event.xclient.data.l[1] >> 24); + Window source = event.xclient.data.l[0]; + bool more_than_3 = event.xclient.data.l[1] & 1; + if (more_than_3) { + Property p = read_property(x11_display, source, XInternAtom(x11_display, "XdndTypeList", False)); + requested = pick_target_from_list(x11_display, (Atom*)p.data, p.nitems); + } + else + requested = pick_target_from_atoms(x11_display, event.xclient.data.l[2],event.xclient.data.l[3], event.xclient.data.l[4]); + } + else if ((unsigned int)event.xclient.message_type == (unsigned int )xdnd_position) { + + //xdnd position event, reply with an XDND status message + //just depending on type of data for now + XClientMessageEvent m; + memset(&m, sizeof(m), 0); + m.type = ClientMessage; + m.display = event.xclient.display; + m.window = event.xclient.data.l[0]; + m.message_type = xdnd_status; + m.format=32; + m.data.l[0] = x11_window; + m.data.l[1] = (requested != None); + m.data.l[2] = 0; //empty rectangle + m.data.l[3] = 0; + m.data.l[4] = xdnd_action_copy; + + XSendEvent(x11_display, event.xclient.data.l[0], False, NoEventMask, (XEvent*)&m); + XFlush(x11_display); + } + else if ((unsigned int)event.xclient.message_type == (unsigned int)xdnd_drop) { + + if (requested != None) { + xdnd_source_window = event.xclient.data.l[0]; + if(xdnd_version >= 1) + XConvertSelection(x11_display, xdnd_selection, requested, XInternAtom(x11_display, "PRIMARY", 0), x11_window, event.xclient.data.l[2]); + else + XConvertSelection(x11_display, xdnd_selection, requested, XInternAtom(x11_display, "PRIMARY", 0), x11_window, CurrentTime); + } + else { + //Reply that we're not interested. + XClientMessageEvent m; + memset(&m, sizeof(m), 0); + m.type = ClientMessage; + m.display = event.xclient.display; + m.window = event.xclient.data.l[0]; + m.message_type = xdnd_finished; + m.format=32; + m.data.l[0] = x11_window; + m.data.l[1] = 0; + m.data.l[2] = None; //Failed. + XSendEvent(x11_display, event.xclient.data.l[0], False, NoEventMask, (XEvent*)&m); + } + } break; default: break; diff --git a/platform/x11/os_x11.h b/platform/x11/os_x11.h index d9a5b1688c..1369340b04 100644 --- a/platform/x11/os_x11.h +++ b/platform/x11/os_x11.h @@ -70,6 +70,17 @@ typedef struct { class OS_X11 : public OS_Unix { Atom wm_delete; + Atom xdnd_enter; + Atom xdnd_position; + Atom xdnd_status; + Atom xdnd_action_copy; + Atom xdnd_drop; + Atom xdnd_finished; + Atom xdnd_selection; + Atom requested; + + int xdnd_version; + #if defined(OPENGL_ENABLED) || defined(LEGACYGL_ENABLED) ContextGL_X11 *context_gl; #endif @@ -78,6 +89,7 @@ class OS_X11 : public OS_Unix { VideoMode current_videomode; List<String> args; Window x11_window; + Window xdnd_source_window; MainLoop *main_loop; ::Display* x11_display; char *xmbstring; diff --git a/scene/2d/area_2d.cpp b/scene/2d/area_2d.cpp index 8b7aff3b7a..71728966fd 100644 --- a/scene/2d/area_2d.cpp +++ b/scene/2d/area_2d.cpp @@ -660,9 +660,9 @@ void Area2D::_bind_methods() { ADD_PROPERTYNZ( PropertyInfo(Variant::BOOL,"gravity_point"),_SCS("set_gravity_is_point"),_SCS("is_gravity_a_point")); ADD_PROPERTYNZ( PropertyInfo(Variant::REAL,"gravity_distance_scale", PROPERTY_HINT_RANGE,"0,1024,0.001"),_SCS("set_gravity_distance_scale"),_SCS("get_gravity_distance_scale")); ADD_PROPERTY( PropertyInfo(Variant::VECTOR2,"gravity_vec"),_SCS("set_gravity_vector"),_SCS("get_gravity_vector")); - ADD_PROPERTY( PropertyInfo(Variant::REAL,"gravity",PROPERTY_HINT_RANGE,"-1024,1024,0.01"),_SCS("set_gravity"),_SCS("get_gravity")); - ADD_PROPERTY( PropertyInfo(Variant::REAL,"linear_damp",PROPERTY_HINT_RANGE,"0,1024,0.001"),_SCS("set_linear_damp"),_SCS("get_linear_damp")); - ADD_PROPERTY( PropertyInfo(Variant::REAL,"angular_damp",PROPERTY_HINT_RANGE,"0,1024,0.001"),_SCS("set_angular_damp"),_SCS("get_angular_damp")); + ADD_PROPERTY( PropertyInfo(Variant::REAL,"gravity",PROPERTY_HINT_RANGE,"-1024,1024,0.001"),_SCS("set_gravity"),_SCS("get_gravity")); + ADD_PROPERTY( PropertyInfo(Variant::REAL,"linear_damp",PROPERTY_HINT_RANGE,"0,100,0.01"),_SCS("set_linear_damp"),_SCS("get_linear_damp")); + ADD_PROPERTY( PropertyInfo(Variant::REAL,"angular_damp",PROPERTY_HINT_RANGE,"0,100,0.01"),_SCS("set_angular_damp"),_SCS("get_angular_damp")); ADD_PROPERTYNZ( PropertyInfo(Variant::INT,"priority",PROPERTY_HINT_RANGE,"0,128,1"),_SCS("set_priority"),_SCS("get_priority")); ADD_PROPERTYNO( PropertyInfo(Variant::BOOL,"monitoring"),_SCS("set_enable_monitoring"),_SCS("is_monitoring_enabled")); ADD_PROPERTYNO( PropertyInfo(Variant::BOOL,"monitorable"),_SCS("set_monitorable"),_SCS("is_monitorable")); diff --git a/scene/2d/light_2d.cpp b/scene/2d/light_2d.cpp index b79c07360b..1cb34075bb 100644 --- a/scene/2d/light_2d.cpp +++ b/scene/2d/light_2d.cpp @@ -357,11 +357,11 @@ void Light2D::_bind_methods() { ADD_PROPERTY( PropertyInfo(Variant::BOOL,"enabled"),_SCS("set_enabled"),_SCS("is_enabled")); ADD_PROPERTY( PropertyInfo(Variant::OBJECT,"texture",PROPERTY_HINT_RESOURCE_TYPE,"Texture"),_SCS("set_texture"),_SCS("get_texture")); ADD_PROPERTY( PropertyInfo(Variant::VECTOR2,"offset"),_SCS("set_texture_offset"),_SCS("get_texture_offset")); - ADD_PROPERTY( PropertyInfo(Variant::REAL,"scale",PROPERTY_HINT_RANGE,"0.01,4096,0.01"),_SCS("set_texture_scale"),_SCS("get_texture_scale")); + ADD_PROPERTY( PropertyInfo(Variant::REAL,"scale",PROPERTY_HINT_RANGE,"0.01,50,0.01"),_SCS("set_texture_scale"),_SCS("get_texture_scale")); ADD_PROPERTY( PropertyInfo(Variant::COLOR,"color"),_SCS("set_color"),_SCS("get_color")); - ADD_PROPERTY( PropertyInfo(Variant::REAL,"energy"),_SCS("set_energy"),_SCS("get_energy")); + ADD_PROPERTY( PropertyInfo(Variant::REAL,"energy",PROPERTY_HINT_RANGE,"0.01,100,0.01"),_SCS("set_energy"),_SCS("get_energy")); ADD_PROPERTY( PropertyInfo(Variant::INT,"mode",PROPERTY_HINT_ENUM,"Add,Sub,Mix,Mask"),_SCS("set_mode"),_SCS("get_mode")); - ADD_PROPERTY( PropertyInfo(Variant::REAL,"range/height"),_SCS("set_height"),_SCS("get_height")); + ADD_PROPERTY( PropertyInfo(Variant::REAL,"range/height",PROPERTY_HINT_RANGE,"-100,100,0.1"),_SCS("set_height"),_SCS("get_height")); ADD_PROPERTY( PropertyInfo(Variant::INT,"range/z_min",PROPERTY_HINT_RANGE,itos(VS::CANVAS_ITEM_Z_MIN)+","+itos(VS::CANVAS_ITEM_Z_MAX)+",1"),_SCS("set_z_range_min"),_SCS("get_z_range_min")); ADD_PROPERTY( PropertyInfo(Variant::INT,"range/z_max",PROPERTY_HINT_RANGE,itos(VS::CANVAS_ITEM_Z_MIN)+","+itos(VS::CANVAS_ITEM_Z_MAX)+",1"),_SCS("set_z_range_max"),_SCS("get_z_range_max")); ADD_PROPERTY( PropertyInfo(Variant::INT,"range/layer_min",PROPERTY_HINT_RANGE,"-512,512,1"),_SCS("set_layer_range_min"),_SCS("get_layer_range_min")); diff --git a/scene/2d/polygon_2d.cpp b/scene/2d/polygon_2d.cpp index fc6986327f..03ced12c55 100644 --- a/scene/2d/polygon_2d.cpp +++ b/scene/2d/polygon_2d.cpp @@ -145,7 +145,18 @@ void Polygon2D::_notification(int p_what) { Vector<Color> colors; - colors.push_back(color); + int color_len=vertex_colors.size(); + colors.resize(len); + { + DVector<Color>::Read color_r=vertex_colors.read(); + for(int i=0;i<color_len && i<len;i++){ + colors[i]=color_r[i]; + } + for(int i=color_len;i<len;i++){ + colors[i]=color; + } + } + Vector<int> indices = Geometry::triangulate_polygon(points); VS::get_singleton()->canvas_item_add_triangle_array(get_canvas_item(),indices,points,colors,uvs,texture.is_valid()?texture->get_rid():RID()); @@ -188,6 +199,16 @@ Color Polygon2D::get_color() const{ return color; } +void Polygon2D::set_vertex_colors(const DVector<Color>& p_colors){ + + vertex_colors=p_colors; + update(); +} +DVector<Color> Polygon2D::get_vertex_colors() const{ + + return vertex_colors; +} + void Polygon2D::set_texture(const Ref<Texture>& p_texture){ texture=p_texture; @@ -293,6 +314,9 @@ void Polygon2D::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_color","color"),&Polygon2D::set_color); ObjectTypeDB::bind_method(_MD("get_color"),&Polygon2D::get_color); + ObjectTypeDB::bind_method(_MD("set_vertex_colors","vertex_colors"),&Polygon2D::set_vertex_colors); + ObjectTypeDB::bind_method(_MD("get_vertex_colors"),&Polygon2D::get_vertex_colors); + ObjectTypeDB::bind_method(_MD("set_texture","texture"),&Polygon2D::set_texture); ObjectTypeDB::bind_method(_MD("get_texture"),&Polygon2D::get_texture); @@ -323,6 +347,7 @@ void Polygon2D::_bind_methods() { ADD_PROPERTY( PropertyInfo(Variant::VECTOR2_ARRAY,"polygon"),_SCS("set_polygon"),_SCS("get_polygon")); ADD_PROPERTY( PropertyInfo(Variant::VECTOR2_ARRAY,"uv"),_SCS("set_uv"),_SCS("get_uv")); ADD_PROPERTY( PropertyInfo(Variant::COLOR,"color"),_SCS("set_color"),_SCS("get_color")); + ADD_PROPERTY( PropertyInfo(Variant::COLOR_ARRAY,"vertex_colors"),_SCS("set_vertex_colors"),_SCS("get_vertex_colors")); ADD_PROPERTY( PropertyInfo(Variant::VECTOR2,"offset"),_SCS("set_offset"),_SCS("get_offset")); ADD_PROPERTY( PropertyInfo(Variant::OBJECT,"texture/texture",PROPERTY_HINT_RESOURCE_TYPE,"Texture"),_SCS("set_texture"),_SCS("get_texture")); ADD_PROPERTY( PropertyInfo(Variant::VECTOR2,"texture/offset"),_SCS("set_texture_offset"),_SCS("get_texture_offset")); diff --git a/scene/2d/polygon_2d.h b/scene/2d/polygon_2d.h index 517b623ccd..eaa642787c 100644 --- a/scene/2d/polygon_2d.h +++ b/scene/2d/polygon_2d.h @@ -9,6 +9,7 @@ class Polygon2D : public Node2D { DVector<Vector2> polygon; DVector<Vector2> uv; + DVector<Color> vertex_colors; Color color; Ref<Texture> texture; Vector2 tex_scale; @@ -40,6 +41,9 @@ public: void set_color(const Color& p_color); Color get_color() const; + void set_vertex_colors(const DVector<Color>& p_colors); + DVector<Color> get_vertex_colors() const; + void set_texture(const Ref<Texture>& p_texture); Ref<Texture> get_texture() const; diff --git a/scene/3d/mesh_instance.cpp b/scene/3d/mesh_instance.cpp index cfe273fa20..ef956e8ad9 100644 --- a/scene/3d/mesh_instance.cpp +++ b/scene/3d/mesh_instance.cpp @@ -31,8 +31,8 @@ #include "skeleton.h" #include "physics_body.h" #include "body_shape.h" - - +#include "scene/scene_string_names.h" +#include "core_string_names.h" bool MeshInstance::_set(const StringName& p_name, const Variant& p_value) { //this is not _too_ bad performance wise, really. it only arrives here if the property was not set anywhere else. @@ -43,13 +43,22 @@ bool MeshInstance::_set(const StringName& p_name, const Variant& p_value) { Map<StringName,MorphTrack>::Element *E = morph_tracks.find(p_name); - if (!E) - return false; + if (E) { + E->get().value=p_value; + VisualServer::get_singleton()->instance_set_morph_target_weight(get_instance(),E->get().idx,E->get().value); + return true; + } - E->get().value=p_value; - VisualServer::get_singleton()->instance_set_morph_target_weight(get_instance(),E->get().idx,E->get().value); + if (p_name.operator String().begins_with("material/")) { + int idx = p_name.operator String().get_slicec('/',1).to_int(); + if (idx>=materials.size() || idx<0) + return false; - return true; + set_surface_material(idx,p_value); + return true; + } + + return false; } bool MeshInstance::_get(const StringName& p_name,Variant &r_ret) const { @@ -59,12 +68,19 @@ bool MeshInstance::_get(const StringName& p_name,Variant &r_ret) const { return false; const Map<StringName,MorphTrack>::Element *E = morph_tracks.find(p_name); - if (!E) - return false; - - r_ret = E->get().value; + if (E) { + r_ret = E->get().value; + return true; + } - return true; + if (p_name.operator String().begins_with("material/")) { + int idx = p_name.operator String().get_slicec('/',1).to_int(); + if (idx>=materials.size() || idx<0) + return false; + r_ret=materials[idx]; + return true; + } + return false; } void MeshInstance::_get_property_list( List<PropertyInfo> *p_list) const { @@ -80,6 +96,12 @@ void MeshInstance::_get_property_list( List<PropertyInfo> *p_list) const { for(List<String>::Element *E=ls.front();E;E=E->next()) { p_list->push_back( PropertyInfo(Variant::REAL,E->get(),PROPERTY_HINT_RANGE,"0,1,0.01")); } + + if (mesh.is_valid()) { + for(int i=0;i<mesh->get_surface_count();i++) { + p_list->push_back( PropertyInfo(Variant::OBJECT, "material/"+itos(i), PROPERTY_HINT_RESOURCE_TYPE, "Material")); + } + } } @@ -87,6 +109,14 @@ void MeshInstance::_get_property_list( List<PropertyInfo> *p_list) const { void MeshInstance::set_mesh(const Ref<Mesh>& p_mesh) { + if (mesh==p_mesh) + return; + + if (mesh.is_valid()) { + mesh->disconnect(CoreStringNames::get_singleton()->changed,this,SceneStringNames::get_singleton()->_mesh_changed); + materials.clear(); + } + mesh=p_mesh; morph_tracks.clear(); @@ -100,13 +130,17 @@ void MeshInstance::set_mesh(const Ref<Mesh>& p_mesh) { mt.value=0; morph_tracks["morph/"+String(mesh->get_morph_target_name(i))]=mt; } + + mesh->connect(CoreStringNames::get_singleton()->changed,this,SceneStringNames::get_singleton()->_mesh_changed); + materials.resize(mesh->get_surface_count()); + set_base(mesh->get_rid()); } else { set_base(RID()); } - _change_notify("mesh"); + _change_notify(); } Ref<Mesh> MeshInstance::get_mesh() const { @@ -232,6 +266,32 @@ void MeshInstance::_notification(int p_what) { } +void MeshInstance::set_surface_material(int p_surface,const Ref<Material>& p_material) { + + ERR_FAIL_INDEX(p_surface,materials.size()); + + materials[p_surface]=p_material; + + if (materials[p_surface].is_valid()) + VS::get_singleton()->instance_set_surface_material(get_instance(),p_surface,materials[p_surface]->get_rid()); + else + VS::get_singleton()->instance_set_surface_material(get_instance(),p_surface,RID()); + +} + +Ref<Material> MeshInstance::get_surface_material(int p_surface) const { + + ERR_FAIL_INDEX_V(p_surface,materials.size(),Ref<Material>()); + + return materials[p_surface]; +} + + +void MeshInstance::_mesh_changed() { + + materials.resize( mesh->get_surface_count() ); +} + void MeshInstance::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_mesh","mesh:Mesh"),&MeshInstance::set_mesh); @@ -243,6 +303,7 @@ void MeshInstance::_bind_methods() { ObjectTypeDB::set_method_flags("MeshInstance","create_trimesh_collision",METHOD_FLAGS_DEFAULT); ObjectTypeDB::bind_method(_MD("create_convex_collision"),&MeshInstance::create_convex_collision); ObjectTypeDB::set_method_flags("MeshInstance","create_convex_collision",METHOD_FLAGS_DEFAULT); + ObjectTypeDB::bind_method(_MD("_mesh_changed"),&MeshInstance::_mesh_changed); ADD_PROPERTY( PropertyInfo( Variant::OBJECT, "mesh/mesh", PROPERTY_HINT_RESOURCE_TYPE, "Mesh" ), _SCS("set_mesh"), _SCS("get_mesh")); ADD_PROPERTY( PropertyInfo (Variant::NODE_PATH, "mesh/skeleton"), _SCS("set_skeleton_path"), _SCS("get_skeleton_path")); } diff --git a/scene/3d/mesh_instance.h b/scene/3d/mesh_instance.h index 7c605c2d6d..fd8faf38b4 100644 --- a/scene/3d/mesh_instance.h +++ b/scene/3d/mesh_instance.h @@ -50,7 +50,9 @@ class MeshInstance : public GeometryInstance { }; Map<StringName,MorphTrack> morph_tracks; + Vector<Ref<Material> > materials; + void _mesh_changed(); void _resolve_skeleton_path(); protected: @@ -69,6 +71,9 @@ public: void set_skeleton_path(const NodePath& p_skeleton); NodePath get_skeleton_path(); + void set_surface_material(int p_surface,const Ref<Material>& p_material); + Ref<Material> get_surface_material(int p_surface) const; + Node* create_trimesh_collision_node(); void create_trimesh_collision(); diff --git a/scene/gui/box_container.cpp b/scene/gui/box_container.cpp index a9522cf248..a6ffc30a83 100644 --- a/scene/gui/box_container.cpp +++ b/scene/gui/box_container.cpp @@ -280,6 +280,7 @@ BoxContainer::AlignMode BoxContainer::get_alignment() const { void BoxContainer::add_spacer(bool p_begin) { Control *c = memnew( Control ); + c->set_stop_mouse(false); if (vertical) c->set_v_size_flags(SIZE_EXPAND_FILL); else diff --git a/scene/gui/dialogs.cpp b/scene/gui/dialogs.cpp index 51242d89bd..6342391383 100644 --- a/scene/gui/dialogs.cpp +++ b/scene/gui/dialogs.cpp @@ -118,6 +118,16 @@ void WindowDialog::set_title(const String& p_title) { update(); } +Size2 WindowDialog::get_minimum_size() const { + + Ref<Font> font = get_font("title_font","WindowDialog"); + int msx=close_button->get_combined_minimum_size().x; + msx+=font->get_string_size(title).x; + + return Size2(msx,1); +} + + String WindowDialog::get_title() const { return title; @@ -192,11 +202,9 @@ void AcceptDialog::_notification(int p_what) { if (p_what==NOTIFICATION_MODAL_CLOSE) { cancel_pressed(); - } if (p_what==NOTIFICATION_DRAW) { - - - + } if (p_what==NOTIFICATION_RESIZED) { + _update_child_rect(); } } @@ -244,12 +252,69 @@ void AcceptDialog::register_text_enter(Node *p_line_edit) { p_line_edit->connect("text_entered", this,"_builtin_text_entered"); } +void AcceptDialog::_update_child_rect() { + + int margin = get_constant("margin","Dialogs"); + Size2 size = get_size(); + Size2 hminsize = hbc->get_combined_minimum_size(); + + Vector2 cpos(margin,margin); + Vector2 csize(size.x-margin*2,size.y-margin*3-hminsize.y); + label->set_pos(cpos); + label->set_size(csize); + + if (child) { + + child->set_pos(cpos); + child->set_size(csize); + } + + cpos.y+=csize.y+margin; + csize.y=hminsize.y; + + hbc->set_pos(cpos); + hbc->set_size(csize); + +} + +Size2 AcceptDialog::get_minimum_size() const { + + int margin = get_constant("margin","Dialogs"); + Size2 minsize = label->get_combined_minimum_size(); + if (child) { + + Size2 cminsize = child->get_combined_minimum_size(); + minsize.x=MAX(cminsize.x,minsize.x); + minsize.y=MAX(cminsize.y,minsize.y); + } + + Size2 hminsize = hbc->get_combined_minimum_size(); + minsize.x = MAX(hminsize.x,minsize.x); + minsize.y+=hminsize.y; + minsize.x+=margin*2; + minsize.y+=margin*3; //one as separation between hbc and child + + Size2 wmsize = WindowDialog::get_minimum_size(); + minsize.x=MAX(wmsize.x,minsize.x); + return minsize; +} + + void AcceptDialog::set_child_rect(Control *p_child) { ERR_FAIL_COND(p_child->get_parent()!=this); - p_child->set_area_as_parent_rect(get_constant("margin","Dialogs")); - p_child->set_margin(MARGIN_BOTTOM, get_constant("button_margin","Dialogs")+10); + //p_child->set_area_as_parent_rect(get_constant("margin","Dialogs")); + child=p_child; + minimum_size_changed(); + _update_child_rect(); +} + +void AcceptDialog::remove_child_notify(Node *p_child) { + + if (p_child==child) { + child=NULL; + } } void AcceptDialog::_custom_action(const String& p_action) { @@ -284,7 +349,7 @@ Button* AcceptDialog::add_cancel(const String &p_cancel) { String c = p_cancel; if (p_cancel=="") - c="Cancel"; + c=RTR("Cancel"); Button *b = swap_ok_cancel ? add_button(c,true) : add_button(c); b->connect("pressed",this,"_closed"); return b; @@ -341,7 +406,7 @@ AcceptDialog::AcceptDialog() { hbc->add_spacer(); ok = memnew( Button ); - ok->set_text("OK"); + ok->set_text(RTR("OK")); hbc->add_child(ok); hbc->add_spacer(); //add_child(ok); @@ -351,7 +416,9 @@ AcceptDialog::AcceptDialog() { set_as_toplevel(true); hide_on_ok=true; - set_title("Alert!"); + set_title(RTR("Alert!")); + + child=NULL; } @@ -372,6 +439,6 @@ Button *ConfirmationDialog::get_cancel() { ConfirmationDialog::ConfirmationDialog() { - set_title("Please Confirm..."); + set_title(RTR("Please Confirm...")); cancel = add_cancel(); } diff --git a/scene/gui/dialogs.h b/scene/gui/dialogs.h index f256c49aee..d00bb41ff6 100644 --- a/scene/gui/dialogs.h +++ b/scene/gui/dialogs.h @@ -64,6 +64,8 @@ public: void set_title(const String& p_title); String get_title() const; + Size2 get_minimum_size() const; + WindowDialog(); ~WindowDialog(); @@ -89,6 +91,7 @@ class AcceptDialog : public WindowDialog { OBJ_TYPE(AcceptDialog,WindowDialog); + Control *child; HBoxContainer *hbc; Label *label; Button *ok; @@ -100,10 +103,12 @@ class AcceptDialog : public WindowDialog { void _ok_pressed(); void _close_pressed(); void _builtin_text_entered(const String& p_text); + void _update_child_rect(); static bool swap_ok_cancel; + virtual void remove_child_notify(Node *p_child); protected: @@ -116,6 +121,8 @@ protected: virtual void custom_action(const String&) {} public: + Size2 get_minimum_size() const; + Label *get_label() { return label; } static void set_swap_ok_cancel(bool p_swap); diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp index c1a0e43e49..fc4ab5f8ca 100644 --- a/scene/gui/item_list.cpp +++ b/scene/gui/item_list.cpp @@ -325,6 +325,18 @@ int ItemList::get_fixed_column_width() const{ return fixed_column_width; } +void ItemList::set_same_column_width(bool p_enable){ + + same_column_width=p_enable; + update(); + shape_changed=true; + +} +int ItemList::is_same_column_width() const{ + + return same_column_width; +} + void ItemList::set_max_text_lines(int p_lines){ ERR_FAIL_COND(p_lines<1); @@ -824,6 +836,8 @@ void ItemList::_notification(int p_what) { } if (shape_changed) { + + float max_column_width = 0; //1- compute item minimum sizes for(int i=0;i<items.size();i++) { @@ -831,7 +845,7 @@ void ItemList::_notification(int p_what) { Size2 minsize; if (items[i].icon.is_valid()) { - minsize=_adjust_to_max_size(items[i].get_icon_size(),max_icon_size); + minsize=_adjust_to_max_size(items[i].get_icon_size(),max_icon_size) * icon_scale; if (items[i].text!="") { if (icon_mode==ICON_MODE_TOP) { @@ -864,10 +878,11 @@ void ItemList::_notification(int p_what) { } - - items[i].rect_cache.size=minsize; if (fixed_column_width>0) - items[i].rect_cache.size.x=fixed_column_width; + minsize.x=fixed_column_width; + max_column_width=MAX(max_column_width,minsize.x); + items[i].rect_cache.size=minsize; + items[i].min_rect_cache.size=minsize; } @@ -896,17 +911,23 @@ void ItemList::_notification(int p_what) { break; } + items[i].rect_cache=items[i].min_rect_cache; + if(same_column_width) + items[i].rect_cache.size.x=max_column_width; items[i].rect_cache.pos=ofs; max_h=MAX(max_h,items[i].rect_cache.size.y); - ofs.x+=items[i].rect_cache.size.x; + ofs.x+=items[i].rect_cache.size.x + hseparation; //print_line("item "+itos(i)+" ofs "+rtos(items[i].rect_cache.size.x)); - if (col>0) - ofs.x+=hseparation; col++; if (col==current_columns) { if (i<items.size()-1) separators.push_back(ofs.y+max_h+vseparation/2); + + for(int j=i;j>=0 && col>0;j--, col--) { + items[j].rect_cache.size.y = max_h; + } + ofs.x=0; ofs.y+=max_h+vseparation; col=0; @@ -914,6 +935,10 @@ void ItemList::_notification(int p_what) { } } + for(int j=items.size()-1;j>=0 && col>0;j--, col--) { + items[j].rect_cache.size.y = max_h; + } + if (all_fit) { float max = MAX(page,ofs.y+max_h); scroll_bar->set_max(max); @@ -976,7 +1001,7 @@ void ItemList::_notification(int p_what) { Vector2 text_ofs; if (items[i].icon.is_valid()) { - Size2 icon_size = _adjust_to_max_size(items[i].get_icon_size(),max_icon_size); + Size2 icon_size = _adjust_to_max_size(items[i].get_icon_size(),max_icon_size) * icon_scale; Vector2 icon_ofs; if (min_icon_size!=Vector2()) { @@ -988,7 +1013,12 @@ void ItemList::_notification(int p_what) { if (icon_mode==ICON_MODE_TOP) { pos.x += Math::floor((items[i].rect_cache.size.width - icon_size.width)/2); + pos.y += MIN( + Math::floor((items[i].rect_cache.size.height - icon_size.height)/2), + items[i].rect_cache.size.height - items[i].min_rect_cache.size.height + ); text_ofs.y = MAX(icon_size.height, min_icon_size.y) + icon_margin; + text_ofs.y += items[i].rect_cache.size.height - items[i].min_rect_cache.size.height; } else { pos.y += Math::floor((items[i].rect_cache.size.height - icon_size.height)/2); @@ -1014,6 +1044,8 @@ void ItemList::_notification(int p_what) { Vector2 size = font->get_string_size(items[i].text); if (fixed_column_width) max_len=fixed_column_width; + else if(same_column_width) + max_len=items[i].rect_cache.size.x; else max_len=size.x; @@ -1201,6 +1233,14 @@ bool ItemList::get_allow_rmb_select() const { return allow_rmb_select; } +void ItemList::set_icon_scale(real_t p_scale) { + icon_scale = p_scale; +} + +real_t ItemList::get_icon_scale() const { + return icon_scale; +} + void ItemList::_bind_methods(){ ObjectTypeDB::bind_method(_MD("add_item","text","icon:Texture","selectable"),&ItemList::add_item,DEFVAL(Variant()),DEFVAL(true)); @@ -1243,6 +1283,9 @@ void ItemList::_bind_methods(){ ObjectTypeDB::bind_method(_MD("set_fixed_column_width","width"),&ItemList::set_fixed_column_width); ObjectTypeDB::bind_method(_MD("get_fixed_column_width"),&ItemList::get_fixed_column_width); + ObjectTypeDB::bind_method(_MD("set_same_column_width","enable"),&ItemList::set_same_column_width); + ObjectTypeDB::bind_method(_MD("is_same_column_width"),&ItemList::is_same_column_width); + ObjectTypeDB::bind_method(_MD("set_max_text_lines","lines"),&ItemList::set_max_text_lines); ObjectTypeDB::bind_method(_MD("get_max_text_lines"),&ItemList::get_max_text_lines); @@ -1261,6 +1304,9 @@ void ItemList::_bind_methods(){ ObjectTypeDB::bind_method(_MD("set_max_icon_size","size"),&ItemList::set_max_icon_size); ObjectTypeDB::bind_method(_MD("get_max_icon_size"),&ItemList::get_max_icon_size); + ObjectTypeDB::bind_method(_MD("set_icon_scale","scale"),&ItemList::set_icon_scale); + ObjectTypeDB::bind_method(_MD("get_icon_scale"),&ItemList::get_icon_scale); + ObjectTypeDB::bind_method(_MD("set_allow_rmb_select","allow"),&ItemList::set_allow_rmb_select); ObjectTypeDB::bind_method(_MD("get_allow_rmb_select"),&ItemList::get_allow_rmb_select); @@ -1292,6 +1338,7 @@ ItemList::ItemList() { icon_mode=ICON_MODE_LEFT; fixed_column_width=0; + same_column_width = false; max_text_lines=1; max_columns=1; @@ -1308,6 +1355,7 @@ ItemList::ItemList() { defer_select_single=-1; allow_rmb_select=false; + icon_scale = 1.0f; } ItemList::~ItemList() { diff --git a/scene/gui/item_list.h b/scene/gui/item_list.h index 59fa1d8270..087c585128 100644 --- a/scene/gui/item_list.h +++ b/scene/gui/item_list.h @@ -33,6 +33,7 @@ private: Color custom_bg; Rect2 rect_cache; + Rect2 min_rect_cache; Size2 get_icon_size() const; @@ -44,6 +45,7 @@ private: bool shape_changed; bool ensure_selected_visible; + bool same_column_width; Vector<Item> items; Vector<int> separators; @@ -59,12 +61,18 @@ private: int fixed_column_width; int max_text_lines; int max_columns; + Size2 min_icon_size; Size2 max_icon_size; + + Size2 max_item_size_cache; + int defer_select_single; bool allow_rmb_select; + real_t icon_scale; + void _scroll_changed(double); void _input_event(const InputEvent& p_event); protected: @@ -121,6 +129,9 @@ public: void set_fixed_column_width(int p_size); int get_fixed_column_width() const; + void set_same_column_width(bool p_enable); + int is_same_column_width() const; + void set_max_text_lines(int p_amount); int get_max_text_lines() const; @@ -150,6 +161,9 @@ public: virtual String get_tooltip(const Point2& p_pos) const; int get_item_at_pos(const Point2& p_pos,bool p_exact=false) const; + void set_icon_scale(real_t p_scale); + real_t get_icon_scale() const; + ItemList(); ~ItemList(); }; diff --git a/scene/gui/tab_container.cpp b/scene/gui/tab_container.cpp index 1c6a97bab8..c8bd1cb5a1 100644 --- a/scene/gui/tab_container.cpp +++ b/scene/gui/tab_container.cpp @@ -411,6 +411,11 @@ void TabContainer::_notification(int p_what) { panel->draw(ci, Rect2( 0, top_size.height, size.width, size.height-top_size.height)); } break; + case NOTIFICATION_READY: + case NOTIFICATION_THEME_CHANGED: { + + call_deferred("set_current_tab",get_current_tab()); //wait until all changed theme + } break; } } diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 03024daff5..fd6e97d33f 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -314,6 +314,10 @@ void TextEdit::_update_scrollbars() { if (line_numbers) total_width += cache.line_number_w; + if (draw_breakpoint_gutter) { + total_width += cache.breakpoint_gutter_width; + } + bool use_hscroll=true; bool use_vscroll=true; @@ -412,9 +416,15 @@ void TextEdit::_notification(int p_what) { case NOTIFICATION_THEME_CHANGED: { _update_caches(); - }; + } break; case NOTIFICATION_DRAW: { + if (draw_breakpoint_gutter) { + cache.breakpoint_gutter_width = breakpoint_gutter_width; + } else { + cache.breakpoint_gutter_width = 0; + } + int line_number_char_count=0; { @@ -439,7 +449,7 @@ void TextEdit::_notification(int p_what) { RID ci = get_canvas_item(); - int xmargin_beg=cache.style_normal->get_margin(MARGIN_LEFT)+cache.line_number_w; + int xmargin_beg=cache.style_normal->get_margin(MARGIN_LEFT)+cache.line_number_w+cache.breakpoint_gutter_width; int xmargin_end=cache.size.width-cache.style_normal->get_margin(MARGIN_RIGHT); //let's do it easy for now: cache.style_normal->draw(ci,Rect2(Point2(),cache.size)); @@ -682,9 +692,13 @@ void TextEdit::_notification(int p_what) { // check if line contains highlighted word int highlighted_text_col = -1; - if (highlighted_text.length() != 0) { - highlighted_text_col = _get_column_pos_of_word(highlighted_text, str, 0); - } + int search_text_col = -1; + + if (!search_text.empty()) + search_text_col = _get_column_pos_of_word(search_text, str, search_flags, 0); + + if (highlighted_text.length() != 0 && highlighted_text != search_text) + highlighted_text_col = _get_column_pos_of_word(highlighted_text, str, SEARCH_MATCH_CASE|SEARCH_WHOLE_WORDS, 0); if (cache.line_number_w) { String fc = String::num(line+1); @@ -692,7 +706,7 @@ void TextEdit::_notification(int p_what) { fc="0"+fc; } - cache.font->draw(ci,Point2(cache.style_normal->get_margin(MARGIN_LEFT),ofs_y+cache.font->get_ascent()),fc,cache.line_number_color); + cache.font->draw(ci,Point2(cache.style_normal->get_margin(MARGIN_LEFT)+cache.breakpoint_gutter_width,ofs_y+cache.font->get_ascent()),fc,cache.line_number_color); } const Map<int,Text::ColorRegionInfo>& cri_map=text.get_color_region_info(line); @@ -706,6 +720,14 @@ void TextEdit::_notification(int p_what) { if (text.is_breakpoint(line)) { VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(xmargin_beg, ofs_y,xmargin_end-xmargin_beg,get_row_height()),cache.breakpoint_color); + + // draw breakpoint marker + if (draw_breakpoint_gutter) { + int vertical_gap = cache.breakpoint_gutter_width / 2; + int marker_size = cache.breakpoint_gutter_width - vertical_gap; + // no transparency on marker + VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(cache.style_normal->get_margin(MARGIN_LEFT) + 1, ofs_y + vertical_gap ,marker_size, marker_size),Color(cache.breakpoint_color.r, cache.breakpoint_color.g, cache.breakpoint_color.b)); + } } @@ -879,20 +901,45 @@ void TextEdit::_notification(int p_what) { break; } - bool in_selection = (selection.active && line>=selection.from_line && line<=selection.to_line && (line>selection.from_line || j>=selection.from_column) && (line<selection.to_line || j<selection.to_column)); + bool in_search_result=false; + + if (search_text_col != -1) { + // if we are at the end check for new search result on same line + if (j >= search_text_col+search_text.length()) + search_text_col = _get_column_pos_of_word(search_text, str, search_flags, j); + + in_search_result = j >= search_text_col && j < search_text_col+search_text.length(); + + if (in_search_result) { + VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(Point2i( char_ofs+char_margin, ofs_y ), Size2i(char_w, get_row_height())),cache.search_result_color); + } + } + bool in_selection = (selection.active && line>=selection.from_line && line<=selection.to_line && (line>selection.from_line || j>=selection.from_column) && (line<selection.to_line || j<selection.to_column)); if (in_selection) { //inside selection! VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(Point2i( char_ofs+char_margin, ofs_y ), Size2i(char_w,get_row_height())),cache.selection_color); } + if (in_search_result) { + Color border_color=(line==search_result_line && j>=search_result_col && j<search_result_col+search_text.length())?cache.font_color:cache.search_result_border_color; + + VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(Point2i( char_ofs+char_margin, ofs_y ), Size2i(char_w,1)),border_color); + VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(Point2i( char_ofs+char_margin, ofs_y+get_row_height()-1 ), Size2i(char_w,1)),border_color); + + if (j==search_text_col) + VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(Point2i( char_ofs+char_margin, ofs_y ), Size2i(1,get_row_height())),border_color); + if (j==search_text_col+search_text.length()-1) + VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(Point2i( char_ofs+char_margin+char_w-1, ofs_y ), Size2i(1,get_row_height())),border_color); + } + if (highlight_all_occurrences) { if (highlighted_text_col != -1) { // if we are at the end check for new word on same line if (j > highlighted_text_col+highlighted_text.length()) { - highlighted_text_col = _get_column_pos_of_word(highlighted_text, str, j); + highlighted_text_col = _get_column_pos_of_word(highlighted_text, str, SEARCH_MATCH_CASE|SEARCH_WHOLE_WORDS, j); } bool in_highlighted_word = (j >= highlighted_text_col && j < highlighted_text_col+highlighted_text.length()); @@ -1347,7 +1394,7 @@ void TextEdit::_get_mouse_pos(const Point2i& p_mouse, int &r_row, int &r_col) co col=text[row].size(); } else { - col=p_mouse.x-(cache.style_normal->get_margin(MARGIN_LEFT)+cache.line_number_w); + col=p_mouse.x-(cache.style_normal->get_margin(MARGIN_LEFT)+cache.line_number_w+cache.breakpoint_gutter_width); col+=cursor.x_ofs; col=get_char_pos_for( col, get_line(row) ); } @@ -1421,6 +1468,15 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { int row,col; _get_mouse_pos(Point2i(mb.x,mb.y), row,col); + // toggle breakpoint on gutter click + if (draw_breakpoint_gutter) { + int gutter=cache.style_normal->get_margin(MARGIN_LEFT); + if (mb.x > gutter && mb.x <= gutter + cache.breakpoint_gutter_width + 3) { + set_line_as_breakpoint(row, !is_line_set_as_breakpoint(row)); + return; + } + } + int prev_col=cursor.column; int prev_line=cursor.line; @@ -1820,7 +1876,9 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { } if (clear) { - begin_complex_operation(); + if (!dobreak) { + begin_complex_operation(); + } selection.active=false; update(); _remove_text(selection.from_line,selection.from_column,selection.to_line,selection.to_column); @@ -1892,7 +1950,8 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { if (completion_hint!="") { completion_hint=""; update(); - + } else { + scancode_handled=false; } } break; case KEY_TAB: { @@ -2846,7 +2905,7 @@ void TextEdit::adjust_viewport_to_cursor() { if (cursor.line_ofs>cursor.line) cursor.line_ofs=cursor.line; - int visible_width=cache.size.width-cache.style_normal->get_minimum_size().width-cache.line_number_w; + int visible_width=cache.size.width-cache.style_normal->get_minimum_size().width-cache.line_number_w-cache.breakpoint_gutter_width; if (v_scroll->is_visible()) visible_width-=v_scroll->get_combined_minimum_size().width; visible_width-=20; // give it a little more space @@ -3075,7 +3134,8 @@ void TextEdit::insert_text_at_cursor(const String& p_text) { } Control::CursorShape TextEdit::get_cursor_shape(const Point2& p_pos) const { - if(completion_active && completion_rect.has_point(p_pos)) { + int gutter=cache.style_normal->get_margin(MARGIN_LEFT)+cache.line_number_w+cache.breakpoint_gutter_width; + if((completion_active && completion_rect.has_point(p_pos)) || p_pos.x < gutter) { return CURSOR_ARROW; } return CURSOR_IBEAM; @@ -3220,6 +3280,8 @@ void TextEdit::_update_caches() { cache.breakpoint_color=get_color("breakpoint_color"); cache.brace_mismatch_color=get_color("brace_mismatch_color"); cache.word_highlighted_color=get_color("word_highlighted_color"); + cache.search_result_color=get_color("search_result_color"); + cache.search_result_border_color=get_color("search_result_border_color"); cache.line_spacing=get_constant("line_spacing"); cache.row_height = cache.font->get_height() + cache.line_spacing; cache.tab_icon=get_icon("tab"); @@ -3481,12 +3543,26 @@ String TextEdit::get_word_under_cursor() const { return text[cursor.line].substr(prev_cc, next_cc-prev_cc); } +void TextEdit::set_search_text(const String &p_search_text) { + search_text = p_search_text; +} + +void TextEdit::set_search_flags(uint32_t p_flags) { + search_flags = p_flags; +} + +void TextEdit::set_current_search_result(int line, int col) { + search_result_line = line; + search_result_col = col; + update(); +} + void TextEdit::set_highlight_all_occurrences(const bool p_enabled) { highlight_all_occurrences = p_enabled; update(); } -int TextEdit::_get_column_pos_of_word(const String &p_key, const String &p_search, int p_from_column) { +int TextEdit::_get_column_pos_of_word(const String &p_key, const String &p_search, uint32_t p_search_flags, int p_from_column) { int col = -1; if (p_key.length() > 0 && p_search.length() > 0) { @@ -3494,12 +3570,15 @@ int TextEdit::_get_column_pos_of_word(const String &p_key, const String &p_searc p_from_column = 0; } - while (col == -1 && p_from_column <= p_search.length()) { - // match case - col = p_search.findn(p_key, p_from_column); + while (col == -1 && p_from_column <= p_search.length()) { + if (p_search_flags&SEARCH_MATCH_CASE) { + col = p_search.find(p_key,p_from_column); + } else { + col = p_search.findn(p_key,p_from_column); + } // whole words only - if (col != -1) { + if (col != -1 && p_search_flags&SEARCH_WHOLE_WORDS) { p_from_column=col; if (col > 0 && _is_text_char(p_search[col-1])) { @@ -3565,10 +3644,8 @@ bool TextEdit::search(const String &p_key,uint32_t p_search_flags, int p_from_li //wrapped if (p_search_flags&SEARCH_BACKWARDS) { - text_line=text_line.substr(from_column,text_line.length()); from_column=text_line.length(); } else { - text_line=text_line.substr(0,from_column); from_column=0; } @@ -3579,7 +3656,6 @@ bool TextEdit::search(const String &p_key,uint32_t p_search_flags, int p_from_li } else { - //text_line=text_line.substr(0,p_from_column); //wrap around for missing begining. if (p_search_flags&SEARCH_BACKWARDS) from_column=text_line.length()-1; else @@ -3588,12 +3664,25 @@ bool TextEdit::search(const String &p_key,uint32_t p_search_flags, int p_from_li pos=-1; - if (!(p_search_flags&SEARCH_BACKWARDS)) { + int pos_from=0; + int last_pos=-1; + while ((last_pos=(p_search_flags&SEARCH_MATCH_CASE)?text_line.find(p_key,pos_from):text_line.findn(p_key,pos_from))!=-1) { - pos = (p_search_flags&SEARCH_MATCH_CASE)?text_line.find(p_key,from_column):text_line.findn(p_key,from_column); - } else { + if (p_search_flags&SEARCH_BACKWARDS) { + + if (last_pos>from_column) + break; + pos=last_pos; + + } else { - pos = (p_search_flags&SEARCH_MATCH_CASE)?text_line.rfind(p_key,from_column):text_line.rfindn(p_key,from_column); + if (last_pos>=from_column) { + pos=last_pos; + break; + } + } + + pos_from=last_pos+p_key.length(); } if (pos!=-1 && (p_search_flags&SEARCH_WHOLE_WORDS)) { @@ -4167,6 +4256,24 @@ void TextEdit::set_show_line_numbers(bool p_show) { update(); } +void TextEdit::set_draw_breakpoint_gutter(bool p_draw) { + draw_breakpoint_gutter = p_draw; + update(); +} + +bool TextEdit::is_drawing_breakpoint_gutter() const { + return draw_breakpoint_gutter; +} + +void TextEdit::set_breakpoint_gutter_width(int p_gutter_width) { + breakpoint_gutter_width = p_gutter_width; + update(); +} + +int TextEdit::get_breakpoint_gutter_width() const { + return cache.breakpoint_gutter_width; +} + bool TextEdit::is_text_field() const { return true; @@ -4308,6 +4415,8 @@ TextEdit::TextEdit() { cache.row_height=1; cache.line_spacing=1; cache.line_number_w=1; + cache.breakpoint_gutter_width=0; + breakpoint_gutter_width = 0; tab_size=4; text.set_tab_size(tab_size); @@ -4389,6 +4498,7 @@ TextEdit::TextEdit() { completion_line_ofs=0; tooltip_obj=NULL; line_numbers=false; + draw_breakpoint_gutter=false; next_operation_is_complex=false; scroll_past_end_of_file_enabled=false; auto_brace_completion_enabled=false; diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h index dbe6293240..24a72afd48 100644 --- a/scene/gui/text_edit.h +++ b/scene/gui/text_edit.h @@ -88,10 +88,13 @@ class TextEdit : public Control { Color current_line_color; Color brace_mismatch_color; Color word_highlighted_color; + Color search_result_color; + Color search_result_border_color; int row_height; int line_spacing; int line_number_w; + int breakpoint_gutter_width; Size2 size; } cache; @@ -222,6 +225,8 @@ class TextEdit : public Control { bool text_changed_dirty; bool undo_enabled; bool line_numbers; + bool draw_breakpoint_gutter; + int breakpoint_gutter_width; bool highlight_all_occurrences; bool scroll_past_end_of_file_enabled; @@ -249,6 +254,11 @@ class TextEdit : public Control { bool callhint_below; Vector2 callhint_offset; + String search_text; + uint32_t search_flags; + int search_result_line; + int search_result_col; + int get_visible_rows() const; int get_char_count(); @@ -287,7 +297,7 @@ class TextEdit : public Control { String _base_get_text(int p_from_line, int p_from_column,int p_to_line,int p_to_column) const; void _base_remove_text(int p_from_line, int p_from_column,int p_to_line,int p_to_column); - int _get_column_pos_of_word(const String &p_key, const String &p_search, int p_from_column); + int _get_column_pos_of_word(const String &p_key, const String &p_search, uint32_t p_search_flags, int p_from_column); DVector<int> _search_bind(const String &p_key,uint32_t p_search_flags, int p_from_line,int p_from_column) const; @@ -408,6 +418,10 @@ public: void select(int p_from_line,int p_from_column,int p_to_line,int p_to_column); void deselect(); + void set_search_text(const String& p_search_text); + void set_search_flags(uint32_t p_flags); + void set_current_search_result(int line, int col); + void set_highlight_all_occurrences(const bool p_enabled); bool is_selection_active() const; int get_selection_from_line() const; @@ -451,6 +465,12 @@ public: void set_show_line_numbers(bool p_show); + void set_draw_breakpoint_gutter(bool p_draw); + bool is_drawing_breakpoint_gutter() const; + + void set_breakpoint_gutter_width(int p_gutter_width); + int get_breakpoint_gutter_width() const; + void set_tooltip_request_func(Object *p_obj, const StringName& p_function, const Variant& p_udata); void set_completion(bool p_enabled,const Vector<String>& p_prefixes); diff --git a/scene/gui/texture_frame.cpp b/scene/gui/texture_frame.cpp index 73fecf591a..2fe8735fda 100644 --- a/scene/gui/texture_frame.cpp +++ b/scene/gui/texture_frame.cpp @@ -37,9 +37,31 @@ void TextureFrame::_notification(int p_what) { return; - Size2 s=expand?get_size():texture->get_size(); + RID ci = get_canvas_item(); - draw_texture_rect(texture,Rect2(Point2(),s),false,modulate); + + switch(stretch_mode) { + case STRETCH_SCALE_ON_EXPAND: { + Size2 s=expand?get_size():texture->get_size(); + draw_texture_rect(texture,Rect2(Point2(),s),false,modulate); + } break; + case STRETCH_SCALE: { + draw_texture_rect(texture,Rect2(Point2(),get_size()),false,modulate); + } break; + case STRETCH_TILE: { + draw_texture_rect(texture,Rect2(Point2(),get_size()),true,modulate); + } break; + case STRETCH_KEEP: { + draw_texture_rect(texture,Rect2(Point2(),texture->get_size()),false,modulate); + + } break; + case STRETCH_KEEP_CENTERED: { + + Vector2 ofs = (get_size() - texture->get_size())/2; + draw_texture_rect(texture,Rect2(ofs,texture->get_size()),false,modulate); + } break; + } + /* Vector<Point2> points; @@ -76,11 +98,19 @@ void TextureFrame::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_modulate"), & TextureFrame::get_modulate ); ObjectTypeDB::bind_method(_MD("set_expand","enable"), & TextureFrame::set_expand ); ObjectTypeDB::bind_method(_MD("has_expand"), & TextureFrame::has_expand ); + ObjectTypeDB::bind_method(_MD("set_stretch_mode","stretch_mode"), & TextureFrame::set_stretch_mode ); + ObjectTypeDB::bind_method(_MD("get_stretch_mode"), & TextureFrame::get_stretch_mode ); ADD_PROPERTYNZ( PropertyInfo( Variant::OBJECT, "texture", PROPERTY_HINT_RESOURCE_TYPE, "Texture"), _SCS("set_texture"),_SCS("get_texture") ); ADD_PROPERTYNO( PropertyInfo( Variant::COLOR, "modulate"), _SCS("set_modulate"),_SCS("get_modulate") ); ADD_PROPERTYNZ( PropertyInfo( Variant::BOOL, "expand" ), _SCS("set_expand"),_SCS("has_expand") ); + ADD_PROPERTYNO( PropertyInfo( Variant::INT, "stretch_mode",PROPERTY_HINT_ENUM,"Scale On Expand (Compat),Scale,Tile,Keep,Keep Centered"), _SCS("set_stretch_mode"),_SCS("get_stretch_mode") ); + BIND_CONSTANT( STRETCH_SCALE_ON_EXPAND ); + BIND_CONSTANT( STRETCH_SCALE ); + BIND_CONSTANT( STRETCH_TILE ); + BIND_CONSTANT( STRETCH_KEEP ); + BIND_CONSTANT( STRETCH_KEEP_CENTERED ); } @@ -121,12 +151,24 @@ bool TextureFrame::has_expand() const { return expand; } +void TextureFrame::set_stretch_mode(StretchMode p_mode) { + + stretch_mode=p_mode; + update(); +} + +TextureFrame::StretchMode TextureFrame::get_stretch_mode() const { + + return stretch_mode; +} + TextureFrame::TextureFrame() { expand=false; modulate=Color(1,1,1,1); set_ignore_mouse(true); + stretch_mode=STRETCH_SCALE_ON_EXPAND; } diff --git a/scene/gui/texture_frame.h b/scene/gui/texture_frame.h index e1f0de92df..a4acf588ea 100644 --- a/scene/gui/texture_frame.h +++ b/scene/gui/texture_frame.h @@ -36,10 +36,19 @@ class TextureFrame : public Control { OBJ_TYPE(TextureFrame,Control); - +public: + enum StretchMode { + STRETCH_SCALE_ON_EXPAND, //default, for backwards compatibility + STRETCH_SCALE, + STRETCH_TILE, + STRETCH_KEEP, + STRETCH_KEEP_CENTERED, + }; +private: bool expand; Color modulate; Ref<Texture> texture; + StretchMode stretch_mode; protected: void _notification(int p_what); @@ -57,9 +66,13 @@ public: void set_expand(bool p_expand); bool has_expand() const; + void set_stretch_mode(StretchMode p_mode); + StretchMode get_stretch_mode() const; + TextureFrame(); ~TextureFrame(); }; +VARIANT_ENUM_CAST( TextureFrame::StretchMode ); #endif // TEXTURE_FRAME_H diff --git a/scene/main/scene_main_loop.cpp b/scene/main/scene_main_loop.cpp index 24fe1e1bb3..d7f22c3228 100644 --- a/scene/main/scene_main_loop.cpp +++ b/scene/main/scene_main_loop.cpp @@ -1593,6 +1593,14 @@ void SceneTree::_live_edit_reparent_node_func(const NodePath& p_at,const NodePat #endif + + +void SceneTree::drop_files(const Vector<String>& p_files,int p_from_screen) { + + emit_signal("files_dropped",p_files,p_from_screen); + MainLoop::drop_files(p_files,p_from_screen); +} + void SceneTree::_bind_methods() { @@ -1666,6 +1674,8 @@ void SceneTree::_bind_methods() { ADD_SIGNAL( MethodInfo("idle_frame")); ADD_SIGNAL( MethodInfo("fixed_frame")); + ADD_SIGNAL( MethodInfo("files_dropped",PropertyInfo(Variant::STRING_ARRAY,"files"),PropertyInfo(Variant::INT,"screen")) ); + BIND_CONSTANT( GROUP_CALL_DEFAULT ); BIND_CONSTANT( GROUP_CALL_REVERSE ); BIND_CONSTANT( GROUP_CALL_REALTIME ); diff --git a/scene/main/scene_main_loop.h b/scene/main/scene_main_loop.h index b6a015c9ed..5fc9e0c1ae 100644 --- a/scene/main/scene_main_loop.h +++ b/scene/main/scene_main_loop.h @@ -344,6 +344,7 @@ public: static SceneTree* get_singleton() { return singleton; } + void drop_files(const Vector<String>& p_files,int p_from_screen=0); SceneTree(); ~SceneTree(); diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp index 8327473a60..1fd1c77dca 100644 --- a/scene/register_scene_types.cpp +++ b/scene/register_scene_types.cpp @@ -133,6 +133,7 @@ #include "scene/resources/mesh_data_tool.h" #include "scene/resources/scene_preloader.h" #include "scene/resources/dynamic_font.h" +#include "scene/resources/dynamic_font_stb.h" #include "scene/main/timer.h" @@ -254,7 +255,6 @@ void register_scene_types() { resource_loader_wav = memnew( ResourceFormatLoaderWAV ); ResourceLoader::add_resource_format_loader( resource_loader_wav ); - resource_loader_dynamic_font = memnew( ResourceFormatLoaderDynamicFont ); ResourceLoader::add_resource_format_loader( resource_loader_dynamic_font ); @@ -578,8 +578,10 @@ void register_scene_types() { ObjectTypeDB::register_type<Animation>(); ObjectTypeDB::register_virtual_type<Font>(); ObjectTypeDB::register_type<BitmapFont>(); + ObjectTypeDB::register_type<DynamicFontData>(); ObjectTypeDB::register_type<DynamicFont>(); + ObjectTypeDB::register_type<StyleBoxEmpty>(); ObjectTypeDB::register_type<StyleBoxTexture>(); ObjectTypeDB::register_type<StyleBoxFlat>(); @@ -647,6 +649,7 @@ void unregister_scene_types() { memdelete( resource_loader_image ); memdelete( resource_loader_wav ); memdelete( resource_loader_dynamic_font ); + #ifdef TOOLS_ENABLED diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp index 0c4d8ae841..9ebb7e7561 100644 --- a/scene/resources/default_theme/default_theme.cpp +++ b/scene/resources/default_theme/default_theme.cpp @@ -28,6 +28,7 @@ typedef Map<const void*,Ref<ImageTexture> > TexCacheMap; static TexCacheMap *tex_cache; +static int scale=1; template<class T> static Ref<StyleBoxTexture> make_stylebox(T p_src,float p_left, float p_top, float p_right, float p_botton,float p_margin_left=-1, float p_margin_top=-1, float p_margin_right=-1, float p_margin_botton=-1, bool p_draw_center=true) { @@ -40,21 +41,24 @@ static Ref<StyleBoxTexture> make_stylebox(T p_src,float p_left, float p_top, flo } else { texture = Ref<ImageTexture>( memnew( ImageTexture ) ); - texture->create_from_image( Image(p_src),ImageTexture::FLAG_FILTER ); + Image img(p_src); + if (scale>1) + img.expand_x2_hq2x(); + texture->create_from_image( img,ImageTexture::FLAG_FILTER ); (*tex_cache)[p_src]=texture; } Ref<StyleBoxTexture> style( memnew( StyleBoxTexture ) ); style->set_texture(texture); - style->set_margin_size( MARGIN_LEFT, p_left ); - style->set_margin_size( MARGIN_RIGHT, p_right ); - style->set_margin_size( MARGIN_BOTTOM, p_botton ); - style->set_margin_size( MARGIN_TOP, p_top ); - style->set_default_margin( MARGIN_LEFT, p_margin_left ); - style->set_default_margin( MARGIN_RIGHT, p_margin_right ); - style->set_default_margin( MARGIN_BOTTOM, p_margin_botton ); - style->set_default_margin( MARGIN_TOP, p_margin_top ); + style->set_margin_size( MARGIN_LEFT, p_left * scale); + style->set_margin_size( MARGIN_RIGHT, p_right * scale); + style->set_margin_size( MARGIN_BOTTOM, p_botton * scale); + style->set_margin_size( MARGIN_TOP, p_top * scale); + style->set_default_margin( MARGIN_LEFT, p_margin_left * scale); + style->set_default_margin( MARGIN_RIGHT, p_margin_right * scale); + style->set_default_margin( MARGIN_BOTTOM, p_margin_botton * scale); + style->set_default_margin( MARGIN_TOP, p_margin_top * scale); style->set_draw_center(p_draw_center); return style; @@ -63,10 +67,10 @@ static Ref<StyleBoxTexture> make_stylebox(T p_src,float p_left, float p_top, flo static Ref<StyleBoxTexture> sb_expand(Ref<StyleBoxTexture> p_sbox,float p_left, float p_top, float p_right, float p_botton) { - p_sbox->set_expand_margin_size(MARGIN_LEFT,p_left); - p_sbox->set_expand_margin_size(MARGIN_TOP,p_top); - p_sbox->set_expand_margin_size(MARGIN_RIGHT,p_right); - p_sbox->set_expand_margin_size(MARGIN_BOTTOM,p_botton); + p_sbox->set_expand_margin_size(MARGIN_LEFT,p_left * scale); + p_sbox->set_expand_margin_size(MARGIN_TOP,p_top * scale); + p_sbox->set_expand_margin_size(MARGIN_RIGHT,p_right * scale); + p_sbox->set_expand_margin_size(MARGIN_BOTTOM,p_botton * scale); return p_sbox; } @@ -75,7 +79,10 @@ static Ref<Texture> make_icon(T p_src) { Ref<ImageTexture> texture( memnew( ImageTexture ) ); - texture->create_from_image( Image(p_src),ImageTexture::FLAG_FILTER ); + Image img = Image(p_src); + if (scale>1) + img.expand_x2_hq2x(); + texture->create_from_image( img,ImageTexture::FLAG_FILTER ); return texture; } @@ -170,27 +177,24 @@ static Ref<StyleBox> make_empty_stylebox(float p_margin_left=-1, float p_margin_ Ref<StyleBox> style( memnew( StyleBoxEmpty) ); - style->set_default_margin( MARGIN_LEFT, p_margin_left ); - style->set_default_margin( MARGIN_RIGHT, p_margin_right ); - style->set_default_margin( MARGIN_BOTTOM, p_margin_botton ); - style->set_default_margin( MARGIN_TOP, p_margin_top ); + style->set_default_margin( MARGIN_LEFT, p_margin_left * scale); + style->set_default_margin( MARGIN_RIGHT, p_margin_right * scale); + style->set_default_margin( MARGIN_BOTTOM, p_margin_botton * scale); + style->set_default_margin( MARGIN_TOP, p_margin_top * scale); return style; } -#ifndef DEFAULT_THEME_DISABLED - -void make_default_theme() { +void fill_default_theme(Ref<Theme>& t,const Ref<Font> & default_font,const Ref<Font> & large_font,Ref<Texture>& default_icon, Ref<StyleBox>& default_style,bool p_hidpi) { + if (p_hidpi) + scale=2; + else + scale=1; tex_cache = memnew( TexCacheMap ); - Ref<Theme> t( memnew( Theme ) ); - //Ref<BitmapFont> default_font = make_font(_bi_font_normal_height,_bi_font_normal_ascent,_bi_font_normal_valign,_bi_font_normal_charcount,_bi_font_normal_characters,make_icon(font_normal_png)); - Ref<BitmapFont> default_font=make_font2(_builtin_normal_font_height,_builtin_normal_font_ascent,_builtin_normal_font_charcount,&_builtin_normal_font_charrects[0][0],_builtin_normal_font_kerning_pair_count,&_builtin_normal_font_kerning_pairs[0][0],_builtin_normal_font_img_width,_builtin_normal_font_img_height,_builtin_normal_font_img_data); - Ref<BitmapFont> source_font=make_font2(_builtin_source_font_height,_builtin_source_font_ascent,_builtin_source_font_charcount,&_builtin_source_font_charrects[0][0],_builtin_source_font_kerning_pair_count,&_builtin_source_font_kerning_pairs[0][0],_builtin_source_font_img_width,_builtin_source_font_img_height,_builtin_source_font_img_data); - Ref<BitmapFont> large_font=make_font2(_builtin_large_font_height,_builtin_large_font_ascent,_builtin_large_font_charcount,&_builtin_large_font_charrects[0][0],_builtin_large_font_kerning_pair_count,&_builtin_large_font_kerning_pairs[0][0],_builtin_large_font_img_width,_builtin_large_font_img_height,_builtin_large_font_img_data); // Font Colors @@ -213,7 +217,7 @@ void make_default_theme() { Ref<StyleBoxTexture> focus = make_stylebox( focus_png,5,5,5,5); for(int i=0;i<4;i++) { - focus->set_expand_margin_size(Margin(i),1); + focus->set_expand_margin_size(Margin(i),1 *scale); } @@ -239,7 +243,7 @@ void make_default_theme() { t->set_color("font_color_hover","Button", control_font_color_hover ); t->set_color("font_color_disabled","Button", control_font_color_disabled ); - t->set_constant("hseparation","Button", 2); + t->set_constant("hseparation","Button", 2 *scale); // LinkButton @@ -249,7 +253,7 @@ void make_default_theme() { t->set_color("font_color_pressed","LinkButton", control_font_color_pressed ); t->set_color("font_color_hover","LinkButton", control_font_color_hover ); - t->set_constant("underline_spacing","LinkButton", 2 ); + t->set_constant("underline_spacing","LinkButton", 2 *scale); // ColorPickerButton @@ -266,16 +270,16 @@ void make_default_theme() { t->set_color("font_color_hover","ColorPickerButton", Color(1,1,1,1) ); t->set_color("font_color_disabled","ColorPickerButton", Color(0.9,0.9,0.9,0.3) ); - t->set_constant("hseparation","ColorPickerButton", 2 ); + t->set_constant("hseparation","ColorPickerButton", 2 *scale); // ToolButton Ref<StyleBox> tb_empty = memnew( StyleBoxEmpty ); - tb_empty->set_default_margin(MARGIN_LEFT,6); - tb_empty->set_default_margin(MARGIN_RIGHT,6); - tb_empty->set_default_margin(MARGIN_TOP,4); - tb_empty->set_default_margin(MARGIN_BOTTOM,4); + tb_empty->set_default_margin(MARGIN_LEFT,6 *scale); + tb_empty->set_default_margin(MARGIN_RIGHT,6 *scale); + tb_empty->set_default_margin(MARGIN_TOP,4 *scale); + tb_empty->set_default_margin(MARGIN_BOTTOM,4 *scale); t->set_stylebox("normal","ToolButton", tb_empty); t->set_stylebox("pressed","ToolButton", make_stylebox( button_pressed_png,4,4,4,4) ); @@ -316,8 +320,8 @@ void make_default_theme() { t->set_color("font_color_hover","OptionButton", control_font_color_hover ); t->set_color("font_color_disabled","OptionButton", control_font_color_disabled ); - t->set_constant("hseparation","OptionButton", 2 ); - t->set_constant("arrow_margin","OptionButton", 2 ); + t->set_constant("hseparation","OptionButton", 2 *scale); + t->set_constant("arrow_margin","OptionButton", 2 *scale); @@ -336,7 +340,7 @@ void make_default_theme() { t->set_color("font_color_hover","MenuButton", control_font_color_hover ); t->set_color("font_color_disabled","MenuButton", Color(1,1,1,0.3) ); - t->set_constant("hseparation","MenuButton", 3 ); + t->set_constant("hseparation","MenuButton", 3 *scale); // ButtonGroup @@ -345,15 +349,15 @@ void make_default_theme() { // CheckBox Ref<StyleBox> cbx_empty = memnew( StyleBoxEmpty ); - cbx_empty->set_default_margin(MARGIN_LEFT,22); - cbx_empty->set_default_margin(MARGIN_RIGHT,4); - cbx_empty->set_default_margin(MARGIN_TOP,4); - cbx_empty->set_default_margin(MARGIN_BOTTOM,5); + cbx_empty->set_default_margin(MARGIN_LEFT,22 *scale); + cbx_empty->set_default_margin(MARGIN_RIGHT,4 *scale); + cbx_empty->set_default_margin(MARGIN_TOP,4 *scale); + cbx_empty->set_default_margin(MARGIN_BOTTOM,5 *scale); Ref<StyleBox> cbx_focus = focus; - cbx_focus->set_default_margin(MARGIN_LEFT,4); - cbx_focus->set_default_margin(MARGIN_RIGHT,22); - cbx_focus->set_default_margin(MARGIN_TOP,4); - cbx_focus->set_default_margin(MARGIN_BOTTOM,5); + cbx_focus->set_default_margin(MARGIN_LEFT,4 *scale); + cbx_focus->set_default_margin(MARGIN_RIGHT,22 *scale); + cbx_focus->set_default_margin(MARGIN_TOP,4 *scale); + cbx_focus->set_default_margin(MARGIN_BOTTOM,5 *scale); t->set_stylebox("normal","CheckBox", cbx_empty ); t->set_stylebox("pressed","CheckBox", cbx_empty ); @@ -373,18 +377,18 @@ void make_default_theme() { t->set_color("font_color_hover","CheckBox", control_font_color_hover ); t->set_color("font_color_disabled","CheckBox", control_font_color_disabled ); - t->set_constant("hseparation","CheckBox",4); - t->set_constant("check_vadjust","CheckBox",0); + t->set_constant("hseparation","CheckBox",4 *scale); + t->set_constant("check_vadjust","CheckBox",0 *scale); // CheckButton Ref<StyleBox> cb_empty = memnew( StyleBoxEmpty ); - cb_empty->set_default_margin(MARGIN_LEFT,6); - cb_empty->set_default_margin(MARGIN_RIGHT,70); - cb_empty->set_default_margin(MARGIN_TOP,4); - cb_empty->set_default_margin(MARGIN_BOTTOM,4); + cb_empty->set_default_margin(MARGIN_LEFT,6 *scale); + cb_empty->set_default_margin(MARGIN_RIGHT,70 *scale); + cb_empty->set_default_margin(MARGIN_TOP,4 *scale); + cb_empty->set_default_margin(MARGIN_BOTTOM,4 *scale); t->set_stylebox("normal","CheckButton", cb_empty ); t->set_stylebox("pressed","CheckButton", cb_empty ); @@ -402,8 +406,8 @@ void make_default_theme() { t->set_color("font_color_hover","CheckButton", control_font_color_hover ); t->set_color("font_color_disabled","CheckButton", control_font_color_disabled ); - t->set_constant("hseparation","CheckButton",4); - t->set_constant("check_vadjust","CheckButton",0); + t->set_constant("hseparation","CheckButton",4 *scale); + t->set_constant("check_vadjust","CheckButton",0 *scale); @@ -414,10 +418,10 @@ void make_default_theme() { t->set_color("font_color","Label", Color(1,1,1) ); t->set_color("font_color_shadow","Label", Color(0,0,0,0) ); - t->set_constant("shadow_offset_x","Label", 1 ); - t->set_constant("shadow_offset_y","Label", 1 ); - t->set_constant("shadow_as_outline","Label", 0 ); - t->set_constant("line_spacing","Label", 3 ); + t->set_constant("shadow_offset_x","Label", 1 *scale); + t->set_constant("shadow_offset_y","Label", 1 *scale); + t->set_constant("shadow_as_outline","Label", 0 *scale); + t->set_constant("line_spacing","Label", 3 *scale); @@ -434,7 +438,7 @@ void make_default_theme() { t->set_color("cursor_color","LineEdit", control_font_color_hover ); t->set_color("selection_color","LineEdit", font_color_selection ); - t->set_constant("minimum_spaces","LineEdit", 12 ); + t->set_constant("minimum_spaces","LineEdit", 12 *scale); @@ -468,14 +472,14 @@ void make_default_theme() { t->set_color("mark_color","TextEdit", Color(1.0,0.4,0.4,0.4) ); t->set_color("breakpoint_color","TextEdit", Color(0.8,0.8,0.4,0.2) ); t->set_color("current_line_color","TextEdit", Color(0.25,0.25,0.26,0.8) ); - t->set_color("cursor_color","TextEdit", control_font_color ); + t->set_color("caret_color","TextEdit", control_font_color ); t->set_color("symbol_color","TextEdit", control_font_color_hover ); t->set_color("brace_mismatch_color","TextEdit", Color(1,0.2,0.2) ); t->set_constant("completion_lines","TextEdit", 7 ); t->set_constant("completion_max_width","TextEdit", 50 ); t->set_constant("completion_scroll_width","TextEdit", 3 ); - t->set_constant("line_spacing","TextEdit",4 ); + t->set_constant("line_spacing","TextEdit",4 *scale); Ref<Texture> empty_icon = memnew( ImageTexture ); @@ -555,10 +559,10 @@ void make_default_theme() { t->set_color("title_color","WindowDialog", Color(0,0,0) ); - t->set_constant("close_h_ofs","WindowDialog", 22 ); - t->set_constant("close_v_ofs","WindowDialog", 20 ); - t->set_constant("titlebar_height","WindowDialog", 18 ); - t->set_constant("title_height","WindowDialog", 20 ); + t->set_constant("close_h_ofs","WindowDialog", 22 *scale); + t->set_constant("close_v_ofs","WindowDialog", 20 *scale); + t->set_constant("titlebar_height","WindowDialog", 18 *scale); + t->set_constant("title_height","WindowDialog", 20 *scale); // File Dialog @@ -572,7 +576,7 @@ void make_default_theme() { Ref<StyleBoxTexture> selected = make_stylebox( selection_png,6,6,6,6); for(int i=0;i<4;i++) { - selected->set_expand_margin_size(Margin(i),2); + selected->set_expand_margin_size(Margin(i),2 *scale); } t->set_stylebox("panel","PopupPanel", style_pp ); @@ -598,8 +602,8 @@ void make_default_theme() { t->set_color("font_color_disabled","PopupMenu", Color(0.4,0.4,0.4,0.8) ); t->set_color("font_color_hover","PopupMenu", control_font_color ); - t->set_constant("hseparation","PopupMenu",4); - t->set_constant("vseparation","PopupMenu",4); + t->set_constant("hseparation","PopupMenu",4 *scale); + t->set_constant("vseparation","PopupMenu",4 *scale); // GraphNode @@ -614,14 +618,14 @@ void make_default_theme() { t->set_stylebox("selectedframe","GraphNode", graphsbselected ); t->set_stylebox("defaultframe", "GraphNode", graphsbdefault ); t->set_stylebox("defaultfocus", "GraphNode", graphsbdeffocus ); - t->set_constant("separation","GraphNode", 1 ); + t->set_constant("separation","GraphNode", 1 *scale); t->set_icon("port","GraphNode", make_icon( graph_port_png ) ); t->set_icon("close","GraphNode", make_icon( graph_node_close_png ) ); t->set_font("title_font","GraphNode", default_font ); t->set_color("title_color","GraphNode", Color(0,0,0,1)); - t->set_constant("title_offset","GraphNode", 18); - t->set_constant("close_offset","GraphNode", 18); - t->set_constant("port_offset","GraphNode", 3); + t->set_constant("title_offset","GraphNode", 18 *scale); + t->set_constant("close_offset","GraphNode", 18 *scale); + t->set_constant("port_offset","GraphNode", 3 *scale); // Tree @@ -658,11 +662,11 @@ void make_default_theme() { t->set_color("guide_color","Tree", Color(0,0,0,0.1) ); t->set_color("drop_position_color","Tree", Color(1,0.3,0.2) ); - t->set_constant("hseparation","Tree",4); - t->set_constant("vseparation","Tree",4); - t->set_constant("guide_width","Tree",2); - t->set_constant("item_margin","Tree",12); - t->set_constant("button_margin","Tree",4); + t->set_constant("hseparation","Tree",4 *scale); + t->set_constant("vseparation","Tree",4 *scale); + t->set_constant("guide_width","Tree",2 *scale); + t->set_constant("item_margin","Tree",12 *scale); + t->set_constant("button_margin","Tree",4 *scale); // ItemList @@ -674,7 +678,7 @@ void make_default_theme() { t->set_constant("hseparation","ItemList",4); t->set_constant("vseparation","ItemList",2); t->set_constant("icon_margin","ItemList",4); - t->set_constant("line_separation","ItemList",2); + t->set_constant("line_separation","ItemList",2 *scale); t->set_font("font","ItemList", default_font ); t->set_color("font_color","ItemList", control_font_color_lower ); t->set_color("font_color_selected","ItemList", control_font_color_pressed ); @@ -695,8 +699,8 @@ void make_default_theme() { Ref<StyleBoxTexture> tc_sb = sb_expand( make_stylebox( tab_container_bg_png,4,4,4,4,4,4,4,4),3,3,3,3); - tc_sb->set_expand_margin_size(MARGIN_TOP,2); - tc_sb->set_default_margin(MARGIN_TOP,8); + tc_sb->set_expand_margin_size(MARGIN_TOP,2 *scale); + tc_sb->set_default_margin(MARGIN_TOP,8 *scale); t->set_stylebox("tab_fg","TabContainer", sb_expand( make_stylebox( tab_current_png,4,4,4,1,16,4,16,4),2,2,2,2) ); t->set_stylebox("tab_bg","TabContainer", sb_expand( make_stylebox( tab_behind_png,5,5,5,1,16,6,16,4),3,0,3,3) ); @@ -714,11 +718,11 @@ void make_default_theme() { t->set_color("font_color_fg","TabContainer", control_font_color_hover ); t->set_color("font_color_bg","TabContainer", control_font_color_low ); - t->set_constant("side_margin","TabContainer", 8 ); - t->set_constant("top_margin","TabContainer", 24); - t->set_constant("label_valign_fg","TabContainer", 0); - t->set_constant("label_valign_bg","TabContainer", 2); - t->set_constant("hseparation","TabContainer", 4); + t->set_constant("side_margin","TabContainer", 8 *scale); + t->set_constant("top_margin","TabContainer", 24 *scale); + t->set_constant("label_valign_fg","TabContainer", 0 *scale); + t->set_constant("label_valign_bg","TabContainer", 2 *scale); + t->set_constant("hseparation","TabContainer", 4 *scale); @@ -741,10 +745,10 @@ void make_default_theme() { t->set_color("font_color_fg","Tabs", control_font_color_hover ); t->set_color("font_color_bg","Tabs", control_font_color_low ); - t->set_constant("top_margin","Tabs", 24); - t->set_constant("label_valign_fg","Tabs", 0); - t->set_constant("label_valign_bg","Tabs", 2); - t->set_constant("hseparation","Tabs", 4); + t->set_constant("top_margin","Tabs", 24 *scale); + t->set_constant("label_valign_fg","Tabs", 0 *scale); + t->set_constant("label_valign_bg","Tabs", 2 *scale); + t->set_constant("hseparation","Tabs", 4 *scale); @@ -754,18 +758,17 @@ void make_default_theme() { t->set_stylebox("separator","VSeparator", make_stylebox( hseparator_png,3,3,3,3) ); t->set_icon("close","Icons", make_icon(icon_close_png)); - t->set_font("source","Fonts", source_font); t->set_font("normal","Fonts", default_font ); t->set_font("large","Fonts", large_font ); - t->set_constant("separation","HSeparator", 4); - t->set_constant("separation","VSeparator", 4); + t->set_constant("separation","HSeparator", 4 *scale); + t->set_constant("separation","VSeparator", 4 *scale); // Dialogs - t->set_constant("margin","Dialogs",8); - t->set_constant("button_margin","Dialogs",32); + t->set_constant("margin","Dialogs",8 *scale); + t->set_constant("button_margin","Dialogs",32 *scale); @@ -778,11 +781,11 @@ void make_default_theme() { // colorPicker - t->set_constant("value_height","ColorPicker", 23 ); - t->set_constant("value_width","ColorPicker", 50); - t->set_constant("color_width","ColorPicker", 100); - t->set_constant("label_width","ColorPicker", 20); - t->set_constant("hseparator","ColorPicker", 4); + t->set_constant("value_height","ColorPicker", 23 *scale); + t->set_constant("value_width","ColorPicker", 50 *scale); + t->set_constant("color_width","ColorPicker", 100 *scale); + t->set_constant("label_width","ColorPicker", 20 *scale); + t->set_constant("hseparator","ColorPicker", 4 *scale); t->set_icon("screen_picker","ColorPicker", make_icon( icon_color_pick_png ) ); t->set_icon("add_preset","ColorPicker", make_icon( icon_add_png ) ); @@ -794,7 +797,7 @@ void make_default_theme() { Ref<StyleBoxTexture> style_tt = make_stylebox( tooltip_bg_png,4,4,4,4); for(int i=0;i<4;i++) - style_tt->set_expand_margin_size((Margin)i,4); + style_tt->set_expand_margin_size((Margin)i,4 *scale); t->set_stylebox("panel","TooltipPanel", style_tt ); @@ -822,9 +825,9 @@ void make_default_theme() { t->set_color("font_color_selected","RichTextLabel", font_color_selection ); t->set_color("selection_color","RichTextLabel", Color(0.1,0.1,1,0.8) ); - t->set_constant("line_separation","RichTextLabel", 1 ); - t->set_constant("table_hseparation","RichTextLabel", 3 ); - t->set_constant("table_vseparation","RichTextLabel", 3 ); + t->set_constant("line_separation","RichTextLabel", 1 *scale); + t->set_constant("table_hseparation","RichTextLabel", 3 *scale); + t->set_constant("table_vseparation","RichTextLabel", 3 *scale); @@ -836,18 +839,18 @@ void make_default_theme() { t->set_icon("grabber","VSplitContainer",make_icon(vsplitter_png)); t->set_icon("grabber","HSplitContainer",make_icon(hsplitter_png)); - t->set_constant("separation","HBoxContainer",4); - t->set_constant("separation","VBoxContainer",4); - t->set_constant("margin_left","MarginContainer",8); - t->set_constant("margin_top","MarginContainer",0); - t->set_constant("margin_right","MarginContainer",0); - t->set_constant("margin_bottom","MarginContainer",0); - t->set_constant("hseparation","GridContainer",4); - t->set_constant("vseparation","GridContainer",4); - t->set_constant("separation","HSplitContainer",12); - t->set_constant("separation","VSplitContainer",12); - t->set_constant("autohide","HSplitContainer",1); - t->set_constant("autohide","VSplitContainer",1); + t->set_constant("separation","HBoxContainer",4 *scale); + t->set_constant("separation","VBoxContainer",4 *scale); + t->set_constant("margin_left","MarginContainer",8 *scale); + t->set_constant("margin_top","MarginContainer",0 *scale); + t->set_constant("margin_right","MarginContainer",0 *scale); + t->set_constant("margin_bottom","MarginContainer",0 *scale); + t->set_constant("hseparation","GridContainer",4 *scale); + t->set_constant("vseparation","GridContainer",4 *scale); + t->set_constant("separation","HSplitContainer",12 *scale); + t->set_constant("separation","VSplitContainer",12 *scale); + t->set_constant("autohide","HSplitContainer",1 *scale); + t->set_constant("autohide","VSplitContainer",1 *scale); @@ -863,8 +866,8 @@ void make_default_theme() { t->set_color("font_color","HButtonArray", control_font_color_low ); t->set_color("font_color_selected","HButtonArray", control_font_color_hover ); - t->set_constant("icon_separator","HButtonArray", 4 ); - t->set_constant("button_separator","HButtonArray", 8 ); + t->set_constant("icon_separator","HButtonArray", 4 *scale ); + t->set_constant("button_separator","HButtonArray", 8 *scale ); t->set_stylebox("focus","HButtonArray", focus ); @@ -881,8 +884,8 @@ void make_default_theme() { t->set_color("font_color","VButtonArray", control_font_color_low ); t->set_color("font_color_selected","VButtonArray", control_font_color_hover ); - t->set_constant("icon_separator","VButtonArray", 4); - t->set_constant("button_separator","VButtonArray", 8); + t->set_constant("icon_separator","VButtonArray", 4 *scale); + t->set_constant("button_separator","VButtonArray", 8 *scale); t->set_stylebox("focus","VButtonArray", focus ); @@ -914,45 +917,31 @@ void make_default_theme() { // Theme - Theme::set_default( t ); - Theme::set_default_icon( make_icon(error_icon_png) ); - Theme::set_default_style( make_stylebox( error_icon_png,2,2,2,2) ); - Theme::set_default_font( default_font ); + default_icon= make_icon(error_icon_png) ; + default_style = make_stylebox( error_icon_png,2,2,2,2) ; memdelete( tex_cache ); } -#else - -#include "error_icon.xpm" - void make_default_theme() { - Ref<Theme> t( memnew( Theme ) ); - + Ref<Theme> t; + t.instance(); - Image error_img(error_icon_xpm); - Ref<Texture> texture( memnew( Texture ) ); - texture->create_from_image( error_img ); - - Ref<StyleBoxTexture> style( memnew( StyleBoxTexture ) ); - style->set_texture(texture); - - for(int i=0;i<4;i++) { - style->set_margin_size( Margin(),8); - style->set_default_margin( Margin(),8); - } + Ref<StyleBox> default_style; + Ref<Texture> default_icon; + Ref<BitmapFont> default_font=make_font2(_builtin_normal_font_height,_builtin_normal_font_ascent,_builtin_normal_font_charcount,&_builtin_normal_font_charrects[0][0],_builtin_normal_font_kerning_pair_count,&_builtin_normal_font_kerning_pairs[0][0],_builtin_normal_font_img_width,_builtin_normal_font_img_height,_builtin_normal_font_img_data); + Ref<BitmapFont> large_font=make_font2(_builtin_large_font_height,_builtin_large_font_ascent,_builtin_large_font_charcount,&_builtin_large_font_charrects[0][0],_builtin_large_font_kerning_pair_count,&_builtin_large_font_kerning_pairs[0][0],_builtin_large_font_img_width,_builtin_large_font_img_height,_builtin_large_font_img_data); + fill_default_theme(t,default_font,large_font,default_icon,default_style,false); - Ref<BitmapFont> f = make_default_font(); Theme::set_default( t ); - Theme::set_default_icon( texture ); - Theme::set_default_style( style ); - Theme::set_default_font( f ); + Theme::set_default_icon( default_icon ); + Theme::set_default_style( default_style ); + Theme::set_default_font( default_font ); } -#endif void clear_default_theme() { Theme::set_default( Ref<Theme>() ); diff --git a/scene/resources/default_theme/default_theme.h b/scene/resources/default_theme/default_theme.h index 44569ba192..1e3b4b4081 100644 --- a/scene/resources/default_theme/default_theme.h +++ b/scene/resources/default_theme/default_theme.h @@ -12,10 +12,12 @@ #ifndef DEFAULT_THEME_H #define DEFAULT_THEME_H +#include "scene/resources/theme.h" /** @author Juan Linietsky <reduzio@gmail.com> */ +void fill_default_theme(Ref<Theme>& theme,const Ref<Font> & default_font,const Ref<Font> & large_font,Ref<Texture>& default_icon, Ref<StyleBox>& default_style,bool p_hidpi); void make_default_theme(); void clear_default_theme(); diff --git a/scene/resources/dynamic_font.cpp b/scene/resources/dynamic_font.cpp index 19aa0e79cc..c76b5f3d3a 100644 --- a/scene/resources/dynamic_font.cpp +++ b/scene/resources/dynamic_font.cpp @@ -1,65 +1,11 @@ +#ifdef FREETYPE_ENABLED #include "dynamic_font.h" -#define STB_TRUETYPE_IMPLEMENTATION -#include "stb_truetype.h" #include "os/file_access.h" -void DynamicFontData::lock() { - fr=font_data.read(); - - if (fr.ptr()!=last_data_ptr) { - - last_data_ptr=fr.ptr(); - - if (!stbtt_InitFont(&info, last_data_ptr, 0)) { - valid=false; - } else { - valid=true; - } - - last_data_ptr=fr.ptr(); - } -} - -void DynamicFontData::unlock() { - - fr = DVector<uint8_t>::Read(); -} - -void DynamicFontData::set_font_data(const DVector<uint8_t>& p_font) { - //clear caches and stuff - ERR_FAIL_COND(font_data.size()) ; - font_data=p_font; - - lock(); - - if (valid) { - stbtt_GetFontVMetrics(&info, &ascent, &descent, &linegap); - descent=-descent + linegap; - - for(int i=32;i<1024;i++) { - for(int j=32;j<1024;j++) { - - int kern = stbtt_GetCodepointKernAdvance(&info, i,j); - if (kern!=0) { - KerningPairKey kpk; - kpk.A=i; - kpk.B=j; - kerning_map[kpk]=kern; - } - } - } - } - - unlock(); - //clear existing stuff - - ERR_FAIL_COND(!valid); -} Ref<DynamicFontAtSize> DynamicFontData::_get_dynamic_font_at_size(int p_size) { - ERR_FAIL_COND_V(!valid,Ref<DynamicFontAtSize>()); if (size_cache.has(p_size)) { return Ref<DynamicFontAtSize>( size_cache[p_size] ); @@ -67,6 +13,7 @@ Ref<DynamicFontAtSize> DynamicFontData::_get_dynamic_font_at_size(int p_size) { Ref<DynamicFontAtSize> dfas; + dfas.instance(); dfas->font=Ref<DynamicFontData>( this ); @@ -74,21 +21,34 @@ Ref<DynamicFontAtSize> DynamicFontData::_get_dynamic_font_at_size(int p_size) { size_cache[p_size]=dfas.ptr(); dfas->size=p_size; + dfas->_load(); + + return dfas; - lock(); +} - dfas->scale = stbtt_ScaleForPixelHeight(&info, p_size); +void DynamicFontData::set_font_ptr(const uint8_t* p_font_mem,int p_font_mem_size) { - unlock(); + font_mem=p_font_mem; + font_mem_size=p_font_mem_size; +} - return dfas; +void DynamicFontData::set_font_path(const String& p_path) { + + font_path=p_path; +} + +void DynamicFontData::set_force_autohinter(bool p_force) { + force_autohinter=p_force; } DynamicFontData::DynamicFontData() { - last_data_ptr=NULL; - valid=false; + + force_autohinter=false; + font_mem=NULL; + font_mem_size=0; } DynamicFontData::~DynamicFontData() @@ -100,22 +60,106 @@ DynamicFontData::~DynamicFontData() //////////////////// +Error DynamicFontAtSize::_load() { + + + int error = FT_Init_FreeType( &library ); + + ERR_EXPLAIN(TTR("Error initializing FreeType.")); + ERR_FAIL_COND_V( error !=0, ERR_CANT_CREATE ); + + if (font->font_path!=String()) { + + FileAccess *f=FileAccess::open(font->font_path,FileAccess::READ); + ERR_FAIL_COND_V(!f,ERR_CANT_OPEN); + + memset(&stream,0,sizeof(FT_StreamRec)); + stream.base=NULL; + stream.size=f->get_len(); + stream.pos=0; + stream.descriptor.pointer=f; + stream.read=_ft_stream_io; + stream.close=_ft_stream_close; + + FT_Open_Args fargs; + memset(&fargs,0,sizeof(FT_Open_Args)); + fargs.flags=FT_OPEN_STREAM; + fargs.stream=&stream; + error = FT_Open_Face( library,&fargs,0,&face); + } else if (font->font_mem) { + + memset(&stream,0,sizeof(FT_StreamRec)); + stream.base=(unsigned char*)font->font_mem; + stream.size=font->font_mem_size; + stream.pos=0; + + FT_Open_Args fargs; + memset(&fargs,0,sizeof(FT_Open_Args)); + fargs.memory_base=(unsigned char*)font->font_mem; + fargs.memory_size=font->font_mem_size; + fargs.flags= FT_OPEN_MEMORY; + fargs.stream=&stream; + error = FT_Open_Face( library,&fargs,0,&face); + + } else { + ERR_EXPLAIN("DynamicFont uninitialized"); + ERR_FAIL_V(ERR_UNCONFIGURED); + } + + //error = FT_New_Face( library, src_path.utf8().get_data(),0,&face ); + + if ( error == FT_Err_Unknown_File_Format ) { + ERR_EXPLAIN(TTR("Unknown font format.")); + FT_Done_FreeType( library ); + + } else if ( error ) { + + ERR_EXPLAIN(TTR("Error loading font.")); + FT_Done_FreeType( library ); + + } + + ERR_FAIL_COND_V(error,ERR_FILE_CANT_OPEN); + + + /*error = FT_Set_Char_Size(face,0,64*size,512,512); + + if ( error ) { + FT_Done_FreeType( library ); + ERR_EXPLAIN(TTR("Invalid font size.")); + ERR_FAIL_COND_V( error, ERR_INVALID_PARAMETER ); + }*/ + + error = FT_Set_Pixel_Sizes(face,0,size); + + ascent=face->size->metrics.ascender>>6; + descent=-face->size->metrics.descender>>6; + linegap=0; + + //print_line("ASCENT: "+itos(ascent)+" descent "+itos(descent)+" hinted: "+itos(face->face_flags&FT_FACE_FLAG_HINTER)); + + valid=true; + return OK; +} + float DynamicFontAtSize::get_height() const { - return (font->ascent+font->descent)*scale; + return ascent+descent; } float DynamicFontAtSize::get_ascent() const { - return font->ascent*scale; + return ascent; } float DynamicFontAtSize::get_descent() const { - return font->descent*scale; + return descent; } Size2 DynamicFontAtSize::get_char_size(CharType p_char,CharType p_next) const { + if (!valid) + return Size2(1,1); const_cast<DynamicFontAtSize*>(this)->_update_char(p_char); const Character *c = char_map.getptr(p_char); @@ -124,14 +168,9 @@ Size2 DynamicFontAtSize::get_char_size(CharType p_char,CharType p_next) const { Size2 ret( c->advance, get_height()); if (p_next) { - DynamicFontData::KerningPairKey kpk; - kpk.A=p_char; - kpk.B=p_next; - - const Map<DynamicFontData::KerningPairKey,int>::Element *K=font->kerning_map.find(kpk); - if (K) { - ret.x+=K->get()*scale; - } + FT_Vector delta; + FT_Get_Kerning( face, p_char,p_next, FT_KERNING_DEFAULT, &delta ); + ret.x+=delta.x>>6; } @@ -141,6 +180,9 @@ Size2 DynamicFontAtSize::get_char_size(CharType p_char,CharType p_next) const { float DynamicFontAtSize::draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next,const Color& p_modulate) const { + if (!valid) + return 0; + const_cast<DynamicFontAtSize*>(this)->_update_char(p_char); const Character * c = char_map.getptr(p_char); @@ -161,58 +203,84 @@ float DynamicFontAtSize::draw_char(RID p_canvas_item, const Point2& p_pos, const float ret = c->advance; if (p_next) { - DynamicFontData::KerningPairKey kpk; - kpk.A=p_char; - kpk.B=p_next; - const Map<DynamicFontData::KerningPairKey,int>::Element *K=font->kerning_map.find(kpk); - if (K) { - ret+=K->get()*scale; - } + FT_Vector delta; + FT_Get_Kerning( face, p_char,p_next, FT_KERNING_DEFAULT, &delta ); + ret+=delta.x>>6; } return ret; } +unsigned long DynamicFontAtSize::_ft_stream_io(FT_Stream stream, unsigned long offset, unsigned char* buffer, unsigned long count ) { + + + FileAccess *f=(FileAccess*)stream->descriptor.pointer; + + if (f->get_pos()!=offset) { + f->seek(offset); + + } + + if (count==0) + return 0; + + return f->get_buffer(buffer,count); +} +void DynamicFontAtSize::_ft_stream_close(FT_Stream stream) { + + FileAccess *f=(FileAccess*)stream->descriptor.pointer; + f->close(); + memdelete(f); +} + void DynamicFontAtSize::_update_char(CharType p_char) { if (char_map.has(p_char)) return; - font->lock(); - + _THREAD_SAFE_METHOD_ - int w,h,xofs,yofs; - unsigned char * cpbitmap = stbtt_GetCodepointBitmap(&font->info, scale, scale, p_char, &w, &h, &xofs, &yofs ); + FT_GlyphSlot slot = face->glyph; - if (!cpbitmap) { - //no glyph + int error = FT_Load_Char( face, p_char, FT_LOAD_RENDER|(font->force_autohinter?FT_LOAD_FORCE_AUTOHINT:0) ); + if (!error) { + error = FT_Render_Glyph( face->glyph, ft_render_mode_normal ); + } + if (error) { - int advance; - stbtt_GetCodepointHMetrics(&font->info, p_char, &advance, 0); + int advance=0; + //stbtt_GetCodepointHMetrics(&font->info, p_char, &advance, 0); //print_line("char has no bitmap: "+itos(p_char)+" but advance is "+itos(advance*scale)); Character ch; ch.texture_idx=-1; - ch.advance=advance*scale; + ch.advance=advance; ch.h_align=0; ch.v_align=0; char_map[p_char]=ch; - font->unlock(); return; } + + + int w = slot->bitmap.width; + int h = slot->bitmap.rows; + int p = slot->bitmap.pitch; + int yofs=slot->bitmap_top; + int xofs=slot->bitmap_left; + int advance=slot->advance.x>>6; + + int mw=w+rect_margin*2; int mh=h+rect_margin*2; if (mw>4096 || mh>4096) { - stbtt_FreeBitmap(cpbitmap,NULL); - font->unlock(); ERR_FAIL_COND(mw>4096); ERR_FAIL_COND(mh>4096); } @@ -304,13 +372,14 @@ void DynamicFontAtSize::_update_char(CharType p_char) { { DVector<uint8_t>::Write wr = tex.imgdata.write(); + for(int i=0;i<h;i++) { for(int j=0;j<w;j++) { int ofs = ( (i+tex_y+rect_margin)*tex.texture_size+j+tex_x+rect_margin)*2; ERR_FAIL_COND(ofs >= tex.imgdata.size()); wr[ofs+0]=255; //grayscale as 1 - wr[ofs+1]=cpbitmap[i*w+j]; //alpha as 0 + wr[ofs+1]=slot->bitmap.buffer[i*slot->bitmap.width+j]; } } } @@ -322,7 +391,7 @@ void DynamicFontAtSize::_update_char(CharType p_char) { if (tex.texture.is_null()) { tex.texture.instance(); - tex.texture->create_from_image(img,Texture::FLAG_FILTER); + tex.texture->create_from_image(img,0/*Texture::FLAG_FILTER*/); } else { tex.texture->set_data(img); //update } @@ -337,13 +406,11 @@ void DynamicFontAtSize::_update_char(CharType p_char) { tex.offsets[k]=tex_y+mh; } - int advance; - stbtt_GetCodepointHMetrics(&font->info, p_char, &advance, 0); Character chr; chr.h_align=xofs; - chr.v_align=yofs + get_ascent(); - chr.advance=advance*scale; + chr.v_align=ascent-yofs;// + ascent - descent; + chr.advance=advance; chr.texture_idx=tex_index; @@ -353,21 +420,24 @@ void DynamicFontAtSize::_update_char(CharType p_char) { char_map[p_char]=chr; - stbtt_FreeBitmap(cpbitmap,NULL); - - font->unlock(); } DynamicFontAtSize::DynamicFontAtSize() { + valid=false; rect_margin=1; + ascent=1; + descent=1; + linegap=1; } DynamicFontAtSize::~DynamicFontAtSize(){ - ERR_FAIL_COND(!font.ptr()); - font->size_cache.erase(size); + if (valid) { + FT_Done_FreeType( library ); + font->size_cache.erase(size); + } } ///////////////////////// @@ -478,34 +548,21 @@ RES ResourceFormatLoaderDynamicFont::load(const String &p_path, const String& p_ if (r_error) *r_error=ERR_FILE_CANT_OPEN; + Ref<DynamicFontData> dfont; + dfont.instance();; + dfont->set_font_path(p_path); - FileAccess *f = FileAccess::open(p_path,FileAccess::READ); - ERR_FAIL_COND_V(!f,RES()); - - DVector<uint8_t> data; - - data.resize(f->get_len()); - - ERR_FAIL_COND_V(data.size()==0,RES()); - - { - DVector<uint8_t>::Write w = data.write(); - f->get_buffer(w.ptr(),data.size()); - } - - Ref<DynamicFontData> dfd; - dfd.instance(); - dfd->set_font_data(data); if (r_error) *r_error=OK; - return dfd; + return dfont; } void ResourceFormatLoaderDynamicFont::get_recognized_extensions(List<String> *p_extensions) const { p_extensions->push_back("ttf"); + p_extensions->push_back("otf"); } bool ResourceFormatLoaderDynamicFont::handles_type(const String& p_type) const { @@ -516,8 +573,10 @@ bool ResourceFormatLoaderDynamicFont::handles_type(const String& p_type) const { String ResourceFormatLoaderDynamicFont::get_resource_type(const String &p_path) const { String el = p_path.extension().to_lower(); - if (el=="ttf") + if (el=="ttf" || el=="otf") return "DynamicFontData"; return ""; } + +#endif diff --git a/scene/resources/dynamic_font.h b/scene/resources/dynamic_font.h index ba7249a7b7..f0cf80b042 100644 --- a/scene/resources/dynamic_font.h +++ b/scene/resources/dynamic_font.h @@ -1,10 +1,14 @@ -#ifndef DYNAMICFONT_H -#define DYNAMICFONT_H +#ifndef DYNAMIC_FONT_H +#define DYNAMIC_FONT_H -#include "font.h" -#include "stb_truetype.h" +#ifdef FREETYPE_ENABLED +#include "scene/resources/font.h" +#include "os/thread_safe.h" #include "io/resource_loader.h" +#include <ft2build.h> +#include FT_FREETYPE_H + class DynamicFontAtSize; class DynamicFont; @@ -13,39 +17,16 @@ class DynamicFontData : public Resource { OBJ_TYPE(DynamicFontData,Resource); - bool valid; - - DVector<uint8_t> font_data; - DVector<uint8_t>::Read fr; - const uint8_t* last_data_ptr; - - struct KerningPairKey { - - union { - struct { - uint32_t A,B; - }; - - uint64_t pair; - }; - - _FORCE_INLINE_ bool operator<(const KerningPairKey& p_r) const { return pair<p_r.pair; } - }; - Map<KerningPairKey,int> kerning_map; + const uint8_t *font_mem; + int font_mem_size; + bool force_autohinter; + String font_path; Map<int,DynamicFontAtSize*> size_cache; -friend class DynamicFontAtSize; - - stbtt_fontinfo info; - int ascent; - int descent; - int linegap; - - void lock(); - void unlock(); + friend class DynamicFontAtSize; friend class DynamicFont; @@ -53,7 +34,10 @@ friend class DynamicFont; Ref<DynamicFontAtSize> _get_dynamic_font_at_size(int p_size); public: - void set_font_data(const DVector<uint8_t>& p_font); + void set_font_ptr(const uint8_t* p_font_mem,int p_font_mem_size); + void set_font_path(const String& p_path); + void set_force_autohinter(bool p_force); + DynamicFontData(); ~DynamicFontData(); }; @@ -61,11 +45,21 @@ public: class DynamicFontAtSize : public Reference { - OBJ_TYPE(DynamicFontAtSize,Reference); + OBJ_TYPE(DynamicFontAtSize,Reference) + _THREAD_SAFE_CLASS_ + FT_Library library; /* handle to library */ + FT_Face face; /* handle to face object */ + FT_StreamRec stream; + + int ascent; + int descent; + int linegap; int rect_margin; + bool valid; + struct CharTexture { DVector<uint8_t> imgdata; @@ -88,6 +82,8 @@ class DynamicFontAtSize : public Reference { }; + static unsigned long _ft_stream_io(FT_Stream stream, unsigned long offset, unsigned char* buffer, unsigned long count ); + static void _ft_stream_close(FT_Stream stream); HashMap< CharType, Character > char_map; @@ -95,13 +91,18 @@ class DynamicFontAtSize : public Reference { friend class DynamicFontData; Ref<DynamicFontData> font; - float scale; int size; + + + Error _load(); protected: + + public: + float get_height() const; float get_ascent() const; @@ -126,7 +127,7 @@ class DynamicFont : public Font { Ref<DynamicFontData> data; Ref<DynamicFontAtSize> data_at_size; int size; - + bool valid; protected: @@ -171,5 +172,6 @@ public: }; +#endif -#endif // DYNAMICFONT_H +#endif diff --git a/scene/resources/dynamic_font_stb.cpp b/scene/resources/dynamic_font_stb.cpp new file mode 100644 index 0000000000..344043fcdd --- /dev/null +++ b/scene/resources/dynamic_font_stb.cpp @@ -0,0 +1,527 @@ +#include "dynamic_font_stb.h" + +#ifndef FREETYPE_ENABLED + +#define STB_TRUETYPE_IMPLEMENTATION +#include "stb_truetype.h" +#include "os/file_access.h" + +void DynamicFontData::lock() { + + fr=font_data.read(); + + if (fr.ptr()!=last_data_ptr) { + + last_data_ptr=fr.ptr(); + + if (!stbtt_InitFont(&info, last_data_ptr, 0)) { + valid=false; + } else { + valid=true; + } + + last_data_ptr=fr.ptr(); + } +} + +void DynamicFontData::unlock() { + + fr = DVector<uint8_t>::Read(); +} + +void DynamicFontData::set_font_data(const DVector<uint8_t>& p_font) { + //clear caches and stuff + ERR_FAIL_COND(font_data.size()) ; + font_data=p_font; + + lock(); + + if (valid) { + stbtt_GetFontVMetrics(&info, &ascent, &descent, &linegap); + descent=-descent + linegap; + + for(int i=32;i<1024;i++) { + for(int j=32;j<1024;j++) { + + int kern = stbtt_GetCodepointKernAdvance(&info, i,j); + if (kern!=0) { + KerningPairKey kpk; + kpk.A=i; + kpk.B=j; + kerning_map[kpk]=kern; + } + } + } + } + + unlock(); + //clear existing stuff + + ERR_FAIL_COND(!valid); +} + +Ref<DynamicFontAtSize> DynamicFontData::_get_dynamic_font_at_size(int p_size) { + + ERR_FAIL_COND_V(!valid,Ref<DynamicFontAtSize>()); + + if (size_cache.has(p_size)) { + return Ref<DynamicFontAtSize>( size_cache[p_size] ); + } + + + Ref<DynamicFontAtSize> dfas; + dfas.instance(); + + dfas->font=Ref<DynamicFontData>( this ); + + size_cache[p_size]=dfas.ptr(); + + dfas->size=p_size; + + lock(); + + dfas->scale = stbtt_ScaleForPixelHeight(&info, p_size); + + unlock(); + + return dfas; + +} + +DynamicFontData::DynamicFontData() +{ + last_data_ptr=NULL; + valid=false; +} + +DynamicFontData::~DynamicFontData() +{ + +} + + + +//////////////////// + +float DynamicFontAtSize::get_height() const { + + return (font->ascent+font->descent)*scale; +} + +float DynamicFontAtSize::get_ascent() const { + + return font->ascent*scale; +} +float DynamicFontAtSize::get_descent() const { + + return font->descent*scale; +} + +Size2 DynamicFontAtSize::get_char_size(CharType p_char,CharType p_next) const { + + const_cast<DynamicFontAtSize*>(this)->_update_char(p_char); + + const Character *c = char_map.getptr(p_char); + ERR_FAIL_COND_V(!c,Size2()); + + Size2 ret( c->advance, get_height()); + + if (p_next) { + DynamicFontData::KerningPairKey kpk; + kpk.A=p_char; + kpk.B=p_next; + + const Map<DynamicFontData::KerningPairKey,int>::Element *K=font->kerning_map.find(kpk); + if (K) { + ret.x+=K->get()*scale; + } + + } + + return ret; +} + + +float DynamicFontAtSize::draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next,const Color& p_modulate) const { + + const_cast<DynamicFontAtSize*>(this)->_update_char(p_char); + + const Character * c = char_map.getptr(p_char); + + if (!c) { + return 0; + } + + Point2 cpos=p_pos; + cpos.x+=c->h_align; + cpos.y-=get_ascent(); + cpos.y+=c->v_align; + ERR_FAIL_COND_V( c->texture_idx<-1 || c->texture_idx>=textures.size(),0); + if (c->texture_idx!=-1) + VisualServer::get_singleton()->canvas_item_add_texture_rect_region( p_canvas_item, Rect2( cpos, c->rect.size ), textures[c->texture_idx].texture->get_rid(),c->rect, p_modulate ); + + //textures[c->texture_idx].texture->draw(p_canvas_item,Vector2()); + + float ret = c->advance; + if (p_next) { + DynamicFontData::KerningPairKey kpk; + kpk.A=p_char; + kpk.B=p_next; + + const Map<DynamicFontData::KerningPairKey,int>::Element *K=font->kerning_map.find(kpk); + if (K) { + ret+=K->get()*scale; + } + + } + + return ret; +} + + +void DynamicFontAtSize::_update_char(CharType p_char) { + + if (char_map.has(p_char)) + return; + + font->lock(); + + + int w,h,xofs,yofs; + unsigned char * cpbitmap = stbtt_GetCodepointBitmap(&font->info, scale, scale, p_char, &w, &h, &xofs, &yofs ); + + if (!cpbitmap) { + //no glyph + + int advance; + stbtt_GetCodepointHMetrics(&font->info, p_char, &advance, 0); + //print_line("char has no bitmap: "+itos(p_char)+" but advance is "+itos(advance*scale)); + Character ch; + ch.texture_idx=-1; + ch.advance=advance*scale; + ch.h_align=0; + ch.v_align=0; + + char_map[p_char]=ch; + + font->unlock(); + + return; + } + + int mw=w+rect_margin*2; + int mh=h+rect_margin*2; + + if (mw>4096 || mh>4096) { + + stbtt_FreeBitmap(cpbitmap,NULL); + font->unlock(); + ERR_FAIL_COND(mw>4096); + ERR_FAIL_COND(mh>4096); + } + + //find a texture to fit this... + + int tex_index=-1; + int tex_x=0; + int tex_y=0; + + for(int i=0;i<textures.size();i++) { + + CharTexture &ct=textures[i]; + + if (mw > ct.texture_size || mh > ct.texture_size) //too big for this texture + continue; + + tex_y=0x7FFFFFFF; + tex_x=0; + + for(int j=0;j<ct.texture_size-mw;j++) { + + int max_y=0; + + for(int k=j;k<j+mw;k++) { + + int y = ct.offsets[k]; + if (y>max_y) + max_y=y; + } + + if (max_y<tex_y) { + tex_y=max_y; + tex_x=j; + } + } + + if (tex_y==0x7FFFFFFF || tex_y+mh > ct.texture_size) + continue; //fail, could not fit it here + + tex_index=i; + break; + } + +// print_line("CHAR: "+String::chr(p_char)+" TEX INDEX: "+itos(tex_index)+" X: "+itos(tex_x)+" Y: "+itos(tex_y)); + + if (tex_index==-1) { + //could not find texture to fit, create one + tex_x = 0; + tex_y = 0; + + int texsize = MAX(size*8,256); + if (mw>texsize) + texsize=mw; //special case, adapt to it? + if (mh>texsize) + texsize=mh; //special case, adapt to it? + + texsize=nearest_power_of_2(texsize); + + texsize=MIN(texsize,4096); + + + CharTexture tex; + tex.texture_size=texsize; + tex.imgdata.resize(texsize*texsize*2); //grayscale alpha + + { + //zero texture + DVector<uint8_t>::Write w = tex.imgdata.write(); + ERR_FAIL_COND(texsize*texsize*2 > tex.imgdata.size()); + for(int i=0;i<texsize*texsize*2;i++) { + w[i]=0; + } + } + tex.offsets.resize(texsize); + for(int i=0;i<texsize;i++) //zero offsets + tex.offsets[i]=0; + + textures.push_back(tex); + tex_index=textures.size()-1; + + } + + + //fit character in char texture + + CharTexture &tex=textures[tex_index]; + + { + DVector<uint8_t>::Write wr = tex.imgdata.write(); + + for(int i=0;i<h;i++) { + for(int j=0;j<w;j++) { + + int ofs = ( (i+tex_y+rect_margin)*tex.texture_size+j+tex_x+rect_margin)*2; + ERR_FAIL_COND(ofs >= tex.imgdata.size()); + wr[ofs+0]=255; //grayscale as 1 + wr[ofs+1]=cpbitmap[i*w+j]; //alpha as 0 + } + } + } + + //blit to image and texture + { + + Image img(tex.texture_size,tex.texture_size,0,Image::FORMAT_GRAYSCALE_ALPHA,tex.imgdata); + + if (tex.texture.is_null()) { + tex.texture.instance(); + tex.texture->create_from_image(img,Texture::FLAG_FILTER); + } else { + tex.texture->set_data(img); //update + } + + } + + + // update height array + + for(int k=tex_x;k<tex_x+mw;k++) { + + tex.offsets[k]=tex_y+mh; + } + + int advance; + stbtt_GetCodepointHMetrics(&font->info, p_char, &advance, 0); + + Character chr; + chr.h_align=xofs; + chr.v_align=yofs + get_ascent(); + chr.advance=advance*scale; + chr.texture_idx=tex_index; + + + chr.rect=Rect2(tex_x+rect_margin,tex_y+rect_margin,w,h); + + //print_line("CHAR: "+String::chr(p_char)+" TEX INDEX: "+itos(tex_index)+" RECT: "+chr.rect+" X OFS: "+itos(xofs)+" Y OFS: "+itos(yofs)); + + char_map[p_char]=chr; + + stbtt_FreeBitmap(cpbitmap,NULL); + + font->unlock(); + +} + +DynamicFontAtSize::DynamicFontAtSize() { + + rect_margin=1; +} + +DynamicFontAtSize::~DynamicFontAtSize(){ + + ERR_FAIL_COND(!font.ptr()); + font->size_cache.erase(size); +} + +///////////////////////// + + +void DynamicFont::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("set_font_data","data:DynamicFontData"),&DynamicFont::set_font_data); + ObjectTypeDB::bind_method(_MD("get_font_data:DynamicFontData"),&DynamicFont::get_font_data); + + ObjectTypeDB::bind_method(_MD("set_size","data"),&DynamicFont::set_size); + ObjectTypeDB::bind_method(_MD("get_size"),&DynamicFont::get_size); + + ADD_PROPERTY(PropertyInfo(Variant::INT,"size"),_SCS("set_size"),_SCS("get_size")); + ADD_PROPERTY(PropertyInfo(Variant::OBJECT,"font",PROPERTY_HINT_RESOURCE_TYPE,"DynamicFontData"),_SCS("set_font_data"),_SCS("get_font_data")); +} + + +void DynamicFont::set_font_data(const Ref<DynamicFontData>& p_data) { + + data=p_data; + data_at_size=data->_get_dynamic_font_at_size(size); +} + +Ref<DynamicFontData> DynamicFont::get_font_data() const{ + + return data; +} + +void DynamicFont::set_size(int p_size){ + + if (size==p_size) + return; + size=p_size; + ERR_FAIL_COND(p_size<1); + if (!data.is_valid()) + return; + data_at_size=data->_get_dynamic_font_at_size(size); + +} +int DynamicFont::get_size() const{ + + return size; +} + +float DynamicFont::get_height() const{ + + if (!data_at_size.is_valid()) + return 1; + + return data_at_size->get_height(); +} + +float DynamicFont::get_ascent() const{ + + if (!data_at_size.is_valid()) + return 1; + + return data_at_size->get_ascent(); +} + +float DynamicFont::get_descent() const{ + + if (!data_at_size.is_valid()) + return 1; + + return data_at_size->get_descent(); + +} + +Size2 DynamicFont::get_char_size(CharType p_char,CharType p_next) const{ + + if (!data_at_size.is_valid()) + return Size2(1,1); + + return data_at_size->get_char_size(p_char,p_next); + +} + +bool DynamicFont::is_distance_field_hint() const{ + + return false; +} + +float DynamicFont::draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next,const Color& p_modulate) const { + + if (!data_at_size.is_valid()) + return 0; + + return data_at_size->draw_char(p_canvas_item,p_pos,p_char,p_next,p_modulate); + +} + +DynamicFont::DynamicFont() { + + size=16; +} + +DynamicFont::~DynamicFont() { + +} + +///////////////////////// + + +RES ResourceFormatLoaderDynamicFont::load(const String &p_path, const String& p_original_path, Error *r_error) { + + if (r_error) + *r_error=ERR_FILE_CANT_OPEN; + + + FileAccess *f = FileAccess::open(p_path,FileAccess::READ); + ERR_FAIL_COND_V(!f,RES()); + + DVector<uint8_t> data; + + data.resize(f->get_len()); + + ERR_FAIL_COND_V(data.size()==0,RES()); + + { + DVector<uint8_t>::Write w = data.write(); + f->get_buffer(w.ptr(),data.size()); + } + + Ref<DynamicFontData> dfd; + dfd.instance(); + dfd->set_font_data(data); + + if (r_error) + *r_error=OK; + + return dfd; +} + +void ResourceFormatLoaderDynamicFont::get_recognized_extensions(List<String> *p_extensions) const { + + p_extensions->push_back("ttf"); +} + +bool ResourceFormatLoaderDynamicFont::handles_type(const String& p_type) const { + + return (p_type=="DynamicFontData"); +} + +String ResourceFormatLoaderDynamicFont::get_resource_type(const String &p_path) const { + + String el = p_path.extension().to_lower(); + if (el=="ttf") + return "DynamicFontData"; + return ""; +} + +#endif diff --git a/scene/resources/dynamic_font_stb.h b/scene/resources/dynamic_font_stb.h new file mode 100644 index 0000000000..6b72fb3703 --- /dev/null +++ b/scene/resources/dynamic_font_stb.h @@ -0,0 +1,178 @@ +#ifndef DYNAMICFONT_STB_H +#define DYNAMICFONT_STB_H + +#ifndef FREETYPE_ENABLED + +#include "font.h" +#include "stb_truetype.h" +#include "io/resource_loader.h" + + + +class DynamicFontAtSize; +class DynamicFont; + +class DynamicFontData : public Resource { + + OBJ_TYPE(DynamicFontData,Resource); + + bool valid; + + DVector<uint8_t> font_data; + DVector<uint8_t>::Read fr; + const uint8_t* last_data_ptr; + + struct KerningPairKey { + + union { + struct { + uint32_t A,B; + }; + + uint64_t pair; + }; + + _FORCE_INLINE_ bool operator<(const KerningPairKey& p_r) const { return pair<p_r.pair; } + }; + + Map<KerningPairKey,int> kerning_map; + + + Map<int,DynamicFontAtSize*> size_cache; + +friend class DynamicFontAtSize; + + stbtt_fontinfo info; + int ascent; + int descent; + int linegap; + + void lock(); + void unlock(); + +friend class DynamicFont; + + + Ref<DynamicFontAtSize> _get_dynamic_font_at_size(int p_size); +public: + + void set_font_data(const DVector<uint8_t>& p_font); + DynamicFontData(); + ~DynamicFontData(); +}; + + +class DynamicFontAtSize : public Reference { + + OBJ_TYPE(DynamicFontAtSize,Reference); + + + int rect_margin; + + struct CharTexture { + + DVector<uint8_t> imgdata; + int texture_size; + Vector<int> offsets; + Ref<ImageTexture> texture; + }; + + Vector<CharTexture> textures; + + struct Character { + + int texture_idx; + Rect2 rect; + float v_align; + float h_align; + float advance; + + Character() { texture_idx=0; v_align=0; } + }; + + + + HashMap< CharType, Character > char_map; + + _FORCE_INLINE_ void _update_char(CharType p_char); + +friend class DynamicFontData; + Ref<DynamicFontData> font; + float scale; + int size; + +protected: + +public: + + float get_height() const; + + float get_ascent() const; + float get_descent() const; + + Size2 get_char_size(CharType p_char,CharType p_next=0) const; + + float draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next=0,const Color& p_modulate=Color(1,1,1)) const; + + + + DynamicFontAtSize(); + ~DynamicFontAtSize(); +}; + +/////////////// + +class DynamicFont : public Font { + + OBJ_TYPE( DynamicFont, Font ); + + Ref<DynamicFontData> data; + Ref<DynamicFontAtSize> data_at_size; + int size; + + +protected: + + static void _bind_methods(); + +public: + + void set_font_data(const Ref<DynamicFontData>& p_data); + Ref<DynamicFontData> get_font_data() const; + + void set_size(int p_size); + int get_size() const; + + virtual float get_height() const; + + virtual float get_ascent() const; + virtual float get_descent() const; + + virtual Size2 get_char_size(CharType p_char,CharType p_next=0) const; + + virtual bool is_distance_field_hint() const; + + virtual float draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next=0,const Color& p_modulate=Color(1,1,1)) const; + + DynamicFont(); + ~DynamicFont(); + +}; + + + +///////////// + +class ResourceFormatLoaderDynamicFont : public ResourceFormatLoader { +public: + + virtual RES load(const String &p_path,const String& p_original_path="",Error *r_error=NULL); + virtual void get_recognized_extensions(List<String> *p_extensions) const; + virtual bool handles_type(const String& p_type) const; + virtual String get_resource_type(const String &p_path) const; + +}; + + +#endif +#endif // DYNAMICFONT_H diff --git a/scene/resources/mesh.cpp b/scene/resources/mesh.cpp index 09c0a21f53..e6356d3366 100644 --- a/scene/resources/mesh.cpp +++ b/scene/resources/mesh.cpp @@ -30,7 +30,6 @@ #include "scene/resources/concave_polygon_shape.h" #include "scene/resources/convex_polygon_shape.h" #include "surface_tool.h" - static const char*_array_name[]={ "vertex_array", "normal_array", @@ -288,6 +287,7 @@ void Mesh::add_surface(PrimitiveType p_primitive,const Array& p_arrays,const Arr triangle_mesh=Ref<TriangleMesh>(); _change_notify(); + emit_changed(); } @@ -387,6 +387,7 @@ void Mesh::surface_remove(int p_idx) { triangle_mesh=Ref<TriangleMesh>(); _recompute_aabb(); _change_notify(); + emit_changed(); } @@ -491,6 +492,8 @@ void Mesh::add_surface_from_mesh_data(const Geometry::MeshData& p_mesh_data) { surfaces.push_back(s); _change_notify(); + + emit_changed(); } RID Mesh::get_rid() const { diff --git a/scene/scene_string_names.cpp b/scene/scene_string_names.cpp index 7e8dd41ed9..164ae55c9f 100644 --- a/scene/scene_string_names.cpp +++ b/scene/scene_string_names.cpp @@ -176,4 +176,11 @@ SceneStringNames::SceneStringNames() { path_pp=NodePath(".."); _default=StaticCString::create("default"); + + for(int i=0;i<MAX_MATERIALS;i++) { + + mesh_materials[i]="material/"+itos(i); + } + + _mesh_changed=StaticCString::create("_mesh_changed"); } diff --git a/scene/scene_string_names.h b/scene/scene_string_names.h index 7143bd539f..32e51ce8f4 100644 --- a/scene/scene_string_names.h +++ b/scene/scene_string_names.h @@ -186,6 +186,12 @@ public: StringName node_configuration_warning_changed; + enum { + MAX_MATERIALS=32 + }; + StringName mesh_materials[MAX_MATERIALS]; + StringName _mesh_changed; + }; diff --git a/servers/physics/joints/hinge_joint_sw.cpp b/servers/physics/joints/hinge_joint_sw.cpp index feaf00290d..37b73f64c7 100644 --- a/servers/physics/joints/hinge_joint_sw.cpp +++ b/servers/physics/joints/hinge_joint_sw.cpp @@ -420,7 +420,6 @@ float HingeJointSW::get_param(PhysicsServer::HingeJointParam p_param) const{ void HingeJointSW::set_flag(PhysicsServer::HingeJointFlag p_flag, bool p_value){ - print_line(p_flag+": "+itos(p_value)); switch (p_flag) { case PhysicsServer::HINGE_JOINT_FLAG_USE_LIMIT: m_useLimit=p_value; break; case PhysicsServer::HINGE_JOINT_FLAG_ENABLE_MOTOR: m_enableAngularMotor=p_value; break; diff --git a/servers/visual/rasterizer.h b/servers/visual/rasterizer.h index e3d1b14835..f1ad685879 100644 --- a/servers/visual/rasterizer.h +++ b/servers/visual/rasterizer.h @@ -542,6 +542,7 @@ public: RID skeleton; RID material_override; RID sampled_light; + Vector<RID> materials; Vector<RID> light_instances; Vector<float> morph_values; BakedLightData *baked_light; diff --git a/servers/visual/visual_server_raster.cpp b/servers/visual/visual_server_raster.cpp index ad85ecc7c0..b3721268bf 100644 --- a/servers/visual/visual_server_raster.cpp +++ b/servers/visual/visual_server_raster.cpp @@ -398,7 +398,7 @@ void VisualServerRaster::mesh_add_custom_surface(RID p_mesh,const Variant& p_dat void VisualServerRaster::mesh_add_surface(RID p_mesh,PrimitiveType p_primitive,const Array& p_arrays,const Array& p_blend_shapes,bool p_alpha_sort) { VS_CHANGED; - _dependency_queue_update(p_mesh,true); + _dependency_queue_update(p_mesh,true,true); rasterizer->mesh_add_surface(p_mesh,p_primitive,p_arrays,p_blend_shapes,p_alpha_sort); } @@ -452,6 +452,7 @@ VisualServer::PrimitiveType VisualServerRaster::mesh_surface_get_primitive_type( void VisualServerRaster::mesh_remove_surface(RID p_mesh,int p_surface){ rasterizer->mesh_remove_surface(p_mesh,p_surface); + _dependency_queue_update(p_mesh,true,true); } int VisualServerRaster::mesh_get_surface_count(RID p_mesh) const{ @@ -480,6 +481,8 @@ void VisualServerRaster::mesh_clear(RID p_mesh) { while(rasterizer->mesh_get_surface_count(p_mesh)) { rasterizer->mesh_remove_surface(p_mesh,0); } + + _dependency_queue_update(p_mesh,true,true); } @@ -2038,7 +2041,7 @@ Variant VisualServerRaster::environment_fx_get_param(RID p_env,EnvironmentFxPara /* SCENARIO API */ -void VisualServerRaster::_dependency_queue_update(RID p_rid,bool p_update_aabb) { +void VisualServerRaster::_dependency_queue_update(RID p_rid,bool p_update_aabb,bool p_update_materials) { Map< RID, Set<RID> >::Element * E = instance_dependency_map.find( p_rid ); @@ -2051,17 +2054,19 @@ void VisualServerRaster::_dependency_queue_update(RID p_rid,bool p_update_aabb) while(I) { Instance *ins = instance_owner.get( I->get() ); - _instance_queue_update( ins , p_update_aabb ); + _instance_queue_update( ins , p_update_aabb, p_update_materials ); I = I->next(); } } -void VisualServerRaster::_instance_queue_update(Instance *p_instance,bool p_update_aabb) { +void VisualServerRaster::_instance_queue_update(Instance *p_instance,bool p_update_aabb,bool p_update_materials) { if (p_update_aabb) p_instance->update_aabb=true; + if (p_update_materials) + p_instance->update_materials=true; if (p_instance->update) return; @@ -2273,6 +2278,7 @@ void VisualServerRaster::instance_set_base(RID p_instance, RID p_base) { } instance->data.morph_values.clear(); + instance->data.materials.clear(); } @@ -2286,6 +2292,7 @@ void VisualServerRaster::instance_set_base(RID p_instance, RID p_base) { if (rasterizer->is_mesh(p_base)) { instance->base_type=INSTANCE_MESH; instance->data.morph_values.resize( rasterizer->mesh_get_morph_target_count(p_base)); + instance->data.materials.resize( rasterizer->mesh_get_surface_count(p_base)); } else if (rasterizer->is_multimesh(p_base)) { instance->base_type=INSTANCE_MULTIMESH; } else if (rasterizer->is_immediate(p_base)) { @@ -2510,6 +2517,16 @@ float VisualServerRaster::instance_get_morph_target_weight(RID p_instance,int p_ return instance->data.morph_values[p_shape]; } +void VisualServerRaster::instance_set_surface_material(RID p_instance,int p_surface, RID p_material) { + + VS_CHANGED; + Instance *instance = instance_owner.get( p_instance ); + ERR_FAIL_COND( !instance); + ERR_FAIL_INDEX( p_surface, instance->data.materials.size() ); + instance->data.materials[p_surface]=p_material; +} + + void VisualServerRaster::instance_set_transform(RID p_instance, const Transform& p_transform) { VS_CHANGED; Instance *instance = instance_owner.get( p_instance ); @@ -3046,6 +3063,7 @@ void VisualServerRaster::_update_instance(Instance *p_instance) { } + if (p_instance->aabb.has_no_surface()) return; @@ -3301,10 +3319,17 @@ void VisualServerRaster::_update_instances() { if (instance->update_aabb) _update_instance_aabb(instance); + if (instance->update_materials) { + if (instance->base_type==INSTANCE_MESH) { + instance->data.materials.resize(rasterizer->mesh_get_surface_count(instance->base_rid)); + } + } + _update_instance(instance); instance->update=false; instance->update_aabb=false; + instance->update_materials=false; instance->update_next=0; } } @@ -3661,8 +3686,11 @@ void VisualServerRaster::canvas_item_add_texture_rect(RID p_item, const Rect2& p rect->modulate=p_modulate; rect->rect=p_rect; rect->flags=0; - if (p_tile) + if (p_tile) { rect->flags|=Rasterizer::CANVAS_RECT_TILE; + rect->flags|=Rasterizer::CANVAS_RECT_REGION; + rect->source=Rect2(0,0,p_rect.size.width,p_rect.size.height); + } if (p_rect.size.x<0) { diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h index 5abad863ee..39ea2f55e6 100644 --- a/servers/visual/visual_server_raster.h +++ b/servers/visual/visual_server_raster.h @@ -160,6 +160,7 @@ class VisualServerRaster : public VisualServer { Scenario *scenario; bool update; bool update_aabb; + bool update_materials; Instance *update_next; InstanceType base_type; @@ -317,6 +318,8 @@ class VisualServerRaster : public VisualServer { draw_range_end=0; extra_margin=0; visible_in_all_rooms=false; + update_aabb=false; + update_materials=false; baked_light=NULL; baked_light_info=NULL; @@ -583,8 +586,8 @@ class VisualServerRaster : public VisualServer { void _portal_disconnect(Instance *p_portal,bool p_cleanup=false); void _portal_attempt_connect(Instance *p_portal); - void _dependency_queue_update(RID p_rid,bool p_update_aabb=false); - _FORCE_INLINE_ void _instance_queue_update(Instance *p_instance,bool p_update_aabb=false); + void _dependency_queue_update(RID p_rid, bool p_update_aabb=false, bool p_update_materials=false); + _FORCE_INLINE_ void _instance_queue_update(Instance *p_instance,bool p_update_aabb=false,bool p_update_materials=false); void _update_instances(); void _update_instance_aabb(Instance *p_instance); void _update_instance(Instance *p_instance); @@ -1083,6 +1086,9 @@ public: virtual void instance_set_morph_target_weight(RID p_instance,int p_shape, float p_weight); virtual float instance_get_morph_target_weight(RID p_instance,int p_shape) const; + virtual void instance_set_surface_material(RID p_instance,int p_surface, RID p_material); + + virtual void instance_set_transform(RID p_instance, const Transform& p_transform); virtual Transform instance_get_transform(RID p_instance) const; diff --git a/servers/visual/visual_server_wrap_mt.h b/servers/visual/visual_server_wrap_mt.h index 6a42fcc8a6..80cf43d572 100644 --- a/servers/visual/visual_server_wrap_mt.h +++ b/servers/visual/visual_server_wrap_mt.h @@ -525,6 +525,8 @@ public: FUNC3(instance_set_morph_target_weight,RID,int, float); FUNC2RC(float,instance_get_morph_target_weight,RID,int); + FUNC3(instance_set_surface_material,RID,int, RID); + FUNC2(instance_set_transform,RID, const Transform&); FUNC1RC(Transform,instance_get_transform,RID); diff --git a/servers/visual_server.h b/servers/visual_server.h index 750c090bbe..f32e976b57 100644 --- a/servers/visual_server.h +++ b/servers/visual_server.h @@ -919,6 +919,8 @@ public: virtual void instance_set_morph_target_weight(RID p_instance,int p_shape, float p_weight)=0; virtual float instance_get_morph_target_weight(RID p_instance,int p_shape) const=0; + virtual void instance_set_surface_material(RID p_instance,int p_surface, RID p_material)=0; + virtual void instance_attach_skeleton(RID p_instance,RID p_skeleton)=0; virtual RID instance_get_skeleton(RID p_instance) const=0; diff --git a/tools/Godot.app/Contents/Resources/Godot.icns b/tools/Godot.app/Contents/Resources/Godot.icns Binary files differindex 4a3dc0415a..375f61437d 100644 --- a/tools/Godot.app/Contents/Resources/Godot.icns +++ b/tools/Godot.app/Contents/Resources/Godot.icns diff --git a/tools/SCsub b/tools/SCsub index 5613d8a6c9..7a0feb6e3d 100644 --- a/tools/SCsub +++ b/tools/SCsub @@ -5,12 +5,117 @@ env.add_source_files(env.tool_sources,"*.cpp") Export('env') + +def make_translations_header(target,source,env): + + + dst = target[0].srcnode().abspath + + g = open(dst,"wb") + + + """" + """ + + g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n") + g.write("#ifndef _EDITOR_TRANSLATIONS_H\n") + g.write("#define _EDITOR_TRANSLATIONS_H\n") + + xl_names=[] + for i in range(len(source)): + print("Appending translation: "+source[i].srcnode().abspath) + f = open(source[i].srcnode().abspath,"rb") + buf = f.read() + decomp_size = len(buf) + import zlib + import os.path + buf = zlib.compress(buf) + + name = os.path.splitext(os.path.basename(source[i].srcnode().abspath))[0] + + #g.write("static const int _translation_"+name+"_compressed_size="+str(len(buf))+";\n") + #g.write("static const int _translation_"+name+"_uncompressed_size="+str(decomp_size)+";\n") + g.write("static const unsigned char _translation_"+name+"_compressed[]={\n") + for i in range(len(buf)): + g.write(str(ord(buf[i]))+",\n") + + g.write("};\n") + + xl_names.append([name,len(buf),str(decomp_size)]) + + g.write("struct EditorTranslationList {\n") + g.write("\tconst char* lang;\n"); + g.write("\tint comp_size;\n"); + g.write("\tint uncomp_size;\n"); + g.write("\tconst unsigned char* data;\n"); + g.write("};\n\n"); + g.write("static EditorTranslationList _editor_translations[]={\n") + for x in xl_names: + g.write("\t{ \""+x[0]+"\", "+str(x[1])+", "+str(x[2])+",_translation_"+x[0]+"_compressed},\n") + g.write("\t{NULL,0,0,NULL}\n") + g.write("};\n") + + g.write("#endif") + + +def make_fonts_header(target,source,env): + + + dst = target[0].srcnode().abspath + + g = open(dst,"wb") + + + """" + """ + + g.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n") + g.write("#ifndef _EDITOR_FONTS_H\n") + g.write("#define _EDITOR_FONTS_H\n") + + #saving uncompressed, since freetype will reference from memory pointer + xl_names=[] + for i in range(len(source)): + print("Appending font: "+source[i].srcnode().abspath) + f = open(source[i].srcnode().abspath,"rb") + buf = f.read() + import os.path + + name = os.path.splitext(os.path.basename(source[i].srcnode().abspath))[0] + + g.write("static const int _font_"+name+"_size="+str(len(buf))+";\n") + g.write("static const unsigned char _font_"+name+"[]={\n") + for i in range(len(buf)): + g.write(str(ord(buf[i]))+",\n") + + g.write("};\n") + + g.write("#endif") + + if (env["tools"]!="no"): + + import glob + + dir = env.Dir('.').abspath + tlist = glob.glob(dir + "/translations/*.po") + + print("translations: ",tlist) + env.Depends('#tools/editor/translations.h',tlist) + env.Command('#tools/editor/translations.h',tlist,make_translations_header) + + flist = glob.glob(dir + "/editor_fonts/*.ttf") + flist.append( glob.glob(dir + "/editor_fonts/*.otf") ) + + print("fonts: ",flist) + env.Depends('#tools/editor/builtin_fonts.h',flist) + env.Command('#tools/editor/builtin_fonts.h',flist,make_fonts_header) + SConscript('editor/SCsub'); #SConscript('scintilla/SCsub'); SConscript('collada/SCsub'); SConscript('docdump/SCsub'); - SConscript('freetype/SCsub'); + #SConscript('freetype/SCsub'); SConscript('doc/SCsub') SConscript('pck/SCsub') diff --git a/tools/doc/doc_data.h b/tools/doc/doc_data.h index 877f30defb..d1aebff4ce 100644 --- a/tools/doc/doc_data.h +++ b/tools/doc/doc_data.h @@ -50,6 +50,9 @@ public: String qualifiers; String description; Vector<ArgumentDoc> arguments; + bool operator<(const MethodDoc& p_md) const { + return name<p_md.name; + } }; struct ConstantDoc { diff --git a/tools/editor/code_editor.cpp b/tools/editor/code_editor.cpp index c92b40628c..f62209fafa 100644 --- a/tools/editor/code_editor.cpp +++ b/tools/editor/code_editor.cpp @@ -30,6 +30,7 @@ #include "editor_settings.h" #include "scene/gui/margin_container.h" #include "scene/gui/separator.h" +#include "os/keyboard.h" void GotoLineDialog::popup_find_line(TextEdit *p_edit) { @@ -76,6 +77,470 @@ GotoLineDialog::GotoLineDialog() { } +void FindReplaceBar::_notification(int p_what) { + + if (p_what == NOTIFICATION_READY) { + + find_prev->set_icon(get_icon("MoveUp", "EditorIcons")); + find_next->set_icon(get_icon("MoveDown", "EditorIcons")); + hide_button->set_normal_texture(get_icon("Close","EditorIcons")); + hide_button->set_hover_texture(get_icon("CloseHover","EditorIcons")); + hide_button->set_pressed_texture(get_icon("Close","EditorIcons")); + + } else if (p_what == NOTIFICATION_VISIBILITY_CHANGED) { + + set_process_unhandled_input(is_visible()); + } +} + +void FindReplaceBar::_unhandled_input(const InputEvent &p_event) { + + if (p_event.type == InputEvent::KEY) { + + const InputEventKey& k = p_event.key; + + if (k.pressed && (text_edit->has_focus() || text_vbc->is_a_parent_of(get_focus_owner()))) { + + bool accepted = true; + + switch (k.scancode) { + + case KEY_ESCAPE: { + + _hide_bar(); + } break; + default: { + + accepted = false; + } break; + } + + if (accepted) { + accept_event(); + } + } + } +} + +bool FindReplaceBar::_search(uint32_t p_flags, int p_from_line, int p_from_col) { + + int line, col; + String text=get_search_text(); + + bool found=text_edit->search(text,p_flags,p_from_line,p_from_col,line,col); + + if (found) { + if (!preserve_cursor) { + text_edit->cursor_set_line(line); + text_edit->cursor_set_column(col+text.length()); + } + + text_edit->set_search_text(text); + text_edit->set_search_flags(p_flags); + text_edit->set_current_search_result(line,col); + + result_line=line; + result_col=col; + + set_error(""); + } else { + result_line=-1; + result_col=-1; + text_edit->set_search_text(""); + set_error(text.empty()?"":TTR("No Matches")); + } + + return found; +} + +void FindReplaceBar::_replace() { + + if (result_line!=-1 && result_col!=-1) { + text_edit->begin_complex_operation(); + + text_edit->select(result_line,result_col,result_line,result_col+get_search_text().length()); + text_edit->insert_text_at_cursor(get_replace_text()); + + text_edit->end_complex_operation(); + } + + search_current(); +} + +void FindReplaceBar::_replace_all() { + + // line as x so it gets priority in comparison, column as y + Point2i orig_cursor(text_edit->cursor_get_line(),text_edit->cursor_get_column()); + Point2i prev_match=Point2(-1,-1); + + bool selection_enabled = text_edit->is_selection_active(); + Point2i selection_begin,selection_end; + if (selection_enabled) { + selection_begin=Point2i(text_edit->get_selection_from_line(),text_edit->get_selection_from_column()); + selection_end=Point2i(text_edit->get_selection_to_line(),text_edit->get_selection_to_column()); + } + + int vsval = text_edit->get_v_scroll(); + + text_edit->cursor_set_line(0); + text_edit->cursor_set_column(0); + + int search_text_len=get_search_text().length(); + int rc=0; + + replace_all_mode = true; + + text_edit->begin_complex_operation(); + + while (search_next()) { + + // replace area + Point2i match_from(result_line,result_col); + Point2i match_to(result_line,result_col+search_text_len); + + if (match_from < prev_match) + break; // done + + prev_match=match_to; + + text_edit->select(result_line,result_col,result_line,match_to.y); + + if (selection_enabled && is_selection_only()) { + + if (match_from<selection_begin || match_to>selection_end) + continue; + + // replace but adjust selection bounds + text_edit->insert_text_at_cursor(get_replace_text()); + if (match_to.x==selection_end.x) + selection_end.y+=get_replace_text().length() - get_search_text().length(); + } else { + // just replace + text_edit->insert_text_at_cursor(get_replace_text()); + } + + rc++; + } + + text_edit->end_complex_operation(); + + replace_all_mode = false; + + // restore editor state (selection, cursor, scroll) + text_edit->cursor_set_line(orig_cursor.x); + text_edit->cursor_set_column(orig_cursor.y); + + if (selection_enabled && is_selection_only()) { + // reselect + text_edit->select(selection_begin.x,selection_begin.y,selection_end.x,selection_end.y); + } else { + text_edit->deselect(); + } + + text_edit->set_v_scroll(vsval); + set_error(vformat(TTR("Replaced %d Ocurrence(s)."), rc)); +} + +void FindReplaceBar::_get_search_from(int& r_line, int& r_col) { + + r_line=text_edit->cursor_get_line(); + r_col=text_edit->cursor_get_column(); + + if (text_edit->is_selection_active() && !replace_all_mode) { + r_line=text_edit->get_selection_from_line(); + r_col=text_edit->get_selection_to_column(); + } + + if (r_line==result_line && r_col>=result_col && r_col<=result_col+get_search_text().length()) { + r_col=result_col; + } +} + +bool FindReplaceBar::search_current() { + + uint32_t flags=0; + + if (is_whole_words()) + flags|=TextEdit::SEARCH_WHOLE_WORDS; + if (is_case_sensitive()) + flags|=TextEdit::SEARCH_MATCH_CASE; + + int line, col; + _get_search_from(line, col); + + return _search(flags,line,col); +} + +bool FindReplaceBar::search_prev() { + + uint32_t flags=0; + String text = get_search_text(); + + if (is_whole_words()) + flags|=TextEdit::SEARCH_WHOLE_WORDS; + if (is_case_sensitive()) + flags|=TextEdit::SEARCH_MATCH_CASE; + + flags|=TextEdit::SEARCH_BACKWARDS; + + int line, col; + _get_search_from(line, col); + + col-=text.length(); + if (col<0) { + line-=1; + if (line<0) + line=text_edit->get_line_count()-1; + col=text_edit->get_line(line).length(); + } + + return _search(flags,line,col); +} + +bool FindReplaceBar::search_next() { + + uint32_t flags=0; + String text = get_search_text(); + + if (is_whole_words()) + flags|=TextEdit::SEARCH_WHOLE_WORDS; + if (is_case_sensitive()) + flags|=TextEdit::SEARCH_MATCH_CASE; + + int line, col; + _get_search_from(line, col); + + if (line==result_line && col==result_col) { + col+=text.length(); + if (col>text_edit->get_line(line).length()) { + line+=1; + if (line>=text_edit->get_line_count()) + line=0; + col=0; + } + } + + return _search(flags,line,col); +} + +void FindReplaceBar::_hide_bar() { + + if (replace_text->has_focus() || search_text->has_focus()) + text_edit->grab_focus(); + + text_edit->set_search_text(""); + result_line = -1; + result_col = -1; + replace_hbc->hide(); + replace_options_hbc->hide(); + hide(); +} + +void FindReplaceBar::_show_search() { + + show(); + search_text->grab_focus(); + + if (text_edit->is_selection_active()) { + search_text->set_text(text_edit->get_selection_text()); + } + + if (!get_search_text().empty()) { + search_text->select_all(); + search_text->set_cursor_pos(search_text->get_text().length()); + search_current(); + } +} + +void FindReplaceBar::popup_search() { + + replace_hbc->hide(); + replace_options_hbc->hide(); + _show_search(); +} + +void FindReplaceBar::popup_replace() { + + if (!replace_hbc->is_visible() || !replace_options_hbc->is_visible()) { + replace_text->clear(); + replace_hbc->show(); + replace_options_hbc->show(); + } + + _show_search(); +} + +void FindReplaceBar::_search_options_changed(bool p_pressed) { + + search_current(); +} + +void FindReplaceBar::_editor_text_changed() { + + if (is_visible()) { + preserve_cursor=true; + search_current(); + preserve_cursor=false; + } +} + +void FindReplaceBar::_search_text_changed(const String& p_text) { + + search_current(); +} + +void FindReplaceBar::_search_text_entered(const String& p_text) { + + search_next(); +} + +String FindReplaceBar::get_search_text() const { + + return search_text->get_text(); +} + +String FindReplaceBar::get_replace_text() const { + + return replace_text->get_text(); +} + +bool FindReplaceBar::is_case_sensitive() const { + + return case_sensitive->is_pressed(); +} + +bool FindReplaceBar::is_whole_words() const { + + return whole_words->is_pressed(); +} + +bool FindReplaceBar::is_selection_only() const { + + return selection_only->is_pressed(); +} + +void FindReplaceBar::set_error(const String &p_label) { + + error_label->set_text(p_label); +} + +void FindReplaceBar::set_text_edit(TextEdit *p_text_edit) { + + text_edit = p_text_edit; + text_edit->connect("text_changed",this,"_editor_text_changed"); +} + +void FindReplaceBar::_bind_methods() { + + ObjectTypeDB::bind_method("_unhandled_input",&FindReplaceBar::_unhandled_input); + + ObjectTypeDB::bind_method("_editor_text_changed",&FindReplaceBar::_editor_text_changed); + ObjectTypeDB::bind_method("_search_text_changed",&FindReplaceBar::_search_text_changed); + ObjectTypeDB::bind_method("_search_text_entered",&FindReplaceBar::_search_text_entered); + ObjectTypeDB::bind_method("_search_current",&FindReplaceBar::search_current); + ObjectTypeDB::bind_method("_search_next",&FindReplaceBar::search_next); + ObjectTypeDB::bind_method("_search_prev",&FindReplaceBar::search_prev); + ObjectTypeDB::bind_method("_replace_pressed",&FindReplaceBar::_replace); + ObjectTypeDB::bind_method("_replace_all_pressed",&FindReplaceBar::_replace_all); + ObjectTypeDB::bind_method("_search_options_changed",&FindReplaceBar::_search_options_changed); + ObjectTypeDB::bind_method("_hide_pressed",&FindReplaceBar::_hide_bar); + + ADD_SIGNAL(MethodInfo("search")); +} + +FindReplaceBar::FindReplaceBar() { + + replace_all_mode=false; + preserve_cursor=false; + + text_vbc = memnew(VBoxContainer); + add_child(text_vbc); + + HBoxContainer *search_hbc = memnew(HBoxContainer); + text_vbc->add_child(search_hbc); + + search_text = memnew(LineEdit); + search_hbc->add_child(search_text); + search_text->set_custom_minimum_size(Size2(200, 0)); + search_text->connect("text_changed",this,"_search_text_changed"); + search_text->connect("text_entered",this,"_search_text_entered"); + + find_prev = memnew(ToolButton); + search_hbc->add_child(find_prev); + find_prev->set_focus_mode(FOCUS_NONE); + find_prev->connect("pressed",this,"_search_prev"); + + find_next = memnew(ToolButton); + search_hbc->add_child(find_next); + find_next->set_focus_mode(FOCUS_NONE); + find_next->connect("pressed",this,"_search_next"); + + replace_hbc = memnew(HBoxContainer); + text_vbc->add_child(replace_hbc); + replace_hbc->hide(); + + replace_text = memnew(LineEdit); + replace_hbc->add_child(replace_text); + replace_text->set_custom_minimum_size(Size2(200, 0)); + replace_text->connect("text_entered",this,"_search_text_entered"); + + replace = memnew(ToolButton); + replace_hbc->add_child(replace); + replace->set_text(TTR("Replace")); + replace->set_focus_mode(FOCUS_NONE); + replace->connect("pressed",this,"_replace_pressed"); + + replace_all = memnew(ToolButton); + replace_hbc->add_child(replace_all); + replace_all->set_text(TTR("Replace All")); + replace_all->set_focus_mode(FOCUS_NONE); + replace_all->connect("pressed",this,"_replace_all_pressed"); + + Control *spacer_split = memnew( Control ); + spacer_split->set_custom_minimum_size(Size2(0, 1)); + text_vbc->add_child(spacer_split); + + VBoxContainer *options_vbc = memnew(VBoxContainer); + add_child(options_vbc); + options_vbc->set_h_size_flags(SIZE_EXPAND_FILL); + + HBoxContainer *search_options = memnew(HBoxContainer); + options_vbc->add_child(search_options); + + case_sensitive = memnew(CheckBox); + search_options->add_child(case_sensitive); + case_sensitive->set_text(TTR("Match Case")); + case_sensitive->set_focus_mode(FOCUS_NONE); + case_sensitive->connect("toggled",this,"_search_options_changed"); + + whole_words = memnew(CheckBox); + search_options->add_child(whole_words); + whole_words->set_text(TTR("Whole Words")); + whole_words->set_focus_mode(FOCUS_NONE); + whole_words->connect("toggled",this,"_search_options_changed"); + + error_label = memnew(Label); + search_options->add_child(error_label); + + search_options->add_spacer(); + + hide_button = memnew(TextureButton); + search_options->add_child(hide_button); + hide_button->set_focus_mode(FOCUS_NONE); + hide_button->connect("pressed",this,"_hide_pressed"); + + replace_options_hbc = memnew(HBoxContainer); + options_vbc->add_child(replace_options_hbc); + replace_options_hbc->hide(); + + selection_only = memnew(CheckBox); + replace_options_hbc->add_child(selection_only); + selection_only->set_text(TTR("Selection Only")); + selection_only->set_focus_mode(FOCUS_NONE); + selection_only->connect("toggled",this,"_search_options_changed"); +} + + void FindReplaceDialog::popup_search() { set_title(TTR("Search")); @@ -544,7 +1009,7 @@ void CodeTextEditor::set_error(const String& p_error) { } -void CodeTextEditor::_on_settings_change() { +void CodeTextEditor::_update_font() { // FONTS String editor_font = EDITOR_DEF("text_editor/font", ""); @@ -557,7 +1022,12 @@ void CodeTextEditor::_on_settings_change() { } } if(!font_overrode) - text_editor->add_font_override("font",get_font("source","Fonts")); + text_editor->add_font_override("font",get_font("source","EditorFonts")); +} + +void CodeTextEditor::_on_settings_change() { + + _update_font(); // AUTO BRACE COMPLETION text_editor->set_auto_brace_completion( @@ -588,6 +1058,9 @@ void CodeTextEditor::_notification(int p_what) { if (p_what==EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED) _load_theme_settings(); + if (p_what==NOTIFICATION_ENTER_TREE) { + _update_font(); + } } void CodeTextEditor::_bind_methods() { @@ -602,35 +1075,32 @@ void CodeTextEditor::_bind_methods() { CodeTextEditor::CodeTextEditor() { + find_replace_bar = memnew( FindReplaceBar ); + add_child(find_replace_bar); + find_replace_bar->set_h_size_flags(SIZE_EXPAND_FILL); + find_replace_bar->hide(); + text_editor = memnew( TextEdit ); add_child(text_editor); - text_editor->set_area_as_parent_rect(); - text_editor->set_margin(MARGIN_BOTTOM,20); + text_editor->set_v_size_flags(SIZE_EXPAND_FILL); - String editor_font = EDITOR_DEF("text_editor/font", ""); - bool font_overrode = false; - if (editor_font!="") { - Ref<Font> fnt = ResourceLoader::load(editor_font); - if (fnt.is_valid()) { - text_editor->add_font_override("font",fnt); - font_overrode = true; - } - } - - if (!font_overrode) - text_editor->add_font_override("font",get_font("source","Fonts")); + find_replace_bar->set_text_edit(text_editor); text_editor->set_show_line_numbers(true); text_editor->set_brace_matching(true); text_editor->set_auto_indent(true); - line_col = memnew( Label ); - add_child(line_col); - line_col->set_anchor_and_margin(MARGIN_LEFT,ANCHOR_END,135); - line_col->set_anchor_and_margin(MARGIN_TOP,ANCHOR_END,15); - line_col->set_anchor_and_margin(MARGIN_BOTTOM,ANCHOR_END,1); - line_col->set_anchor_and_margin(MARGIN_RIGHT,ANCHOR_END,5); - //line_col->set_align(Label::ALIGN_RIGHT); + MarginContainer *status_mc = memnew( MarginContainer ); + add_child(status_mc); + status_mc->set("custom_constants/margin_left", 2); + status_mc->set("custom_constants/margin_top", 5); + status_mc->set("custom_constants/margin_right", 2); + status_mc->set("custom_constants/margin_bottom", 1); + + HBoxContainer *status_bar = memnew( HBoxContainer ); + status_mc->add_child(status_bar); + status_bar->set_h_size_flags(SIZE_EXPAND_FILL); + idle = memnew( Timer ); add_child(idle); idle->set_one_shot(true); @@ -644,14 +1114,16 @@ CodeTextEditor::CodeTextEditor() { code_complete_timer->set_wait_time(EDITOR_DEF("text_editor/code_complete_delay",.3f)); error = memnew( Label ); - add_child(error); - error->set_anchor_and_margin(MARGIN_LEFT,ANCHOR_BEGIN,5); - error->set_anchor_and_margin(MARGIN_TOP,ANCHOR_END,15); - error->set_anchor_and_margin(MARGIN_BOTTOM,ANCHOR_END,1); - error->set_anchor_and_margin(MARGIN_RIGHT,ANCHOR_END,130); + status_bar->add_child(error); error->hide(); + error->set_valign(Label::VALIGN_CENTER); error->add_color_override("font_color",Color(1,0.7,0.6,0.9)); + status_bar->add_spacer(); + + line_col = memnew( Label ); + status_bar->add_child(line_col); + line_col->set_valign(Label::VALIGN_CENTER); text_editor->connect("cursor_changed", this,"_line_col_changed"); diff --git a/tools/editor/code_editor.h b/tools/editor/code_editor.h index e28517c601..2e1bf46c02 100644 --- a/tools/editor/code_editor.h +++ b/tools/editor/code_editor.h @@ -33,7 +33,9 @@ #include "scene/gui/text_edit.h" #include "scene/gui/dialogs.h" #include "scene/main/timer.h" +#include "scene/gui/tool_button.h" #include "scene/gui/check_button.h" +#include "scene/gui/check_box.h" #include "scene/gui/line_edit.h" @@ -58,8 +60,76 @@ public: GotoLineDialog(); }; +class FindReplaceBar : public HBoxContainer { + OBJ_TYPE(FindReplaceBar,HBoxContainer); + LineEdit *search_text; + ToolButton *find_prev; + ToolButton *find_next; + CheckBox *case_sensitive; + CheckBox *whole_words; + Label *error_label; + TextureButton *hide_button; + + LineEdit *replace_text; + ToolButton *replace; + ToolButton *replace_all; + CheckBox *selection_only; + + VBoxContainer *text_vbc; + HBoxContainer *replace_hbc; + HBoxContainer *replace_options_hbc; + + TextEdit *text_edit; + + int result_line; + int result_col; + + bool replace_all_mode; + bool preserve_cursor; + + void _get_search_from(int& r_line, int& r_col); + + void _show_search(); + void _hide_bar(); + + void _editor_text_changed(); + void _search_options_changed(bool p_pressed); + void _search_text_changed(const String& p_text); + void _search_text_entered(const String& p_text); + +protected: + void _notification(int p_what); + void _unhandled_input(const InputEvent &p_event); + + bool _search(uint32_t p_flags, int p_from_line, int p_from_col); + + void _replace(); + void _replace_all(); + + static void _bind_methods(); + +public: + String get_search_text() const; + String get_replace_text() const; + + bool is_case_sensitive() const; + bool is_whole_words() const; + bool is_selection_only() const; + void set_error(const String& p_label); + + void set_text_edit(TextEdit *p_text_edit); + + void popup_search(); + void popup_replace(); + + bool search_current(); + bool search_prev(); + bool search_next(); + + FindReplaceBar(); +}; class FindReplaceDialog : public ConfirmationDialog { @@ -119,11 +189,12 @@ public: }; -class CodeTextEditor : public Control { +class CodeTextEditor : public VBoxContainer { - OBJ_TYPE(CodeTextEditor,Control); + OBJ_TYPE(CodeTextEditor,VBoxContainer); TextEdit *text_editor; + FindReplaceBar *find_replace_bar; Label *line_col; Label *info; @@ -135,6 +206,7 @@ class CodeTextEditor : public Control { void _on_settings_change(); + void _update_font(); void _complete_request(); protected: @@ -157,6 +229,7 @@ protected: public: TextEdit *get_text_edit() { return text_editor; } + FindReplaceBar *get_find_replace_bar() { return find_replace_bar; } virtual void apply_code() {} CodeTextEditor(); diff --git a/tools/editor/create_dialog.cpp b/tools/editor/create_dialog.cpp index 151208ace0..8bce415fb8 100644 --- a/tools/editor/create_dialog.cpp +++ b/tools/editor/create_dialog.cpp @@ -255,6 +255,15 @@ void CreateDialog::set_base_type(const String& p_base) { _update_search(); } +String CreateDialog::get_selected_type() { + + TreeItem *selected = search_options->get_selected(); + if (selected) + return selected->get_text(0); + else + return String(); +} + Object *CreateDialog::instance_selected() { TreeItem *selected = search_options->get_selected(); diff --git a/tools/editor/create_dialog.h b/tools/editor/create_dialog.h index a46ff5ae06..8957479beb 100644 --- a/tools/editor/create_dialog.h +++ b/tools/editor/create_dialog.h @@ -66,6 +66,7 @@ protected: public: Object *instance_selected(); + String get_selected_type(); void set_base_type(const String& p_base); String get_base_type() const; diff --git a/tools/editor/dependency_editor.cpp b/tools/editor/dependency_editor.cpp index 633a414b07..a702d3c687 100644 --- a/tools/editor/dependency_editor.cpp +++ b/tools/editor/dependency_editor.cpp @@ -240,8 +240,8 @@ DependencyEditor::DependencyEditor() { tree = memnew( Tree ); tree->set_columns(2); tree->set_column_titles_visible(true); - tree->set_column_title(0,"Resource"); - tree->set_column_title(1,"Path"); + tree->set_column_title(0,TTR("Resource")); + tree->set_column_title(1,TTR("Path")); tree->set_hide_root(true); tree->connect("button_pressed",this,"_load_pressed"); @@ -401,7 +401,7 @@ void DependencyRemoveDialog::show(const Vector<String> &to_erase) { if (exist) { owners->show(); - text->set_text("The files being removed are required by other resources in order for them to work.\nRemove them anyway? (no undo)"); + text->set_text(TTR("The files being removed are required by other resources in order for them to work.\nRemove them anyway? (no undo)")); popup_centered_minsize(Size2(500,220)); } else { owners->hide(); @@ -675,7 +675,7 @@ OrphanResourcesDialog::OrphanResourcesDialog(){ files->set_column_min_width(1,100); files->set_column_expand(0,true); files->set_column_expand(1,false); - files->set_column_title(0,"Resource"); + files->set_column_title(0,TTR("Resource")); files->set_column_title(1,TTR("Owns")); files->set_hide_root(true); vbc->add_margin_child(TTR("Resources Without Explicit Ownership:"),files,true); diff --git a/tools/editor/editor_file_dialog.cpp b/tools/editor/editor_file_dialog.cpp index b9d4949018..185ec17459 100644 --- a/tools/editor/editor_file_dialog.cpp +++ b/tools/editor/editor_file_dialog.cpp @@ -7,7 +7,7 @@ #include "editor_settings.h" #include "scene/gui/margin_container.h" #include "os/file_access.h" - +#include "editor_scale.h" EditorFileDialog::GetIconFunc EditorFileDialog::get_icon_func=NULL; EditorFileDialog::GetIconFunc EditorFileDialog::get_large_icon_func=NULL; @@ -347,7 +347,7 @@ void EditorFileDialog::_action_pressed() { if (!valid) { - exterr->popup_centered_minsize(Size2(250,80)); + exterr->popup_centered_minsize(Size2(250,80)*EDSCALE); return; } @@ -431,6 +431,7 @@ void EditorFileDialog::update_file_list() { int thumbnail_size = EditorSettings::get_singleton()->get("file_dialog/thumbnail_size"); + thumbnail_size*=EDSCALE; Ref<Texture> folder_thumbnail; Ref<Texture> file_thumbnail; @@ -840,7 +841,7 @@ void EditorFileDialog::_make_dir_confirm() { _push_history(); } else { - mkdirerr->popup_centered_minsize(Size2(250,50)); + mkdirerr->popup_centered_minsize(Size2(250,50)*EDSCALE); } makedirname->set_text(""); // reset label } @@ -848,7 +849,7 @@ void EditorFileDialog::_make_dir_confirm() { void EditorFileDialog::_make_dir() { - makedialog->popup_centered_minsize(Size2(250,80)); + makedialog->popup_centered_minsize(Size2(250,80)*EDSCALE); makedirname->grab_focus(); } diff --git a/tools/editor/editor_file_system.cpp b/tools/editor/editor_file_system.cpp index 1062417fec..3fd5f7e444 100644 --- a/tools/editor/editor_file_system.cpp +++ b/tools/editor/editor_file_system.cpp @@ -149,6 +149,41 @@ bool EditorFileSystemDirectory::is_missing_sources(int p_idx) const { return false; } +bool EditorFileSystemDirectory::have_sources_changed(int p_idx) const { + + ERR_FAIL_INDEX_V(p_idx,files.size(),false); + return files[p_idx]->meta.sources_changed; + +} + +int EditorFileSystemDirectory::get_source_count(int p_idx) const { + + ERR_FAIL_INDEX_V(p_idx,files.size(),0); + if (!files[p_idx]->meta.enabled) + return 0; + +} +String EditorFileSystemDirectory::get_source_file(int p_idx,int p_source) const { + + ERR_FAIL_INDEX_V(p_idx,files.size(),String()); + ERR_FAIL_INDEX_V(p_source,files[p_idx]->meta.sources.size(),String()); + if (!files[p_idx]->meta.enabled) + return String(); + + return files[p_idx]->meta.sources[p_source].path; + +} +bool EditorFileSystemDirectory::is_source_file_missing(int p_idx,int p_source) const { + + ERR_FAIL_INDEX_V(p_idx,files.size(),false); + ERR_FAIL_INDEX_V(p_source,files[p_idx]->meta.sources.size(),false); + if (!files[p_idx]->meta.enabled) + return false; + + return files[p_idx]->meta.sources[p_source].missing; +} + + StringName EditorFileSystemDirectory::get_file_type(int p_idx) const { ERR_FAIL_INDEX_V(p_idx,files.size(),""); @@ -210,8 +245,11 @@ EditorFileSystemDirectory::ImportMeta EditorFileSystem::_get_meta(const String& EditorFileSystemDirectory::ImportMeta m; if (imd.is_null()) { m.enabled=false; + m.sources_changed=false; } else { m.enabled=true; + m.sources_changed=false; + for(int i=0;i<imd->get_source_count();i++) { EditorFileSystemDirectory::ImportMeta::Source s; s.path=imd->get_source_path(i); @@ -649,7 +687,13 @@ void EditorFileSystem::_scan_new_dir(EditorFileSystemDirectory *p_dir,DirAccess ia.dir=p_dir; ia.file=E->get(); scan_actions.push_back(ia); + fi->meta.sources_changed=true; + } else { + fi->meta.sources_changed=false; } + + } else { + fi->meta.sources_changed=true; } p_dir->files.push_back(fi); @@ -764,6 +808,9 @@ void EditorFileSystem::_scan_fs_changes(EditorFileSystemDirectory *p_dir,const S ia.dir=p_dir; ia.file=f; scan_actions.push_back(ia); + fi->meta.sources_changed=true; + } else { + fi->meta.sources_changed=false; } } else { @@ -800,6 +847,9 @@ void EditorFileSystem::_scan_fs_changes(EditorFileSystemDirectory *p_dir,const S ia.dir=p_dir; ia.file=p_dir->files[i]->file; scan_actions.push_back(ia); + p_dir->files[i]->meta.sources_changed=true; + } else { + p_dir->files[i]->meta.sources_changed=false; } } @@ -1113,6 +1163,25 @@ String EditorFileSystem::get_file_type(const String& p_file) const { } +EditorFileSystemDirectory* EditorFileSystem::find_file(const String& p_file,int* r_index) const { + + if (!filesystem || scanning) + return NULL; + + EditorFileSystemDirectory *fs=NULL; + int cpos=-1; + if (!_find_file(p_file,&fs,cpos)) { + + return NULL; + } + + + if (r_index) + *r_index=cpos; + + return fs; +} + EditorFileSystemDirectory *EditorFileSystem::get_path(const String& p_path) { diff --git a/tools/editor/editor_file_system.h b/tools/editor/editor_file_system.h index 254dd68c14..b96e947569 100644 --- a/tools/editor/editor_file_system.h +++ b/tools/editor/editor_file_system.h @@ -55,7 +55,7 @@ class EditorFileSystemDirectory : public Object { String path; String md5; uint64_t modified_time; - bool missing; + bool missing; }; @@ -63,6 +63,7 @@ class EditorFileSystemDirectory : public Object { String import_editor; Vector<String> deps; bool enabled; + bool sources_changed; }; @@ -102,8 +103,12 @@ public: StringName get_file_type(int p_idx) const; bool get_file_meta(int p_idx) const; bool is_missing_sources(int p_idx) const; + bool have_sources_changed(int p_idx) const; Vector<String> get_missing_sources(int p_idx) const; Vector<String> get_file_deps(int p_idx) const; + int get_source_count(int p_idx) const; + String get_source_file(int p_idx,int p_source) const; + bool is_source_file_missing(int p_idx,int p_source) const; EditorFileSystemDirectory *get_parent(); @@ -230,6 +235,7 @@ public: String find_resource_from_source(const String& p_path) const; EditorFileSystemDirectory *get_path(const String& p_path); String get_file_type(const String& p_file) const; + EditorFileSystemDirectory* find_file(const String& p_file,int* r_index) const; EditorFileSystem(); ~EditorFileSystem(); }; diff --git a/tools/editor/editor_fonts.cpp b/tools/editor/editor_fonts.cpp index a3ec08f986..da947748a4 100644 --- a/tools/editor/editor_fonts.cpp +++ b/tools/editor/editor_fonts.cpp @@ -30,6 +30,11 @@ #include "doc_font.h" #include "doc_title_font.h" #include "doc_code_font.h" +#include "builtin_fonts.h" +#include "editor_settings.h" +#include "scene/resources/dynamic_font.h" +#include "editor_scale.h" +#include "scene/resources/default_theme/default_theme.h" static Ref<BitmapFont> make_font(int p_height,int p_ascent, int p_valign, int p_charcount, const int *p_chars,const Ref<Texture> &p_texture) { @@ -65,11 +70,63 @@ static Ref<BitmapFont> make_font(int p_height,int p_ascent, int p_valign, int p_ void editor_register_fonts(Ref<Theme> p_theme) { - Ref<BitmapFont> doc_font = make_font(_bi_font_doc_font_height,_bi_font_doc_font_ascent,0,_bi_font_doc_font_charcount,_bi_font_doc_font_characters,p_theme->get_icon("DocFont","EditorIcons")); - Ref<BitmapFont> doc_code_font = make_font(_bi_font_doc_code_font_height,_bi_font_doc_code_font_ascent,0,_bi_font_doc_code_font_charcount,_bi_font_doc_code_font_characters,p_theme->get_icon("DocCodeFont","EditorIcons")); - Ref<BitmapFont> doc_title_font = make_font(_bi_font_doc_title_font_height,_bi_font_doc_title_font_ascent,0,_bi_font_doc_title_font_charcount,_bi_font_doc_title_font_characters,p_theme->get_icon("DocTitleFont","EditorIcons")); - p_theme->set_font("doc","EditorFonts",doc_font); - p_theme->set_font("doc_code","EditorFonts",doc_code_font); - p_theme->set_font("doc_title","EditorFonts",doc_title_font); + Ref<DynamicFontData> dfd; + dfd.instance(); + dfd->set_font_ptr(_font_droid_sans,_font_droid_sans_size); + dfd->set_force_autohinter(true); //just looks better..i think? + + Ref<DynamicFontData> dfmono; + dfmono.instance(); + dfmono->set_font_ptr(_font_source_code_pro,_font_source_code_pro_size); + //dfd->set_force_autohinter(true); //just looks better..i think? + + Ref<DynamicFont> df; + df.instance(); + df->set_size(int(EditorSettings::get_singleton()->get("global/font_size"))*EDSCALE); + df->set_font_data(dfd); + + + p_theme->set_default_theme_font(df); + +// Ref<BitmapFont> doc_font = make_font(_bi_font_doc_font_height,_bi_font_doc_font_ascent,0,_bi_font_doc_font_charcount,_bi_font_doc_font_characters,p_theme->get_icon("DocFont","EditorIcons")); +// Ref<BitmapFont> doc_title_font = make_font(_bi_font_doc_title_font_height,_bi_font_doc_title_font_ascent,0,_bi_font_doc_title_font_charcount,_bi_font_doc_title_font_characters,p_theme->get_icon("DocTitleFont","EditorIcons")); +// Ref<BitmapFont> doc_code_font = make_font(_bi_font_doc_code_font_height,_bi_font_doc_code_font_ascent,0,_bi_font_doc_code_font_charcount,_bi_font_doc_code_font_characters,p_theme->get_icon("DocCodeFont","EditorIcons")); + + Ref<DynamicFont> df_title; + df_title.instance(); + df_title->set_size(int(EDITOR_DEF("help/help_title_font_size",18))*EDSCALE); + df_title->set_font_data(dfd); + + Ref<DynamicFont> df_doc; + df_doc.instance(); + df_doc->set_size(int(EDITOR_DEF("help/help_font_size",16))*EDSCALE); + df_doc->set_font_data(dfd); + + p_theme->set_font("doc","EditorFonts",df_doc); + p_theme->set_font("doc_title","EditorFonts",df_title); + + + Ref<DynamicFont> df_code; + df_code.instance(); + df_code->set_size(int(EditorSettings::get_singleton()->get("global/source_font_size"))*EDSCALE); + df_code->set_font_data(dfmono); + + p_theme->set_font("source","EditorFonts",df_code); + + Ref<DynamicFont> df_doc_code; + df_doc_code.instance(); + df_doc_code->set_size(int(EDITOR_DEF("help/help_source_font_size",14))*EDSCALE); + df_doc_code->set_font_data(dfmono); + + + p_theme->set_font("doc_source","EditorFonts",df_doc_code); + + if (editor_is_hidpi()) { + //replace default theme + Ref<Texture> di; + Ref<StyleBox> ds; + fill_default_theme(p_theme,df,df_doc,di,ds,true); + + } } diff --git a/tools/editor/editor_help.cpp b/tools/editor/editor_help.cpp index 616037c545..b426def503 100644 --- a/tools/editor/editor_help.cpp +++ b/tools/editor/editor_help.cpp @@ -130,6 +130,7 @@ void EditorHelpSearch::_update_search() { else cicon=def_icon; + for(int i=0;i<c.methods.size();i++) { if( (term.begins_with(".") && c.methods[i].name.begins_with(term.right(1))) || (term.ends_with("(") && c.methods[i].name.ends_with(term.left(term.length()-1).strip_edges())) @@ -697,13 +698,13 @@ Error EditorHelp::_goto_desc(const String& p_class,int p_vscr) { //edited_class->show(); - DocData::ClassDoc &cd=doc->class_list[p_class]; + DocData::ClassDoc cd=doc->class_list[p_class]; //make a copy, so we can sort without worrying Color h_color; - Ref<Font> doc_font = get_font("normal","Fonts"); - Ref<Font> doc_code_font = get_font("source","Fonts"); - Ref<Font> doc_title_font = get_font("large","Fonts"); + Ref<Font> doc_font = get_font("doc","EditorFonts"); + Ref<Font> doc_title_font = get_font("doc_title","EditorFonts"); + Ref<Font> doc_code_font = get_font("doc_source","EditorFonts"); h_color=Color(1,1,1,1); @@ -794,7 +795,7 @@ Error EditorHelp::_goto_desc(const String& p_class,int p_vscr) { //class_desc->add_newline(); class_desc->add_newline(); class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/text_color")); - class_desc->push_font( get_font("normal","Fonts") ); + class_desc->push_font( doc_font ); class_desc->push_indent(1); _add_text(cd.brief_description); class_desc->pop(); @@ -805,9 +806,14 @@ Error EditorHelp::_goto_desc(const String& p_class,int p_vscr) { } bool method_descr=false; + bool sort_methods = EditorSettings::get_singleton()->get("help/sort_functions_alphabetically"); + if (cd.methods.size()) { + if (sort_methods) + cd.methods.sort(); + class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/keyword_color")); class_desc->push_font(doc_title_font); class_desc->add_text(TTR("Public Methods:")); @@ -979,6 +985,9 @@ Error EditorHelp::_goto_desc(const String& p_class,int p_vscr) { } if (cd.signals.size()) { + if (sort_methods) { + cd.signals.sort(); + } class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/keyword_color")); class_desc->push_font(doc_title_font); class_desc->add_text(TTR("Signals:")); @@ -1098,7 +1107,7 @@ Error EditorHelp::_goto_desc(const String& p_class,int p_vscr) { class_desc->add_newline(); class_desc->add_newline(); class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/text_color")); - class_desc->push_font( get_font("normal","Fonts") ); + class_desc->push_font( doc_font ); class_desc->push_indent(1); _add_text(cd.description); class_desc->pop(); @@ -1168,7 +1177,7 @@ Error EditorHelp::_goto_desc(const String& p_class,int p_vscr) { class_desc->add_newline(); class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/text_color")); - class_desc->push_font( get_font("normal","Fonts") ); + class_desc->push_font( doc_font ); class_desc->push_indent(1); _add_text(cd.methods[i].description); class_desc->pop(); @@ -1248,9 +1257,12 @@ void EditorHelp::_add_text(const String& p_bbcode) { class_desc->push_indent(1);*/ int pos = 0; + Ref<Font> doc_font = get_font("doc","EditorFonts"); + Ref<Font> doc_code_font = get_font("doc_source","EditorFonts"); + String bbcode=p_bbcode.replace("\t"," ").replace("\r"," ").strip_edges(); - //find double newlines, keep them + //change newlines for double newlines for(int i=0;i<bbcode.length();i++) { //find valid newlines (double) @@ -1269,10 +1281,13 @@ void EditorHelp::_add_text(const String& p_bbcode) { if (dnl) { bbcode[i]=0xFFFF; + //keep i=j; } else { - bbcode[i]=' '; - i=j-1; + bbcode=bbcode.insert(i,"\n"); + i++; + //bbcode[i]=' '; + //i=j-1; } } } @@ -1280,7 +1295,7 @@ void EditorHelp::_add_text(const String& p_bbcode) { //remove double spaces or spaces after newlines for(int i=0;i<bbcode.length();i++) { - if (bbcode[i]==' ' || bbcode[i]==0xFFFF) { + if (bbcode[i]==' ' || bbcode[i]=='\n' || bbcode[i]==0xFFFF) { for(int j=i+1;j<p_bbcode.length();j++) { if (bbcode[j]==' ') { @@ -1353,35 +1368,45 @@ void EditorHelp::_add_text(const String& p_bbcode) { } else if (tag.begins_with("method ")) { String m = tag.substr(7,tag.length()); + class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/keyword_color")); class_desc->push_meta("@"+m); class_desc->add_text(m+"()"); class_desc->pop(); + class_desc->pop(); pos=brk_end+1; } else if (doc->class_list.has(tag)) { + class_desc->push_color(EditorSettings::get_singleton()->get("text_editor/keyword_color")); class_desc->push_meta("#"+tag); class_desc->add_text(tag); class_desc->pop(); + class_desc->pop(); pos=brk_end+1; } else if (tag=="b") { //use bold font - class_desc->push_font(get_font("source","Fonts")); + class_desc->push_font(doc_code_font); pos=brk_end+1; tag_stack.push_front(tag); } else if (tag=="i") { //use italics font - class_desc->push_font(get_font("italic","Fonts")); + Color text_color = EditorSettings::get_singleton()->get("text_editor/text_color"); + //no italics so emphasize with color + text_color.r*=1.1; + text_color.g*=1.1; + text_color.b*=1.1; + class_desc->push_color(text_color); + //class_desc->push_font(get_font("italic","Fonts")); pos=brk_end+1; tag_stack.push_front(tag); } else if (tag=="code" || tag=="codeblock") { //use monospace font - class_desc->push_font(get_font("source","EditorFonts")); + class_desc->push_font(doc_code_font); pos=brk_end+1; tag_stack.push_front(tag); } else if (tag=="center") { @@ -1496,7 +1521,7 @@ void EditorHelp::_add_text(const String& p_bbcode) { if (font.is_valid()) class_desc->push_font(font); else { - class_desc->push_font(get_font("source","rFonts")); + class_desc->push_font(doc_font); } pos=brk_end+1; @@ -1618,6 +1643,7 @@ EditorHelp::EditorHelp() { VBoxContainer *vbc = this; + EDITOR_DEF("help/sort_functions_alphabetically",true); //class_list->connect("meta_clicked",this,"_class_list_select"); //class_list->set_selection_enabled(true); diff --git a/tools/editor/editor_import_export.cpp b/tools/editor/editor_import_export.cpp index 25dced4745..ac7ea514d7 100644 --- a/tools/editor/editor_import_export.cpp +++ b/tools/editor/editor_import_export.cpp @@ -85,6 +85,9 @@ void EditorImportPlugin::_bind_methods() { ObjectTypeDB::add_virtual_method(get_type_static(),MethodInfo("import_dialog",PropertyInfo(Variant::STRING,"from"))); ObjectTypeDB::add_virtual_method(get_type_static(),MethodInfo(Variant::INT,"import",PropertyInfo(Variant::STRING,"path"),PropertyInfo(Variant::OBJECT,"from",PROPERTY_HINT_RESOURCE_TYPE,"ResourceImportMetadata"))); ObjectTypeDB::add_virtual_method(get_type_static(),MethodInfo(Variant::RAW_ARRAY,"custom_export",PropertyInfo(Variant::STRING,"path"),PropertyInfo(Variant::OBJECT,"platform",PROPERTY_HINT_RESOURCE_TYPE,"EditorExportPlatform"))); + ObjectTypeDB::add_virtual_method(get_type_static(),MethodInfo("import_from_drop",PropertyInfo(Variant::STRING_ARRAY,"files"),PropertyInfo(Variant::STRING,"dest_path"))); + ObjectTypeDB::add_virtual_method(get_type_static(),MethodInfo("reimport_multiple_files",PropertyInfo(Variant::STRING_ARRAY,"files"))); + ObjectTypeDB::add_virtual_method(get_type_static(),MethodInfo(Variant::BOOL,"can_reimport_multiple_files")); // BIND_VMETHOD( mi ); } @@ -130,13 +133,37 @@ Error EditorImportPlugin::import(const String& p_path, const Ref<ResourceImportM Vector<uint8_t> EditorImportPlugin::custom_export(const String& p_path, const Ref<EditorExportPlatform> &p_platform) { - if (get_script_instance() && get_script_instance()->has_method("_custom_export")) { - get_script_instance()->call("_custom_export",p_path,p_platform); + if (get_script_instance() && get_script_instance()->has_method("custom_export")) { + get_script_instance()->call("custom_export",p_path,p_platform); } return Vector<uint8_t>(); } +bool EditorImportPlugin::can_reimport_multiple_files() const { + + if (get_script_instance() && get_script_instance()->has_method("can_reimport_multiple_files")) { + return get_script_instance()->call("can_reimport_multiple_files"); + } + + return false; +} +void EditorImportPlugin::reimport_multiple_files(const Vector<String>& p_list) { + + if (get_script_instance() && get_script_instance()->has_method("reimport_multiple_files")) { + get_script_instance()->call("reimport_multiple_files",p_list); + } + +} + +void EditorImportPlugin::import_from_drop(const Vector<String>& p_drop, const String &p_dest_path) { + + if (get_script_instance() && get_script_instance()->has_method("import_from_drop")) { + get_script_instance()->call("import_from_drop",p_drop,p_dest_path); + } + +} + EditorImportPlugin::EditorImportPlugin() { diff --git a/tools/editor/editor_import_export.h b/tools/editor/editor_import_export.h index 5e09d674d1..e21fd8c8f8 100644 --- a/tools/editor/editor_import_export.h +++ b/tools/editor/editor_import_export.h @@ -60,6 +60,9 @@ public: virtual String get_visible_name() const; virtual void import_dialog(const String& p_from=""); virtual Error import(const String& p_path, const Ref<ResourceImportMetadata>& p_from); + virtual void import_from_drop(const Vector<String>& p_drop,const String& p_dest_path); + virtual void reimport_multiple_files(const Vector<String>& p_list); + virtual bool can_reimport_multiple_files() const; virtual Vector<uint8_t> custom_export(const String& p_path,const Ref<EditorExportPlatform> &p_platform); EditorImportPlugin(); diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp index eef148b405..40dce6cbaa 100644 --- a/tools/editor/editor_node.cpp +++ b/tools/editor/editor_node.cpp @@ -64,6 +64,8 @@ #include "addon_editor_plugin.h" #include "plugins/spatial_editor_plugin.h" #include "plugins/sample_editor_plugin.h" +#include "plugins/texture_editor_plugin.h" +#include "plugins/material_editor_plugin.h" #include "plugins/sample_library_editor_plugin.h" #include "plugins/sample_player_editor_plugin.h" #include "plugins/camera_editor_plugin.h" @@ -72,6 +74,7 @@ #include "plugins/item_list_editor_plugin.h" #include "plugins/stream_editor_plugin.h" #include "plugins/multimesh_editor_plugin.h" +#include "plugins/mesh_instance_editor_plugin.h" #include "plugins/mesh_editor_plugin.h" #include "plugins/theme_editor_plugin.h" @@ -285,6 +288,7 @@ void EditorNode::_notification(int p_what) { get_tree()->get_root()->set_as_audio_listener(false); get_tree()->get_root()->set_as_audio_listener_2d(false); get_tree()->set_auto_accept_quit(false); + get_tree()->connect("files_dropped",this,"_dropped_files"); //VisualServer::get_singleton()->viewport_set_hide_canvas(editor->get_scene_root()->get_viewport(),false); //import_monitor->scan_changes(); @@ -372,6 +376,7 @@ void EditorNode::_notification(int p_what) { _menu_option_confirm(DEPENDENCY_LOAD_CHANGED_IMAGES,true); } + waiting_for_sources_changed=true; EditorFileSystem::get_singleton()->scan_sources(); } @@ -409,6 +414,42 @@ void EditorNode::_fs_changed() { void EditorNode::_sources_changed(bool p_exist) { + if (p_exist && bool(EditorSettings::get_singleton()->get("import/automatic_reimport_on_sources_changed"))) { + p_exist=false; + + List<String> changed_sources; + EditorFileSystem::get_singleton()->get_changed_sources(&changed_sources); + + + EditorProgress ep("reimport",TTR("Re-Importing"),changed_sources.size()); + int step_idx=0; + + for(List<String>::Element *E=changed_sources.front();E;E=E->next()) { + + ep.step(TTR("Importing:")+" "+E->get(),step_idx++); + + Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(E->get()); + ERR_CONTINUE(rimd.is_null()); + String editor = rimd->get_editor(); + if (editor.begins_with("texture_")) { + editor="texture"; //compatibility fix for old versions + } + Ref<EditorImportPlugin> eip = EditorImportExport::get_singleton()->get_import_plugin_by_name(editor); + ERR_CONTINUE(eip.is_null()); + Error err = eip->import(E->get(),rimd); + if (err!=OK) { + EditorNode::add_io_error("Error Re Importing:\n "+E->get()); + } + + } + + EditorFileSystem::get_singleton()->scan_sources(); + waiting_for_sources_changed=false; + + return; + } + + if (p_exist) { sources_button->set_icon(gui_base->get_icon("DependencyChanged","EditorIcons")); @@ -421,6 +462,8 @@ void EditorNode::_sources_changed(bool p_exist) { } + waiting_for_sources_changed=false; + } void EditorNode::_vp_resized() { @@ -432,13 +475,13 @@ void EditorNode::_rebuild_import_menu() { PopupMenu* p = import_menu->get_popup(); p->clear(); - p->add_item(TTR("Node From Scene"), FILE_IMPORT_SUBSCENE); - p->add_separator(); + //p->add_item(TTR("Node From Scene"), FILE_IMPORT_SUBSCENE); + //p->add_separator(); for (int i = 0; i < editor_import_export->get_import_plugin_count(); i++) { p->add_item(editor_import_export->get_import_plugin(i)->get_visible_name(), IMPORT_PLUGIN_BASE + i); } - p->add_separator(); - p->add_item(TTR("Re-Import.."), SETTINGS_IMPORT); + //p->add_separator(); + //p->add_item(TTR("Re-Import.."), SETTINGS_IMPORT); } void EditorNode::_node_renamed() { @@ -941,6 +984,7 @@ void EditorNode::_save_scene_with_preview(String p_file) { save.step(TTR("Creating Thumbnail"),3); Image img = VS::get_singleton()->viewport_get_screen_capture(viewport); int preview_size = EditorSettings::get_singleton()->get("file_dialog/thumbnail_size");; + preview_size*=EDSCALE; int width,height; if (img.get_width() > preview_size && img.get_width() >= img.get_height()) { @@ -2151,7 +2195,8 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) { String existing; if (extensions.size()) { - existing="new_scene."+extensions.front()->get().to_lower(); + String root_name(get_edited_scene()->get_name()); + existing=root_name+"."+extensions.front()->get().to_lower(); } file->set_current_path(existing); @@ -2345,7 +2390,7 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) { confirmation->get_ok()->set_text(TTR("Quit")); //confirmation->get_cancel()->show(); confirmation->set_text(TTR("Exit the editor?")); - confirmation->popup_centered(Size2(180,70)); + confirmation->popup_centered(Size2(180,70)*EDSCALE); break; } @@ -2678,7 +2723,7 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) { if (!p_confirmed) { confirmation->get_ok()->set_text(TTR("Yes")); - confirmation->set_text("Open Project Manager? \n(Unsaved changes will be lost)"); + confirmation->set_text(TTR("Open Project Manager? \n(Unsaved changes will be lost)")); confirmation->popup_centered_minsize(); break; } @@ -2688,8 +2733,8 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) { String exec = OS::get_singleton()->get_executable_path(); List<String> args; - //args.push_back ( "-path" ); - //args.push_back (exec.get_base_dir() ); + args.push_back("-path"); + args.push_back(exec.get_base_dir()); args.push_back("-pm"); OS::ProcessID pid=0; @@ -2782,7 +2827,7 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) { } break; case SETTINGS_ABOUT: { - about->popup_centered(Size2(500,130)); + about->popup_centered(Size2(500,130)*EDSCALE); } break; case SOURCES_REIMPORT: { @@ -2854,6 +2899,7 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) { } break; + default: { if (p_option>=OBJECT_METHOD_BASE) { @@ -4895,6 +4941,7 @@ Variant EditorNode::drag_resource(const Ref<Resource>& p_res,Control* p_from) { TextureFrame *drag_preview = memnew( TextureFrame ); Label* label=memnew( Label ); + waiting_for_sources_changed=true; // Ref<Texture> preview; { @@ -4996,6 +5043,15 @@ Variant EditorNode::drag_files_and_dirs(const Vector<String>& p_files, Control * } + +void EditorNode::_dropped_files(const Vector<String>& p_files,int p_screen) { + + String cur_path = scenes_dock->get_current_path(); + for(int i=0;i<EditorImportExport::get_singleton()->get_import_plugin_count();i++) { + EditorImportExport::get_singleton()->get_import_plugin(i)->import_from_drop(p_files,cur_path); + } +} + void EditorNode::_bind_methods() { @@ -5063,6 +5119,9 @@ void EditorNode::_bind_methods() { ObjectTypeDB::bind_method("_toggle_search_bar",&EditorNode::_toggle_search_bar); ObjectTypeDB::bind_method("_clear_search_box",&EditorNode::_clear_search_box); ObjectTypeDB::bind_method("_clear_undo_history",&EditorNode::_clear_undo_history); + ObjectTypeDB::bind_method("_dropped_files",&EditorNode::_dropped_files); + + ObjectTypeDB::bind_method(_MD("add_editor_import_plugin", "plugin"), &EditorNode::add_editor_import_plugin); ObjectTypeDB::bind_method(_MD("remove_editor_import_plugin", "plugin"), &EditorNode::remove_editor_import_plugin); @@ -5167,7 +5226,7 @@ EditorNode::EditorNode() { //theme->set_icon("folder","EditorFileDialog",Theme::get_default()->get_icon("folder","EditorFileDialog")); //theme->set_color("files_disabled","EditorFileDialog",Color(0,0,0,0.7)); - String global_font = EditorSettings::get_singleton()->get("global/font"); + String global_font = EditorSettings::get_singleton()->get("global/custom_font"); if (global_font!="") { Ref<Font> fnt = ResourceLoader::load(global_font); if (fnt.is_valid()) { @@ -5323,7 +5382,7 @@ EditorNode::EditorNode() { dock_vb->add_child(dock_hb); dock_select = memnew( Control ); - dock_select->set_custom_minimum_size(Size2(128,64)); + dock_select->set_custom_minimum_size(Size2(128,64)*EDSCALE); dock_select->connect("input_event",this,"_dock_select_input"); dock_select->connect("draw",this,"_dock_select_draw"); dock_select->connect("mouse_exit",this,"_dock_popup_exit"); @@ -5338,7 +5397,7 @@ EditorNode::EditorNode() { //dock_select_popoup->set_(Size2(20,20)); for(int i=0;i<DOCK_SLOT_MAX;i++) { - dock_slot[i]->set_custom_minimum_size(Size2(230,220)); + dock_slot[i]->set_custom_minimum_size(Size2(230,220)*EDSCALE); dock_slot[i]->set_v_size_flags(Control::SIZE_EXPAND_FILL); dock_slot[i]->set_popup(dock_select_popoup); dock_slot[i]->connect("pre_popup_pressed",this,"_dock_pre_popup",varray(i)); @@ -5378,7 +5437,7 @@ EditorNode::EditorNode() { srt->add_child(scene_tabs); scene_root_parent = memnew( PanelContainer ); - scene_root_parent->set_custom_minimum_size(Size2(0,80)); + scene_root_parent->set_custom_minimum_size(Size2(0,80)*EDSCALE); //Ref<StyleBox> sp = scene_root_parent->get_stylebox("panel","TabContainer"); @@ -5495,7 +5554,7 @@ EditorNode::EditorNode() { { Control *sp = memnew( Control ); - sp->set_custom_minimum_size(Size2(30,0)); + sp->set_custom_minimum_size(Size2(30,0)*EDSCALE); menu_hb->add_child(sp); } @@ -5684,7 +5743,7 @@ EditorNode::EditorNode() { { Control *sp = memnew( Control ); - sp->set_custom_minimum_size(Size2(30,0)); + sp->set_custom_minimum_size(Size2(30,0)*EDSCALE); menu_hb->add_child(sp); } @@ -5706,7 +5765,7 @@ EditorNode::EditorNode() { { Control *sp = memnew( Control ); - sp->set_custom_minimum_size(Size2(30,0)); + sp->set_custom_minimum_size(Size2(30,0)*EDSCALE); menu_hb->add_child(sp); } @@ -5742,7 +5801,7 @@ EditorNode::EditorNode() { layout_dialog = memnew( EditorNameDialog ); gui_base->add_child(layout_dialog); layout_dialog->set_hide_on_ok(false); - layout_dialog->set_size(Size2(175, 70)); + layout_dialog->set_size(Size2(175, 70)*EDSCALE); layout_dialog->connect("name_confirmed", this,"_dialog_action"); sources_button = memnew( ToolButton ); @@ -5817,6 +5876,7 @@ EditorNode::EditorNode() { HBoxContainer *prop_editor_hb = memnew( HBoxContainer ); prop_editor_base->add_child(prop_editor_hb); + prop_editor_vb=prop_editor_base; resource_new_button = memnew( ToolButton ); resource_new_button->set_tooltip(TTR("Create a new resource in memory and edit it.")); @@ -6180,10 +6240,7 @@ EditorNode::EditorNode() { file_server = memnew( EditorFileServer ); - editor_import_export->add_import_plugin( Ref<EditorTextureImportPlugin>( memnew(EditorTextureImportPlugin(this,EditorTextureImportPlugin::MODE_TEXTURE_2D) ))); - editor_import_export->add_import_plugin( Ref<EditorTextureImportPlugin>( memnew(EditorTextureImportPlugin(this,EditorTextureImportPlugin::MODE_ATLAS) ))); - editor_import_export->add_import_plugin( Ref<EditorTextureImportPlugin>( memnew(EditorTextureImportPlugin(this,EditorTextureImportPlugin::MODE_LARGE) ))); - editor_import_export->add_import_plugin( Ref<EditorTextureImportPlugin>( memnew(EditorTextureImportPlugin(this,EditorTextureImportPlugin::MODE_TEXTURE_3D) ))); + editor_import_export->add_import_plugin( Ref<EditorTextureImportPlugin>( memnew(EditorTextureImportPlugin(this) ))); Ref<EditorSceneImportPlugin> _scene_import = memnew(EditorSceneImportPlugin(this) ); Ref<EditorSceneImporterCollada> _collada_import = memnew( EditorSceneImporterCollada); _scene_import->add_importer(_collada_import); @@ -6222,9 +6279,9 @@ EditorNode::EditorNode() { add_editor_plugin( memnew( MultiMeshEditorPlugin(this) ) ); add_editor_plugin( memnew( MeshInstanceEditorPlugin(this) ) ); add_editor_plugin( memnew( AnimationTreeEditorPlugin(this) ) ); - add_editor_plugin( memnew( SamplePlayerEditorPlugin(this) ) ); + //add_editor_plugin( memnew( SamplePlayerEditorPlugin(this) ) ); - this is kind of useless at this point add_editor_plugin( memnew( MeshLibraryEditorPlugin(this) ) ); - add_editor_plugin( memnew( StreamEditorPlugin(this) ) ); + //add_editor_plugin( memnew( StreamEditorPlugin(this) ) ); add_editor_plugin( memnew( StyleBoxEditorPlugin(this) ) ); add_editor_plugin( memnew( ParticlesEditorPlugin(this) ) ); add_editor_plugin( memnew( ResourcePreloaderEditorPlugin(this) ) ); @@ -6243,9 +6300,11 @@ EditorNode::EditorNode() { add_editor_plugin( memnew( Polygon2DEditorPlugin(this) ) ); add_editor_plugin( memnew( LightOccluder2DEditorPlugin(this) ) ); add_editor_plugin( memnew( NavigationPolygonEditorPlugin(this) ) ); - add_editor_plugin( memnew( ColorRampEditorPlugin(this,true) ) ); - add_editor_plugin( memnew( ColorRampEditorPlugin(this,false) ) ); + add_editor_plugin( memnew( ColorRampEditorPlugin(this) ) ); add_editor_plugin( memnew( CollisionShape2DEditorPlugin(this) ) ); + add_editor_plugin( memnew( TextureEditorPlugin(this) ) ); + add_editor_plugin( memnew( MaterialEditorPlugin(this) ) ); + add_editor_plugin( memnew( MeshEditorPlugin(this) ) ); for(int i=0;i<EditorPlugins::get_plugin_count();i++) add_editor_plugin( EditorPlugins::create(i,this) ); @@ -6394,6 +6453,7 @@ EditorNode::EditorNode() { _load_docks(); + } diff --git a/tools/editor/editor_node.h b/tools/editor/editor_node.h index 8c83d1b556..e580931df3 100644 --- a/tools/editor/editor_node.h +++ b/tools/editor/editor_node.h @@ -85,6 +85,7 @@ #include "progress_dialog.h" +#include "editor_scale.h" /** @author Juan Linietsky <reduzio@gmail.com> */ @@ -269,6 +270,7 @@ private: SceneTreeDock *scene_tree_dock; //ResourcesDock *resources_dock; PropertyEditor *property_editor; + VBoxContainer *prop_editor_vb; ScenesDock *scenes_dock; EditorRunNative *run_native; @@ -365,6 +367,8 @@ private: String open_navigate; bool changing_scene; + bool waiting_for_sources_changed; + uint32_t circle_step_msec; uint64_t circle_step_frame; int circle_step; @@ -463,6 +467,7 @@ private: void _add_to_recent_scenes(const String& p_scene); void _update_recent_scenes(); void _open_recent_scene(int p_idx); + void _dropped_files(const Vector<String>& p_files,int p_screen); //void _open_recent_scene_confirm(); String _recent_scene; @@ -580,6 +585,7 @@ public: EditorPlugin *get_editor_plugin_screen() { return editor_plugin_screen; } EditorPluginList *get_editor_plugins_over() { return editor_plugins_over; } PropertyEditor *get_property_editor() { return property_editor; } + VBoxContainer *get_property_editor_vb() { return prop_editor_vb; } static void add_editor_plugin(EditorPlugin *p_editor); static void remove_editor_plugin(EditorPlugin *p_editor); @@ -605,6 +611,8 @@ public: void save_resource(const Ref<Resource>& p_resource); void save_resource_as(const Ref<Resource>& p_resource, const String &p_at_path=String()); + void merge_from_scene() { _menu_option_confirm(FILE_IMPORT_SUBSCENE,false); } + static bool has_unsaved_changes() { return singleton->unsaved_cache; } static HBoxContainer *get_menu_hb() { return singleton->menu_hb; } diff --git a/tools/editor/editor_plugin.cpp b/tools/editor/editor_plugin.cpp index dc46361251..138e532ce8 100644 --- a/tools/editor/editor_plugin.cpp +++ b/tools/editor/editor_plugin.cpp @@ -110,6 +110,12 @@ void EditorPlugin::add_control_to_container(CustomControlContainer p_location,Co CanvasItemEditor::get_singleton()->get_bottom_split()->add_child(p_control); } break; + case CONTAINER_PROPERTY_EDITOR_BOTTOM: { + + EditorNode::get_singleton()->get_property_editor_vb()->add_child(p_control); + + } break; + } } @@ -319,6 +325,8 @@ void EditorPlugin::_bind_methods() { BIND_CONSTANT( CONTAINER_SPATIAL_EDITOR_BOTTOM ); BIND_CONSTANT( CONTAINER_CANVAS_EDITOR_MENU ); BIND_CONSTANT( CONTAINER_CANVAS_EDITOR_SIDE ); + BIND_CONSTANT( CONTAINER_PROPERTY_EDITOR_BOTTOM ); + BIND_CONSTANT( DOCK_SLOT_LEFT_UL ); BIND_CONSTANT( DOCK_SLOT_LEFT_BL ); diff --git a/tools/editor/editor_plugin.h b/tools/editor/editor_plugin.h index c572ab210e..b93b6624d0 100644 --- a/tools/editor/editor_plugin.h +++ b/tools/editor/editor_plugin.h @@ -73,7 +73,8 @@ public: CONTAINER_SPATIAL_EDITOR_BOTTOM, CONTAINER_CANVAS_EDITOR_MENU, CONTAINER_CANVAS_EDITOR_SIDE, - CONTAINER_CANVAS_EDITOR_BOTTOM + CONTAINER_CANVAS_EDITOR_BOTTOM, + CONTAINER_PROPERTY_EDITOR_BOTTOM }; enum DockSlot { diff --git a/tools/editor/editor_plugin_settings.cpp b/tools/editor/editor_plugin_settings.cpp index 3eefe10448..1a6be05af3 100644 --- a/tools/editor/editor_plugin_settings.cpp +++ b/tools/editor/editor_plugin_settings.cpp @@ -150,7 +150,7 @@ void EditorPluginSettings::_bind_methods() { EditorPluginSettings::EditorPluginSettings() { HBoxContainer *title_hb = memnew( HBoxContainer ); - title_hb->add_child(memnew( Label("Installed Plugins:"))); + title_hb->add_child(memnew( Label(TTR("Installed Plugins:")))); title_hb->add_spacer(); update_list = memnew( Button(TTR("Update")) ); update_list->connect("pressed",this,"update_plugins"); @@ -162,9 +162,9 @@ EditorPluginSettings::EditorPluginSettings() { plugin_list->set_columns(4); plugin_list->set_column_titles_visible(true); plugin_list->set_column_title(0,TTR("Name:")); - plugin_list->set_column_title(1,"Version:"); - plugin_list->set_column_title(2,"Author:"); - plugin_list->set_column_title(3,"Status:"); + plugin_list->set_column_title(1,TTR("Version:")); + plugin_list->set_column_title(2,TTR("Author:")); + plugin_list->set_column_title(3,TTR("Status:")); plugin_list->set_column_expand(0,true); plugin_list->set_column_expand(1,false); plugin_list->set_column_expand(2,false); @@ -185,4 +185,3 @@ EditorPluginSettings::EditorPluginSettings() { updating=false; } - diff --git a/tools/editor/editor_profiler.cpp b/tools/editor/editor_profiler.cpp index 955af6b603..c9ee60cd54 100644 --- a/tools/editor/editor_profiler.cpp +++ b/tools/editor/editor_profiler.cpp @@ -425,10 +425,10 @@ void EditorProfiler::_activate_pressed() { if (activate->is_pressed()) { clear(); activate->set_icon(get_icon("Stop","EditorIcons")); - activate->set_text(TTR("Stop Profilinng")); + activate->set_text(TTR("Stop Profiling")); } else { activate->set_icon(get_icon("Play","EditorIcons")); - activate->set_text(TTR("Start Profilinng")); + activate->set_text(TTR("Start Profiling")); } @@ -672,7 +672,7 @@ EditorProfiler::EditorProfiler() hb->add_spacer(); - hb->add_child( memnew( Label(TTR("Frame#:") ) ) ); + hb->add_child( memnew( Label(TTR("Frame #:") ) ) ); cursor_metric_edit = memnew( SpinBox ); cursor_metric_edit->set_h_size_flags(SIZE_FILL); diff --git a/tools/editor/editor_resource_preview.cpp b/tools/editor/editor_resource_preview.cpp index f684b49a2c..13b424c231 100644 --- a/tools/editor/editor_resource_preview.cpp +++ b/tools/editor/editor_resource_preview.cpp @@ -4,7 +4,7 @@ #include "io/resource_loader.h" #include "io/resource_saver.h" #include "globals.h" - +#include "editor_scale.h" Ref<Texture> EditorResourcePreviewGenerator::generate_from_path(const String& p_path) { @@ -36,14 +36,24 @@ void EditorResourcePreview::_preview_ready(const String& p_str,const Ref<Texture //print_line("preview is ready"); preview_mutex->lock(); + String path = p_str; + uint32_t hash=0; + + if (p_str.begins_with("ID:")) { + hash=p_str.get_slicec(':',2).to_int(); + path="ID:"+p_str.get_slicec(':',1); + } + Item item; item.order=order++; item.preview=p_texture; - cache[p_str]=item; + item.last_hash=hash; + + cache[path]=item; Object *recv = ObjectDB::get_instance(id); if (recv) { - recv->call_deferred(p_func,p_str,p_texture,p_ud); + recv->call_deferred(p_func,path,p_texture,p_ud); } preview_mutex->unlock(); @@ -51,7 +61,12 @@ void EditorResourcePreview::_preview_ready(const String& p_str,const Ref<Texture Ref<Texture> EditorResourcePreview::_generate_preview(const QueueItem& p_item,const String& cache_base) { - String type = ResourceLoader::get_resource_type(p_item.path); + String type; + + if (p_item.resource.is_valid()) + type=p_item.resource->get_type(); + else + type=ResourceLoader::get_resource_type(p_item.path); //print_line("resource type is: "+type); if (type=="") @@ -62,24 +77,32 @@ Ref<Texture> EditorResourcePreview::_generate_preview(const QueueItem& p_item,co for(int i=0;i<preview_generators.size();i++) { if (!preview_generators[i]->handles(type)) continue; - generated = preview_generators[i]->generate_from_path(p_item.path); + if (p_item.resource.is_valid()) { + generated = preview_generators[i]->generate(p_item.resource); + } else { + generated = preview_generators[i]->generate_from_path(p_item.path); + } break; } - if (generated.is_valid()) { - //print_line("was generated"); - int thumbnail_size = EditorSettings::get_singleton()->get("file_dialog/thumbnail_size"); - //wow it generated a preview... save cache - ResourceSaver::save(cache_base+".png",generated); - FileAccess *f=FileAccess::open(cache_base+".txt",FileAccess::WRITE); - f->store_line(itos(thumbnail_size)); - f->store_line(itos(FileAccess::get_modified_time(p_item.path))); - f->store_line(FileAccess::get_md5(p_item.path)); - memdelete(f); - } else { - //print_line("was not generated"); + if (!p_item.resource.is_valid()) { + // cache the preview in case it's a resource on disk + if (generated.is_valid()) { + //print_line("was generated"); + int thumbnail_size = EditorSettings::get_singleton()->get("file_dialog/thumbnail_size"); + thumbnail_size*=EDSCALE; + //wow it generated a preview... save cache + ResourceSaver::save(cache_base+".png",generated); + FileAccess *f=FileAccess::open(cache_base+".txt",FileAccess::WRITE); + f->store_line(itos(thumbnail_size)); + f->store_line(itos(FileAccess::get_modified_time(p_item.path))); + f->store_line(FileAccess::get_md5(p_item.path)); + memdelete(f); + } else { + //print_line("was not generated"); + } } return generated; @@ -110,11 +133,21 @@ void EditorResourcePreview::_thread() { uint64_t modtime = FileAccess::get_modified_time(item.path); int thumbnail_size = EditorSettings::get_singleton()->get("file_dialog/thumbnail_size"); + thumbnail_size*=EDSCALE; if (cache.has(item.path)) { //already has it because someone loaded it, just let it know it's ready + if (item.resource.is_valid()) { + item.path+=":"+itos(cache[item.path].last_hash); //keep last hash (see description of what this is in condition below) + } call_deferred("_preview_ready",item.path,cache[item.path].preview,item.id,item.function,item.userdata); + } else if (item.resource.is_valid()){ + + texture=_generate_preview(item,String()); + //adding hash to the end of path (should be ID:<objid>:<hash>) because of 5 argument limit to call_deferred + call_deferred("_preview_ready",item.path+":"+itos(item.resource->hash_edited_version()),texture,item.id,item.function,item.userdata); + } else { @@ -194,6 +227,35 @@ void EditorResourcePreview::_thread() { +void EditorResourcePreview::queue_edited_resource_preview(const Ref<Resource>& p_res, Object* p_receiver, const StringName& p_receiver_func, const Variant& p_userdata) { + + ERR_FAIL_NULL(p_receiver); + ERR_FAIL_COND(!p_res.is_valid()); + + preview_mutex->lock(); + + String path_id = "ID:"+itos(p_res->get_instance_ID()); + if (cache.has(path_id) && cache[path_id].last_hash==p_res->hash_edited_version()) { + + cache[path_id].order=order++; + p_receiver->call_deferred(p_receiver_func,path_id,cache[path_id].preview,p_userdata); + preview_mutex->unlock(); + return; + + } + + //print_line("send to thread "+p_path); + QueueItem item; + item.function=p_receiver_func; + item.id=p_receiver->get_instance_ID(); + item.resource=p_res; + item.path=path_id; + item.userdata=p_userdata; + + queue.push_back(item); + preview_mutex->unlock(); + preview_sem->post(); +} void EditorResourcePreview::queue_resource_preview(const String& p_path, Object* p_receiver, const StringName& p_receiver_func, const Variant& p_userdata) { @@ -204,7 +266,6 @@ void EditorResourcePreview::queue_resource_preview(const String& p_path, Object* p_receiver->call_deferred(p_receiver_func,p_path,cache[p_path].preview,p_userdata); preview_mutex->unlock(); return; - } //print_line("send to thread "+p_path); diff --git a/tools/editor/editor_resource_preview.h b/tools/editor/editor_resource_preview.h index aadae75597..13c3d51313 100644 --- a/tools/editor/editor_resource_preview.h +++ b/tools/editor/editor_resource_preview.h @@ -47,6 +47,7 @@ class EditorResourcePreview : public Node { static EditorResourcePreview* singleton; struct QueueItem { + Ref<Resource> resource; String path; ObjectID id; StringName function; @@ -63,6 +64,7 @@ class EditorResourcePreview : public Node { struct Item { Ref<Texture> preview; int order; + uint32_t last_hash; }; int order; @@ -84,7 +86,8 @@ public: static EditorResourcePreview* get_singleton(); //callback funtion is callback(String p_path,Ref<Texture> preview,Variant udata) preview null if could not load - void queue_resource_preview(const String& p_path, Object* p_receiver, const StringName& p_receiver_func, const Variant& p_userdata); + void queue_resource_preview(const String& p_res, Object* p_receiver, const StringName& p_receiver_func, const Variant& p_userdata); + void queue_edited_resource_preview(const Ref<Resource>& p_path, Object* p_receiver, const StringName& p_receiver_func, const Variant& p_userdata); void add_preview_generator(const Ref<EditorResourcePreviewGenerator>& p_generator); diff --git a/tools/editor/editor_scale.cpp b/tools/editor/editor_scale.cpp new file mode 100644 index 0000000000..ecb1e1816f --- /dev/null +++ b/tools/editor/editor_scale.cpp @@ -0,0 +1,7 @@ +#include "editor_scale.h" +#include "os/os.h" + +bool editor_is_hidpi() { + + return OS::get_singleton()->get_screen_dpi(0) > 150; +} diff --git a/tools/editor/editor_scale.h b/tools/editor/editor_scale.h new file mode 100644 index 0000000000..0f0e90595c --- /dev/null +++ b/tools/editor/editor_scale.h @@ -0,0 +1,8 @@ +#ifndef EDITOR_SCALE_H +#define EDITOR_SCALE_H + + +bool editor_is_hidpi(); + +#define EDSCALE (editor_is_hidpi() ? 2 : 1) +#endif // EDITOR_SCALE_H diff --git a/tools/editor/editor_settings.cpp b/tools/editor/editor_settings.cpp index 91d7e7ebd4..1080509b8f 100644 --- a/tools/editor/editor_settings.cpp +++ b/tools/editor/editor_settings.cpp @@ -41,6 +41,10 @@ #include "io/config_file.h" #include "editor_node.h" #include "globals.h" +#include "translations.h" +#include "io/file_access_memory.h" +#include "io/translation_loader_po.h" +#include "io/compression.h" Ref<EditorSettings> EditorSettings::singleton=NULL; @@ -221,6 +225,12 @@ void EditorSettings::create() { dir->change_dir(".."); } + if (dir->change_dir("text_editor_themes")!=OK) { + dir->make_dir("text_editor_themes"); + } else { + dir->change_dir(".."); + } + if (dir->change_dir("tmp")!=OK) { dir->make_dir("tmp"); } else { @@ -278,8 +288,10 @@ void EditorSettings::create() { print_line("EditorSettings: Load OK!"); } + singleton->setup_language(); singleton->setup_network(); singleton->load_favorites(); + singleton->list_text_editor_themes(); return; @@ -302,8 +314,10 @@ void EditorSettings::create() { singleton = Ref<EditorSettings>( memnew( EditorSettings ) ); singleton->config_file_path=config_file_path; singleton->settings_path=config_path+"/"+config_dir; - singleton->_load_defaults(extra_config); + singleton->_load_defaults(extra_config); + singleton->setup_language(); singleton->setup_network(); + singleton->list_text_editor_themes(); } @@ -315,6 +329,23 @@ String EditorSettings::get_settings_path() const { +void EditorSettings::setup_language() { + + String lang = get("global/editor_language"); + print_line("LANG IS "+lang); + if (lang=="en") + return; //none to do + + for(int i=0;i<translations.size();i++) { + print_line("TESTING "+translations[i]->get_locale()); + if (translations[i]->get_locale()==lang) { + print_line("ok translation"); + TranslationServer::get_singleton()->set_tool_translation(translations[i]); + break; + } + } +} + void EditorSettings::setup_network() { List<IP_Address> local_ip; @@ -382,8 +413,42 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { _THREAD_SAFE_METHOD_ - set("global/font",""); - hints["global/font"]=PropertyInfo(Variant::STRING,"global/font",PROPERTY_HINT_GLOBAL_FILE,"*.fnt"); + + { + String lang_hint="en"; + String host_lang = OS::get_singleton()->get_locale(); + + String best; + + for(int i=0;i<translations.size();i++) { + String locale = translations[i]->get_locale(); + lang_hint+=","; + lang_hint+=locale; + + if (host_lang==locale) { + best=locale; + } + + if (best==String() && host_lang.begins_with(locale)) { + best=locale; + } + } + + if (best==String()) { + best="en"; + } + + set("global/editor_language",best); + hints["global/editor_language"]=PropertyInfo(Variant::STRING,"global/editor_language",PROPERTY_HINT_ENUM,lang_hint,PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); + } + + set("global/show_script_in_scene_tabs",false); + set("global/font_size",14); + hints["global/font_size"]=PropertyInfo(Variant::INT,"global/font_size",PROPERTY_HINT_RANGE,"10,40,1",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); + set("global/source_font_size",14); + hints["global/source_font_size"]=PropertyInfo(Variant::INT,"global/source_font_size",PROPERTY_HINT_RANGE,"10,40,1",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); + set("global/custom_font",""); + hints["global/custom_font"]=PropertyInfo(Variant::STRING,"global/custom_font",PROPERTY_HINT_GLOBAL_FILE,"*.fnt",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); set("global/autoscan_project_path",""); hints["global/autoscan_project_path"]=PropertyInfo(Variant::STRING,"global/autoscan_project_path",PROPERTY_HINT_GLOBAL_DIR); set("global/default_project_path",""); @@ -391,24 +456,12 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { set("global/default_project_export_path",""); hints["global/default_project_export_path"]=PropertyInfo(Variant::STRING,"global/default_project_export_path",PROPERTY_HINT_GLOBAL_DIR); set("global/show_script_in_scene_tabs",false); - set("text_editor/background_color",Color::html("3b000000")); - set("text_editor/caret_color",Color::html("aaaaaa")); - set("text_editor/line_number_color",Color::html("66aaaaaa")); - set("text_editor/text_color",Color::html("aaaaaa")); - set("text_editor/text_selected_color",Color::html("000000")); - set("text_editor/keyword_color",Color::html("ffffb3")); - set("text_editor/base_type_color",Color::html("a4ffd4")); - set("text_editor/engine_type_color",Color::html("83d3ff")); - set("text_editor/function_color",Color::html("66a2ce")); - set("text_editor/member_variable_color",Color::html("e64e59")); - set("text_editor/comment_color",Color::html("983d1b")); - set("text_editor/string_color",Color::html("ef6ebe")); - set("text_editor/number_color",Color::html("EB9532")); - set("text_editor/symbol_color",Color::html("badfff")); - set("text_editor/selection_color",Color::html("7b5dbe")); - set("text_editor/brace_mismatch_color",Color(1,0.2,0.2)); - set("text_editor/current_line_color",Color(0.3,0.5,0.8,0.15)); - set("text_editor/word_highlighted_color",Color(0.8,0.9,0.9,0.15)); + + + set("text_editor/color_theme","Default"); + hints["text_editor/color_theme"]=PropertyInfo(Variant::STRING,"text_editor/color_theme",PROPERTY_HINT_ENUM,"Default"); + + _load_default_text_editor_theme(); set("text_editor/syntax_highlighting", true); @@ -420,6 +473,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { set("text_editor/draw_tabs", true); set("text_editor/show_line_numbers", true); + set("text_editor/show_breakpoint_gutter", true); set("text_editor/trim_trailing_whitespace_on_save", false); set("text_editor/idle_parse_delay",2); @@ -513,6 +567,8 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { set("resources/save_compressed_resources",true); set("resources/auto_reload_modified_images",true); + set("import/automatic_reimport_on_sources_changed",true); + if (p_extra_config.is_valid()) { if (p_extra_config->has_section("init_projects") && p_extra_config->has_section_key("init_projects", "list")) { @@ -544,6 +600,31 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { } +void EditorSettings::_load_default_text_editor_theme() { + set("text_editor/background_color",Color::html("3b000000")); + set("text_editor/caret_color",Color::html("aaaaaa")); + set("text_editor/line_number_color",Color::html("66aaaaaa")); + set("text_editor/text_color",Color::html("aaaaaa")); + set("text_editor/text_selected_color",Color::html("000000")); + set("text_editor/keyword_color",Color::html("ffffb3")); + set("text_editor/base_type_color",Color::html("a4ffd4")); + set("text_editor/engine_type_color",Color::html("83d3ff")); + set("text_editor/function_color",Color::html("66a2ce")); + set("text_editor/member_variable_color",Color::html("e64e59")); + set("text_editor/comment_color",Color::html("676767")); + set("text_editor/string_color",Color::html("ef6ebe")); + set("text_editor/number_color",Color::html("EB9532")); + set("text_editor/symbol_color",Color::html("badfff")); + set("text_editor/selection_color",Color::html("7b5dbe")); + set("text_editor/brace_mismatch_color",Color(1,0.2,0.2)); + set("text_editor/current_line_color",Color(0.3,0.5,0.8,0.15)); + set("text_editor/mark_color", Color(1.0,0.4,0.4,0.4)); + set("text_editor/breakpoint_color", Color(0.8,0.8,0.4,0.2)); + set("text_editor/word_highlighted_color",Color(0.8,0.9,0.9,0.15)); + set("text_editor/search_result_color",Color(0.05,0.25,0.05,1)); + set("text_editor/search_result_border_color",Color(0.1,0.45,0.1,1)); +} + void EditorSettings::notify_changes() { _THREAD_SAFE_METHOD_ @@ -644,6 +725,144 @@ void EditorSettings::load_favorites() { } +void EditorSettings::list_text_editor_themes() { + String themes="Default"; + DirAccess *d = DirAccess::open(settings_path + "/text_editor_themes"); + if (d) { + d->list_dir_begin(); + String file = d->get_next(); + while(file != String()) { + if (file.extension() == "tet" && file.basename().to_lower() != "default") { + themes += "," + file.basename(); + } + file = d->get_next(); + } + d->list_dir_end(); + memdelete(d); + } + add_property_hint(PropertyInfo(Variant::STRING,"text_editor/color_theme",PROPERTY_HINT_ENUM,themes)); +} + +void EditorSettings::load_text_editor_theme() { + if (get("text_editor/color_theme") == "Default") { + _load_default_text_editor_theme(); // sorry for "Settings changed" console spam + return; + } + + String theme_path = get_settings_path() + "/text_editor_themes/" + get("text_editor/color_theme") + ".tet"; + + Ref<ConfigFile> cf = memnew( ConfigFile ); + Error err = cf->load(theme_path); + + if (err != OK) { + return; + } + + List<String> keys; + cf->get_section_keys("color_theme", &keys); + + for(List<String>::Element *E=keys.front();E;E=E->next()) { + String key = E->get(); + String val = cf->get_value("color_theme", key); + + // don't load if it's not already there! + if (has("text_editor/" + key)) { + + // make sure it is actually a color + if (val.is_valid_html_color() && key.find("color") >= 0) { + props["text_editor/"+key].variant = Color::html(val); // change manually to prevent "Settings changed" console spam + } + } + } + emit_signal("settings_changed"); + // if it doesn't load just use what is currently loaded +} + +bool EditorSettings::import_text_editor_theme(String p_file) { + + if (!p_file.ends_with(".tet")) { + return false; + } else { + if (p_file.get_file().to_lower() == "default.tet") { + return false; + } + + DirAccess *d = DirAccess::open(settings_path + "/text_editor_themes"); + if (d) { + d->copy(p_file, settings_path + "/text_editor_themes/" + p_file.get_file()); + memdelete(d); + return true; + } + } + return false; +} + +bool EditorSettings::save_text_editor_theme() { + + String p_file = get("text_editor/color_theme"); + + if (p_file.get_file().to_lower() == "default") { + return false; + } + String theme_path = get_settings_path() + "/text_editor_themes/" + p_file + ".tet"; + return _save_text_editor_theme(theme_path); +} + +bool EditorSettings::save_text_editor_theme_as(String p_file) { + if (!p_file.ends_with(".tet")) { + p_file += ".tet"; + } + + if (p_file.get_file().to_lower() == "default.tet") { + return false; + } + if(_save_text_editor_theme(p_file)) { + + // switch to theme is saved in the theme directory + list_text_editor_themes(); + String theme_name = p_file.substr(0, p_file.length() - 4).get_file(); + + if (p_file.get_base_dir() == get_settings_path() + "/text_editor_themes") { + set("text_editor/color_theme", theme_name); + load_text_editor_theme(); + } + return true; + } + return false; +} + +bool EditorSettings::_save_text_editor_theme(String p_file) { + String theme_section = "color_theme"; + Ref<ConfigFile> cf = memnew( ConfigFile ); // hex is better? + cf->set_value(theme_section, "background_color", ((Color)get("text_editor/background_color")).to_html()); + cf->set_value(theme_section, "caret_color", ((Color)get("text_editor/caret_color")).to_html()); + cf->set_value(theme_section, "line_number_color", ((Color)get("text_editor/line_number_color")).to_html()); + cf->set_value(theme_section, "text_color", ((Color)get("text_editor/text_color")).to_html()); + cf->set_value(theme_section, "text_selected_color", ((Color)get("text_editor/text_selected_color")).to_html()); + cf->set_value(theme_section, "keyword_color", ((Color)get("text_editor/keyword_color")).to_html()); + cf->set_value(theme_section, "base_type_color", ((Color)get("text_editor/base_type_color")).to_html()); + cf->set_value(theme_section, "engine_type_color", ((Color)get("text_editor/engine_type_color")).to_html()); + cf->set_value(theme_section, "function_color", ((Color)get("text_editor/function_color")).to_html()); + cf->set_value(theme_section, "member_variable_color", ((Color)get("text_editor/member_variable_color")).to_html()); + cf->set_value(theme_section, "comment_color", ((Color)get("text_editor/comment_color")).to_html()); + cf->set_value(theme_section, "string_color", ((Color)get("text_editor/string_color")).to_html()); + cf->set_value(theme_section, "number_color", ((Color)get("text_editor/number_color")).to_html()); + cf->set_value(theme_section, "symbol_color", ((Color)get("text_editor/symbol_color")).to_html()); + cf->set_value(theme_section, "selection_color", ((Color)get("text_editor/selection_color")).to_html()); + cf->set_value(theme_section, "brace_mismatch_color", ((Color)get("text_editor/brace_mismatch_color")).to_html()); + cf->set_value(theme_section, "current_line_color", ((Color)get("text_editor/current_line_color")).to_html()); + cf->set_value(theme_section, "mark_color", ((Color)get("text_editor/mark_color")).to_html()); + cf->set_value(theme_section, "breakpoint_color", ((Color)get("text_editor/breakpoint_color")).to_html()); + cf->set_value(theme_section, "word_highlighted_color", ((Color)get("text_editor/word_highlighted_color")).to_html()); + cf->set_value(theme_section, "search_result_color", ((Color)get("text_editor/search_result_color")).to_html()); + cf->set_value(theme_section, "search_result_border_color", ((Color)get("text_editor/search_result_border_color")).to_html()); + Error err = cf->save(p_file); + + if (err == OK) { + return true; + } + return false; +} void EditorSettings::_bind_methods() { @@ -666,7 +885,32 @@ EditorSettings::EditorSettings() { //singleton=this; last_order=0; + + EditorTranslationList *etl=_editor_translations; + + while(etl->data) { + + Vector<uint8_t> data; + data.resize(etl->uncomp_size); + Compression::decompress(data.ptr(),etl->uncomp_size,etl->data,etl->comp_size,Compression::MODE_DEFLATE); + + FileAccessMemory *fa = memnew (FileAccessMemory); + fa->open_custom(data.ptr(),data.size()); + + Ref<Translation> tr = TranslationLoaderPO::load_translation(fa,NULL,"translation_"+String(etl->lang)); + + if (tr.is_valid()) { + tr->set_locale(etl->lang); + translations.push_back(tr); + } + + etl++; + + } + _load_defaults(); + + } diff --git a/tools/editor/editor_settings.h b/tools/editor/editor_settings.h index ae5bbcca89..879c97c349 100644 --- a/tools/editor/editor_settings.h +++ b/tools/editor/editor_settings.h @@ -34,7 +34,7 @@ #include "resource.h" #include "os/thread_safe.h" #include "core/io/config_file.h" - +#include "translation.h" class EditorPlugin; class EditorSettings : public Resource { @@ -84,12 +84,17 @@ private: void _load_defaults(Ref<ConfigFile> p_extra_config = NULL); + void _load_default_text_editor_theme(); + + bool _save_text_editor_theme(String p_file); String project_config_path; Vector<String> favorite_dirs; Vector<String> recent_dirs; + Vector<Ref<Translation> > translations; + protected: static void _bind_methods(); @@ -108,6 +113,7 @@ public: String get_project_settings_path() const; + void setup_language(); void setup_network(); void raise_order(const String& p_name); @@ -130,6 +136,12 @@ public: void load_favorites(); + void list_text_editor_themes(); + void load_text_editor_theme(); + bool import_text_editor_theme(String p_file); + bool save_text_editor_theme(); + bool save_text_editor_theme_as(String p_file); + EditorSettings(); ~EditorSettings(); diff --git a/tools/editor/icons/SCsub b/tools/editor/icons/SCsub index addf6879a2..f3216b092d 100644 --- a/tools/editor/icons/SCsub +++ b/tools/editor/icons/SCsub @@ -11,6 +11,7 @@ def make_editor_icons_action(target, source, env): s = cStringIO.StringIO() s.write("#include \"editor_icons.h\"\n\n") + s.write("#include \"editor_scale.h\"\n\n") s.write("#include \"scene/resources/theme.h\"\n\n") for x in pixmaps: @@ -35,7 +36,9 @@ def make_editor_icons_action(target, source, env): s.write("static Ref<ImageTexture> make_icon(const uint8_t* p_png) {\n") s.write("\tRef<ImageTexture> texture( memnew( ImageTexture ) );\n") - s.write("\ttexture->create_from_image( Image(p_png),ImageTexture::FLAG_FILTER );\n") + s.write("\tImage img(p_png);\n") + s.write("\tif (editor_is_hidpi()) img.expand_x2_hq2x();\n") + s.write("\ttexture->create_from_image( img,ImageTexture::FLAG_FILTER );\n") s.write("\treturn texture;\n") s.write("}\n\n") diff --git a/tools/editor/icons/icon_checkerboard.png b/tools/editor/icons/icon_checkerboard.png Binary files differnew file mode 100644 index 0000000000..5f658c765e --- /dev/null +++ b/tools/editor/icons/icon_checkerboard.png diff --git a/tools/editor/icons/icon_dependency_changed.png b/tools/editor/icons/icon_dependency_changed.png Binary files differindex ecf8a011cf..f48906f256 100644 --- a/tools/editor/icons/icon_dependency_changed.png +++ b/tools/editor/icons/icon_dependency_changed.png diff --git a/tools/editor/icons/icon_dependency_ok.png b/tools/editor/icons/icon_dependency_ok.png Binary files differindex f4d4c9ea29..fe4d7053f7 100644 --- a/tools/editor/icons/icon_dependency_ok.png +++ b/tools/editor/icons/icon_dependency_ok.png diff --git a/tools/editor/icons/icon_godot.png b/tools/editor/icons/icon_godot.png Binary files differindex e80820fc10..ff1370ee0f 100644 --- a/tools/editor/icons/icon_godot.png +++ b/tools/editor/icons/icon_godot.png diff --git a/tools/editor/icons/icon_material_preview_cube.png b/tools/editor/icons/icon_material_preview_cube.png Binary files differnew file mode 100644 index 0000000000..53daaa8364 --- /dev/null +++ b/tools/editor/icons/icon_material_preview_cube.png diff --git a/tools/editor/icons/icon_material_preview_cube_off.png b/tools/editor/icons/icon_material_preview_cube_off.png Binary files differnew file mode 100644 index 0000000000..38d16ba993 --- /dev/null +++ b/tools/editor/icons/icon_material_preview_cube_off.png diff --git a/tools/editor/icons/icon_material_preview_light_1.png b/tools/editor/icons/icon_material_preview_light_1.png Binary files differnew file mode 100644 index 0000000000..fccdd01f9c --- /dev/null +++ b/tools/editor/icons/icon_material_preview_light_1.png diff --git a/tools/editor/icons/icon_material_preview_light_1_off.png b/tools/editor/icons/icon_material_preview_light_1_off.png Binary files differnew file mode 100644 index 0000000000..84953f1866 --- /dev/null +++ b/tools/editor/icons/icon_material_preview_light_1_off.png diff --git a/tools/editor/icons/icon_material_preview_light_2.png b/tools/editor/icons/icon_material_preview_light_2.png Binary files differnew file mode 100644 index 0000000000..55b18e08a1 --- /dev/null +++ b/tools/editor/icons/icon_material_preview_light_2.png diff --git a/tools/editor/icons/icon_material_preview_light_2_off.png b/tools/editor/icons/icon_material_preview_light_2_off.png Binary files differnew file mode 100644 index 0000000000..3caf92ecbe --- /dev/null +++ b/tools/editor/icons/icon_material_preview_light_2_off.png diff --git a/tools/editor/icons/icon_material_preview_sphere.png b/tools/editor/icons/icon_material_preview_sphere.png Binary files differnew file mode 100644 index 0000000000..9ba7e00ee8 --- /dev/null +++ b/tools/editor/icons/icon_material_preview_sphere.png diff --git a/tools/editor/icons/icon_material_preview_sphere_off.png b/tools/editor/icons/icon_material_preview_sphere_off.png Binary files differnew file mode 100644 index 0000000000..babe2ddca5 --- /dev/null +++ b/tools/editor/icons/icon_material_preview_sphere_off.png diff --git a/tools/editor/io_plugins/editor_font_import_plugin.cpp b/tools/editor/io_plugins/editor_font_import_plugin.cpp index 6ac67ab8a6..d5e6e3077e 100644 --- a/tools/editor/io_plugins/editor_font_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -510,13 +510,13 @@ class EditorFontImportDialog : public ConfirmationDialog { if (source->get_line_edit()->get_text()=="") { error_dialog->set_text(TTR("No source font file!")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); return; } if (dest->get_line_edit()->get_text()=="") { error_dialog->set_text(TTR("No target font resource!")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); return; } @@ -528,7 +528,7 @@ class EditorFontImportDialog : public ConfirmationDialog { if (rimd.is_null()) { error_dialog->set_text(TTR("Can't load/process source font.")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); return; } @@ -536,7 +536,7 @@ class EditorFontImportDialog : public ConfirmationDialog { if (err!=OK) { error_dialog->set_text(TTR("Couldn't save font.")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); return; } @@ -573,7 +573,7 @@ public: void popup_import(const String& p_path) { - popup_centered(Size2(600,500)); + popup_centered(Size2(600,500)*EDSCALE); if (p_path!="") { @@ -601,6 +601,13 @@ public: } } + + void set_source_and_dest(const String& p_font,const String& p_dest) { + source->get_line_edit()->set_text(p_font); + dest->get_line_edit()->set_text(p_dest); + _prop_changed(); + } + EditorFontImportDialog(EditorFontImportPlugin *p_plugin) { plugin=p_plugin; VBoxContainer *vbc = memnew( VBoxContainer ); @@ -1607,7 +1614,7 @@ String EditorFontImportPlugin::get_name() const { } String EditorFontImportPlugin::get_visible_name() const{ - return "Font"; + return TTR("Font"); } void EditorFontImportPlugin::import_dialog(const String& p_from){ @@ -1629,6 +1636,20 @@ Error EditorFontImportPlugin::import(const String& p_path, const Ref<ResourceImp } +void EditorFontImportPlugin::import_from_drop(const Vector<String>& p_drop, const String &p_dest_path) { + + for(int i=0;i<p_drop.size();i++) { + String ext = p_drop[i].extension().to_lower(); + String file = p_drop[i].get_file(); + if (ext=="ttf" || ext=="otf" || ext=="fnt") { + + import_dialog(); + dialog->set_source_and_dest(p_drop[i],p_dest_path.plus_file(file.basename()+".fnt")); + break; + } + } +} + EditorFontImportPlugin::EditorFontImportPlugin(EditorNode* p_editor) { diff --git a/tools/editor/io_plugins/editor_font_import_plugin.h b/tools/editor/io_plugins/editor_font_import_plugin.h index ce26ef91e2..25914e6f83 100644 --- a/tools/editor/io_plugins/editor_font_import_plugin.h +++ b/tools/editor/io_plugins/editor_font_import_plugin.h @@ -48,6 +48,7 @@ public: virtual String get_visible_name() const; virtual void import_dialog(const String& p_from=""); virtual Error import(const String& p_path, const Ref<ResourceImportMetadata>& p_from); + virtual void import_from_drop(const Vector<String>& p_drop,const String& p_dest_path); EditorFontImportPlugin(EditorNode* p_editor); diff --git a/tools/editor/io_plugins/editor_mesh_import_plugin.cpp b/tools/editor/io_plugins/editor_mesh_import_plugin.cpp index 9af7d8daa5..c20515f0f3 100644 --- a/tools/editor/io_plugins/editor_mesh_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_mesh_import_plugin.cpp @@ -173,7 +173,7 @@ public: void popup_import(const String& p_path) { - popup_centered(Size2(400,400)); + popup_centered(Size2(400,400)*EDSCALE); if (p_path!="") { @@ -331,7 +331,7 @@ String EditorMeshImportPlugin::get_name() const { } String EditorMeshImportPlugin::get_visible_name() const{ - return "3D Mesh"; + return TTR("Mesh"); } void EditorMeshImportPlugin::import_dialog(const String& p_from){ @@ -536,9 +536,28 @@ Error EditorMeshImportPlugin::import(const String& p_path, const Ref<ResourceImp } +void EditorMeshImportPlugin::import_from_drop(const Vector<String>& p_drop, const String &p_dest_path) { + + + Vector<String> files; + for(int i=0;i<p_drop.size();i++) { + String ext = p_drop[i].extension().to_lower(); + String file = p_drop[i].get_file(); + if (ext=="obj") { + + files.push_back(p_drop[i]); + } + } + + if (files.size()) { + import_dialog(); + dialog->_choose_files(files); + dialog->_choose_save_dir(p_dest_path); + } +} + EditorMeshImportPlugin::EditorMeshImportPlugin(EditorNode* p_editor) { dialog = memnew( EditorMeshImportDialog(this)); p_editor->get_gui_base()->add_child(dialog); } - diff --git a/tools/editor/io_plugins/editor_mesh_import_plugin.h b/tools/editor/io_plugins/editor_mesh_import_plugin.h index 014954685d..ed30d69e18 100644 --- a/tools/editor/io_plugins/editor_mesh_import_plugin.h +++ b/tools/editor/io_plugins/editor_mesh_import_plugin.h @@ -21,6 +21,7 @@ public: virtual String get_visible_name() const; virtual void import_dialog(const String& p_from=""); virtual Error import(const String& p_path, const Ref<ResourceImportMetadata>& p_from); + void import_from_drop(const Vector<String>& p_drop, const String &p_dest_path); EditorMeshImportPlugin(EditorNode* p_editor); diff --git a/tools/editor/io_plugins/editor_sample_import_plugin.cpp b/tools/editor/io_plugins/editor_sample_import_plugin.cpp index c608fe906f..ac0795f522 100644 --- a/tools/editor/io_plugins/editor_sample_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_sample_import_plugin.cpp @@ -221,7 +221,7 @@ public: void popup_import(const String& p_path) { - popup_centered(Size2(400,400)); + popup_centered(Size2(400,400)*EDSCALE); if (p_path!="") { Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(p_path); @@ -252,7 +252,7 @@ public: if (samples.size()==0) { error_dialog->set_text(TTR("No samples to import!")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); } if (save_path->get_text().strip_edges()=="") { @@ -293,7 +293,7 @@ public: String dst = save_path->get_text(); if (dst=="") { error_dialog->set_text(TTR("Save path is empty!")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); } dst = dst.plus_file(samples[i].get_file().basename()+".smp"); @@ -406,7 +406,7 @@ String EditorSampleImportPlugin::get_name() const { } String EditorSampleImportPlugin::get_visible_name() const{ - return "Audio Sample"; + return TTR("Audio Sample"); } void EditorSampleImportPlugin::import_dialog(const String& p_from){ @@ -823,6 +823,58 @@ void EditorSampleImportPlugin::_compress_ima_adpcm(const Vector<float>& p_data,D EditorSampleImportPlugin* EditorSampleImportPlugin::singleton=NULL; +void EditorSampleImportPlugin::import_from_drop(const Vector<String>& p_drop, const String &p_dest_path) { + + + Vector<String> files; + for(int i=0;i<p_drop.size();i++) { + String ext = p_drop[i].extension().to_lower(); + + if (ext=="wav") { + + files.push_back(p_drop[i]); + } + } + + if (files.size()) { + import_dialog(); + dialog->_choose_files(files); + dialog->_choose_save_dir(p_dest_path); + } +} + +void EditorSampleImportPlugin::reimport_multiple_files(const Vector<String>& p_list) { + + if (p_list.size()==0) + return; + + Vector<String> sources; + for(int i=0;i<p_list.size();i++) { + int idx; + EditorFileSystemDirectory *efsd = EditorFileSystem::get_singleton()->find_file(p_list[i],&idx); + if (efsd) { + for(int j=0;j<efsd->get_source_count(idx);j++) { + String file = expand_source_path(efsd->get_source_file(idx,j)); + if (sources.find(file)==-1) { + sources.push_back(file); + } + + } + } + } + + if (sources.size()) { + + dialog->popup_import(p_list[0]); + dialog->_choose_files(sources); + dialog->_choose_save_dir(p_list[0].get_base_dir()); + } +} + +bool EditorSampleImportPlugin::can_reimport_multiple_files() const { + + return true; +} EditorSampleImportPlugin::EditorSampleImportPlugin(EditorNode* p_editor) { @@ -865,8 +917,7 @@ Vector<uint8_t> EditorSampleExportPlugin::custom_export(String& p_path,const Ref } + EditorSampleExportPlugin::EditorSampleExportPlugin() { } - - diff --git a/tools/editor/io_plugins/editor_sample_import_plugin.h b/tools/editor/io_plugins/editor_sample_import_plugin.h index b31562af76..a2686ebe4f 100644 --- a/tools/editor/io_plugins/editor_sample_import_plugin.h +++ b/tools/editor/io_plugins/editor_sample_import_plugin.h @@ -49,6 +49,9 @@ public: virtual String get_visible_name() const; virtual void import_dialog(const String& p_from=""); virtual Error import(const String& p_path, const Ref<ResourceImportMetadata>& p_from); + void import_from_drop(const Vector<String>& p_drop, const String &p_dest_path); + virtual void reimport_multiple_files(const Vector<String>& p_list); + virtual bool can_reimport_multiple_files() const; EditorSampleImportPlugin(EditorNode* p_editor); diff --git a/tools/editor/io_plugins/editor_scene_import_plugin.cpp b/tools/editor/io_plugins/editor_scene_import_plugin.cpp index 84ef5f1973..594d3f5bcd 100644 --- a/tools/editor/io_plugins/editor_scene_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_scene_import_plugin.cpp @@ -41,6 +41,7 @@ #include "scene/3d/physics_body.h" #include "scene/3d/portal.h" #include "scene/3d/vehicle_body.h" +#include "tools/editor/create_dialog.h" #include "os/os.h" @@ -95,6 +96,7 @@ class EditorImportAnimationOptions : public VBoxContainer { Tree *optimization_tree; Vector<TreeItem*> items; + bool updating; bool validating; @@ -167,6 +169,7 @@ class EditorSceneImportDialog : public ConfirmationDialog { EditorFileDialog *script_select; EditorDirDialog *save_select; OptionButton *texture_action; + CreateDialog *root_type_choose; ConfirmationDialog *confirm_open; @@ -178,8 +181,13 @@ class EditorSceneImportDialog : public ConfirmationDialog { Map<Ref<Mesh>,Ref<Shape> > collision_map; ConfirmationDialog *error_dialog; - OptionButton *this_import; - OptionButton *next_import; + Button *root_type; + CheckBox *root_default; + + + void _root_default_pressed(); + void _root_type_pressed(); + void _set_root_type(); void _choose_file(const String& p_path); void _choose_save_file(const String& p_path); @@ -206,6 +214,11 @@ protected: static void _bind_methods(); public: + void setup_popup(const String& p_from,const String& p_to_path) { + _choose_file(p_from); + _choose_save_file(p_to_path); + } + Error import(const String& p_from, const String& p_to, const String& p_preset); void popup_import(const String& p_from); EditorSceneImportDialog(EditorNode *p_editor,EditorSceneImportPlugin *p_plugin); @@ -661,7 +674,7 @@ void EditorSceneImportDialog::_open_and_import() { if (unsaved) { - confirm_open->popup_centered_minsize(Size2(300,80)); + confirm_open->popup_centered_minsize(Size2(300,80)*EDSCALE); } else { _import(true); } @@ -722,7 +735,7 @@ void EditorSceneImportDialog::_import(bool p_and_open) { Ref<Script> scr = ResourceLoader::load(script_path->get_text()); if (!scr.is_valid()) { error_dialog->set_text(TTR("Couldn't load post-import script.")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); return; } @@ -731,7 +744,7 @@ void EditorSceneImportDialog::_import(bool p_and_open) { if (!pi->get_script_instance()) { error_dialog->set_text(TTR("Invalid/broken script for post-import.")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); return; } @@ -764,9 +777,10 @@ void EditorSceneImportDialog::_import(bool p_and_open) { rim->set_option("animation_filters",animation_options->get_filter()); rim->set_option("animation_clips",animation_options->get_clips()); rim->set_option("post_import_script",script_path->get_text()); - rim->set_option("import_this_time",this_import->get_selected()); - rim->set_option("import_next_time",next_import->get_selected()); rim->set_option("reimport",true); + if (!root_default->is_pressed()) { + rim->set_option("root_type",root_type->get_text()); + } List<String> missing; Error err = plugin->import1(rim,&scene,&missing); @@ -774,7 +788,7 @@ void EditorSceneImportDialog::_import(bool p_and_open) { if (err || !scene) { error_dialog->set_text(TTR("Error importing scene.")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); return; } @@ -799,7 +813,7 @@ void EditorSceneImportDialog::_import(bool p_and_open) { if (err) { error_dialog->set_text(TTR("Error importing scene.")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); return; } if (wip_open) @@ -843,7 +857,7 @@ void EditorSceneImportDialog::_import_confirm() { wip_save_file=""; error_dialog->set_text(TTR("Error importing scene.")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); return; } @@ -878,7 +892,7 @@ void EditorSceneImportDialog::_browse_script() { void EditorSceneImportDialog::popup_import(const String &p_from) { - popup_centered(Size2(750,550)); + popup_centered(Size2(750,550)*EDSCALE); if (p_from!="") { Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(p_from); if (rimd.is_null()) @@ -909,12 +923,24 @@ void EditorSceneImportDialog::popup_import(const String &p_from) { if (rimd->has_option("animation_optimizer_max_angle")) animation_options->set_optimize_max_angle(rimd->get_option("animation_optimizer_max_angle")); + if (rimd->has_option("root_type")) { + root_default->set_pressed(false); + String type = rimd->get_option("root_type"); + root_type->set_text(type); + root_type->set_disabled(false); + + if (has_icon(type,"EditorIcons")) { + root_type->set_icon(get_icon(type,"EditorIcons")); + } else { + root_type->set_icon(get_icon("Object","EditorIcons")); + } + + } else { + root_default->set_pressed(true); + root_type->set_disabled(true); + } script_path->set_text(rimd->get_option("post_import_script")); - if (rimd->has_option("import_this_time")) - this_import->select(rimd->get_option("import_this_time")); - if (rimd->has_option("import_next_time")) - next_import->select(rimd->get_option("import_next_time")); save_path->set_text(p_from.get_base_dir()); import_path->set_text(EditorImportPlugin::expand_source_path(rimd->get_source_path(0))); @@ -931,6 +957,9 @@ void EditorSceneImportDialog::_notification(int p_what) { List<String> extensions; file_select->clear_filters(); + root_type->set_icon(get_icon("Spatial","EditorIcons")); + root_type->set_text("Spatial"); + root_type->set_disabled(true); for(int i=0;i<plugin->get_importers().size();i++) { plugin->get_importers()[i]->get_extensions(&extensions); @@ -981,8 +1010,31 @@ void EditorSceneImportDialog::_dialog_hid() { wip_rimd=Ref<ResourceImportMetadata>(); } } +void EditorSceneImportDialog::_root_default_pressed() { + + root_type->set_disabled(root_default->is_pressed()); +} + +void EditorSceneImportDialog::_root_type_pressed() { + root_type_choose->popup(false); +} + + +void EditorSceneImportDialog::_set_root_type() { + + String type = root_type_choose->get_selected_type(); + if (type==String()) + return; + root_type->set_text(type); + if (has_icon(type,"EditorIcons")) { + root_type->set_icon(get_icon(type,"EditorIcons")); + } else { + root_type->set_icon(get_icon("Object","EditorIcons")); + } +} + void EditorSceneImportDialog::_bind_methods() { @@ -996,13 +1048,16 @@ void EditorSceneImportDialog::_bind_methods() { ObjectTypeDB::bind_method("_dialog_hid",&EditorSceneImportDialog::_dialog_hid); ObjectTypeDB::bind_method("_import_confirm",&EditorSceneImportDialog::_import_confirm); ObjectTypeDB::bind_method("_open_and_import",&EditorSceneImportDialog::_open_and_import); + ObjectTypeDB::bind_method("_root_default_pressed",&EditorSceneImportDialog::_root_default_pressed); + ObjectTypeDB::bind_method("_root_type_pressed",&EditorSceneImportDialog::_root_type_pressed); + ObjectTypeDB::bind_method("_set_root_type",&EditorSceneImportDialog::_set_root_type); + ADD_SIGNAL( MethodInfo("imported",PropertyInfo(Variant::OBJECT,"scene")) ); } - const EditorSceneImportDialog::FlagInfo EditorSceneImportDialog::scene_flag_names[]={ {EditorSceneImportPlugin::SCENE_FLAG_REMOVE_NOIMP,("Actions"),"Remove Nodes (-noimp)",true}, @@ -1162,20 +1217,37 @@ EditorSceneImportDialog::EditorSceneImportDialog(EditorNode *p_editor, EditorSce error_dialog->get_ok()->set_text(TTR("Accept")); // error_dialog->get_cancel()->hide(); + + HBoxContainer *custom_root_hb = memnew( HBoxContainer ); + vbc->add_margin_child(TTR("Custom Root Node Type:"),custom_root_hb); + root_type = memnew(Button); + root_type->set_h_size_flags(SIZE_EXPAND_FILL); + root_type->set_text_align(Button::ALIGN_LEFT); + root_type->connect("pressed",this,"_root_type_pressed"); + custom_root_hb->add_child(root_type); + + root_default = memnew(CheckBox); + root_default->set_text(TTR("Auto")); + root_default->set_pressed(true); + root_default->connect("pressed",this,"_root_default_pressed"); + custom_root_hb->add_child(root_default); + + + /* this_import = memnew( OptionButton ); - this_import->add_item(TTR("Overwrite Existing Scene")); - this_import->add_item(TTR("Overwrite Existing, Keep Materials")); - this_import->add_item(TTR("Keep Existing, Merge with New")); - this_import->add_item(TTR("Keep Existing, Ignore New")); - vbc->add_margin_child(TTR("This Time:"),this_import); + this_import->add_item("Overwrite Existing Scene"); + this_import->add_item("Overwrite Existing, Keep Materials"); + this_import->add_item("Keep Existing, Merge with New"); + this_import->add_item("Keep Existing, Ignore New"); + vbc->add_margin_child("This Time:",this_import); next_import = memnew( OptionButton ); - next_import->add_item(TTR("Overwrite Existing Scene")); - next_import->add_item(TTR("Overwrite Existing, Keep Materials")); - next_import->add_item(TTR("Keep Existing, Merge with New")); - next_import->add_item(TTR("Keep Existing, Ignore New")); - vbc->add_margin_child(TTR("Next Time:"),next_import); - + next_import->add_item("Overwrite Existing Scene"); + next_import->add_item("Overwrite Existing, Keep Materials"); + next_import->add_item("Keep Existing, Merge with New"); + next_import->add_item("Keep Existing, Ignore New"); + vbc->add_margin_child("Next Time:",next_import); +*/ set_hide_on_ok(false); GLOBAL_DEF("import/shared_textures","res://"); @@ -1183,6 +1255,7 @@ EditorSceneImportDialog::EditorSceneImportDialog(EditorNode *p_editor, EditorSce import_hb->add_constant_override("separation",30); + VBoxContainer *ovb = memnew( VBoxContainer); ovb->set_h_size_flags(SIZE_EXPAND_FILL); import_hb->add_child(ovb); @@ -1232,6 +1305,10 @@ EditorSceneImportDialog::EditorSceneImportDialog(EditorNode *p_editor, EditorSce wip_open=false; //texture_options->set_format(EditorImport::IMAGE_FORMAT_C); + root_type_choose = memnew( CreateDialog ); + add_child(root_type_choose); + root_type_choose->set_base_type("Node"); + root_type_choose->connect("create",this,"_set_root_type"); } @@ -1247,7 +1324,7 @@ String EditorSceneImportPlugin::get_name() const { String EditorSceneImportPlugin::get_visible_name() const{ - return "3D Scene"; + return TTR("Scene"); } void EditorSceneImportPlugin::import_dialog(const String& p_from){ @@ -1906,398 +1983,8 @@ Node* EditorSceneImportPlugin::_fix_node(Node *p_node,Node *p_root,Map<Ref<Mesh> } -void EditorSceneImportPlugin::_merge_existing_node(Node *p_node,Node *p_imported_scene,Set<Ref<Resource> >& checked_resources,Set<Node*> &checked_nodes) { - - - NodePath path = p_node->get_import_path(); - - if (!path.is_empty() && p_imported_scene->has_node(path)) { - - Node *imported_node = p_imported_scene->get_node(path); - - if (imported_node->get_type()==p_node->get_type()) { - //same thing, check what it is - - if (p_node->get_type()=="MeshInstance") { - - //merge mesh instance, this is a special case! - MeshInstance *mi_imported=imported_node->cast_to<MeshInstance>(); - MeshInstance *mi_node=p_node->cast_to<MeshInstance>(); - - Ref<Mesh> mesh_imported = mi_imported->get_mesh(); - Ref<Mesh> mesh_node = mi_node->get_mesh(); - - if (mesh_node.is_null() && mesh_imported.is_valid()) { - - mi_node->set_mesh(mesh_imported); - - } else if (mesh_node.is_valid() && mesh_imported.is_valid()) { - - if (checked_resources.has(mesh_imported)) { - - mi_node->set_mesh(mesh_imported); - } else { - //mix up meshes - //import new geometry but keep materials - for(int i=0;i<mesh_imported->get_surface_count();i++) { - - String name = mesh_imported->surface_get_name(i); - - for(int j=0;j<mesh_node->get_surface_count();j++) { - - Ref<Material> mat = mesh_node->surface_get_material(j); - if (mat.is_valid() && mesh_node->surface_get_name(j)==name ) { - - mesh_imported->surface_set_material(i,mat); - break; - } - } - } - // was imported, do nothing further - checked_resources.insert(mesh_imported); - mi_node->set_mesh(mesh_imported); - } - - } - } else if (p_node->get_type()=="Path") { - //for paths, overwrite path - Path *path_imported =imported_node->cast_to<Path>(); - Path *path_node =p_node->cast_to<Path>(); - - if (path_imported->get_curve().is_valid()) { - - path_node->set_curve(path_imported->get_curve()); - } - } else if (p_node->get_type()=="Portal") { - //for paths, overwrite path - - Portal *portal_imported =imported_node->cast_to<Portal>(); - Portal *portal_node =p_node->cast_to<Portal>(); - - portal_node->set_shape( portal_imported->get_shape() ); - - } else if (p_node->get_type()=="Room") { - //for paths, overwrite path - - Room *room_imported =imported_node->cast_to<Room>(); - Room *room_node =p_node->cast_to<Room>(); - - room_node->set_room( room_imported->get_room() ); - - } else if (p_node->get_type()=="Skeleton") { - //for paths, overwrite path - - Skeleton *skeleton_imported =imported_node->cast_to<Skeleton>(); - Skeleton *skeleton_node =p_node->cast_to<Skeleton>(); - - //use imported bones, obviously - skeleton_node->clear_bones(); - for(int i=0;i<skeleton_imported->get_bone_count();i++) { - - skeleton_node->add_bone(skeleton_imported->get_bone_name(i)); - skeleton_node->set_bone_parent(i,skeleton_imported->get_bone_parent(i)); - skeleton_node->set_bone_rest(i,skeleton_imported->get_bone_rest(i)); - //skeleton_node->set_bone_pose(i,skeleton_imported->get_bone_pose(i)); // not in a scene, will throw errors - } - } - else if (p_node->get_type() == "AnimationPlayer") { - //for paths, overwrite path - AnimationPlayer *aplayer_imported = imported_node->cast_to<AnimationPlayer>(); - AnimationPlayer *aplayer_node = p_node->cast_to<AnimationPlayer>(); - - //use imported bones, obviously - List<StringName> anims; - List<StringName> existing_anims; - aplayer_imported->get_animation_list(&anims); - aplayer_node->get_animation_list(&existing_anims); - - //use imported animations - for (List<StringName>::Element *N = anims.front(); N; N = N->next()) { - - Ref<Animation> candidate = aplayer_imported->get_animation(N->get()); - - if (aplayer_node->has_animation(N->get())) { - - Ref<Animation> found = aplayer_node->get_animation(N->get()); - - candidate->set_loop(found->has_loop()); - candidate->set_step(found->get_step()); - - //For each track candidate - for (int i = 0; i < candidate->get_track_count(); i++) { - - NodePath track_path = candidate->track_get_path(i); - // For each track existing - for (int x = 0; x < found->get_track_count(); x++) { - - NodePath path_to_compare = found->track_get_path(x); - - if (track_path.hash() == path_to_compare.hash() && candidate->track_get_type(x) == found->track_get_type(i)) { - - //Tracks matches - if (candidate->track_get_interpolation_type(i) != found->track_get_interpolation_type(x)) - candidate->track_set_interpolation_type(i, found->track_get_interpolation_type(x)); - if (candidate->track_get_type(i) == Animation::TYPE_VALUE && candidate->value_track_is_continuous(i) != found->value_track_is_continuous(x)) - candidate->value_track_set_continuous(i, found->value_track_is_continuous(x)); - - //Key transitions might have changed, but the animation remained unchanged - if (candidate->track_get_key_count(i) == found->track_get_key_count(x)) { - for (int k = 0; k < candidate->track_get_key_count(i); k++) { - - if (candidate->track_get_key_transition(i, k) != found->track_get_key_transition(x, k)) - candidate->track_set_key_transition(i, k, found->track_get_key_transition(x, k)); - } - } - - } - - } - } - - // Append function callbacks and values - for (int x = 0; x < found->get_track_count(); x++) { - if (found->track_get_type(x) == Animation::TYPE_METHOD || found->track_get_type(x) == Animation::TYPE_VALUE) - candidate->add_track(found->track_get_type(x), candidate->get_track_count()); - - for (int k = 0; k < found->track_get_key_count(x); k++) - candidate->track_insert_key(x, found->track_get_key_time(x, k), found->track_get_key_value(x, k), found->track_get_key_transition(x, k)); - } - } - - aplayer_node->add_animation(N->get(), candidate); - } - - } else if (p_node->get_type()=="CollisionShape") { - //for paths, overwrite path - - CollisionShape *collision_imported =imported_node->cast_to<CollisionShape>(); - CollisionShape *collision_node =p_node->cast_to<CollisionShape>(); - - collision_node->set_shape( collision_imported->get_shape() ); - } - } - - if (p_node->cast_to<Spatial>() && imported_node->cast_to<Spatial>()) { - //apply transform if changed - Spatial *snode = p_node->cast_to<Spatial>(); - Spatial *simp = imported_node->cast_to<Spatial>(); - - if (snode->get_import_transform() == snode->get_transform()) { - //not moved, apply new - snode->set_import_transform(simp->get_transform()); - snode->set_transform(simp->get_transform()); - } else if (snode->get_import_transform() == simp->get_import_transform()) { - //do nothing, nothing changed keep local changes - } else { - //changed both, imported and edited, merge - Transform local_xform = snode->get_import_transform().affine_inverse() * snode->get_transform(); - snode->set_import_transform(simp->get_import_transform()); - snode->set_transform(simp->get_import_transform() * local_xform); - } - } - - checked_nodes.insert(imported_node); - - } -#if 0 - else { - - if (p_node!=p_root && p_existing->has_node(p_root->get_path_to(p_node->get_parent()))) { - - Node *parent = p_existing->get_node(p_root->get_path_to(p_node->get_parent())); - NodePath path = p_root->get_path_to(p_node); - - //add it.. because not existing in existing scene - Object *o = ObjectTypeDB::instance(p_existing->get_type()); - Node *n=NULL; - if (o) - n=o->cast_to<Node>(); - - if (n) { - - List<PropertyInfo> pl; - p_existing->get_property_list(&pl); - for(List<PropertyInfo>::Element *E=pl.front();E;E=E->next()) { - if (!(E->get().usage&PROPERTY_USAGE_STORAGE)) - continue; - n->set( E->get().name, p_existing->get(E->get().name) ); - } - - parent->add_child(n); - - valid=true; - } - } - - } -#endif - - for(int i=0;i<p_node->get_child_count();i++) { - _merge_existing_node(p_node->get_child(i),p_imported_scene,checked_resources,checked_nodes); - } -} - - -void EditorSceneImportPlugin::_add_new_nodes(Node *p_node,Node *p_imported,Node *p_imported_scene,Node *p_existing_scene,Set<Node*> &checked_nodes) { - for(int i=0;i<p_imported->get_child_count();i++) { - - - Node *imported_node = p_imported->get_child(i); - - if (imported_node->get_owner()!=p_imported_scene) { - // print_line("skipping because not imported at "+String(imported_node->get_name())); - continue; //end of the road - } - - Vector<StringName> nn; - nn.push_back(imported_node->get_name()); - NodePath imported_path(nn,false); - //print_line("check for: "+String(imported_path)); - - if (!p_node->has_node(imported_path) && !checked_nodes.has(imported_node)) { - //not there, re-add it - //add it.. because not existing in existing scene - Object *o = ObjectTypeDB::instance(imported_node->get_type()); - Node *n=NULL; - if (o) - n=o->cast_to<Node>(); - - //print_line("creating node of same type.."); - - if (n) { - - //print_line("copy props and add"); - List<PropertyInfo> pl; - imported_node->get_property_list(&pl); - for(List<PropertyInfo>::Element *E=pl.front();E;E=E->next()) { - if (!(E->get().usage&PROPERTY_USAGE_STORAGE)) - continue; - n->set( E->get().name, imported_node->get(E->get().name) ); - } - - p_node->add_child(n); - n->set_owner(p_existing_scene); - } - - } else { - //print_line("already exists"); - } - - - if (p_node->has_node(imported_path)) { - - Node *other_node = p_node->get_node(imported_path); - - _add_new_nodes(other_node,imported_node,p_imported_scene,p_existing_scene,checked_nodes); - - } - - } -} - - -void EditorSceneImportPlugin::_merge_scenes(Node *p_node,Node *p_imported) { - - Set<Ref<Resource> > checked_resources; - Set<Node*> checked_nodes; - _merge_existing_node(p_node,p_imported,checked_resources,checked_nodes); - _add_new_nodes(p_node,p_imported,p_imported,p_node,checked_nodes); - //add existing.. ? -} - - -void EditorSceneImportPlugin::_scan_materials(Node*p_base,Node *p_node,Map<String,Ref<Material> > &mesh_materials,Map<String,Ref<Material> >& override_materials) { - - if (!p_base && p_node->get_owner()!=p_base) - return; - MeshInstance *mi=p_node->cast_to<MeshInstance>(); - - if (mi) { - if (mi->get_material_override().is_valid()) { - String path = p_base->get_path_to(p_node); - override_materials[path]=mi->get_material_override(); - } - Ref<Mesh> mesh = mi->get_mesh(); - if (mesh.is_valid()) { - - for(int i=0;i<mesh->get_surface_count();i++) { - - String name = mesh->get_name()+":"+mesh->surface_get_name(i); - if (!mesh_materials.has(name)) { - mesh_materials[name]=mesh->surface_get_material(i); - } - } - } - } - - for(int i=0;i<p_node->get_child_count();i++) { - _scan_materials(p_base,p_node->get_child(i),mesh_materials,override_materials); - } -} - - -void EditorSceneImportPlugin::_apply_materials(Node*p_base,Node *p_node,Map<String,Ref<Material> > &mesh_materials,Map<String,Ref<Material> >& override_materials,Set<Ref<Mesh> >& meshes_processed) { - - if (p_node!=p_base && p_node->get_owner()!=p_base) - return; - - MeshInstance *mi=p_node->cast_to<MeshInstance>(); - - if (mi) { - - print_line("is mesh "+String(p_node->get_name())); - String path = p_base->get_path_to(p_node); - if (override_materials.has(path)) { - print_line("is in material overrides"); - mi->set_material_override(override_materials[path]); - } - - Ref<Mesh> mesh = mi->get_mesh(); - if (mesh.is_valid() && !meshes_processed.has(mesh)) { - print_line("mesh was not processed"); - meshes_processed.insert(mesh); - for(int i=0;i<mesh->get_surface_count();i++) { - - String name = mesh->get_name()+":"+mesh->surface_get_name(i); - print_line("name for surface "+itos(i)+": "+name); - if (mesh_materials.has(name)) { - - Ref<Material> mat = mesh_materials[name]; - mesh->surface_set_material(i,mat); - print_line("overriding!"); - } - } - } - } - - for(int i=0;i<p_node->get_child_count();i++) { - _apply_materials(p_base,p_node->get_child(i),mesh_materials,override_materials,meshes_processed); - } -} - -void EditorSceneImportPlugin::_merge_materials(Node *p_node,Node *p_imported) { - - Map<String,Ref<Material> > mesh_materials; - Map<String,Ref<Material> > override_materials; - - _scan_materials(p_node,p_node,mesh_materials,override_materials); - - for (Map<String,Ref<Material> >::Element *E=mesh_materials.front();E;E=E->next()) { - print_line("Mats: "+String(E->key())); - } - - for (Map<String,Ref<Material> >::Element *E=override_materials.front();E;E=E->next()) { - print_line("Overrides: "+String(E->key())); - } - - Set<Ref<Mesh> > mp; - _apply_materials(p_imported,p_imported,mesh_materials,override_materials,mp); - - -} - #if 0 Error EditorImport::import_scene(const String& p_path,const String& p_dest_path,const String& p_resource_path,uint32_t p_flags,ImageFormat p_image_format,ImageCompression p_image_compression,uint32_t p_image_flags,float p_quality,uint32_t animation_flags,Node **r_scene,Ref<EditorPostImport> p_post_import) { @@ -2397,6 +2084,21 @@ Error EditorSceneImportPlugin::import1(const Ref<ResourceImportMetadata>& p_from return err; } + if (from->has_option("root_type")) { + String type = from->get_option("root_type"); + Object *base = ObjectTypeDB::instance(type); + Node *base_node = NULL; + if (base) + base_node=base->cast_to<Node>(); + + if (base_node) { + + scene->replace_by(base_node); + memdelete(scene); + scene=base_node; + } + } + _tag_import_paths(scene,scene); *r_node=scene; @@ -2839,66 +2541,12 @@ Error EditorSceneImportPlugin::import2(Node *scene, const String& p_dest_path, c } } - Error err = EditorTextureImportPlugin::get_singleton(EditorTextureImportPlugin::MODE_TEXTURE_3D)->import(target_path,imd); + Error err = EditorTextureImportPlugin::get_singleton()->import(target_path,imd); } } - /// BEFORE SAVING - MERGE - - - if (import_action!=SCENE_UPDATE_REPLACE_WITH_NEW) { - - - progress.step(TTR("Merging.."),103); - - FileAccess *fa = FileAccess::create(FileAccess::ACCESS_RESOURCES); - - if (fa->file_exists(p_dest_path)) { - - - //try to merge - - Ref<PackedScene> s = ResourceLoader::load(p_dest_path); - if (s.is_valid()) { - - Node *existing = s->instance(true); - - if (existing) { - - - switch(import_action) { - - case SCENE_UPDATE_REPLACE_WITH_NEW: break; - case SCENE_UPDATE_REPLACE_WITH_NEW_KEEP_MATERIALS: { - - _merge_materials(existing,scene); - memdelete(existing); - - } break; - case SCENE_UPDATE_KEEP_OLD_MERGE_CHANGES: { - - _merge_scenes(existing,scene); - memdelete(scene); - scene=existing; - - } break; - case SCENE_UPDATE_KEEP_OLD: { - - memdelete(scene); - scene=existing; - } break; - } - - } - } - - } - - memdelete(fa); - } - progress.step(TTR("Saving.."),104); @@ -2957,6 +2605,30 @@ void EditorSceneImportPlugin::add_importer(const Ref<EditorSceneImporter>& p_imp importers.push_back(p_importer); } +void EditorSceneImportPlugin::import_from_drop(const Vector<String>& p_drop,const String& p_dest_path) { + + List<String> extensions; + for(int i=0;i<importers.size();i++) { + importers[i]->get_extensions(&extensions); + } + //bool warn_compatible=false; + for(int i=0;i<p_drop.size();i++) { + + String extension = p_drop[i].extension().to_lower(); + + for(List<String>::Element *E=extensions.front();E;E=E->next()) { + + if (E->get()==extension) { + + dialog->popup_import(String()); + dialog->setup_popup(p_drop[i],p_dest_path); + return; + } + } + } + +} + EditorSceneImportPlugin::EditorSceneImportPlugin(EditorNode* p_editor) { @@ -2975,7 +2647,7 @@ String EditorSceneAnimationImportPlugin::get_name() const { String EditorSceneAnimationImportPlugin::get_visible_name() const{ - return "3D Scene Animation"; + return TTR("3D Scene Animation"); } void EditorSceneAnimationImportPlugin::import_dialog(const String& p_from){ @@ -2990,4 +2662,3 @@ EditorSceneAnimationImportPlugin::EditorSceneAnimationImportPlugin(EditorNode* p } - diff --git a/tools/editor/io_plugins/editor_scene_import_plugin.h b/tools/editor/io_plugins/editor_scene_import_plugin.h index a1a090de7e..8a2d30f1f6 100644 --- a/tools/editor/io_plugins/editor_scene_import_plugin.h +++ b/tools/editor/io_plugins/editor_scene_import_plugin.h @@ -45,6 +45,7 @@ #include "tools/editor/io_plugins/editor_texture_import_plugin.h" #include "scene/resources/animation.h" + class EditorNode; class EditorSceneImportDialog; @@ -111,16 +112,8 @@ class EditorSceneImportPlugin : public EditorImportPlugin { void _create_clips(Node *scene, const Array& p_clips, bool p_bake_all); void _filter_anim_tracks(Ref<Animation> anim,Set<String> &keep); void _filter_tracks(Node *scene, const String& p_text); - void _merge_existing_node(Node *p_node,Node *p_imported_scene,Set<Ref<Resource> >& checked_resources,Set<Node*> &checked_nodes); - - void _add_new_nodes(Node *p_node,Node *p_imported,Node *p_imported_scene,Node *p_existing_scene,Set<Node*> &checked_nodes); void _optimize_animations(Node *scene, float p_max_lin_error,float p_max_ang_error,float p_max_angle); - void _merge_scenes(Node *p_node, Node *p_imported); - void _scan_materials(Node*p_base,Node *p_node,Map<String,Ref<Material> > &mesh_materials,Map<String,Ref<Material> >& override_materials); - void _apply_materials(Node*p_base,Node *p_node,Map<String,Ref<Material> > &mesh_materials,Map<String,Ref<Material> >& override_materials,Set<Ref<Mesh> >& meshes_processed); - void _merge_materials(Node *p_node,Node *p_imported); - void _tag_import_paths(Node *p_scene,Node *p_node); public: @@ -150,13 +143,6 @@ public: SCENE_FLAG_CONVERT_NORMALMAPS_TO_XY=1<<30, }; - enum SceneUpdate { - SCENE_UPDATE_REPLACE_WITH_NEW, - SCENE_UPDATE_REPLACE_WITH_NEW_KEEP_MATERIALS, - SCENE_UPDATE_KEEP_OLD_MERGE_CHANGES, - SCENE_UPDATE_KEEP_OLD, - }; - virtual String get_name() const; virtual String get_visible_name() const; @@ -169,6 +155,8 @@ public: void add_importer(const Ref<EditorSceneImporter>& p_importer); const Vector<Ref<EditorSceneImporter> >& get_importers() { return importers; } + virtual void import_from_drop(const Vector<String>& p_drop,const String& p_dest_path); + EditorSceneImportPlugin(EditorNode* p_editor=NULL); diff --git a/tools/editor/io_plugins/editor_texture_import_plugin.cpp b/tools/editor/io_plugins/editor_texture_import_plugin.cpp index 0e2d35b9f2..21e7ee36bb 100644 --- a/tools/editor/io_plugins/editor_texture_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_texture_import_plugin.cpp @@ -35,6 +35,9 @@ #include "io/md5.h" #include "io/marshalls.h" #include "globals.h" +#include "scene/gui/check_button.h" +#include "scene/gui/button_group.h" +#include "scene/gui/margin_container.h" static const char *flag_names[]={ ("Streaming Format"), @@ -164,12 +167,13 @@ void EditorImportTextureOptions::_notification(int p_what) { void EditorImportTextureOptions::show_2d_notice() { - notice_for_2d->show(); + //notice_for_2d->show(); } EditorImportTextureOptions::EditorImportTextureOptions() { + add_constant_override("separation",3); updating=false; format = memnew( OptionButton ); @@ -223,12 +227,6 @@ EditorImportTextureOptions::EditorImportTextureOptions() { add_margin_child(TTR("Texture Options"),flags,true); - notice_for_2d = memnew( Label ); - notice_for_2d->set_text(TTR("NOTICE: You are not forced to import textures for 2D projects. Just copy your .jpg or .png files to your project, and change export options later. Atlases can be generated on export too.")); - notice_for_2d->set_custom_minimum_size(Size2(0,50)); - notice_for_2d->set_autowrap(true); - add_child(notice_for_2d); - notice_for_2d->hide(); } @@ -242,8 +240,13 @@ class EditorTextureImportDialog : public ConfirmationDialog { OBJ_TYPE(EditorTextureImportDialog,ConfirmationDialog); + + HBoxContainer *mode_hb; + CheckBox *mode_check[EditorTextureImportPlugin::MODE_MAX]; + EditorImportTextureOptions *texture_options; + EditorTextureImportPlugin::Mode mode; //EditorNode *editor; LineEdit *import_path; @@ -255,11 +258,16 @@ class EditorTextureImportDialog : public ConfirmationDialog { ConfirmationDialog *error_dialog; CheckButton *crop_source; SpinBox *size; - bool atlas; - bool large; + + MarginContainer *size_mc; + Label* size_label; + + Label* source_label; + Label *notice_for_2d; EditorTextureImportPlugin *plugin; + void _mode_changed(int p_mode); void _choose_files(const Vector<String>& p_path); void _choose_file(const String& p_path); void _choose_save_dir(const String& p_path); @@ -274,9 +282,23 @@ protected: static void _bind_methods(); public: + + void setup_multiple_import_3d(const Vector<String>& p_path,const String& p_dest) { + + _mode_changed(EditorTextureImportPlugin::MODE_TEXTURE_3D); + _choose_files(p_path); + _choose_save_dir(p_dest); + } + + void add_sources_and_dest(const Vector<String>& p_path,const String& p_dest) { + + _choose_files(p_path); + _choose_save_dir(p_dest); + } + Error import(const String& p_from, const String& p_to, const String& p_preset); void popup_import(const String &p_from=String()); - EditorTextureImportDialog(EditorTextureImportPlugin *p_plugin=NULL,bool p_2d=false,bool p_atlas=false,bool p_large=false); + EditorTextureImportDialog(EditorTextureImportPlugin *p_plugin=NULL); }; @@ -330,7 +352,7 @@ void EditorTextureImportDialog::_import() { if (!files.size()) { error_dialog->set_text(TTR("Please specify some files!")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); return; } @@ -349,18 +371,18 @@ void EditorTextureImportDialog::_import() { } - if (!atlas && !large && !DirAccess::exists(save_path->get_text())) { + if (mode!=EditorTextureImportPlugin::MODE_ATLAS && mode!=EditorTextureImportPlugin::MODE_LARGE && !DirAccess::exists(save_path->get_text())) { error_dialog->set_text(TTR("Target path must exist.")); error_dialog->popup_centered_minsize(); return; } - if (atlas) { //atlas + if (mode==EditorTextureImportPlugin::MODE_ATLAS) { //atlas if (files.size()==0) { error_dialog->set_text(TTR("At least one file needed for Atlas.")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); return; } @@ -378,21 +400,22 @@ void EditorTextureImportDialog::_import() { imd->set_option("atlas_size",int(size->get_val())); imd->set_option("large",false); imd->set_option("crop",crop_source->is_pressed()); + imd->set_option("mode",mode); Error err = plugin->import(dst_file,imd); if (err) { error_dialog->set_text(TTR("Error importing:")+" "+dst_file.get_file()); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); return; } - } else if (large) { //atlas + } else if (mode==EditorTextureImportPlugin::MODE_LARGE) { //large if (files.size()!=1) { error_dialog->set_text(TTR("Only one file is required for large texture.")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); return; } @@ -410,12 +433,13 @@ void EditorTextureImportDialog::_import() { imd->set_option("large",true); imd->set_option("large_cell_size",int(size->get_val())); imd->set_option("crop",crop_source->is_pressed()); + imd->set_option("mode",mode); Error err = plugin->import(dst_file,imd); if (err) { error_dialog->set_text(TTR("Error importing:")+" "+dst_file.get_file()); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); return; } @@ -434,12 +458,13 @@ void EditorTextureImportDialog::_import() { imd->set_option("quality",texture_options->get_quality()); imd->set_option("atlas",false); imd->set_option("large",false); + imd->set_option("mode",mode); Error err = plugin->import(dst_file,imd); if (err) { error_dialog->set_text(TTR("Error importing:")+" "+dst_file.get_file()); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); return; } @@ -456,7 +481,7 @@ void EditorTextureImportDialog::_browse() { void EditorTextureImportDialog::_browse_target() { - if (atlas || large) { + if (mode==EditorTextureImportPlugin::MODE_ATLAS || mode==EditorTextureImportPlugin::MODE_LARGE) { save_file_select->popup_centered_ratio(); } else { save_select->popup_centered_ratio(); @@ -467,12 +492,28 @@ void EditorTextureImportDialog::_browse_target() { void EditorTextureImportDialog::popup_import(const String& p_from) { - popup_centered(Size2(400,400)); + popup_centered(Size2(600,500)*EDSCALE); if (p_from!="") { Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(p_from); ERR_FAIL_COND(!rimd.is_valid()); - if (plugin->get_mode()==EditorTextureImportPlugin::MODE_ATLAS || plugin->get_mode()==EditorTextureImportPlugin::MODE_LARGE) + if (rimd->has_option("mode")) { + //new imported stuff uses this option + _mode_changed(rimd->get_option("mode")); + } else { + //this one is for compatibility, will have to guess it + if (rimd->has_option("atlas") && rimd->get_option("atlas")) { + _mode_changed(EditorTextureImportPlugin::MODE_ATLAS); + } else if (rimd->has_option("large") && rimd->get_option("large")) { + _mode_changed(EditorTextureImportPlugin::MODE_LARGE); + } else { + //guess by usage of mipmaps..? + _mode_changed(EditorTextureImportPlugin::MODE_TEXTURE_2D); + } + + } + + if (mode==EditorTextureImportPlugin::MODE_ATLAS || mode==EditorTextureImportPlugin::MODE_LARGE) save_path->set_text(p_from); else save_path->set_text(p_from.get_base_dir()); @@ -518,6 +559,81 @@ Error EditorTextureImportDialog::import(const String& p_from, const String& p_to return OK; } +void EditorTextureImportDialog::_mode_changed(int p_mode) { + + mode = EditorTextureImportPlugin::Mode(p_mode); + + for(int i=0;i<EditorTextureImportPlugin::MODE_MAX;i++) { + mode_check[i]->set_pressed(i==mode); + } + + if (p_mode==EditorTextureImportPlugin::MODE_ATLAS) { + + size_label->set_text(TTR("Max Texture Size:")); + size->set_val(2048); + crop_source->show(); + size_label->show(); + size->show(); + + texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_FIX_BORDER_ALPHA|EditorTextureImportPlugin::IMAGE_FLAG_NO_MIPMAPS|EditorTextureImportPlugin::IMAGE_FLAG_FILTER); + texture_options->set_quality(0.7); + texture_options->set_format(EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSY); + set_title(TTR("Import Textures for Atlas (2D)")); + + } else { + crop_source->hide(); + } + + + if (p_mode==EditorTextureImportPlugin::MODE_LARGE) { + + size_label->set_text(TTR("Cell Size:")); + size->set_val(256); + size_label->show(); + size->show(); + + file_select->set_mode(EditorFileDialog::MODE_OPEN_FILE); + save_file_select->add_filter("*.ltex;"+TTR("Large Texture")); + + texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_FIX_BORDER_ALPHA|EditorTextureImportPlugin::IMAGE_FLAG_NO_MIPMAPS|EditorTextureImportPlugin::IMAGE_FLAG_FILTER); + texture_options->set_quality(0.7); + texture_options->set_format(EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSLESS); + set_title(TTR("Import Large Textures (2D)")); + source_label->set_text(TTR("Source Texture")); + + } else { + file_select->set_mode(EditorFileDialog::MODE_OPEN_FILES); + save_file_select->add_filter("*.tex;"+TTR("Base Atlas Texture")); + source_label->set_text(TTR("Source Texture(s)")); + } + + if (p_mode==EditorTextureImportPlugin::MODE_TEXTURE_2D) { + + size_label->hide(); + size->hide(); + + texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_NO_MIPMAPS|EditorTextureImportPlugin::IMAGE_FLAG_FIX_BORDER_ALPHA|EditorTextureImportPlugin::IMAGE_FLAG_FILTER); + texture_options->set_quality(0.7); + texture_options->set_format(EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSY); + notice_for_2d->show(); + set_title(TTR("Import Textures for 2D")); + + } else { + notice_for_2d->hide(); + } + + if (p_mode==EditorTextureImportPlugin::MODE_TEXTURE_3D) { + + size_label->hide(); + size->hide(); + //texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_); + //texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_NO_MIPMAPS); + texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_FIX_BORDER_ALPHA|EditorTextureImportPlugin::IMAGE_FLAG_FILTER|EditorTextureImportPlugin::IMAGE_FLAG_REPEAT); + texture_options->set_format(EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_RAM); + set_title(TTR("Import Textures for 3D")); + } +} + void EditorTextureImportDialog::_bind_methods() { @@ -527,28 +643,64 @@ void EditorTextureImportDialog::_bind_methods() { ObjectTypeDB::bind_method("_import",&EditorTextureImportDialog::_import); ObjectTypeDB::bind_method("_browse",&EditorTextureImportDialog::_browse); ObjectTypeDB::bind_method("_browse_target",&EditorTextureImportDialog::_browse_target); + ObjectTypeDB::bind_method("_mode_changed",&EditorTextureImportDialog::_mode_changed); // ADD_SIGNAL( MethodInfo("imported",PropertyInfo(Variant::OBJECT,"scene")) ); } -EditorTextureImportDialog::EditorTextureImportDialog(EditorTextureImportPlugin* p_plugin, bool p_2d, bool p_atlas,bool p_large) { +EditorTextureImportDialog::EditorTextureImportDialog(EditorTextureImportPlugin* p_plugin) { + + + - atlas=p_atlas; - large=p_large; plugin=p_plugin; set_title(TTR("Import Textures")); + mode_hb = memnew( HBoxContainer ); + add_child(mode_hb); + set_child_rect(mode_hb); + + VBoxContainer *vbcg = memnew( VBoxContainer); + + + mode_hb->add_child(vbcg); + mode_hb->add_constant_override("separation",15); + ButtonGroup *bg = memnew( ButtonGroup ); + vbcg->add_margin_child("Import Mode",bg); + + for(int i=0;i<EditorTextureImportPlugin::MODE_MAX;i++) { + String mode_name[EditorTextureImportPlugin::MODE_MAX]={ + TTR("2D Texture"), + TTR("3D Texture"), + TTR("Atlas Texture"), + TTR("Large Texture") + }; + + + mode_check[i]=memnew(CheckBox); + bg->add_child(mode_check[i]); + mode_check[i]->set_text(mode_name[i]); + mode_check[i]->connect("pressed",this,"_mode_changed",varray(i)); + } VBoxContainer *vbc = memnew(VBoxContainer); - add_child(vbc); - set_child_rect(vbc); + mode_hb->add_child(vbc); + vbc->set_h_size_flags(SIZE_EXPAND_FILL); + vbc->add_constant_override("separation",4); + notice_for_2d = memnew( Label ); + notice_for_2d->set_text(TTR("NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to the project.")); + //notice_for_2d->set_custom_minimum_size(Size2(0,50)); + notice_for_2d->set_autowrap(true); + notice_for_2d->hide(); + vbcg->add_child(notice_for_2d); + notice_for_2d->set_v_size_flags(SIZE_EXPAND_FILL); + notice_for_2d->set_valign(Label::VALIGN_BOTTOM); VBoxContainer *source_vb=memnew(VBoxContainer); - if (large) - vbc->add_margin_child(TTR("Source Texture:"),source_vb); - else - vbc->add_margin_child(TTR("Source Texture(s):"),source_vb); + MarginContainer *source_mc = vbc->add_margin_child(TTR("Source Texture(s):"),source_vb); + + source_label = vbc->get_child(source_mc->get_index()-1)->cast_to<Label>(); HBoxContainer *hbc = memnew( HBoxContainer ); source_vb->add_child(hbc); @@ -560,8 +712,6 @@ EditorTextureImportDialog::EditorTextureImportDialog(EditorTextureImportPlugin* crop_source->set_pressed(true); source_vb->add_child(crop_source); crop_source->set_text(TTR("Crop empty space.")); - if (!p_atlas) - crop_source->hide(); Button * import_choose = memnew( Button ); @@ -577,13 +727,10 @@ EditorTextureImportDialog::EditorTextureImportDialog(EditorTextureImportPlugin* size->set_min(128); size->set_max(16384); - if (p_atlas) { - size->set_val(2048); - vbc->add_margin_child(TTR("Max Texture Size:"),size); - } else { - size->set_val(256); - vbc->add_margin_child(TTR("Cell Size:"),size); - } + + size->set_val(256); + size_mc=vbc->add_margin_child(TTR("Cell Size:"),size); + size_label=vbc->get_child(size_mc->get_index()-1)->cast_to<Label>(); save_path = memnew( LineEdit ); @@ -599,10 +746,7 @@ EditorTextureImportDialog::EditorTextureImportDialog(EditorTextureImportPlugin* file_select = memnew(EditorFileDialog); file_select->set_access(EditorFileDialog::ACCESS_FILESYSTEM); add_child(file_select); - if (!large) - file_select->set_mode(EditorFileDialog::MODE_OPEN_FILES); - else - file_select->set_mode(EditorFileDialog::MODE_OPEN_FILE); + file_select->connect("files_selected", this,"_choose_files"); file_select->connect("file_selected", this,"_choose_file"); @@ -611,10 +755,7 @@ EditorTextureImportDialog::EditorTextureImportDialog(EditorTextureImportPlugin* add_child(save_file_select); save_file_select->set_mode(EditorFileDialog::MODE_SAVE_FILE); save_file_select->clear_filters(); - if (large) - save_file_select->add_filter("*.ltex;"+TTR("Large Texture")); - else - save_file_select->add_filter("*.tex;"+TTR("Base Atlas Texture")); + save_file_select->connect("file_selected", this,"_choose_save_dir"); save_select = memnew( EditorDirDialog ); @@ -641,36 +782,7 @@ EditorTextureImportDialog::EditorTextureImportDialog(EditorTextureImportPlugin* vbc->add_child(texture_options); texture_options->set_v_size_flags(SIZE_EXPAND_FILL); - if (atlas) { - - texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_FIX_BORDER_ALPHA|EditorTextureImportPlugin::IMAGE_FLAG_NO_MIPMAPS|EditorTextureImportPlugin::IMAGE_FLAG_FILTER); - texture_options->set_quality(0.7); - texture_options->set_format(EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSY); - //texture_options->show_2d_notice(); - set_title(TTR("Import Textures for Atlas (2D)")); - } else if (large) { - - texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_FIX_BORDER_ALPHA|EditorTextureImportPlugin::IMAGE_FLAG_NO_MIPMAPS|EditorTextureImportPlugin::IMAGE_FLAG_FILTER); - texture_options->set_quality(0.7); - texture_options->set_format(EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSLESS); - texture_options->show_2d_notice(); - set_title(TTR("Import Large Textures (2D)")); - - } else if (p_2d) { - - texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_NO_MIPMAPS|EditorTextureImportPlugin::IMAGE_FLAG_FIX_BORDER_ALPHA|EditorTextureImportPlugin::IMAGE_FLAG_FILTER); - texture_options->set_quality(0.7); - texture_options->set_format(EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_DISK_LOSSY); - texture_options->show_2d_notice(); - set_title(TTR("Import Textures for 2D")); - } else { - - //texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_); - //texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_NO_MIPMAPS); - texture_options->set_flags(EditorTextureImportPlugin::IMAGE_FLAG_FIX_BORDER_ALPHA|EditorTextureImportPlugin::IMAGE_FLAG_FILTER|EditorTextureImportPlugin::IMAGE_FLAG_REPEAT); - texture_options->set_format(EditorTextureImportPlugin::IMAGE_FORMAT_COMPRESS_RAM); - set_title(TTR("Import Textures for 3D")); - } + _mode_changed(EditorTextureImportPlugin::MODE_TEXTURE_3D); // GLOBAL_DEF("import/shared_textures","res://"); @@ -686,6 +798,8 @@ EditorTextureImportDialog::EditorTextureImportDialog(EditorTextureImportPlugin* String EditorTextureImportPlugin::get_name() const { + return "texture"; +#if 0 //old names, kept for compatibility reference switch(mode) { case MODE_TEXTURE_2D: { @@ -707,34 +821,14 @@ String EditorTextureImportPlugin::get_name() const { } - return ""; + return ""; +#endif } String EditorTextureImportPlugin::get_visible_name() const { - switch(mode) { - case MODE_TEXTURE_2D: { - - return "2D Texture"; - } break; - case MODE_TEXTURE_3D: { - - return "3D Texture"; - - } break; - case MODE_ATLAS: { - - return "2D Atlas Texture"; - } break; - case MODE_LARGE: { - - return "2D Large Texture"; - } break; - - } - - return ""; + return TTR("Texture"); } void EditorTextureImportPlugin::import_dialog(const String& p_from) { @@ -1626,15 +1720,93 @@ Vector<uint8_t> EditorTextureImportPlugin::custom_export(const String& p_path, c return ret; } +void EditorTextureImportPlugin::import_from_drop(const Vector<String>& p_drop,const String& p_dest_path) { + + Vector<String> valid; + + List<String> valid_extensions; + ImageLoader::get_recognized_extensions(&valid_extensions); + for(int i=0;i<p_drop.size();i++) { + + String extension=p_drop[i].extension().to_lower(); + + for (List<String>::Element *E=valid_extensions.front();E;E=E->next()) { + + if (E->get()==extension) { + valid.push_back(p_drop[i]); + break; + } + } + } + + if (valid.size()) { + dialog->popup_import(); + dialog->setup_multiple_import_3d(valid,p_dest_path); + } +} + +void EditorTextureImportPlugin::reimport_multiple_files(const Vector<String>& p_list) { + + Vector<String> valid; + + + bool warning=false; + for(int i=0;i<p_list.size();i++) { + + Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(p_list[i]); + String type = rimd->get_editor(); + if (type=="texture" || type.begins_with("texture_")) { + + if ((rimd->has_option("atlas") && rimd->get_option("atlas")) || (rimd->has_option("large") && rimd->get_option("large"))) { + warning=true; + continue; + } + + valid.push_back(p_list[i]); + } + } + + if (valid.size()) { + + dialog->popup_import(valid[0]); + + Vector<String> sources; + for(int i=0;i<valid.size();i++) { + int idx; + EditorFileSystemDirectory *efsd = EditorFileSystem::get_singleton()->find_file(valid[i],&idx); + if (efsd) { + for(int j=0;j<efsd->get_source_count(idx);j++) { + String file = expand_source_path(efsd->get_source_file(idx,j)); + if (sources.find(file)==-1) { + sources.push_back(file); + } + + } + } + } + + if (sources.size()) { + + dialog->add_sources_and_dest(sources,valid[0].get_base_dir()); + } + } +} + +bool EditorTextureImportPlugin::can_reimport_multiple_files() const { + + return true; + +} + + -EditorTextureImportPlugin *EditorTextureImportPlugin::singleton[EditorTextureImportPlugin::MODE_MAX]={NULL,NULL,NULL,NULL}; +EditorTextureImportPlugin *EditorTextureImportPlugin::singleton=NULL; -EditorTextureImportPlugin::EditorTextureImportPlugin(EditorNode *p_editor, Mode p_mode) { +EditorTextureImportPlugin::EditorTextureImportPlugin(EditorNode *p_editor) { - singleton[p_mode]=this; + singleton=this; editor=p_editor; - mode=p_mode; - dialog = memnew( EditorTextureImportDialog(this,p_mode==MODE_TEXTURE_2D || p_mode==MODE_ATLAS || p_mode==MODE_LARGE,p_mode==MODE_ATLAS,p_mode==MODE_LARGE) ); + dialog = memnew( EditorTextureImportDialog(this) ); editor->get_gui_base()->add_child(dialog); } diff --git a/tools/editor/io_plugins/editor_texture_import_plugin.h b/tools/editor/io_plugins/editor_texture_import_plugin.h index cb63ba98c8..5c8abd10a4 100644 --- a/tools/editor/io_plugins/editor_texture_import_plugin.h +++ b/tools/editor/io_plugins/editor_texture_import_plugin.h @@ -64,10 +64,10 @@ public: private: - Mode mode; + EditorNode *editor; EditorTextureImportDialog *dialog; - static EditorTextureImportPlugin *singleton[MODE_MAX]; + static EditorTextureImportPlugin *singleton; //used by other importers such as mesh Error _process_texture_data(Ref<ImageTexture> &texture, int format, float quality, int flags,EditorExportPlatform::ImageCompression p_compr,int tex_flags,float shrink); @@ -75,7 +75,7 @@ private: public: - static EditorTextureImportPlugin *get_singleton(Mode p_mode) { return singleton[p_mode]; } + static EditorTextureImportPlugin *get_singleton() { return singleton; } enum ImageFormat { @@ -100,7 +100,6 @@ public: IMAGE_FLAG_USE_ANISOTROPY=1024, //convert image to linear }; - Mode get_mode() const { return mode; } virtual String get_name() const; virtual String get_visible_name() const; virtual void import_dialog(const String& p_from=""); @@ -108,8 +107,11 @@ public: virtual Error import2(const String& p_path, const Ref<ResourceImportMetadata>& p_from,EditorExportPlatform::ImageCompression p_compr, bool p_external=false); virtual Vector<uint8_t> custom_export(const String& p_path,const Ref<EditorExportPlatform> &p_platform); + virtual void import_from_drop(const Vector<String>& p_drop,const String& p_dest_path); + virtual void reimport_multiple_files(const Vector<String>& p_list); + virtual bool can_reimport_multiple_files() const; - EditorTextureImportPlugin(EditorNode* p_editor=NULL,Mode p_mode=MODE_TEXTURE_2D); + EditorTextureImportPlugin(EditorNode* p_editor=NULL); }; @@ -134,7 +136,7 @@ class EditorImportTextureOptions : public VBoxContainer { HSlider *quality; Tree *flags; Vector<TreeItem*> items; - Label *notice_for_2d; + bool updating; diff --git a/tools/editor/io_plugins/editor_translation_import_plugin.cpp b/tools/editor/io_plugins/editor_translation_import_plugin.cpp index b57e4cb84c..aa36fefdb7 100644 --- a/tools/editor/io_plugins/editor_translation_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_translation_import_plugin.cpp @@ -65,7 +65,7 @@ public: if (!f) { error_dialog->set_text(TTR("Invalid source!")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); return; } @@ -76,7 +76,7 @@ public: if (csvh.size()<2) { error_dialog->set_text(TTR("Invalid translation source!")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); return; } @@ -171,7 +171,7 @@ public: void popup_import(const String& p_from) { - popup_centered(Size2(400,400)); + popup_centered(Size2(400,400)*EDSCALE); if (p_from!="") { @@ -232,12 +232,12 @@ public: if (items.size()==0) { error_dialog->set_text(TTR("No items to import!")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); } if (!save_path->get_text().begins_with("res://")) { error_dialog->set_text(TTR("No target path!")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); } EditorProgress progress("import_xl",TTR("Import Translations"),items.size()); @@ -259,7 +259,7 @@ public: Error err = plugin->import(savefile,imd); if (err!=OK) { error_dialog->set_text(TTR("Couldn't import!")); - error_dialog->popup_centered(Size2(200,100)); + error_dialog->popup_centered(Size2(200,100)*EDSCALE); } else if (add_to_project->is_pressed()) { ProjectSettings::get_singleton()->add_translation(savefile); @@ -387,13 +387,33 @@ String EditorTranslationImportPlugin::get_name() const { } String EditorTranslationImportPlugin::get_visible_name() const { - return "Translation"; + return TTR("Translation"); } void EditorTranslationImportPlugin::import_dialog(const String& p_from) { dialog->popup_import(p_from); } + + +void EditorTranslationImportPlugin::import_from_drop(const Vector<String>& p_drop, const String &p_dest_path) { + + + for(int i=0;i<p_drop.size();i++) { + String ext = p_drop[i].extension().to_lower(); + + if (ext=="csv") { + + import_dialog(); + dialog->_choose_file(p_drop[i]); + dialog->_choose_save_dir(p_dest_path); + break; + } + } + + +} + Error EditorTranslationImportPlugin::import(const String& p_path, const Ref<ResourceImportMetadata>& p_from) { Ref<ResourceImportMetadata> from = p_from; diff --git a/tools/editor/io_plugins/editor_translation_import_plugin.h b/tools/editor/io_plugins/editor_translation_import_plugin.h index cadcdc03b3..532f2cedcc 100644 --- a/tools/editor/io_plugins/editor_translation_import_plugin.h +++ b/tools/editor/io_plugins/editor_translation_import_plugin.h @@ -46,6 +46,7 @@ public: virtual String get_visible_name() const; virtual void import_dialog(const String& p_from=""); virtual Error import(const String& p_path, const Ref<ResourceImportMetadata>& p_from); + void import_from_drop(const Vector<String>& p_drop, const String &p_dest_path); EditorTranslationImportPlugin(EditorNode* p_editor); diff --git a/tools/editor/plugins/animation_player_editor_plugin.cpp b/tools/editor/plugins/animation_player_editor_plugin.cpp index 343fcce5cd..4bbcb396af 100644 --- a/tools/editor/plugins/animation_player_editor_plugin.cpp +++ b/tools/editor/plugins/animation_player_editor_plugin.cpp @@ -1544,7 +1544,7 @@ AnimationPlayerEditorPlugin::AnimationPlayerEditorPlugin(EditorNode *p_node) { anim_editor = memnew( AnimationPlayerEditor(editor) ); anim_editor->set_undo_redo(editor->get_undo_redo()); - editor->add_bottom_panel_item("Animation",anim_editor); + editor->add_bottom_panel_item(TTR("Animation"),anim_editor); /* editor->get_viewport()->add_child(anim_editor); anim_editor->set_area_as_parent_rect(); @@ -1562,5 +1562,3 @@ AnimationPlayerEditorPlugin::AnimationPlayerEditorPlugin(EditorNode *p_node) { AnimationPlayerEditorPlugin::~AnimationPlayerEditorPlugin() { } - - diff --git a/tools/editor/plugins/color_ramp_editor_plugin.cpp b/tools/editor/plugins/color_ramp_editor_plugin.cpp index 854a0149a5..267f3aa5bd 100644 --- a/tools/editor/plugins/color_ramp_editor_plugin.cpp +++ b/tools/editor/plugins/color_ramp_editor_plugin.cpp @@ -6,16 +6,13 @@ #include "spatial_editor_plugin.h" #include "canvas_item_editor_plugin.h" -ColorRampEditorPlugin::ColorRampEditorPlugin(EditorNode *p_node, bool p_2d) { +ColorRampEditorPlugin::ColorRampEditorPlugin(EditorNode *p_node) { editor=p_node; ramp_editor = memnew( ColorRampEdit ); - _2d=p_2d; - if (p_2d) - add_control_to_container(CONTAINER_CANVAS_EDITOR_BOTTOM,ramp_editor); - else - add_control_to_container(CONTAINER_SPATIAL_EDITOR_BOTTOM,ramp_editor); + + add_control_to_container(CONTAINER_PROPERTY_EDITOR_BOTTOM,ramp_editor); ramp_editor->set_custom_minimum_size(Size2(100, 48)); ramp_editor->hide(); @@ -33,10 +30,8 @@ void ColorRampEditorPlugin::edit(Object *p_object) { bool ColorRampEditorPlugin::handles(Object *p_object) const { - if (_2d) - return p_object->is_type("ColorRamp") && CanvasItemEditor::get_singleton()->is_visible() == true; - else - return p_object->is_type("ColorRamp") && SpatialEditor::get_singleton()->is_visible() == true; + return p_object->is_type("ColorRamp"); + } void ColorRampEditorPlugin::make_visible(bool p_visible) { diff --git a/tools/editor/plugins/color_ramp_editor_plugin.h b/tools/editor/plugins/color_ramp_editor_plugin.h index f07dbabeb3..02d691239f 100644 --- a/tools/editor/plugins/color_ramp_editor_plugin.h +++ b/tools/editor/plugins/color_ramp_editor_plugin.h @@ -30,7 +30,7 @@ public: virtual bool handles(Object *p_node) const; virtual void make_visible(bool p_visible); - ColorRampEditorPlugin(EditorNode *p_node, bool p_2d); + ColorRampEditorPlugin(EditorNode *p_node); ~ColorRampEditorPlugin(); }; diff --git a/tools/editor/plugins/editor_preview_plugins.cpp b/tools/editor/plugins/editor_preview_plugins.cpp index 12d50cd4b8..300e35f94d 100644 --- a/tools/editor/plugins/editor_preview_plugins.cpp +++ b/tools/editor/plugins/editor_preview_plugins.cpp @@ -7,7 +7,7 @@ #include "scene/resources/sample.h" #include "scene/resources/mesh.h" #include "scene/resources/bit_mask.h" - +#include "tools/editor/editor_scale.h" bool EditorTexturePreviewPlugin::handles(const String& p_type) const { return (ObjectTypeDB::is_type(p_type,"ImageTexture") || ObjectTypeDB::is_type(p_type, "AtlasTexture")); @@ -36,6 +36,7 @@ Ref<Texture> EditorTexturePreviewPlugin::generate(const RES& p_from) { img.clear_mipmaps(); int thumbnail_size = EditorSettings::get_singleton()->get("file_dialog/thumbnail_size"); + thumbnail_size*=EDSCALE; if (img.is_compressed()) { if (img.decompress()!=OK) return Ref<Texture>(); @@ -111,6 +112,7 @@ Ref<Texture> EditorBitmapPreviewPlugin::generate(const RES& p_from) { Image img(bm->get_size().width,bm->get_size().height,0,Image::FORMAT_GRAYSCALE,data); int thumbnail_size = EditorSettings::get_singleton()->get("file_dialog/thumbnail_size"); + thumbnail_size*=EDSCALE; if (img.is_compressed()) { if (img.decompress()!=OK) return Ref<Texture>(); @@ -233,6 +235,7 @@ Ref<Texture> EditorMaterialPreviewPlugin::generate(const RES& p_from) { VS::get_singleton()->mesh_surface_set_material(sphere,0,RID()); int thumbnail_size = EditorSettings::get_singleton()->get("file_dialog/thumbnail_size"); + thumbnail_size*=EDSCALE; img.resize(thumbnail_size,thumbnail_size); Ref<ImageTexture> ptex = Ref<ImageTexture>( memnew( ImageTexture )); @@ -401,6 +404,7 @@ Ref<Texture> EditorScriptPreviewPlugin::generate(const RES& p_from) { int line = 0; int col=0; int thumbnail_size = EditorSettings::get_singleton()->get("file_dialog/thumbnail_size"); + thumbnail_size*=EDSCALE; Image img(thumbnail_size,thumbnail_size,0,Image::FORMAT_RGBA); @@ -501,7 +505,7 @@ Ref<Texture> EditorSamplePreviewPlugin::generate(const RES& p_from) { int thumbnail_size = EditorSettings::get_singleton()->get("file_dialog/thumbnail_size"); - + thumbnail_size*=EDSCALE; DVector<uint8_t> img; int w = thumbnail_size; int h = thumbnail_size; @@ -815,6 +819,7 @@ Ref<Texture> EditorMeshPreviewPlugin::generate(const RES& p_from) { VS::get_singleton()->instance_set_base(mesh_instance,RID()); int thumbnail_size = EditorSettings::get_singleton()->get("file_dialog/thumbnail_size"); + thumbnail_size*=EDSCALE; img.resize(thumbnail_size,thumbnail_size); Ref<ImageTexture> ptex = Ref<ImageTexture>( memnew( ImageTexture )); diff --git a/tools/editor/plugins/material_editor_plugin.cpp b/tools/editor/plugins/material_editor_plugin.cpp new file mode 100644 index 0000000000..f4258836e5 --- /dev/null +++ b/tools/editor/plugins/material_editor_plugin.cpp @@ -0,0 +1,381 @@ +#include "material_editor_plugin.h" +#include "scene/main/viewport.h" + +void MaterialEditor::_input_event(InputEvent p_event) { + + +} + +void MaterialEditor::_notification(int p_what) { + + if (p_what==NOTIFICATION_FIXED_PROCESS) { + + } + + + if (p_what==NOTIFICATION_READY) { + + //get_scene()->connect("node_removed",this,"_node_removed"); + + if (first_enter) { + //it's in propertyeditor so.. could be moved around + + light_1_switch->set_normal_texture(get_icon("MaterialPreviewLight1","EditorIcons")); + light_1_switch->set_pressed_texture(get_icon("MaterialPreviewLight1Off","EditorIcons")); + light_2_switch->set_normal_texture(get_icon("MaterialPreviewLight2","EditorIcons")); + light_2_switch->set_pressed_texture(get_icon("MaterialPreviewLight2Off","EditorIcons")); + + sphere_switch->set_normal_texture(get_icon("MaterialPreviewSphereOff","EditorIcons")); + sphere_switch->set_pressed_texture(get_icon("MaterialPreviewSphere","EditorIcons")); + box_switch->set_normal_texture(get_icon("MaterialPreviewCubeOff","EditorIcons")); + box_switch->set_pressed_texture(get_icon("MaterialPreviewCube","EditorIcons")); + + first_enter=false; + } + + } + + if (p_what==NOTIFICATION_DRAW) { + + + Ref<Texture> checkerboard = get_icon("Checkerboard","EditorIcons"); + Size2 size = get_size(); + + draw_texture_rect(checkerboard,Rect2(Point2(),size),true); + + } +} + + + +void MaterialEditor::edit(Ref<Material> p_material) { + + material=p_material; + + if (!material.is_null()) { + sphere_mesh->surface_set_material(0,material); + box_mesh->surface_set_material(0,material); + } else { + + hide(); + } + +} + + +void MaterialEditor::_button_pressed(Node* p_button) { + + if (p_button==light_1_switch) { + light1->set_enabled(!light_1_switch->is_pressed()); + } + + if (p_button==light_2_switch) { + light2->set_enabled(!light_2_switch->is_pressed()); + } + + if (p_button==box_switch) { + box_instance->show(); + sphere_instance->hide(); + box_switch->set_pressed(true); + sphere_switch->set_pressed(false); + } + + if (p_button==sphere_switch) { + box_instance->hide(); + sphere_instance->show(); + box_switch->set_pressed(false); + sphere_switch->set_pressed(true); + } + +} + +void MaterialEditor::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("_input_event"),&MaterialEditor::_input_event); + ObjectTypeDB::bind_method(_MD("_button_pressed"),&MaterialEditor::_button_pressed); + +} + +MaterialEditor::MaterialEditor() { + + viewport = memnew( Viewport ); + Ref<World> world; + world.instance(); + viewport->set_world(world); //use own world + add_child(viewport); + viewport->set_process_input(false); + + camera = memnew( Camera ); + camera->set_transform(Transform(Matrix3(),Vector3(0,0,3))); + camera->set_perspective(45,0.1,10); + viewport->add_child(camera); + + light1 = memnew( DirectionalLight ); + light1->set_transform(Transform().looking_at(Vector3(-1,-1,-1),Vector3(0,1,0))); + viewport->add_child(light1); + + light2 = memnew( DirectionalLight ); + light2->set_transform(Transform().looking_at(Vector3(0,1,0),Vector3(0,0,1))); + light2->set_color(Light::COLOR_DIFFUSE,Color(0.7,0.7,0.7)); + light2->set_color(Light::COLOR_SPECULAR,Color(0.7,0.7,0.7)); + viewport->add_child(light2); + + sphere_instance = memnew( MeshInstance ); + viewport->add_child(sphere_instance); + + box_instance = memnew( MeshInstance ); + viewport->add_child(box_instance); + + Transform box_xform; + box_xform.basis.rotate(Vector3(1,0,0),Math::deg2rad(-25)); + box_xform.basis = box_xform.basis * Matrix3().rotated(Vector3(0,1,0),Math::deg2rad(-25)); + box_xform.basis.scale(Vector3(0.8,0.8,0.8)); + box_instance->set_transform(box_xform); + + { + + sphere_mesh.instance(); + + + int lats=32; + int lons=32; + float radius=1.0; + + DVector<Vector3> vertices; + DVector<Vector3> normals; + DVector<Vector2> uvs; + DVector<float> tangents; + Matrix3 tt = Matrix3(Vector3(0,1,0),Math_PI*0.5); + + for(int i = 1; i <= lats; i++) { + double lat0 = Math_PI * (-0.5 + (double) (i - 1) / lats); + double z0 = Math::sin(lat0); + double zr0 = Math::cos(lat0); + + double lat1 = Math_PI * (-0.5 + (double) i / lats); + double z1 = Math::sin(lat1); + double zr1 = Math::cos(lat1); + + for(int j = lons; j >= 1; j--) { + + double lng0 = 2 * Math_PI * (double) (j - 1) / lons; + double x0 = Math::cos(lng0); + double y0 = Math::sin(lng0); + + double lng1 = 2 * Math_PI * (double) (j) / lons; + double x1 = Math::cos(lng1); + double y1 = Math::sin(lng1); + + + Vector3 v[4]={ + Vector3(x1 * zr0, z0, y1 *zr0), + Vector3(x1 * zr1, z1, y1 *zr1), + Vector3(x0 * zr1, z1, y0 *zr1), + Vector3(x0 * zr0, z0, y0 *zr0) + }; + + #define ADD_POINT(m_idx) \ + normals.push_back(v[m_idx]);\ + vertices.push_back(v[m_idx]*radius);\ + { Vector2 uv(Math::atan2(v[m_idx].x,v[m_idx].z),Math::atan2(-v[m_idx].y,v[m_idx].z));\ + uv/=Math_PI;\ + uv*=4.0;\ + uv=uv*0.5+Vector2(0.5,0.5);\ + uvs.push_back(uv);\ + }\ + { Vector3 t = tt.xform(v[m_idx]);\ + tangents.push_back(t.x);\ + tangents.push_back(t.y);\ + tangents.push_back(t.z);\ + tangents.push_back(1.0);\ + } + + + + ADD_POINT(0); + ADD_POINT(1); + ADD_POINT(2); + + ADD_POINT(2); + ADD_POINT(3); + ADD_POINT(0); + } + } + + Array arr; + arr.resize(VS::ARRAY_MAX); + arr[VS::ARRAY_VERTEX]=vertices; + arr[VS::ARRAY_NORMAL]=normals; + arr[VS::ARRAY_TANGENT]=tangents; + arr[VS::ARRAY_TEX_UV]=uvs; + + sphere_mesh->add_surface(Mesh::PRIMITIVE_TRIANGLES,arr); + + sphere_instance->set_mesh(sphere_mesh); + + } + { + + + box_mesh.instance(); + + DVector<Vector3> vertices; + DVector<Vector3> normals; + DVector<float> tangents; + DVector<Vector3> uvs; + + int vtx_idx=0; + #define ADD_VTX(m_idx);\ + vertices.push_back( face_points[m_idx] );\ + normals.push_back( normal_points[m_idx] );\ + tangents.push_back( normal_points[m_idx][1] );\ + tangents.push_back( normal_points[m_idx][2] );\ + tangents.push_back( normal_points[m_idx][0] );\ + tangents.push_back( 1.0 );\ + uvs.push_back( Vector3(uv_points[m_idx*2+0],uv_points[m_idx*2+1],0) );\ + vtx_idx++;\ + + for (int i=0;i<6;i++) { + + + Vector3 face_points[4]; + Vector3 normal_points[4]; + float uv_points[8]={0,0,0,1,1,1,1,0}; + + for (int j=0;j<4;j++) { + + float v[3]; + v[0]=1.0; + v[1]=1-2*((j>>1)&1); + v[2]=v[1]*(1-2*(j&1)); + + for (int k=0;k<3;k++) { + + if (i<3) + face_points[j][(i+k)%3]=v[k]*(i>=3?-1:1); + else + face_points[3-j][(i+k)%3]=v[k]*(i>=3?-1:1); + } + normal_points[j]=Vector3(); + normal_points[j][i%3]=(i>=3?-1:1); + } + + //tri 1 + ADD_VTX(0); + ADD_VTX(1); + ADD_VTX(2); + //tri 2 + ADD_VTX(2); + ADD_VTX(3); + ADD_VTX(0); + + } + + + + Array d; + d.resize(VS::ARRAY_MAX); + d[VisualServer::ARRAY_NORMAL]= normals ; + d[VisualServer::ARRAY_TANGENT]= tangents ; + d[VisualServer::ARRAY_TEX_UV]= uvs ; + d[VisualServer::ARRAY_VERTEX]= vertices ; + + DVector<int> indices; + indices.resize(vertices.size()); + for(int i=0;i<vertices.size();i++) + indices.set(i,i); + d[VisualServer::ARRAY_INDEX]=indices; + + box_mesh->add_surface(Mesh::PRIMITIVE_TRIANGLES,d); + box_instance->set_mesh(box_mesh); + box_instance->hide(); + + + + } + + set_custom_minimum_size(Size2(1,150)*EDSCALE); + + HBoxContainer *hb = memnew( HBoxContainer ); + add_child(hb); + hb->set_area_as_parent_rect(2); + + VBoxContainer *vb_shape = memnew( VBoxContainer ); + hb->add_child(vb_shape); + + sphere_switch = memnew( TextureButton ); + sphere_switch->set_toggle_mode(true); + sphere_switch->set_pressed(true); + vb_shape->add_child(sphere_switch); + sphere_switch->connect("pressed",this,"_button_pressed",varray(sphere_switch)); + + box_switch = memnew( TextureButton ); + box_switch->set_toggle_mode(true); + box_switch->set_pressed(false); + vb_shape->add_child(box_switch); + box_switch->connect("pressed",this,"_button_pressed",varray(box_switch)); + + hb->add_spacer(); + + VBoxContainer *vb_light = memnew( VBoxContainer ); + hb->add_child(vb_light); + + light_1_switch = memnew( TextureButton ); + light_1_switch->set_toggle_mode(true); + vb_light->add_child(light_1_switch); + light_1_switch->connect("pressed",this,"_button_pressed",varray(light_1_switch)); + + light_2_switch = memnew( TextureButton ); + light_2_switch->set_toggle_mode(true); + vb_light->add_child(light_2_switch); + light_2_switch->connect("pressed",this,"_button_pressed",varray(light_2_switch)); + + first_enter=true; + +} + + +void MaterialEditorPlugin::edit(Object *p_object) { + + Material * s = p_object->cast_to<Material>(); + if (!s) + return; + + material_editor->edit(Ref<Material>(s)); +} + +bool MaterialEditorPlugin::handles(Object *p_object) const { + + return p_object->is_type("Material"); +} + +void MaterialEditorPlugin::make_visible(bool p_visible) { + + if (p_visible) { + material_editor->show(); +// material_editor->set_process(true); + } else { + + material_editor->hide(); +// material_editor->set_process(false); + } + +} + +MaterialEditorPlugin::MaterialEditorPlugin(EditorNode *p_node) { + + editor=p_node; + material_editor = memnew( MaterialEditor ); + add_control_to_container(CONTAINER_PROPERTY_EDITOR_BOTTOM,material_editor); + material_editor->hide(); + + + +} + + +MaterialEditorPlugin::~MaterialEditorPlugin() +{ +} + + diff --git a/tools/editor/plugins/material_editor_plugin.h b/tools/editor/plugins/material_editor_plugin.h new file mode 100644 index 0000000000..49e92493b3 --- /dev/null +++ b/tools/editor/plugins/material_editor_plugin.h @@ -0,0 +1,71 @@ +#ifndef MATERIAL_EDITOR_PLUGIN_H +#define MATERIAL_EDITOR_PLUGIN_H + +#include "tools/editor/editor_plugin.h" +#include "tools/editor/editor_node.h" +#include "scene/resources/material.h" +#include "scene/3d/light.h" +#include "scene/3d/mesh_instance.h" +#include "scene/3d/camera.h" + + +class MaterialEditor : public Control { + + OBJ_TYPE(MaterialEditor, Control); + + + Viewport *viewport; + MeshInstance *sphere_instance; + MeshInstance *box_instance; + DirectionalLight *light1; + DirectionalLight *light2; + Camera *camera; + + Ref<Mesh> sphere_mesh; + Ref<Mesh> box_mesh; + + TextureButton *sphere_switch; + TextureButton *box_switch; + + TextureButton *light_1_switch; + TextureButton *light_2_switch; + + + Ref<Material> material; + + + void _button_pressed(Node* p_button); + bool first_enter; + +protected: + void _notification(int p_what); + void _input_event(InputEvent p_event); + static void _bind_methods(); +public: + + void edit(Ref<Material> p_material); + MaterialEditor(); +}; + + +class MaterialEditorPlugin : public EditorPlugin { + + OBJ_TYPE( MaterialEditorPlugin, EditorPlugin ); + + MaterialEditor *material_editor; + EditorNode *editor; + +public: + + virtual String get_name() const { return "Material"; } + bool has_main_screen() const { return false; } + virtual void edit(Object *p_node); + virtual bool handles(Object *p_node) const; + virtual void make_visible(bool p_visible); + + MaterialEditorPlugin(EditorNode *p_node); + ~MaterialEditorPlugin(); + +}; + +#endif // MATERIAL_EDITOR_PLUGIN_H diff --git a/tools/editor/plugins/mesh_editor_plugin.cpp b/tools/editor/plugins/mesh_editor_plugin.cpp index 8671734c25..51a436e58d 100644 --- a/tools/editor/plugins/mesh_editor_plugin.cpp +++ b/tools/editor/plugins/mesh_editor_plugin.cpp @@ -1,300 +1,215 @@ #include "mesh_editor_plugin.h" -#include "scene/3d/physics_body.h" -#include "scene/3d/body_shape.h" -#include "scene/gui/box_container.h" -#include "scene/3d/navigation_mesh.h" -#include "spatial_editor_plugin.h" +void MeshEditor::_input_event(InputEvent p_event) { -void MeshInstanceEditor::_node_removed(Node *p_node) { - if(p_node==node) { - node=NULL; - options->hide(); - } + if (p_event.type==InputEvent::MOUSE_MOTION && p_event.mouse_motion.button_mask&BUTTON_MASK_LEFT) { + rot_x-=p_event.mouse_motion.relative_y*0.01; + rot_y-=p_event.mouse_motion.relative_x*0.01; + if (rot_x<-Math_PI/2) + rot_x=-Math_PI/2; + else if (rot_x>Math_PI/2) { + rot_x=Math_PI/2; + } + _update_rotation(); + } } +void MeshEditor::_notification(int p_what) { + if (p_what==NOTIFICATION_FIXED_PROCESS) { -void MeshInstanceEditor::edit(MeshInstance *p_mesh) { - - node=p_mesh; - -} - -void MeshInstanceEditor::_menu_option(int p_option) { - - Ref<Mesh> mesh = node->get_mesh(); - if (mesh.is_null()) { - err_dialog->set_text(TTR("Mesh is empty!")); - err_dialog->popup_centered_minsize(); - return; } - switch(p_option) { - case MENU_OPTION_CREATE_STATIC_TRIMESH_BODY: - case MENU_OPTION_CREATE_STATIC_CONVEX_BODY: { - - bool trimesh_shape = (p_option==MENU_OPTION_CREATE_STATIC_TRIMESH_BODY); - - EditorSelection *editor_selection = EditorNode::get_singleton()->get_editor_selection(); - UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo(); - - List<Node*> selection = editor_selection->get_selected_node_list(); - - if (selection.empty()) { - Ref<Shape> shape = trimesh_shape ? mesh->create_trimesh_shape() : mesh->create_convex_shape(); - if (shape.is_null()) - return; - CollisionShape *cshape = memnew( CollisionShape ); - cshape->set_shape(shape); - StaticBody *body = memnew( StaticBody ); - body->add_child(cshape); + if (p_what==NOTIFICATION_READY) { - Node *owner = node==get_tree()->get_edited_scene_root() ? node : node->get_owner(); + //get_scene()->connect("node_removed",this,"_node_removed"); - if (trimesh_shape) - ur->create_action(TTR("Create Static Trimesh Body")); - else - ur->create_action(TTR("Create Static Convex Body")); + if (first_enter) { + //it's in propertyeditor so.. could be moved around - ur->add_do_method(node,"add_child",body); - ur->add_do_method(body,"set_owner",owner); - ur->add_do_method(cshape,"set_owner",owner); - ur->add_do_reference(body); - ur->add_undo_method(node,"remove_child",body); - ur->commit_action(); - return; - } + light_1_switch->set_normal_texture(get_icon("MaterialPreviewLight1","EditorIcons")); + light_1_switch->set_pressed_texture(get_icon("MaterialPreviewLight1Off","EditorIcons")); + light_2_switch->set_normal_texture(get_icon("MaterialPreviewLight2","EditorIcons")); + light_2_switch->set_pressed_texture(get_icon("MaterialPreviewLight2Off","EditorIcons")); + first_enter=false; + } - if (trimesh_shape) - ur->create_action(TTR("Create Static Trimesh Body")); - else - ur->create_action(TTR("Create Static Convex Body")); - - for (List<Node*>::Element *E=selection.front();E;E=E->next()) { - - MeshInstance *instance = E->get()->cast_to<MeshInstance>(); - if (!instance) - continue; - - Ref<Mesh> m = instance->get_mesh(); - if (m.is_null()) - continue; - - Ref<Shape> shape = trimesh_shape ? m->create_trimesh_shape() : m->create_convex_shape(); - if (shape.is_null()) - continue; - - CollisionShape *cshape = memnew( CollisionShape ); - cshape->set_shape(shape); - StaticBody *body = memnew( StaticBody ); - body->add_child(cshape); - - Node *owner = instance==get_tree()->get_edited_scene_root() ? instance : instance->get_owner(); - - ur->add_do_method(instance,"add_child",body); - ur->add_do_method(body,"set_owner",owner); - ur->add_do_method(cshape,"set_owner",owner); - ur->add_do_reference(body); - ur->add_undo_method(instance,"remove_child",body); - } - - ur->commit_action(); - - } break; - - case MENU_OPTION_CREATE_TRIMESH_COLLISION_SHAPE: - case MENU_OPTION_CREATE_CONVEX_COLLISION_SHAPE: { - - if (node==get_tree()->get_edited_scene_root()) { - err_dialog->set_text(TTR("This doesn't work on scene root!")); - err_dialog->popup_centered_minsize(); - return; - } - - bool trimesh_shape = (p_option==MENU_OPTION_CREATE_TRIMESH_COLLISION_SHAPE); + } - Ref<Shape> shape = trimesh_shape ? mesh->create_trimesh_shape() : mesh->create_convex_shape(); - if (shape.is_null()) - return; + if (p_what==NOTIFICATION_DRAW) { - CollisionShape *cshape = memnew( CollisionShape ); - cshape->set_shape(shape); - Node *owner = node->get_owner(); + Ref<Texture> checkerboard = get_icon("Checkerboard","EditorIcons"); + Size2 size = get_size(); - UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo(); + draw_texture_rect(checkerboard,Rect2(Point2(),size),true); - if (trimesh_shape) - ur->create_action(TTR("Create Trimesh Shape")); - else - ur->create_action(TTR("Create Convex Shape")); + } +} - ur->add_do_method(node->get_parent(),"add_child",cshape); - ur->add_do_method(node->get_parent(),"move_child",cshape,node->get_index()+1); - ur->add_do_method(cshape,"set_owner",owner); - ur->add_do_reference(cshape); - ur->add_undo_method(node->get_parent(),"remove_child",cshape); - ur->commit_action(); +void MeshEditor::_update_rotation() { - } break; + Transform t; + t.basis.rotate(Vector3(0, 1, 0), rot_y); + t.basis.rotate(Vector3(1, 0, 0), rot_x); + mesh_instance->set_transform(t); - case MENU_OPTION_CREATE_NAVMESH: { +} - Ref<NavigationMesh> nmesh = memnew( NavigationMesh ); +void MeshEditor::edit(Ref<Mesh> p_mesh) { - if (nmesh.is_null()) - return; + mesh=p_mesh; + mesh_instance->set_mesh(mesh); - nmesh->create_from_mesh(mesh); - NavigationMeshInstance *nmi = memnew( NavigationMeshInstance ); - nmi->set_navigation_mesh(nmesh); + if (mesh.is_null()) { - Node *owner = node==get_tree()->get_edited_scene_root() ? node : node->get_owner(); + hide(); + } else { + rot_x=0; + rot_y=0; + _update_rotation(); + + AABB aabb= mesh->get_aabb(); + Vector3 ofs = aabb.pos + aabb.size*0.5; + aabb.pos-=ofs; + float m = MAX(aabb.size.x,aabb.size.y)*0.5; + if (m!=0) { + m=1.0/m; + m*=0.5; + //print_line("scale: "+rtos(m)); + Transform xform; + xform.basis.scale(Vector3(m,m,m)); + xform.origin=-xform.basis.xform(ofs); //-ofs*m; + xform.origin.z-=aabb.size.z*2; + mesh_instance->set_transform(xform); + } - UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo(); - ur->create_action(TTR("Create Navigation Mesh")); + } - ur->add_do_method(node,"add_child",nmi); - ur->add_do_method(nmi,"set_owner",owner); +} - ur->add_do_reference(nmi); - ur->add_undo_method(node,"remove_child",nmi); - ur->commit_action(); - } break; - case MENU_OPTION_CREATE_OUTLINE_MESH: { +void MeshEditor::_button_pressed(Node* p_button) { - outline_dialog->popup_centered(Vector2(200, 90)); - } break; + if (p_button==light_1_switch) { + light1->set_enabled(!light_1_switch->is_pressed()); } -} + if (p_button==light_2_switch) { + light2->set_enabled(!light_2_switch->is_pressed()); + } -void MeshInstanceEditor::_create_outline_mesh() { - Ref<Mesh> mesh = node->get_mesh(); - if (mesh.is_null()) { - err_dialog->set_text(TTR("MeshInstance lacks a Mesh!")); - err_dialog->popup_centered_minsize(); - return; - } +} - Ref<Mesh> mesho = mesh->create_outline(outline_size->get_val()); +void MeshEditor::_bind_methods() { - if (mesho.is_null()) { - err_dialog->set_text(TTR("Could not create outline!")); - err_dialog->popup_centered_minsize(); - return; - } + ObjectTypeDB::bind_method(_MD("_input_event"),&MeshEditor::_input_event); + ObjectTypeDB::bind_method(_MD("_button_pressed"),&MeshEditor::_button_pressed); - MeshInstance *mi = memnew( MeshInstance ); - mi->set_mesh(mesho); - Node *owner=node->get_owner(); - if (get_tree()->get_edited_scene_root()==node) { - owner=node; - } +} - UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo(); +MeshEditor::MeshEditor() { - ur->create_action(TTR("Create Outline")); + viewport = memnew( Viewport ); + Ref<World> world; + world.instance(); + viewport->set_world(world); //use own world + add_child(viewport); + viewport->set_process_input(false); - ur->add_do_method(node,"add_child",mi); - ur->add_do_method(mi,"set_owner",owner); + camera = memnew( Camera ); + camera->set_transform(Transform(Matrix3(),Vector3(0,0,3))); + camera->set_perspective(45,0.1,10); + viewport->add_child(camera); - ur->add_do_reference(mi); - ur->add_undo_method(node,"remove_child",mi); - ur->commit_action(); -} + light1 = memnew( DirectionalLight ); + light1->set_transform(Transform().looking_at(Vector3(-1,-1,-1),Vector3(0,1,0))); + viewport->add_child(light1); -void MeshInstanceEditor::_bind_methods() { + light2 = memnew( DirectionalLight ); + light2->set_transform(Transform().looking_at(Vector3(0,1,0),Vector3(0,0,1))); + light2->set_color(Light::COLOR_DIFFUSE,Color(0.7,0.7,0.7)); + light2->set_color(Light::COLOR_SPECULAR,Color(0.7,0.7,0.7)); + viewport->add_child(light2); - ObjectTypeDB::bind_method("_menu_option",&MeshInstanceEditor::_menu_option); - ObjectTypeDB::bind_method("_create_outline_mesh",&MeshInstanceEditor::_create_outline_mesh); -} + mesh_instance = memnew( MeshInstance ); + viewport->add_child(mesh_instance); -MeshInstanceEditor::MeshInstanceEditor() { - options = memnew( MenuButton ); - SpatialEditor::get_singleton()->add_control_to_menu_panel(options); + set_custom_minimum_size(Size2(1,150)*EDSCALE); - options->set_text("Mesh"); - options->set_icon(EditorNode::get_singleton()->get_gui_base()->get_icon("MeshInstance","EditorIcons")); + HBoxContainer *hb = memnew( HBoxContainer ); + add_child(hb); + hb->set_area_as_parent_rect(2); - options->get_popup()->add_item(TTR("Create Trimesh Static Body"),MENU_OPTION_CREATE_STATIC_TRIMESH_BODY); - options->get_popup()->add_item(TTR("Create Convex Static Body"),MENU_OPTION_CREATE_STATIC_CONVEX_BODY); - options->get_popup()->add_separator(); - options->get_popup()->add_item(TTR("Create Trimesh Collision Sibling"),MENU_OPTION_CREATE_TRIMESH_COLLISION_SHAPE); - options->get_popup()->add_item(TTR("Create Convex Collision Sibling"),MENU_OPTION_CREATE_CONVEX_COLLISION_SHAPE); - options->get_popup()->add_separator(); - options->get_popup()->add_item(TTR("Create Navigation Mesh"),MENU_OPTION_CREATE_NAVMESH); - options->get_popup()->add_separator(); - options->get_popup()->add_item(TTR("Create Outline Mesh.."),MENU_OPTION_CREATE_OUTLINE_MESH); + hb->add_spacer(); - options->get_popup()->connect("item_pressed", this,"_menu_option"); + VBoxContainer *vb_light = memnew( VBoxContainer ); + hb->add_child(vb_light); - outline_dialog = memnew( ConfirmationDialog ); - outline_dialog->set_title(TTR("Create Outline Mesh")); - outline_dialog->get_ok()->set_text(TTR("Create")); + light_1_switch = memnew( TextureButton ); + light_1_switch->set_toggle_mode(true); + vb_light->add_child(light_1_switch); + light_1_switch->connect("pressed",this,"_button_pressed",varray(light_1_switch)); - VBoxContainer *outline_dialog_vbc = memnew( VBoxContainer ); - outline_dialog->add_child(outline_dialog_vbc); - outline_dialog->set_child_rect(outline_dialog_vbc); + light_2_switch = memnew( TextureButton ); + light_2_switch->set_toggle_mode(true); + vb_light->add_child(light_2_switch); + light_2_switch->connect("pressed",this,"_button_pressed",varray(light_2_switch)); - outline_size = memnew( SpinBox ); - outline_size->set_min(0.001); - outline_size->set_max(1024); - outline_size->set_step(0.001); - outline_size->set_val(0.05); - outline_dialog_vbc->add_margin_child(TTR("Outline Size:"),outline_size); + first_enter=true; - add_child(outline_dialog); - outline_dialog->connect("confirmed",this,"_create_outline_mesh"); + rot_x=0; + rot_y=0; - err_dialog = memnew( AcceptDialog ); - add_child(err_dialog); } -void MeshInstanceEditorPlugin::edit(Object *p_object) { +void MeshEditorPlugin::edit(Object *p_object) { - mesh_editor->edit(p_object->cast_to<MeshInstance>()); + Mesh * s = p_object->cast_to<Mesh>(); + if (!s) + return; + + mesh_editor->edit(Ref<Mesh>(s)); } -bool MeshInstanceEditorPlugin::handles(Object *p_object) const { +bool MeshEditorPlugin::handles(Object *p_object) const { - return p_object->is_type("MeshInstance"); + return p_object->is_type("Mesh"); } -void MeshInstanceEditorPlugin::make_visible(bool p_visible) { +void MeshEditorPlugin::make_visible(bool p_visible) { if (p_visible) { - mesh_editor->options->show(); + mesh_editor->show(); +// mesh_editor->set_process(true); } else { - mesh_editor->options->hide(); - mesh_editor->edit(NULL); + mesh_editor->hide(); +// mesh_editor->set_process(false); } } -MeshInstanceEditorPlugin::MeshInstanceEditorPlugin(EditorNode *p_node) { +MeshEditorPlugin::MeshEditorPlugin(EditorNode *p_node) { editor=p_node; - mesh_editor = memnew( MeshInstanceEditor ); - editor->get_viewport()->add_child(mesh_editor); + mesh_editor = memnew( MeshEditor ); + add_control_to_container(CONTAINER_PROPERTY_EDITOR_BOTTOM,mesh_editor); + mesh_editor->hide(); - mesh_editor->options->hide(); -} -MeshInstanceEditorPlugin::~MeshInstanceEditorPlugin() -{ } +MeshEditorPlugin::~MeshEditorPlugin() +{ +} diff --git a/tools/editor/plugins/mesh_editor_plugin.h b/tools/editor/plugins/mesh_editor_plugin.h index 6b3e23f31f..190dfca464 100644 --- a/tools/editor/plugins/mesh_editor_plugin.h +++ b/tools/editor/plugins/mesh_editor_plugin.h @@ -1,68 +1,66 @@ #ifndef MESH_EDITOR_PLUGIN_H #define MESH_EDITOR_PLUGIN_H - #include "tools/editor/editor_plugin.h" #include "tools/editor/editor_node.h" +#include "scene/resources/material.h" +#include "scene/3d/light.h" #include "scene/3d/mesh_instance.h" -#include "scene/gui/spin_box.h" - +#include "scene/3d/camera.h" -class MeshInstanceEditor : public Node { +class MeshEditor : public Control { - OBJ_TYPE(MeshInstanceEditor, Node ); + OBJ_TYPE(MeshEditor, Control); - enum Menu { - MENU_OPTION_CREATE_STATIC_TRIMESH_BODY, - MENU_OPTION_CREATE_STATIC_CONVEX_BODY, - MENU_OPTION_CREATE_TRIMESH_COLLISION_SHAPE, - MENU_OPTION_CREATE_CONVEX_COLLISION_SHAPE, - MENU_OPTION_CREATE_NAVMESH, - MENU_OPTION_CREATE_OUTLINE_MESH, - }; + float rot_x; + float rot_y; - MeshInstance *node; + Viewport *viewport; + MeshInstance *mesh_instance; + DirectionalLight *light1; + DirectionalLight *light2; + Camera *camera; - MenuButton *options; + Ref<Mesh> mesh; - ConfirmationDialog *outline_dialog; - SpinBox *outline_size; - AcceptDialog *err_dialog; + TextureButton *light_1_switch; + TextureButton *light_2_switch; - void _menu_option(int p_option); - void _create_outline_mesh(); - -friend class MeshInstanceEditorPlugin; + void _button_pressed(Node* p_button); + bool first_enter; + void _update_rotation(); protected: - void _node_removed(Node *p_node); + void _notification(int p_what); + void _input_event(InputEvent p_event); static void _bind_methods(); public: - void edit(MeshInstance *p_mesh); - MeshInstanceEditor(); + void edit(Ref<Mesh> p_mesh); + MeshEditor(); }; -class MeshInstanceEditorPlugin : public EditorPlugin { - OBJ_TYPE( MeshInstanceEditorPlugin, EditorPlugin ); +class MeshEditorPlugin : public EditorPlugin { + + OBJ_TYPE( MeshEditorPlugin, EditorPlugin ); - MeshInstanceEditor *mesh_editor; + MeshEditor *mesh_editor; EditorNode *editor; public: - virtual String get_name() const { return "MeshInstance"; } + virtual String get_name() const { return "Mesh"; } bool has_main_screen() const { return false; } virtual void edit(Object *p_node); virtual bool handles(Object *p_node) const; virtual void make_visible(bool p_visible); - MeshInstanceEditorPlugin(EditorNode *p_node); - ~MeshInstanceEditorPlugin(); + MeshEditorPlugin(EditorNode *p_node); + ~MeshEditorPlugin(); }; diff --git a/tools/editor/plugins/mesh_instance_editor_plugin.cpp b/tools/editor/plugins/mesh_instance_editor_plugin.cpp new file mode 100644 index 0000000000..2d7e5b177f --- /dev/null +++ b/tools/editor/plugins/mesh_instance_editor_plugin.cpp @@ -0,0 +1,300 @@ +#include "mesh_instance_editor_plugin.h" + +#include "scene/3d/physics_body.h" +#include "scene/3d/body_shape.h" +#include "scene/gui/box_container.h" +#include "scene/3d/navigation_mesh.h" +#include "spatial_editor_plugin.h" + +void MeshInstanceEditor::_node_removed(Node *p_node) { + + if(p_node==node) { + node=NULL; + options->hide(); + } + +} + + + +void MeshInstanceEditor::edit(MeshInstance *p_mesh) { + + node=p_mesh; + +} + +void MeshInstanceEditor::_menu_option(int p_option) { + + Ref<Mesh> mesh = node->get_mesh(); + if (mesh.is_null()) { + err_dialog->set_text(TTR("Mesh is empty!")); + err_dialog->popup_centered_minsize(); + return; + } + + switch(p_option) { + case MENU_OPTION_CREATE_STATIC_TRIMESH_BODY: + case MENU_OPTION_CREATE_STATIC_CONVEX_BODY: { + + bool trimesh_shape = (p_option==MENU_OPTION_CREATE_STATIC_TRIMESH_BODY); + + EditorSelection *editor_selection = EditorNode::get_singleton()->get_editor_selection(); + UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo(); + + List<Node*> selection = editor_selection->get_selected_node_list(); + + if (selection.empty()) { + Ref<Shape> shape = trimesh_shape ? mesh->create_trimesh_shape() : mesh->create_convex_shape(); + if (shape.is_null()) + return; + + CollisionShape *cshape = memnew( CollisionShape ); + cshape->set_shape(shape); + StaticBody *body = memnew( StaticBody ); + body->add_child(cshape); + + Node *owner = node==get_tree()->get_edited_scene_root() ? node : node->get_owner(); + + if (trimesh_shape) + ur->create_action(TTR("Create Static Trimesh Body")); + else + ur->create_action(TTR("Create Static Convex Body")); + + ur->add_do_method(node,"add_child",body); + ur->add_do_method(body,"set_owner",owner); + ur->add_do_method(cshape,"set_owner",owner); + ur->add_do_reference(body); + ur->add_undo_method(node,"remove_child",body); + ur->commit_action(); + return; + } + + if (trimesh_shape) + ur->create_action(TTR("Create Static Trimesh Body")); + else + ur->create_action(TTR("Create Static Convex Body")); + + for (List<Node*>::Element *E=selection.front();E;E=E->next()) { + + MeshInstance *instance = E->get()->cast_to<MeshInstance>(); + if (!instance) + continue; + + Ref<Mesh> m = instance->get_mesh(); + if (m.is_null()) + continue; + + Ref<Shape> shape = trimesh_shape ? m->create_trimesh_shape() : m->create_convex_shape(); + if (shape.is_null()) + continue; + + CollisionShape *cshape = memnew( CollisionShape ); + cshape->set_shape(shape); + StaticBody *body = memnew( StaticBody ); + body->add_child(cshape); + + Node *owner = instance==get_tree()->get_edited_scene_root() ? instance : instance->get_owner(); + + ur->add_do_method(instance,"add_child",body); + ur->add_do_method(body,"set_owner",owner); + ur->add_do_method(cshape,"set_owner",owner); + ur->add_do_reference(body); + ur->add_undo_method(instance,"remove_child",body); + } + + ur->commit_action(); + + } break; + + case MENU_OPTION_CREATE_TRIMESH_COLLISION_SHAPE: + case MENU_OPTION_CREATE_CONVEX_COLLISION_SHAPE: { + + if (node==get_tree()->get_edited_scene_root()) { + err_dialog->set_text(TTR("This doesn't work on scene root!")); + err_dialog->popup_centered_minsize(); + return; + } + + bool trimesh_shape = (p_option==MENU_OPTION_CREATE_TRIMESH_COLLISION_SHAPE); + + Ref<Shape> shape = trimesh_shape ? mesh->create_trimesh_shape() : mesh->create_convex_shape(); + if (shape.is_null()) + return; + + CollisionShape *cshape = memnew( CollisionShape ); + cshape->set_shape(shape); + + Node *owner = node->get_owner(); + + UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo(); + + if (trimesh_shape) + ur->create_action(TTR("Create Trimesh Shape")); + else + ur->create_action(TTR("Create Convex Shape")); + + ur->add_do_method(node->get_parent(),"add_child",cshape); + ur->add_do_method(node->get_parent(),"move_child",cshape,node->get_index()+1); + ur->add_do_method(cshape,"set_owner",owner); + ur->add_do_reference(cshape); + ur->add_undo_method(node->get_parent(),"remove_child",cshape); + ur->commit_action(); + + } break; + + case MENU_OPTION_CREATE_NAVMESH: { + + Ref<NavigationMesh> nmesh = memnew( NavigationMesh ); + + if (nmesh.is_null()) + return; + + nmesh->create_from_mesh(mesh); + NavigationMeshInstance *nmi = memnew( NavigationMeshInstance ); + nmi->set_navigation_mesh(nmesh); + + Node *owner = node==get_tree()->get_edited_scene_root() ? node : node->get_owner(); + + UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo(); + ur->create_action(TTR("Create Navigation Mesh")); + + ur->add_do_method(node,"add_child",nmi); + ur->add_do_method(nmi,"set_owner",owner); + + ur->add_do_reference(nmi); + ur->add_undo_method(node,"remove_child",nmi); + ur->commit_action(); + } break; + + case MENU_OPTION_CREATE_OUTLINE_MESH: { + + outline_dialog->popup_centered(Vector2(200, 90)); + } break; + } + +} + +void MeshInstanceEditor::_create_outline_mesh() { + + Ref<Mesh> mesh = node->get_mesh(); + if (mesh.is_null()) { + err_dialog->set_text(TTR("MeshInstance lacks a Mesh!")); + err_dialog->popup_centered_minsize(); + return; + } + + Ref<Mesh> mesho = mesh->create_outline(outline_size->get_val()); + + if (mesho.is_null()) { + err_dialog->set_text(TTR("Could not create outline!")); + err_dialog->popup_centered_minsize(); + return; + } + + MeshInstance *mi = memnew( MeshInstance ); + mi->set_mesh(mesho); + Node *owner=node->get_owner(); + if (get_tree()->get_edited_scene_root()==node) { + owner=node; + } + + UndoRedo *ur = EditorNode::get_singleton()->get_undo_redo(); + + ur->create_action(TTR("Create Outline")); + + ur->add_do_method(node,"add_child",mi); + ur->add_do_method(mi,"set_owner",owner); + + ur->add_do_reference(mi); + ur->add_undo_method(node,"remove_child",mi); + ur->commit_action(); +} + +void MeshInstanceEditor::_bind_methods() { + + ObjectTypeDB::bind_method("_menu_option",&MeshInstanceEditor::_menu_option); + ObjectTypeDB::bind_method("_create_outline_mesh",&MeshInstanceEditor::_create_outline_mesh); +} + +MeshInstanceEditor::MeshInstanceEditor() { + + + options = memnew( MenuButton ); + SpatialEditor::get_singleton()->add_control_to_menu_panel(options); + + options->set_text("Mesh"); + options->set_icon(EditorNode::get_singleton()->get_gui_base()->get_icon("MeshInstance","EditorIcons")); + + options->get_popup()->add_item(TTR("Create Trimesh Static Body"),MENU_OPTION_CREATE_STATIC_TRIMESH_BODY); + options->get_popup()->add_item(TTR("Create Convex Static Body"),MENU_OPTION_CREATE_STATIC_CONVEX_BODY); + options->get_popup()->add_separator(); + options->get_popup()->add_item(TTR("Create Trimesh Collision Sibling"),MENU_OPTION_CREATE_TRIMESH_COLLISION_SHAPE); + options->get_popup()->add_item(TTR("Create Convex Collision Sibling"),MENU_OPTION_CREATE_CONVEX_COLLISION_SHAPE); + options->get_popup()->add_separator(); + options->get_popup()->add_item(TTR("Create Navigation Mesh"),MENU_OPTION_CREATE_NAVMESH); + options->get_popup()->add_separator(); + options->get_popup()->add_item(TTR("Create Outline Mesh.."),MENU_OPTION_CREATE_OUTLINE_MESH); + + options->get_popup()->connect("item_pressed", this,"_menu_option"); + + outline_dialog = memnew( ConfirmationDialog ); + outline_dialog->set_title(TTR("Create Outline Mesh")); + outline_dialog->get_ok()->set_text(TTR("Create")); + + VBoxContainer *outline_dialog_vbc = memnew( VBoxContainer ); + outline_dialog->add_child(outline_dialog_vbc); + outline_dialog->set_child_rect(outline_dialog_vbc); + + outline_size = memnew( SpinBox ); + outline_size->set_min(0.001); + outline_size->set_max(1024); + outline_size->set_step(0.001); + outline_size->set_val(0.05); + outline_dialog_vbc->add_margin_child(TTR("Outline Size:"),outline_size); + + add_child(outline_dialog); + outline_dialog->connect("confirmed",this,"_create_outline_mesh"); + + err_dialog = memnew( AcceptDialog ); + add_child(err_dialog); + +} + + +void MeshInstanceEditorPlugin::edit(Object *p_object) { + + mesh_editor->edit(p_object->cast_to<MeshInstance>()); +} + +bool MeshInstanceEditorPlugin::handles(Object *p_object) const { + + return p_object->is_type("MeshInstance"); +} + +void MeshInstanceEditorPlugin::make_visible(bool p_visible) { + + if (p_visible) { + mesh_editor->options->show(); + } else { + + mesh_editor->options->hide(); + mesh_editor->edit(NULL); + } + +} + +MeshInstanceEditorPlugin::MeshInstanceEditorPlugin(EditorNode *p_node) { + + editor=p_node; + mesh_editor = memnew( MeshInstanceEditor ); + editor->get_viewport()->add_child(mesh_editor); + + mesh_editor->options->hide(); +} + + +MeshInstanceEditorPlugin::~MeshInstanceEditorPlugin() +{ +} + + diff --git a/tools/editor/plugins/mesh_instance_editor_plugin.h b/tools/editor/plugins/mesh_instance_editor_plugin.h new file mode 100644 index 0000000000..a698cf382f --- /dev/null +++ b/tools/editor/plugins/mesh_instance_editor_plugin.h @@ -0,0 +1,69 @@ +#ifndef MESH_INSTANCE_EDITOR_PLUGIN_H +#define MESH_INSTANCE_EDITOR_PLUGIN_H + + +#include "tools/editor/editor_plugin.h" +#include "tools/editor/editor_node.h" +#include "scene/3d/mesh_instance.h" +#include "scene/gui/spin_box.h" + + +class MeshInstanceEditor : public Node { + + OBJ_TYPE(MeshInstanceEditor, Node ); + + + enum Menu { + + MENU_OPTION_CREATE_STATIC_TRIMESH_BODY, + MENU_OPTION_CREATE_STATIC_CONVEX_BODY, + MENU_OPTION_CREATE_TRIMESH_COLLISION_SHAPE, + MENU_OPTION_CREATE_CONVEX_COLLISION_SHAPE, + MENU_OPTION_CREATE_NAVMESH, + MENU_OPTION_CREATE_OUTLINE_MESH, + }; + + MeshInstance *node; + + MenuButton *options; + + ConfirmationDialog *outline_dialog; + SpinBox *outline_size; + + AcceptDialog *err_dialog; + + void _menu_option(int p_option); + void _create_outline_mesh(); + +friend class MeshInstanceEditorPlugin; + +protected: + void _node_removed(Node *p_node); + static void _bind_methods(); +public: + + void edit(MeshInstance *p_mesh); + MeshInstanceEditor(); +}; + +class MeshInstanceEditorPlugin : public EditorPlugin { + + OBJ_TYPE( MeshInstanceEditorPlugin, EditorPlugin ); + + MeshInstanceEditor *mesh_editor; + EditorNode *editor; + +public: + + virtual String get_name() const { return "MeshInstance"; } + bool has_main_screen() const { return false; } + virtual void edit(Object *p_node); + virtual bool handles(Object *p_node) const; + virtual void make_visible(bool p_visible); + + MeshInstanceEditorPlugin(EditorNode *p_node); + ~MeshInstanceEditorPlugin(); + +}; + +#endif // MESH_EDITOR_PLUGIN_H diff --git a/tools/editor/plugins/sample_editor_plugin.cpp b/tools/editor/plugins/sample_editor_plugin.cpp index 3a54273d14..a3891a648b 100644 --- a/tools/editor/plugins/sample_editor_plugin.cpp +++ b/tools/editor/plugins/sample_editor_plugin.cpp @@ -328,7 +328,7 @@ void SampleEditor::_update_sample() { return; //bye or unsupported generate_preview_texture(sample,peakdisplay); - info_label->set_text(TTR("Length:")+" "+vformat(TTR("%d frames"), sample->get_length())+" ("+String::num(sample->get_length()/(float)sample->get_mix_rate(),2)+" s), "+(sample->get_format()==Sample::FORMAT_PCM16?TTR("16 Bits"):TTR("8 Bits"))+", "+(sample->is_stereo()?TTR("Stereo"):TTR("Mono"))+"."); + info_label->set_text(TTR("Length:")+" "+String::num(sample->get_length()/(float)sample->get_mix_rate(),2)+"s"); library->add_sample("default",sample); } @@ -404,6 +404,8 @@ SampleEditor::SampleEditor() { play->connect("pressed", this,"_play_pressed"); stop->connect("pressed", this,"_stop_pressed"); + set_custom_minimum_size(Size2(1,150)*EDSCALE); + } @@ -438,10 +440,7 @@ SampleEditorPlugin::SampleEditorPlugin(EditorNode *p_node) { editor=p_node; sample_editor = memnew( SampleEditor ); - editor->get_viewport()->add_child(sample_editor); - sample_editor->set_area_as_parent_rect(); - sample_editor->set_anchor( MARGIN_TOP, Control::ANCHOR_END); - sample_editor->set_margin( MARGIN_TOP, 120 ); + add_control_to_container(CONTAINER_PROPERTY_EDITOR_BOTTOM,sample_editor); sample_editor->hide(); diff --git a/tools/editor/plugins/script_editor_plugin.cpp b/tools/editor/plugins/script_editor_plugin.cpp index 8e0bae6c76..2453ff3190 100644 --- a/tools/editor/plugins/script_editor_plugin.cpp +++ b/tools/editor/plugins/script_editor_plugin.cpp @@ -298,6 +298,10 @@ void ScriptTextEditor::_load_theme_settings() { get_text_edit()->add_color_override("number_color",EDITOR_DEF("text_editor/number_color",Color(0.9,0.6,0.0,2))); get_text_edit()->add_color_override("function_color",EDITOR_DEF("text_editor/function_color",Color(0.4,0.6,0.8))); get_text_edit()->add_color_override("member_variable_color",EDITOR_DEF("text_editor/member_variable_color",Color(0.9,0.3,0.3))); + get_text_edit()->add_color_override("mark_color", EDITOR_DEF("text_editor/mark_color", Color(1.0,0.4,0.4,0.4))); + get_text_edit()->add_color_override("breakpoint_color", EDITOR_DEF("text_editor/breakpoint_color", Color(0.8,0.8,0.4,0.2))); + get_text_edit()->add_color_override("search_result_color",EDITOR_DEF("text_editor/search_result_color",Color(0.05,0.25,0.05,1))); + get_text_edit()->add_color_override("search_result_border_color",EDITOR_DEF("text_editor/search_result_border_color",Color(0.1,0.45,0.1,1))); Color keyword_color= EDITOR_DEF("text_editor/keyword_color",Color(0.5,0.0,0.2)); @@ -584,7 +588,7 @@ void ScriptTextEditor::_bind_methods() { } ScriptTextEditor::ScriptTextEditor() { - + get_text_edit()->set_breakpoint_gutter_width(12); } /*** SCRIPT EDITOR ******/ @@ -951,13 +955,30 @@ void ScriptEditor::swap_lines(TextEdit *tx, int line1, int line2) tx->cursor_set_line(line2); } +void ScriptEditor::_file_dialog_action(String p_file) { + + switch (file_dialog_option) { + case FILE_SAVE_THEME_AS: { + if(!EditorSettings::get_singleton()->save_text_editor_theme_as(p_file)) { + editor->show_warning(TTR("Error while saving theme"), TTR("Error saving")); + } + } break; + case FILE_IMPORT_THEME: { + if(!EditorSettings::get_singleton()->import_text_editor_theme(p_file)) { + editor->show_warning(TTR("Error importing theme"), TTR("Error importing")); + } + } break; + } + file_dialog_option = -1; +} + void ScriptEditor::_menu_option(int p_option) { switch(p_option) { case FILE_NEW: { script_create_dialog->config("Node", ".gd"); - script_create_dialog->popup_centered(Size2(300, 300)); + script_create_dialog->popup_centered(Size2(300, 300)*EDSCALE); } break; case FILE_OPEN: { @@ -990,6 +1011,33 @@ void ScriptEditor::_menu_option(int p_option) { #endif } break; + case FILE_IMPORT_THEME: { + file_dialog->set_mode(EditorFileDialog::MODE_OPEN_FILE); + file_dialog->set_access(EditorFileDialog::ACCESS_FILESYSTEM); + file_dialog_option = FILE_IMPORT_THEME; + file_dialog->clear_filters(); + file_dialog->add_filter("*.tet"); + file_dialog->popup_centered_ratio(); + file_dialog->set_title(TTR("Import Theme")); + } break; + case FILE_RELOAD_THEME: { + EditorSettings::get_singleton()->load_text_editor_theme(); + } break; + case FILE_SAVE_THEME: { + if(!EditorSettings::get_singleton()->save_text_editor_theme()) { + editor->show_warning(TTR("Error while saving theme"), TTR("Error saving")); + } + } break; + case FILE_SAVE_THEME_AS: { + file_dialog->set_mode(EditorFileDialog::MODE_SAVE_FILE); + file_dialog->set_access(EditorFileDialog::ACCESS_FILESYSTEM); + file_dialog_option = FILE_SAVE_THEME_AS; + file_dialog->clear_filters(); + file_dialog->add_filter("*.tet"); + file_dialog->set_current_path(EditorSettings::get_singleton()->get_settings_path() + "/text_editor_themes/" + EditorSettings::get_singleton()->get("text_editor/color_theme")); + file_dialog->popup_centered_ratio(); + file_dialog->set_title(TTR("Save Theme As..")); + } break; case SEARCH_HELP: { help_search_dialog->popup(); @@ -1052,7 +1100,7 @@ void ScriptEditor::_menu_option(int p_option) { switch(p_option) { case FILE_NEW: { script_create_dialog->config("Node", ".gd"); - script_create_dialog->popup_centered(Size2(300, 300)); + script_create_dialog->popup_centered(Size2(300, 300)*EDSCALE); } break; case FILE_SAVE: { @@ -1359,18 +1407,19 @@ void ScriptEditor::_menu_option(int p_option) { } break; case SEARCH_FIND: { - find_replace_dialog->set_text_edit(current->get_text_edit()); - find_replace_dialog->popup_search(); + current->get_find_replace_bar()->popup_search(); } break; case SEARCH_FIND_NEXT: { - find_replace_dialog->set_text_edit(current->get_text_edit()); - find_replace_dialog->search_next(); + current->get_find_replace_bar()->search_next(); + } break; + case SEARCH_FIND_PREV: { + + current->get_find_replace_bar()->search_prev(); } break; case SEARCH_REPLACE: { - find_replace_dialog->set_text_edit(current->get_text_edit()); - find_replace_dialog->popup_replace(); + current->get_find_replace_bar()->popup_replace(); } break; case SEARCH_LOCATE_FUNCTION: { @@ -1388,6 +1437,61 @@ void ScriptEditor::_menu_option(int p_option) { current->get_text_edit()->set_line_as_breakpoint(line,dobreak); get_debugger()->set_breakpoint(current->get_edited_script()->get_path(),line+1,dobreak); } break; + case DEBUG_REMOVE_ALL_BREAKPOINTS: { + List<int> bpoints; + current->get_text_edit()->get_breakpoints(&bpoints); + + for(List<int>::Element *E=bpoints.front();E;E=E->next()) { + int line = E->get(); + bool dobreak = !current->get_text_edit()->is_line_set_as_breakpoint(line); + current->get_text_edit()->set_line_as_breakpoint(line,dobreak); + get_debugger()->set_breakpoint(current->get_edited_script()->get_path(),line+1,dobreak); + } + } + case DEBUG_GOTO_NEXT_BREAKPOINT: { + List<int> bpoints; + current->get_text_edit()->get_breakpoints(&bpoints); + if (bpoints.size() <= 0) { + return; + } + + int line=current->get_text_edit()->cursor_get_line(); + // wrap around + if (line >= bpoints[bpoints.size() - 1]) { + current->get_text_edit()->cursor_set_line(bpoints[0]); + } else { + for(List<int>::Element *E=bpoints.front();E;E=E->next()) { + int bline = E->get(); + if (bline > line) { + current->get_text_edit()->cursor_set_line(bline); + return; + } + } + } + + } break; + case DEBUG_GOTO_PREV_BREAKPOINT: { + List<int> bpoints; + current->get_text_edit()->get_breakpoints(&bpoints); + if (bpoints.size() <= 0) { + return; + } + + int line=current->get_text_edit()->cursor_get_line(); + // wrap around + if (line <= bpoints[0]) { + current->get_text_edit()->cursor_set_line(bpoints[bpoints.size() - 1]); + } else { + for(List<int>::Element *E=bpoints.back();E;E=E->prev()) { + int bline = E->get(); + if (bline < line) { + current->get_text_edit()->cursor_set_line(bline); + return; + } + } + } + + } break; case DEBUG_NEXT: { if (debugger) @@ -1988,6 +2092,7 @@ void ScriptEditor::edit(const Ref<Script>& p_script) { ste->get_text_edit()->set_highlight_all_occurrences(EditorSettings::get_singleton()->get("text_editor/highlight_all_occurrences")); ste->get_text_edit()->cursor_set_blink_enabled(EditorSettings::get_singleton()->get("text_editor/caret_blink")); ste->get_text_edit()->cursor_set_blink_speed(EditorSettings::get_singleton()->get("text_editor/caret_blink_speed")); + ste->get_text_edit()->set_draw_breakpoint_gutter(EditorSettings::get_singleton()->get("text_editor/show_breakpoint_gutter")); ste->get_text_edit()->set_callhint_settings( EditorSettings::get_singleton()->get("text_editor/put_callhint_tooltip_below_current_line"), EditorSettings::get_singleton()->get("text_editor/callhint_tooltip_offset")); @@ -2122,6 +2227,13 @@ void ScriptEditor::_editor_settings_changed() { autosave_timer->stop(); } + if (current_theme == "") { + current_theme = EditorSettings::get_singleton()->get("text_editor/color_theme"); + } else if (current_theme != EditorSettings::get_singleton()->get("text_editor/color_theme")) { + current_theme = EditorSettings::get_singleton()->get("text_editor/color_theme"); + EditorSettings::get_singleton()->load_text_editor_theme(); + } + for(int i=0;i<tab_container->get_child_count();i++) { ScriptTextEditor *ste = tab_container->get_child(i)->cast_to<ScriptTextEditor>(); @@ -2137,6 +2249,7 @@ void ScriptEditor::_editor_settings_changed() { ste->get_text_edit()->set_highlight_all_occurrences(EditorSettings::get_singleton()->get("text_editor/highlight_all_occurrences")); ste->get_text_edit()->cursor_set_blink_enabled(EditorSettings::get_singleton()->get("text_editor/caret_blink")); ste->get_text_edit()->cursor_set_blink_speed(EditorSettings::get_singleton()->get("text_editor/caret_blink_speed")); + ste->get_text_edit()->set_draw_breakpoint_gutter(EditorSettings::get_singleton()->get("text_editor/show_breakpoint_gutter")); } } @@ -2364,6 +2477,7 @@ void ScriptEditor::set_scene_root_script( Ref<Script> p_script ) { void ScriptEditor::_bind_methods() { + ObjectTypeDB::bind_method("_file_dialog_action",&ScriptEditor::_file_dialog_action); ObjectTypeDB::bind_method("_tab_changed",&ScriptEditor::_tab_changed); ObjectTypeDB::bind_method("_menu_option",&ScriptEditor::_menu_option); ObjectTypeDB::bind_method("_close_current_tab",&ScriptEditor::_close_current_tab); @@ -2395,6 +2509,8 @@ void ScriptEditor::_bind_methods() { ScriptEditor::ScriptEditor(EditorNode *p_editor) { + current_theme = ""; + completion_cache = memnew( EditorScriptCodeCompletionCache ); restoring_layout=false; waiting_update_names=false; @@ -2433,6 +2549,11 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { file_menu->get_popup()->add_item(TTR("History Prev"),WINDOW_PREV,KEY_MASK_CTRL|KEY_MASK_ALT|KEY_LEFT); file_menu->get_popup()->add_item(TTR("History Next"),WINDOW_NEXT,KEY_MASK_CTRL|KEY_MASK_ALT|KEY_RIGHT); file_menu->get_popup()->add_separator(); + file_menu->get_popup()->add_item(TTR("Import Theme"), FILE_IMPORT_THEME); + file_menu->get_popup()->add_item(TTR("Reload Theme"), FILE_RELOAD_THEME); + file_menu->get_popup()->add_item(TTR("Save Theme"), FILE_SAVE_THEME); + file_menu->get_popup()->add_item(TTR("Save Theme As"), FILE_SAVE_THEME_AS); + file_menu->get_popup()->add_separator(); file_menu->get_popup()->add_item(TTR("Close"),FILE_CLOSE,KEY_MASK_CMD|KEY_W); file_menu->get_popup()->connect("item_pressed", this,"_menu_option"); @@ -2470,6 +2591,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { search_menu->set_text(TTR("Search")); search_menu->get_popup()->add_item(TTR("Find.."),SEARCH_FIND,KEY_MASK_CMD|KEY_F); search_menu->get_popup()->add_item(TTR("Find Next"),SEARCH_FIND_NEXT,KEY_F3); + search_menu->get_popup()->add_item(TTR("Find Previous"),SEARCH_FIND_PREV,KEY_MASK_SHIFT|KEY_F3); search_menu->get_popup()->add_item(TTR("Replace.."),SEARCH_REPLACE,KEY_MASK_CMD|KEY_R); search_menu->get_popup()->add_separator(); search_menu->get_popup()->add_item(TTR("Goto Function.."),SEARCH_LOCATE_FUNCTION,KEY_MASK_SHIFT|KEY_MASK_CMD|KEY_F); @@ -2489,6 +2611,9 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { menu_hb->add_child(debug_menu); debug_menu->set_text(TTR("Debug")); debug_menu->get_popup()->add_item(TTR("Toggle Breakpoint"),DEBUG_TOGGLE_BREAKPOINT,KEY_F9); + debug_menu->get_popup()->add_item(TTR("Remove All Breakpoints"), DEBUG_REMOVE_ALL_BREAKPOINTS, KEY_MASK_CTRL|KEY_MASK_SHIFT|KEY_F9); + debug_menu->get_popup()->add_item(TTR("Goto Next Breakpoint"), DEBUG_GOTO_NEXT_BREAKPOINT, KEY_MASK_CTRL|KEY_PERIOD); + debug_menu->get_popup()->add_item(TTR("Goto Previous Breakpoint"), DEBUG_GOTO_PREV_BREAKPOINT, KEY_MASK_CTRL|KEY_COMMA); debug_menu->get_popup()->add_separator(); debug_menu->get_popup()->add_item(TTR("Step Over"),DEBUG_NEXT,KEY_F10); debug_menu->get_popup()->add_item(TTR("Step Into"),DEBUG_STEP,KEY_F11); @@ -2574,9 +2699,6 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { tab_container->connect("tab_changed", this,"_tab_changed"); - find_replace_dialog = memnew(FindReplaceDialog); - add_child(find_replace_dialog); - erase_tab_confirm = memnew( ConfirmationDialog ); add_child(erase_tab_confirm); erase_tab_confirm->connect("confirmed", this,"_close_current_tab"); @@ -2586,6 +2708,11 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { add_child(script_create_dialog); script_create_dialog->connect("script_created", this, "_script_created"); + file_dialog_option = -1; + file_dialog = memnew( EditorFileDialog ); + add_child(file_dialog); + file_dialog->connect("file_selected", this,"_file_dialog_action"); + goto_line_dialog = memnew(GotoLineDialog); add_child(goto_line_dialog); diff --git a/tools/editor/plugins/script_editor_plugin.h b/tools/editor/plugins/script_editor_plugin.h index 68aef4d39c..cbcfd9a77e 100644 --- a/tools/editor/plugins/script_editor_plugin.h +++ b/tools/editor/plugins/script_editor_plugin.h @@ -122,6 +122,10 @@ class ScriptEditor : public VBoxContainer { FILE_SAVE, FILE_SAVE_AS, FILE_SAVE_ALL, + FILE_IMPORT_THEME, + FILE_RELOAD_THEME, + FILE_SAVE_THEME, + FILE_SAVE_THEME_AS, FILE_CLOSE, EDIT_UNDO, EDIT_REDO, @@ -140,6 +144,7 @@ class ScriptEditor : public VBoxContainer { EDIT_CLONE_DOWN, SEARCH_FIND, SEARCH_FIND_NEXT, + SEARCH_FIND_PREV, SEARCH_REPLACE, SEARCH_LOCATE_FUNCTION, SEARCH_GOTO_LINE, @@ -147,6 +152,9 @@ class ScriptEditor : public VBoxContainer { SEARCH_CLASSES, SEARCH_WEBSITE, DEBUG_TOGGLE_BREAKPOINT, + DEBUG_REMOVE_ALL_BREAKPOINTS, + DEBUG_GOTO_NEXT_BREAKPOINT, + DEBUG_GOTO_PREV_BREAKPOINT, DEBUG_NEXT, DEBUG_STEP, DEBUG_BREAK, @@ -179,13 +187,15 @@ class ScriptEditor : public VBoxContainer { ItemList *script_list; HSplitContainer *script_split; TabContainer *tab_container; - FindReplaceDialog *find_replace_dialog; + EditorFileDialog *file_dialog; GotoLineDialog *goto_line_dialog; ConfirmationDialog *erase_tab_confirm; ScriptCreateDialog *script_create_dialog; ScriptEditorDebugger* debugger; ToolButton *scripts_visible; + String current_theme; + TextureFrame *script_icon; Label *script_name_label; @@ -277,6 +287,8 @@ class ScriptEditor : public VBoxContainer { void _update_script_colors(); void _update_modified_scripts_for_external_editor(); + int file_dialog_option; + void _file_dialog_action(String p_file); static ScriptEditor *script_editor; protected: diff --git a/tools/editor/plugins/shader_editor_plugin.cpp b/tools/editor/plugins/shader_editor_plugin.cpp index c1069c77f1..0ca6a069bc 100644 --- a/tools/editor/plugins/shader_editor_plugin.cpp +++ b/tools/editor/plugins/shader_editor_plugin.cpp @@ -88,6 +88,10 @@ void ShaderTextEditor::_load_theme_settings() { get_text_edit()->add_color_override("number_color",EDITOR_DEF("text_editor/number_color",Color(0.9,0.6,0.0,2))); get_text_edit()->add_color_override("function_color",EDITOR_DEF("text_editor/function_color",Color(0.4,0.6,0.8))); get_text_edit()->add_color_override("member_variable_color",EDITOR_DEF("text_editor/member_variable_color",Color(0.9,0.3,0.3))); + get_text_edit()->add_color_override("mark_color", EDITOR_DEF("text_editor/mark_color", Color(1.0,0.4,0.4,0.4))); + get_text_edit()->add_color_override("breakpoint_color", EDITOR_DEF("text_editor/breakpoint_color", Color(0.8,0.8,0.4,0.2))); + get_text_edit()->add_color_override("search_result_color",EDITOR_DEF("text_editor/search_result_color",Color(0.05,0.25,0.05,1))); + get_text_edit()->add_color_override("search_result_border_color",EDITOR_DEF("text_editor/search_result_border_color",Color(0.1,0.45,0.1,1))); Color keyword_color= EDITOR_DEF("text_editor/keyword_color",Color(0.5,0.0,0.2)); @@ -210,18 +214,19 @@ void ShaderEditor::_menu_option(int p_option) { } break; case SEARCH_FIND: { - find_replace_dialog->set_text_edit(current->get_text_edit()); - find_replace_dialog->popup_search(); + current->get_find_replace_bar()->popup_search(); } break; case SEARCH_FIND_NEXT: { - find_replace_dialog->set_text_edit(current->get_text_edit()); - find_replace_dialog->search_next(); + current->get_find_replace_bar()->search_next(); + } break; + case SEARCH_FIND_PREV: { + + current->get_find_replace_bar()->search_prev(); } break; case SEARCH_REPLACE: { - find_replace_dialog->set_text_edit(current->get_text_edit()); - find_replace_dialog->popup_replace(); + current->get_find_replace_bar()->popup_replace(); } break; // case SEARCH_LOCATE_SYMBOL: { @@ -505,6 +510,7 @@ ShaderEditor::ShaderEditor() { search_menu->set_text(TTR("Search")); search_menu->get_popup()->add_item(TTR("Find.."),SEARCH_FIND,KEY_MASK_CMD|KEY_F); search_menu->get_popup()->add_item(TTR("Find Next"),SEARCH_FIND_NEXT,KEY_F3); + search_menu->get_popup()->add_item(TTR("Find Previous"),SEARCH_FIND_PREV,KEY_MASK_SHIFT|KEY_F3); search_menu->get_popup()->add_item(TTR("Replace.."),SEARCH_REPLACE,KEY_MASK_CMD|KEY_R); search_menu->get_popup()->add_separator(); // search_menu->get_popup()->add_item("Locate Symbol..",SEARCH_LOCATE_SYMBOL,KEY_MASK_CMD|KEY_K); @@ -514,9 +520,6 @@ ShaderEditor::ShaderEditor() { tab_container->connect("tab_changed", this,"_tab_changed"); - find_replace_dialog = memnew(FindReplaceDialog); - add_child(find_replace_dialog); - erase_tab_confirm = memnew( ConfirmationDialog ); add_child(erase_tab_confirm); erase_tab_confirm->connect("confirmed", this,"_close_current_tab"); diff --git a/tools/editor/plugins/shader_editor_plugin.h b/tools/editor/plugins/shader_editor_plugin.h index e10c10a446..9219a1fbc2 100644 --- a/tools/editor/plugins/shader_editor_plugin.h +++ b/tools/editor/plugins/shader_editor_plugin.h @@ -76,6 +76,7 @@ class ShaderEditor : public Control { EDIT_SELECT_ALL, SEARCH_FIND, SEARCH_FIND_NEXT, + SEARCH_FIND_PREV, SEARCH_REPLACE, //SEARCH_LOCATE_SYMBOL, SEARCH_GOTO_LINE, @@ -88,7 +89,6 @@ class ShaderEditor : public Control { uint64_t idle; TabContainer *tab_container; - FindReplaceDialog *find_replace_dialog; GotoLineDialog *goto_line_dialog; ConfirmationDialog *erase_tab_confirm; diff --git a/tools/editor/plugins/spatial_editor_plugin.cpp b/tools/editor/plugins/spatial_editor_plugin.cpp index 55485d8c92..f32d0448a2 100644 --- a/tools/editor/plugins/spatial_editor_plugin.cpp +++ b/tools/editor/plugins/spatial_editor_plugin.cpp @@ -3954,7 +3954,7 @@ SpatialEditor::SpatialEditor(EditorNode *p_editor) { PopupMenu *p; transform_menu = memnew( MenuButton ); - transform_menu->set_text("Transform"); + transform_menu->set_text(TTR("Transform")); hbc_menu->add_child( transform_menu ); p = transform_menu->get_popup(); @@ -3979,12 +3979,12 @@ SpatialEditor::SpatialEditor(EditorNode *p_editor) { p->add_check_item(TTR("Use Default sRGB"),MENU_VIEW_USE_DEFAULT_SRGB); p->add_separator(); - p->add_check_item("1 Viewport",MENU_VIEW_USE_1_VIEWPORT,KEY_MASK_CMD+KEY_1); - p->add_check_item("2 Viewports",MENU_VIEW_USE_2_VIEWPORTS,KEY_MASK_CMD+KEY_2); - p->add_check_item("2 Viewports (Alt)",MENU_VIEW_USE_2_VIEWPORTS_ALT,KEY_MASK_SHIFT+KEY_MASK_CMD+KEY_2); - p->add_check_item("3 Viewports",MENU_VIEW_USE_3_VIEWPORTS,KEY_MASK_CMD+KEY_3); - p->add_check_item("3 Viewports (Alt)",MENU_VIEW_USE_3_VIEWPORTS_ALT,KEY_MASK_SHIFT+KEY_MASK_CMD+KEY_3); - p->add_check_item("4 Viewports",MENU_VIEW_USE_4_VIEWPORTS,KEY_MASK_CMD+KEY_4); + p->add_check_item(TTR("1 Viewport"),MENU_VIEW_USE_1_VIEWPORT,KEY_MASK_CMD+KEY_1); + p->add_check_item(TTR("2 Viewports"),MENU_VIEW_USE_2_VIEWPORTS,KEY_MASK_CMD+KEY_2); + p->add_check_item(TTR("2 Viewports (Alt)"),MENU_VIEW_USE_2_VIEWPORTS_ALT,KEY_MASK_SHIFT+KEY_MASK_CMD+KEY_2); + p->add_check_item(TTR("3 Viewports"),MENU_VIEW_USE_3_VIEWPORTS,KEY_MASK_CMD+KEY_3); + p->add_check_item(TTR("3 Viewports (Alt)"),MENU_VIEW_USE_3_VIEWPORTS_ALT,KEY_MASK_SHIFT+KEY_MASK_CMD+KEY_3); + p->add_check_item(TTR("4 Viewports"),MENU_VIEW_USE_4_VIEWPORTS,KEY_MASK_CMD+KEY_4); p->add_separator(); p->add_check_item(TTR("Display Normal"),MENU_VIEW_DISPLAY_NORMAL); diff --git a/tools/editor/plugins/sprite_region_editor_plugin.cpp b/tools/editor/plugins/sprite_region_editor_plugin.cpp index 5e7816ffb5..802a12eedd 100644 --- a/tools/editor/plugins/sprite_region_editor_plugin.cpp +++ b/tools/editor/plugins/sprite_region_editor_plugin.cpp @@ -386,6 +386,7 @@ void SpriteRegionEditor::_edit_node() rect=node->get_region_rect(); dlg_editor->popup_centered_ratio(0.85); + dlg_editor->get_ok()->release_focus(); } inline float _snap_scalar(float p_offset, float p_step, float p_target) { @@ -416,6 +417,7 @@ SpriteRegionEditor::SpriteRegionEditor(EditorNode* p_editor) add_child( memnew( VSeparator )); edit_node = memnew( ToolButton ); add_child(edit_node); + edit_node->set_tooltip(TTR("Sprite Region Editor")); edit_node->connect("pressed",this,"_edit_node"); dlg_editor = memnew( AcceptDialog ); diff --git a/tools/editor/plugins/texture_editor_plugin.cpp b/tools/editor/plugins/texture_editor_plugin.cpp new file mode 100644 index 0000000000..1305e91105 --- /dev/null +++ b/tools/editor/plugins/texture_editor_plugin.cpp @@ -0,0 +1,141 @@ +#include "texture_editor_plugin.h" + +#include "io/resource_loader.h" +#include "globals.h" +#include "tools/editor/editor_settings.h" + +void TextureEditor::_input_event(InputEvent p_event) { + + +} + +void TextureEditor::_notification(int p_what) { + + if (p_what==NOTIFICATION_FIXED_PROCESS) { + + } + + + if (p_what==NOTIFICATION_READY) { + + //get_scene()->connect("node_removed",this,"_node_removed"); + + } + + if (p_what==NOTIFICATION_DRAW) { + + + Ref<Texture> checkerboard = get_icon("Checkerboard","EditorIcons"); + Size2 size = get_size(); + + draw_texture_rect(checkerboard,Rect2(Point2(),size),true); + + int tex_width = texture->get_width() * size.height / texture ->get_height(); + int tex_height = size.height; + + if (tex_width>size.width) { + tex_width=size.width; + tex_height=texture->get_height() * tex_width / texture->get_width(); + } + + int ofs_x = (size.width - tex_width)/2; + int ofs_y = (size.height - tex_height)/2; + + draw_texture_rect(texture,Rect2(ofs_x,ofs_y,tex_width,tex_height)); + + Ref<Font> font = get_font("font","Label"); + + String format; + if (texture->cast_to<ImageTexture>()) { + format = Image::get_format_name(texture->cast_to<ImageTexture>()->get_format()); + } else { + format=texture->get_type(); + } + String text = itos(texture->get_width())+"x"+itos(texture->get_height())+" "+format; + + Size2 rect = font->get_string_size(text); + + Vector2 draw_from = size-rect+Size2(-2,font->get_ascent()-2); + if (draw_from.x<0) + draw_from.x=0; + + draw_string(font,draw_from+Vector2(2,2),text,Color(0,0,0,0.5),size.width); + draw_string(font,draw_from-Vector2(2,2),text,Color(0,0,0,0.5),size.width); + draw_string(font,draw_from,text,Color(1,1,1,1),size.width); + } +} + + + +void TextureEditor::edit(Ref<Texture> p_texture) { + + texture=p_texture; + + if (!texture.is_null()) + update(); + else { + + hide(); + } + +} + + + +void TextureEditor::_bind_methods() { + + ObjectTypeDB::bind_method(_MD("_input_event"),&TextureEditor::_input_event); + +} + +TextureEditor::TextureEditor() { + + set_custom_minimum_size(Size2(1,150)); + +} + + +void TextureEditorPlugin::edit(Object *p_object) { + + Texture * s = p_object->cast_to<Texture>(); + if (!s) + return; + + texture_editor->edit(Ref<Texture>(s)); +} + +bool TextureEditorPlugin::handles(Object *p_object) const { + + return p_object->is_type("Texture"); +} + +void TextureEditorPlugin::make_visible(bool p_visible) { + + if (p_visible) { + texture_editor->show(); +// texture_editor->set_process(true); + } else { + + texture_editor->hide(); +// texture_editor->set_process(false); + } + +} + +TextureEditorPlugin::TextureEditorPlugin(EditorNode *p_node) { + + editor=p_node; + texture_editor = memnew( TextureEditor ); + add_control_to_container(CONTAINER_PROPERTY_EDITOR_BOTTOM,texture_editor); + texture_editor->hide(); + + + +} + + +TextureEditorPlugin::~TextureEditorPlugin() +{ +} + + diff --git a/tools/editor/plugins/texture_editor_plugin.h b/tools/editor/plugins/texture_editor_plugin.h new file mode 100644 index 0000000000..5f58f4fcdb --- /dev/null +++ b/tools/editor/plugins/texture_editor_plugin.h @@ -0,0 +1,49 @@ +#ifndef TEXTURE_EDITOR_PLUGIN_H +#define TEXTURE_EDITOR_PLUGIN_H + + + +#include "tools/editor/editor_plugin.h" +#include "tools/editor/editor_node.h" +#include "scene/resources/texture.h" + + +class TextureEditor : public Control { + + OBJ_TYPE(TextureEditor, Control); + + + Ref<Texture> texture; + +protected: + void _notification(int p_what); + void _input_event(InputEvent p_event); + static void _bind_methods(); +public: + + void edit(Ref<Texture> p_texture); + TextureEditor(); +}; + + +class TextureEditorPlugin : public EditorPlugin { + + OBJ_TYPE( TextureEditorPlugin, EditorPlugin ); + + TextureEditor *texture_editor; + EditorNode *editor; + +public: + + virtual String get_name() const { return "Texture"; } + bool has_main_screen() const { return false; } + virtual void edit(Object *p_node); + virtual bool handles(Object *p_node) const; + virtual void make_visible(bool p_visible); + + TextureEditorPlugin(EditorNode *p_node); + ~TextureEditorPlugin(); + +}; + +#endif // TEXTURE_EDITOR_PLUGIN_H diff --git a/tools/editor/plugins/tile_map_editor_plugin.cpp b/tools/editor/plugins/tile_map_editor_plugin.cpp index b1ddac7076..6d5f2a519c 100644 --- a/tools/editor/plugins/tile_map_editor_plugin.cpp +++ b/tools/editor/plugins/tile_map_editor_plugin.cpp @@ -205,7 +205,9 @@ void TileMapEditor::_update_palette() { if (tiles.empty()) return; + palette->set_max_columns(0); + palette->add_constant_override("hseparation", 6); palette->set_icon_mode(ItemList::ICON_MODE_TOP); palette->set_max_text_lines(2); @@ -239,6 +241,8 @@ void TileMapEditor::_update_palette() { palette->set_item_metadata(palette->get_item_count()-1, E->get()); } + + palette->set_same_column_width(true); if (selected != -1) set_selected_tile(selected); @@ -1208,6 +1212,13 @@ void TileMapEditor::_tileset_settings_changed() { canvas_item_editor->update(); } +void TileMapEditor::_icon_size_changed(float p_value) { + if (node) { + palette->set_icon_scale(p_value); + _update_palette(); + } +} + void TileMapEditor::_bind_methods() { ObjectTypeDB::bind_method(_MD("_text_entered"),&TileMapEditor::_text_entered); @@ -1222,6 +1233,8 @@ void TileMapEditor::_bind_methods() { ObjectTypeDB::bind_method(_MD("_fill_points"),&TileMapEditor::_fill_points); ObjectTypeDB::bind_method(_MD("_erase_points"),&TileMapEditor::_erase_points); + + ObjectTypeDB::bind_method(_MD("_icon_size_changed"), &TileMapEditor::_icon_size_changed); } TileMapEditor::CellOp TileMapEditor::_get_op_from_cell(const Point2i& p_pos) @@ -1297,6 +1310,15 @@ TileMapEditor::TileMapEditor(EditorNode *p_editor) { search_box->connect("input_event", this, "_sbox_input"); add_child(search_box); + size_slider = memnew( HSlider ); + size_slider->set_h_size_flags(SIZE_EXPAND_FILL); + size_slider->set_min(0.1f); + size_slider->set_max(4.0f); + size_slider->set_step(0.1f); + size_slider->set_val(1.0f); + size_slider->connect("value_changed", this, "_icon_size_changed"); + add_child(size_slider); + int mw = EDITOR_DEF("tile_map/palette_min_width", 80); // Add tile palette diff --git a/tools/editor/plugins/tile_map_editor_plugin.h b/tools/editor/plugins/tile_map_editor_plugin.h index 92b54a4cbb..f586c5bf13 100644 --- a/tools/editor/plugins/tile_map_editor_plugin.h +++ b/tools/editor/plugins/tile_map_editor_plugin.h @@ -76,6 +76,7 @@ class TileMapEditor : public VBoxContainer { Control *canvas_item_editor; LineEdit *search_box; + HSlider *size_slider; ItemList *palette; HBoxContainer *toolbar; @@ -151,6 +152,7 @@ class TileMapEditor : public VBoxContainer { void _canvas_mouse_enter(); void _canvas_mouse_exit(); void _tileset_settings_changed(); + void _icon_size_changed(float p_value); protected: diff --git a/tools/editor/progress_dialog.cpp b/tools/editor/progress_dialog.cpp index 2814101a27..a950f7acfc 100644 --- a/tools/editor/progress_dialog.cpp +++ b/tools/editor/progress_dialog.cpp @@ -30,7 +30,7 @@ #include "main/main.h" #include "message_queue.h" #include "os/os.h" - +#include "editor_scale.h" void BackgroundProgress::_add_task(const String& p_task,const String& p_label, int p_steps) { _THREAD_SAFE_METHOD_ @@ -48,7 +48,7 @@ void BackgroundProgress::_add_task(const String& p_task,const String& p_label, i ec->set_v_size_flags(SIZE_EXPAND_FILL); t.progress->set_area_as_parent_rect(); ec->add_child(t.progress); - ec->set_custom_minimum_size(Size2(80,5)); + ec->set_custom_minimum_size(Size2(80,5)*EDSCALE); t.hb->add_child(ec); add_child(t.hb); @@ -160,7 +160,7 @@ void ProgressDialog::_notification(int p_what) { void ProgressDialog::_popup() { Size2 ms = main->get_combined_minimum_size(); - ms.width = MAX(500,ms.width); + ms.width = MAX(500*EDSCALE,ms.width); Ref<StyleBox> style = get_stylebox("panel","PopupMenu"); diff --git a/tools/editor/project_export.cpp b/tools/editor/project_export.cpp index dea15ebd35..7f016ead2d 100644 --- a/tools/editor/project_export.cpp +++ b/tools/editor/project_export.cpp @@ -1384,7 +1384,7 @@ ProjectExportDialog::ProjectExportDialog(EditorNode *p_editor) { group_images->set_column_expand(1,false); group_images->set_column_min_width(1,100); group_images->set_column_titles_visible(true); - group_images->set_column_title(0,"Image"); + group_images->set_column_title(0,TTR("Images")); group_images->set_column_title(1,TTR("Group")); group_images->connect("item_edited",this,"_group_item_edited",varray(),CONNECT_DEFERRED); @@ -1427,7 +1427,7 @@ ProjectExportDialog::ProjectExportDialog(EditorNode *p_editor) { sample_vbox->add_margin_child(TTR("Trailing Silence:"),sample_trim); script_vbox = memnew( VBoxContainer ); - script_vbox->set_name("Script"); + script_vbox->set_name(TTR("Script")); sections->add_child(script_vbox); script_mode = memnew( OptionButton ); script_vbox->add_margin_child(TTR("Script Export Mode:"),script_mode); diff --git a/tools/editor/project_manager.cpp b/tools/editor/project_manager.cpp index c06a8cd081..af57d5264e 100644 --- a/tools/editor/project_manager.cpp +++ b/tools/editor/project_manager.cpp @@ -1016,7 +1016,7 @@ void ProjectListFilter::_setup_filters() { filter_option->clear(); filter_option->add_item(TTR("Name")); - filter_option->add_item("Path"); + filter_option->add_item(TTR("Path")); } void ProjectListFilter::_command(int p_command) { diff --git a/tools/editor/project_settings.cpp b/tools/editor/project_settings.cpp index 605b12c879..1f49f2a9fc 100644 --- a/tools/editor/project_settings.cpp +++ b/tools/editor/project_settings.cpp @@ -81,10 +81,10 @@ void ProjectSettings::_notification(int p_what) { translation_list->connect("button_pressed",this,"_translation_delete"); _update_actions(); - popup_add->add_icon_item(get_icon("Keyboard","EditorIcons"),"Key",InputEvent::KEY); - popup_add->add_icon_item(get_icon("JoyButton","EditorIcons"),"Joy Button",InputEvent::JOYSTICK_BUTTON); - popup_add->add_icon_item(get_icon("JoyAxis","EditorIcons"),"Joy Axis",InputEvent::JOYSTICK_MOTION); - popup_add->add_icon_item(get_icon("Mouse","EditorIcons"),"Mouse Button",InputEvent::MOUSE_BUTTON); + popup_add->add_icon_item(get_icon("Keyboard","EditorIcons"),TTR("Key "),InputEvent::KEY);//"Key " - because the word 'key' has already been used as a key animation + popup_add->add_icon_item(get_icon("JoyButton","EditorIcons"),TTR("Joy Button"),InputEvent::JOYSTICK_BUTTON); + popup_add->add_icon_item(get_icon("JoyAxis","EditorIcons"),TTR("Joy Axis"),InputEvent::JOYSTICK_MOTION); + popup_add->add_icon_item(get_icon("Mouse","EditorIcons"),TTR("Mouse Button"),InputEvent::MOUSE_BUTTON); List<String> tfn; ResourceLoader::get_recognized_extensions_for_type("Translation",&tfn); @@ -1761,7 +1761,7 @@ ProjectSettings::ProjectSettings(EditorData *p_data) { tmc->add_child(translation_remap_options); translation_remap_options->set_columns(2); - translation_remap_options->set_column_title(0,"Path"); + translation_remap_options->set_column_title(0,TTR("Path")); translation_remap_options->set_column_title(1,TTR("Locale")); translation_remap_options->set_column_titles_visible(true); translation_remap_options->set_column_expand(0,true); @@ -1827,7 +1827,7 @@ ProjectSettings::ProjectSettings(EditorData *p_data) { autoload_list->set_column_title(0,TTR("Name")); autoload_list->set_column_expand(0,true); autoload_list->set_column_min_width(0,100); - autoload_list->set_column_title(1,"Path"); + autoload_list->set_column_title(1,TTR("Path")); autoload_list->set_column_expand(1,true); autoload_list->set_column_min_width(1,100); autoload_list->set_column_title(2,TTR("Singleton")); diff --git a/tools/editor/property_editor.cpp b/tools/editor/property_editor.cpp index afc6396ab3..3258bc6d74 100644 --- a/tools/editor/property_editor.cpp +++ b/tools/editor/property_editor.cpp @@ -306,14 +306,14 @@ bool CustomPropertyEditor::edit(Object* p_owner,const String& p_name,Variant::Ty slider->set_step((type==Variant::REAL) ? step : 1); slider->set_val(v); slider->show(); - set_size(Size2(110,30)); + set_size(Size2(110,30)*EDSCALE); } else { spinbox->set_min(min); spinbox->set_max(max); spinbox->set_step((type==Variant::REAL) ? step : 1); spinbox->set_val(v); spinbox->show(); - set_size(Size2(70,35)); + set_size(Size2(70,35)*EDSCALE); } @@ -339,7 +339,7 @@ bool CustomPropertyEditor::edit(Object* p_owner,const String& p_name,Variant::Ty } - set_size(checks20[19]->get_pos()+Size2(20,25)); + set_size(checks20[19]->get_pos()+Size2(20,25)*EDSCALE); } else if (hint==PROPERTY_HINT_EXP_EASING) { @@ -365,7 +365,7 @@ bool CustomPropertyEditor::edit(Object* p_owner,const String& p_name,Variant::Ty type_button->show(); easing_draw->show(); - set_size(Size2(200,150)); + set_size(Size2(200,150)*EDSCALE); } else if (hint==PROPERTY_HINT_FLAGS) { menu->clear(); Vector<String> flags = hint_text.split(","); @@ -600,7 +600,7 @@ bool CustomPropertyEditor::edit(Object* p_owner,const String& p_name,Variant::Ty color_picker->show(); color_picker->set_edit_alpha(hint!=PROPERTY_HINT_COLOR_NO_ALPHA); color_picker->set_color(v); - set_size( Size2(300, color_picker->get_combined_minimum_size().height+10)); + set_size( Size2(300*EDSCALE, color_picker->get_combined_minimum_size().height+10*EDSCALE)); /* int ofs=80; int m=10; @@ -1673,6 +1673,7 @@ void CustomPropertyEditor::config_value_editors(int p_amount, int p_columns,int } + void CustomPropertyEditor::_bind_methods() { ObjectTypeDB::bind_method("_focus_enter", &CustomPropertyEditor::_focus_enter); @@ -1691,6 +1692,7 @@ void CustomPropertyEditor::_bind_methods() { ObjectTypeDB::bind_method( "_menu_option",&CustomPropertyEditor::_menu_option); + ADD_SIGNAL( MethodInfo("variant_changed") ); ADD_SIGNAL( MethodInfo("resource_edit_request") ); } @@ -2180,6 +2182,11 @@ void PropertyEditor::set_item_text(TreeItem *p_item, int p_type, const String& p } } + if (!res->is_type("Texture")) { + //texture already previews via itself + EditorResourcePreview::get_singleton()->queue_edited_resource_preview(res,this,"_resource_preview_done",p_item->get_instance_ID()); + } + } @@ -3357,6 +3364,10 @@ void PropertyEditor::update_tree() { } else if (res.is_valid()) { item->set_tooltip(1,res->get_name()+" ("+res->get_type()+")"); } + if (!res->is_type("Texture")) { + //texture already previews via itself + EditorResourcePreview::get_singleton()->queue_edited_resource_preview(res,this,"_resource_preview_done",item->get_instance_ID()); + } } @@ -3870,6 +3881,29 @@ void PropertyEditor::_filter_changed(const String& p_text) { update_tree(); } + + +void PropertyEditor::_resource_preview_done(const String& p_path,const Ref<Texture>& p_preview,Variant p_ud) { + + if (p_preview.is_null()) + return; //don't bother with empty preview + + ObjectID id = p_ud; + Object *obj = ObjectDB::get_instance(id); + + if (!obj) + return; + + TreeItem *ti = obj->cast_to<TreeItem>(); + + ERR_FAIL_COND(!ti); + + int tw = EditorSettings::get_singleton()->get("property_editor/texture_preview_width"); + + ti->set_icon(1,p_preview); //should be scaled I think? + ti->set_icon_max_width(1,tw); + ti->set_text(1,""); +} void PropertyEditor::_bind_methods() { ObjectTypeDB::bind_method( "_item_edited",&PropertyEditor::_item_edited); @@ -3884,6 +3918,7 @@ void PropertyEditor::_bind_methods() { ObjectTypeDB::bind_method( "_set_range_def",&PropertyEditor::_set_range_def); ObjectTypeDB::bind_method( "_filter_changed",&PropertyEditor::_filter_changed); ObjectTypeDB::bind_method( "update_tree",&PropertyEditor::update_tree); + ObjectTypeDB::bind_method( "_resource_preview_done",&PropertyEditor::_resource_preview_done); ObjectTypeDB::bind_method(_MD("get_drag_data_fw"), &PropertyEditor::get_drag_data_fw); ObjectTypeDB::bind_method(_MD("can_drop_data_fw"), &PropertyEditor::can_drop_data_fw); @@ -4251,7 +4286,7 @@ PropertyEditor *SectionedPropertyEditor::get_property_editor() { SectionedPropertyEditor::SectionedPropertyEditor() { VBoxContainer *left_vb = memnew( VBoxContainer); - left_vb->set_custom_minimum_size(Size2(160,0)); + left_vb->set_custom_minimum_size(Size2(160,0)*EDSCALE); add_child(left_vb); sections = memnew( ItemList ); diff --git a/tools/editor/property_editor.h b/tools/editor/property_editor.h index ac58011d43..a909b5ccd3 100644 --- a/tools/editor/property_editor.h +++ b/tools/editor/property_editor.h @@ -131,6 +131,7 @@ class CustomPropertyEditor : public Popup { void config_value_editors(int p_amount, int p_columns,int p_label_w,const List<String>& p_strings); void config_action_buttons(const List<String>& p_strings); + protected: void _notification(int p_what); @@ -231,6 +232,7 @@ class PropertyEditor : public Control { bool can_drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from) const; void drop_data_fw(const Point2& p_point,const Variant& p_data,Control* p_from); + void _resource_preview_done(const String& p_path,const Ref<Texture>& p_preview,Variant p_ud); UndoRedo *undo_redo; protected: diff --git a/tools/editor/scene_tree_dock.cpp b/tools/editor/scene_tree_dock.cpp index 7c64ed60b1..3e36a30361 100644 --- a/tools/editor/scene_tree_dock.cpp +++ b/tools/editor/scene_tree_dock.cpp @@ -542,6 +542,10 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { } } break; + case TOOL_MERGE_FROM_SCENE: { + + EditorNode::get_singleton()->merge_from_scene(); + } break; case TOOL_NEW_SCENE_FROM: { Node *scene = editor_data->get_edited_scene_root(); @@ -583,7 +587,8 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { String existing; if (extensions.size()) { - existing="new_scene."+extensions.front()->get().to_lower(); + String root_name(tocopy->get_name()); + existing=root_name+"."+extensions.front()->get().to_lower(); } new_scene_from_dialog->set_current_path(existing); @@ -1695,6 +1700,7 @@ void SceneTreeDock::_tree_rmb(const Vector2& p_menu_pos) { if (selection.size()==1) { menu->add_separator(); + menu->add_item(TTR("Merge From Scene"),TOOL_MERGE_FROM_SCENE); menu->add_item(TTR("Save Branch as Scene"),TOOL_NEW_SCENE_FROM); } menu->add_separator(); @@ -1786,6 +1792,7 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor,Node *p_scene_root,EditorSelec filter_hbc->add_child(filter); filter_icon = memnew( TextureFrame ); filter_hbc->add_child(filter_icon); + filter_icon->set_stretch_mode(TextureFrame::STRETCH_KEEP_CENTERED); filter->connect("text_changed",this,"_filter_changed"); diff --git a/tools/editor/scene_tree_dock.h b/tools/editor/scene_tree_dock.h index 0894dc8ffa..a5866944f3 100644 --- a/tools/editor/scene_tree_dock.h +++ b/tools/editor/scene_tree_dock.h @@ -64,6 +64,7 @@ class SceneTreeDock : public VBoxContainer { TOOL_DUPLICATE, TOOL_REPARENT, TOOL_NEW_SCENE_FROM, + TOOL_MERGE_FROM_SCENE, TOOL_MULTI_EDIT, TOOL_ERASE, TOOL_BUTTON_MAX diff --git a/tools/editor/scenes_dock.cpp b/tools/editor/scenes_dock.cpp index ee4258145e..2ac439491d 100644 --- a/tools/editor/scenes_dock.cpp +++ b/tools/editor/scenes_dock.cpp @@ -190,8 +190,6 @@ void ScenesDock::_notification(int p_what) { button_reload->set_icon( get_icon("Reload","EditorIcons")); button_favorite->set_icon( get_icon("Favorites","EditorIcons")); - button_fav_up->set_icon( get_icon("MoveUp","EditorIcons")); - button_fav_down->set_icon( get_icon("MoveDown","EditorIcons")); //button_instance->set_icon( get_icon("Add","EditorIcons")); //button_open->set_icon( get_icon("Folder","EditorIcons")); button_back->set_icon( get_icon("Filesystem","EditorIcons")); @@ -201,7 +199,7 @@ void ScenesDock::_notification(int p_what) { files->connect("item_activated",this,"_select_file"); button_hist_next->connect("pressed",this,"_fw_history"); button_hist_prev->connect("pressed",this,"_bw_history"); - search_button->set_icon( get_icon("Zoom","EditorIcons")); + search_icon->set_texture( get_icon("Zoom","EditorIcons")); button_hist_next->set_icon( get_icon("Forward","EditorIcons")); button_hist_prev->set_icon( get_icon("Back","EditorIcons")); @@ -228,10 +226,16 @@ void ScenesDock::_notification(int p_what) { case NOTIFICATION_DRAG_BEGIN: { Dictionary dd = get_viewport()->gui_get_drag_data(); - if (tree->is_visible() && dd.has("type") && ( - (String(dd["type"])=="files") || (String(dd["type"])=="files_and_dirs") || (String(dd["type"])=="resource"))) { - tree->set_drop_mode_flags(Tree::DROP_MODE_ON_ITEM); + if (tree->is_visible() && dd.has("type") ) { + if ( (String(dd["type"])=="files") || (String(dd["type"])=="files_and_dirs") || (String(dd["type"])=="resource")) { + tree->set_drop_mode_flags(Tree::DROP_MODE_ON_ITEM); + } + if ( (String(dd["type"])=="favorite") ) { + tree->set_drop_mode_flags(Tree::DROP_MODE_INBETWEEN); + } } + + } break; case NOTIFICATION_DRAG_END: { @@ -272,11 +276,7 @@ void ScenesDock::_dir_selected() { if (ti->get_parent() && ti->get_parent()->get_parent()==tree->get_root() && !ti->get_parent()->get_prev()) { //a favorite!!! - button_fav_up->set_disabled(!ti->get_prev()); - button_fav_down->set_disabled(!ti->get_next()); } else { - button_fav_up->set_disabled(true); - button_fav_down->set_disabled(true); } @@ -287,83 +287,6 @@ void ScenesDock::_dir_selected() { } -void ScenesDock::_fav_up_pressed() { - - TreeItem *sel = tree->get_selected(); - if (!sel) - return ; - - if (!sel->get_prev()) - return; - - String sw = sel->get_prev()->get_metadata(0); - String txt = sel->get_metadata(0); - - Vector<String> favorited = EditorSettings::get_singleton()->get_favorite_dirs(); - - int a_idx=favorited.find(sw); - int b_idx=favorited.find(txt); - - if (a_idx==-1 || b_idx==-1) - return; - SWAP(favorited[a_idx],favorited[b_idx]); - - EditorSettings::get_singleton()->set_favorite_dirs(favorited); - - _update_tree(); - - if (!tree->get_root() || !tree->get_root()->get_children() || !tree->get_root()->get_children()->get_children()) - return; - sel = tree->get_root()->get_children()->get_children(); - while(sel) { - - String t = sel->get_metadata(0); - if (t==txt) { - sel->select(0); - return; - } - sel=sel->get_next(); - } -} - -void ScenesDock::_fav_down_pressed() { - - TreeItem *sel = tree->get_selected(); - if (!sel) - return ; - - if (!sel->get_next()) - return; - - String sw = sel->get_next()->get_metadata(0); - String txt = sel->get_metadata(0); - - Vector<String> favorited = EditorSettings::get_singleton()->get_favorite_dirs(); - - int a_idx=favorited.find(sw); - int b_idx=favorited.find(txt); - - if (a_idx==-1 || b_idx==-1) - return; - SWAP(favorited[a_idx],favorited[b_idx]); - - EditorSettings::get_singleton()->set_favorite_dirs(favorited); - - _update_tree(); - - if (!tree->get_root() || !tree->get_root()->get_children() || !tree->get_root()->get_children()->get_children()) - return; - sel = tree->get_root()->get_children()->get_children(); - while(sel) { - - String t = sel->get_metadata(0); - if (t==txt) { - sel->select(0); - return; - } - sel=sel->get_next(); - } -} void ScenesDock::_favorites_pressed() { @@ -403,6 +326,10 @@ String ScenesDock::get_selected_path() const { return "res://"+path; } +String ScenesDock::get_current_path() const { + + return path; +} void ScenesDock::_thumbnail_done(const String& p_path,const Ref<Texture>& p_preview, const Variant& p_udata) { @@ -465,6 +392,25 @@ void ScenesDock::_search(EditorFileSystemDirectory *p_path,List<FileInfo>* match fi.name=file; fi.type=p_path->get_file_type(i); fi.path=p_path->get_file_path(i); + if (p_path->get_file_meta(i)) { + if (p_path->is_missing_sources(i)) { + fi.import_status=3; + } else if (p_path->have_sources_changed(i)) { + fi.import_status=2; + } else { + fi.import_status=1; + } + } else { + fi.import_status=0; + } + for(int j=0;j<p_path->get_source_count(i);j++) { + String s = EditorImportPlugin::expand_source_path(p_path->get_source_file(i,j)); + if (p_path->is_source_file_missing(i,j)) { + s+=" (Missing)"; + } + fi.sources.push_back(s); + } + matches->push_back(fi); if (matches->size()>p_max_items) return; @@ -495,11 +441,12 @@ void ScenesDock::_update_files(bool p_keep_selection) { return; int thumbnail_size = EditorSettings::get_singleton()->get("file_dialog/thumbnail_size"); + thumbnail_size*=EDSCALE; Ref<Texture> folder_thumbnail; Ref<Texture> file_thumbnail; bool use_thumbnails=!display_mode->is_pressed(); - bool use_folders = !search_box->is_visible() && split_mode; + bool use_folders = search_box->get_text().length()==0 && split_mode; if (use_thumbnails) { //thumbnails @@ -508,6 +455,7 @@ void ScenesDock::_update_files(bool p_keep_selection) { files->set_fixed_column_width(thumbnail_size*3/2); files->set_max_text_lines(2); files->set_min_icon_size(Size2(thumbnail_size,thumbnail_size)); + files->set_max_icon_size(Size2(thumbnail_size,thumbnail_size)); if (!has_icon("ResizedFolder","EditorIcons")) { Ref<ImageTexture> folder = get_icon("FolderBig","EditorIcons"); @@ -579,7 +527,7 @@ void ScenesDock::_update_files(bool p_keep_selection) { List<FileInfo> filelist; - if (search_box->is_visible()) { + if (search_box->get_text().length()) { if (search_box->get_text().length()>1) { _search(EditorFileSystem::get_singleton()->get_filesystem(),&filelist,128); @@ -594,6 +542,27 @@ void ScenesDock::_update_files(bool p_keep_selection) { fi.name=efd->get_file(i); fi.path=path.plus_file(fi.name); fi.type=efd->get_file_type(i); + if (efd->get_file_meta(i)) { + if (efd->is_missing_sources(i)) { + fi.import_status=3; + } else if (efd->have_sources_changed(i)) { + fi.import_status=2; + } else { + fi.import_status=1; + } + + for(int j=0;j<efd->get_source_count(i);j++) { + String s = EditorImportPlugin::expand_source_path(efd->get_source_file(i,j)); + if (efd->is_source_file_missing(i,j)) { + s+=" (Missing)"; + } + fi.sources.push_back(s); + } + } else { + fi.import_status=0; + } + + filelist.push_back(fi); } @@ -610,12 +579,33 @@ void ScenesDock::_update_files(bool p_keep_selection) { Ref<Texture> type_icon; - if (has_icon(type,ei)) { - type_icon=get_icon(type,ei); - } else { - type_icon=get_icon(oi,ei); + String tooltip=fname; + + if (E->get().import_status==0) { + + if (has_icon(type,ei)) { + type_icon=get_icon(type,ei); + } else { + type_icon=get_icon(oi,ei); + } + } else if (E->get().import_status==1) { + type_icon=get_icon("DependencyOk","EditorIcons"); + } else if (E->get().import_status==2) { + type_icon=get_icon("DependencyChanged","EditorIcons"); + tooltip+"\nStatus: Needs Re-Import"; + } else if (E->get().import_status==3) { + type_icon=get_icon("ImportFail","EditorIcons"); + tooltip+"\nStatus: Missing Dependencies"; + } + + if (E->get().sources.size()) { + for(int i=0;i<E->get().sources.size();i++) { + tooltip+="\nSource: "+E->get().sources[i]; + } } + + if (use_thumbnails) { files->add_item(fname,file_thumbnail,true); files->set_item_metadata(files->get_item_count()-1,fp); @@ -634,6 +624,9 @@ void ScenesDock::_update_files(bool p_keep_selection) { if (cselection.has(fname)) files->select(files->get_item_count()-1,false); + files->set_item_tooltip(files->get_item_count()-1,tooltip); + + } @@ -653,8 +646,6 @@ void ScenesDock::_go_to_tree() { tree->grab_focus(); tree->ensure_cursor_is_visible(); button_favorite->show(); - button_fav_up->show(); - button_fav_down->show(); //button_open->hide(); //file_options->hide(); } @@ -680,8 +671,6 @@ void ScenesDock::_fs_changed() { if (!tree->is_hidden()) { button_favorite->show(); - button_fav_up->show(); - button_fav_down->show(); _update_tree(); } @@ -1078,6 +1067,40 @@ void ScenesDock::_file_option(int p_option) { case FILE_INFO: { } break; + case FILE_REIMPORT: { + + + Vector<String> reimport; + for(int i=0;i<files->get_item_count();i++) { + + if (!files->is_selected(i)) + continue; + + String path = files->get_item_metadata(i); + reimport.push_back(path); + } + + ERR_FAIL_COND(reimport.size()==0); + + Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(reimport[0]); + ERR_FAIL_COND(!rimd.is_valid()); + String editor=rimd->get_editor(); + + if (editor.begins_with("texture_")) { //compatibility fix for old texture format + editor="texture"; + } + + Ref<EditorImportPlugin> rimp = EditorImportExport::get_singleton()->get_import_plugin_by_name(editor); + ERR_FAIL_COND(!rimp.is_valid()); + + if (reimport.size()==1) { + rimp->import_dialog(reimport[0]); + } else { + rimp->reimport_multiple_files(reimport); + + } + + } break; } } @@ -1100,8 +1123,6 @@ void ScenesDock::_open_pressed(){ tree->hide(); file_list_vb->show(); button_favorite->hide(); - button_fav_up->hide(); - button_fav_down->hide(); } //file_options->show(); @@ -1114,26 +1135,6 @@ void ScenesDock::_open_pressed(){ } -void ScenesDock::_search_toggled(){ - - if (search_button->is_pressed()) { - //search_box->clear(); - search_box->select_all(); - search_box->show(); - current_path->hide(); - search_box->grab_focus(); - - _update_files(false); - } else { - - //search_box->clear(); - search_box->hide(); - current_path->show(); - - _update_files(false); - - } -} void ScenesDock::_search_changed(const String& p_text) { @@ -1180,7 +1181,14 @@ Variant ScenesDock::get_drag_data_fw(const Point2& p_point,Control* p_from) { path=path+"/"; Vector<String> paths; paths.push_back(path); - return EditorNode::get_singleton()->drag_files(paths,p_from); + Dictionary d = EditorNode::get_singleton()->drag_files(paths,p_from); + + if (selected->get_parent() && tree->get_root()->get_children()==selected->get_parent()) { + //a favorite.. treat as such + d["type"]="favorite"; + } + + return d; } @@ -1239,6 +1247,30 @@ bool ScenesDock::can_drop_data_fw(const Point2& p_point,const Variant& p_data,Co Dictionary drag_data = p_data; + if (drag_data.has("type") && String(drag_data["type"])=="favorite") { + + //moving favorite around + TreeItem *ti = tree->get_item_at_pos(p_point); + if (!ti) + return false; + + int what = tree->get_drop_section_at_pos(p_point); + + if (ti==tree->get_root()->get_children()) { + return (what==1); //the parent, first fav + } + if (ti->get_parent() && tree->get_root()->get_children()==ti->get_parent()) { + return true; // a favorite + } + + if (ti==tree->get_root()->get_children()->get_next()) { + return (what==-1); //the tree, last fav + } + + return false; + + } + if (drag_data.has("type") && String(drag_data["type"])=="resource") { return true; @@ -1283,6 +1315,69 @@ void ScenesDock::drop_data_fw(const Point2& p_point,const Variant& p_data,Contro return; Dictionary drag_data = p_data; + if (drag_data.has("type") && String(drag_data["type"])=="favorite") { + + //moving favorite around + TreeItem *ti = tree->get_item_at_pos(p_point); + if (!ti) + return; + + Vector<String> files = drag_data["files"]; + + ERR_FAIL_COND(files.size()!=1); + + String swap = files[0]; + if (swap!="res://" && swap.ends_with("/")) { + swap=swap.substr(0,swap.length()-1); + } + + int what = tree->get_drop_section_at_pos(p_point); + + TreeItem *swap_item=NULL; + + if (ti==tree->get_root()->get_children()) { + swap_item=tree->get_root()->get_children()->get_children(); + + } else if (ti->get_parent() && tree->get_root()->get_children()==ti->get_parent()) { + if (what==-1) { + swap_item=ti; + } else { + swap_item=ti->get_next(); + } + } + + String swap_with; + + if (swap_item) { + swap_with=swap_item->get_metadata(0); + if (swap_with!="res://" && swap_with.ends_with("/")) { + swap_with=swap_with.substr(0,swap_with.length()-1); + } + } + + if (swap==swap_with) + return; + + Vector<String> dirs = EditorSettings::get_singleton()->get_favorite_dirs(); + + ERR_FAIL_COND(dirs.find(swap)==-1); + ERR_FAIL_COND(swap_with!=String() && dirs.find(swap_with)==-1); + + dirs.erase(swap); + + if (swap_with==String()) { + dirs.push_back(swap); + } else { + int idx = dirs.find(swap_with); + dirs.insert(idx,swap); + } + + EditorSettings::get_singleton()->set_favorite_dirs(dirs); + _update_tree(); + return; + + } + if (drag_data.has("type") && String(drag_data["type"])=="resource") { Ref<Resource> res = drag_data["resource"]; @@ -1335,7 +1430,7 @@ void ScenesDock::drop_data_fw(const Point2& p_point,const Variant& p_data,Contro int at_pos = files->get_item_at_pos(p_point); ERR_FAIL_COND(at_pos==-1); - String to_dir = files->get_item_metadata(at_pos); + to_dir = files->get_item_metadata(at_pos); } else { TreeItem *ti = tree->get_item_at_pos(p_point); if (!ti) @@ -1371,6 +1466,8 @@ void ScenesDock::_files_list_rmb_select(int p_item,const Vector2& p_pos) { Vector<String> filenames; bool all_scenes=true; + bool all_can_reimport=true; + Set<String> types; for(int i=0;i<files->get_item_count();i++) { @@ -1390,6 +1487,38 @@ void ScenesDock::_files_list_rmb_select(int p_item,const Vector2& p_pos) { } + EditorFileSystemDirectory *efsd=NULL; + int pos; + + efsd = EditorFileSystem::get_singleton()->find_file(path,&pos); + + if (efsd) { + + + if (!efsd->get_file_meta(pos)) { + all_can_reimport=false; + + + } else { + Ref<ResourceImportMetadata> rimd = ResourceLoader::load_import_metadata(path); + if (rimd.is_valid()) { + + String editor=rimd->get_editor(); + if (editor.begins_with("texture_")) { //compatibility fix for old texture format + editor="texture"; + } + types.insert(editor); + + } else { + all_can_reimport=false; + + } + } + } else { + all_can_reimport=false; + + } + filenames.push_back(path); if (EditorFileSystem::get_singleton()->get_file_type(path)!="PackedScene") all_scenes=false; @@ -1421,12 +1550,34 @@ void ScenesDock::_files_list_rmb_select(int p_item,const Vector2& p_pos) { file_options->add_item(TTR("Move To.."),FILE_MOVE); } + file_options->add_item(TTR("Delete"),FILE_REMOVE); + //file_options->add_item(TTR("Info"),FILE_INFO); file_options->add_separator(); file_options->add_item(TTR("Show In File Manager"),FILE_SHOW_IN_EXPLORER); + if (all_can_reimport && types.size()==1) { //all can reimport and are of the same type + + + bool valid=true; + Ref<EditorImportPlugin> rimp = EditorImportExport::get_singleton()->get_import_plugin_by_name(types.front()->get()); + if (rimp.is_valid()) { + + if (filenames.size()>1 && !rimp->can_reimport_multiple_files()) { + valid=false; + } + } else { + valid=false; + } + + if (valid) { + file_options->add_separator(); + file_options->add_item(TTR("Re-Import.."),FILE_REIMPORT); + } + } + file_options->set_pos(files->get_global_pos() + p_pos); file_options->popup(); @@ -1449,12 +1600,10 @@ void ScenesDock::_bind_methods() { ObjectTypeDB::bind_method(_MD("_bw_history"), &ScenesDock::_bw_history); ObjectTypeDB::bind_method(_MD("_fs_changed"), &ScenesDock::_fs_changed); ObjectTypeDB::bind_method(_MD("_dir_selected"), &ScenesDock::_dir_selected); - ObjectTypeDB::bind_method(_MD("_fav_up_pressed"), &ScenesDock::_fav_up_pressed); - ObjectTypeDB::bind_method(_MD("_fav_down_pressed"), &ScenesDock::_fav_down_pressed); ObjectTypeDB::bind_method(_MD("_file_option"), &ScenesDock::_file_option); ObjectTypeDB::bind_method(_MD("_move_operation"), &ScenesDock::_move_operation); ObjectTypeDB::bind_method(_MD("_rename_operation"), &ScenesDock::_rename_operation); - ObjectTypeDB::bind_method(_MD("_search_toggled"), &ScenesDock::_search_toggled); + ObjectTypeDB::bind_method(_MD("_search_changed"), &ScenesDock::_search_changed); ObjectTypeDB::bind_method(_MD("get_drag_data_fw"), &ScenesDock::get_drag_data_fw); @@ -1487,28 +1636,21 @@ ScenesDock::ScenesDock(EditorNode *p_editor) { button_hist_next->set_focus_mode(FOCUS_NONE); button_hist_next->set_tooltip(TTR("Next Directory")); + current_path=memnew( LineEdit ); + current_path->set_h_size_flags(SIZE_EXPAND_FILL); + toolbar_hbc->add_child(current_path); + + button_reload = memnew( Button ); button_reload->set_flat(true); button_reload->connect("pressed",this,"_rescan"); toolbar_hbc->add_child(button_reload); button_reload->set_focus_mode(FOCUS_NONE); button_reload->set_tooltip(TTR("Re-Scan Filesystem")); + button_reload->hide(); - toolbar_hbc->add_spacer(); + //toolbar_hbc->add_spacer(); - button_fav_up = memnew( ToolButton ); - button_fav_up->set_flat(true); - toolbar_hbc->add_child(button_fav_up); - button_fav_up->set_disabled(true); - button_fav_up->connect("pressed",this,"_fav_up_pressed"); - button_fav_up->set_tooltip(TTR("Move Favorite Up")); - - button_fav_down = memnew( ToolButton ); - button_fav_down->set_flat(true); - toolbar_hbc->add_child(button_fav_down); - button_fav_down->set_disabled(true); - button_fav_down->connect("pressed",this,"_fav_down_pressed"); - button_fav_down->set_tooltip(TTR("Move Favorite Down")); button_favorite = memnew( Button ); button_favorite->set_flat(true); @@ -1518,8 +1660,10 @@ ScenesDock::ScenesDock(EditorNode *p_editor) { button_favorite->set_tooltip(TTR("Toggle folder status as Favorite")); button_favorite->set_focus_mode(FOCUS_NONE); - button_fav_up->set_focus_mode(FOCUS_NONE); - button_fav_down->set_focus_mode(FOCUS_NONE); + + Control *spacer = memnew( Control); + + /* button_open = memnew( Button ); @@ -1551,7 +1695,7 @@ ScenesDock::ScenesDock(EditorNode *p_editor) { tree->set_hide_root(true); split_box->add_child(tree); - tree->set_custom_minimum_size(Size2(0,200)); + tree->set_custom_minimum_size(Size2(0,200)*EDSCALE); tree->set_drag_forwarding(this); @@ -1577,20 +1721,15 @@ ScenesDock::ScenesDock(EditorNode *p_editor) { button_back = memnew( ToolButton ); path_hb->add_child(button_back); button_back->hide(); - current_path=memnew( LineEdit ); - current_path->set_h_size_flags(SIZE_EXPAND_FILL); - path_hb->add_child(current_path); search_box = memnew( LineEdit ); search_box->set_h_size_flags(SIZE_EXPAND_FILL); path_hb->add_child(search_box); - search_box->hide(); search_box->connect("text_changed",this,"_search_changed"); - search_button = memnew( ToolButton ); - path_hb->add_child(search_button); - search_button->set_toggle_mode(true ); - search_button->connect("pressed",this,"_search_toggled"); + search_icon = memnew( TextureFrame ); + search_icon->set_stretch_mode(TextureFrame::STRETCH_KEEP_CENTERED); + path_hb->add_child(search_icon); display_mode = memnew( ToolButton ); path_hb->add_child(display_mode); @@ -1641,6 +1780,7 @@ ScenesDock::ScenesDock(EditorNode *p_editor) { path="res://"; + add_constant_override("separation",3); } ScenesDock::~ScenesDock() { diff --git a/tools/editor/scenes_dock.h b/tools/editor/scenes_dock.h index 42c1374be1..9a0d6c87cf 100644 --- a/tools/editor/scenes_dock.h +++ b/tools/editor/scenes_dock.h @@ -77,15 +77,13 @@ class ScenesDock : public VBoxContainer { Button *button_reload; Button *button_favorite; - Button *button_fav_up; - Button *button_fav_down; Button *button_back; Button *display_mode; Button *button_hist_next; Button *button_hist_prev; LineEdit *current_path; LineEdit *search_box; - Button *search_button; + TextureFrame *search_icon; HBoxContainer *path_hb; bool split_mode; @@ -137,8 +135,6 @@ class ScenesDock : public VBoxContainer { void _push_to_history(); - void _fav_up_pressed(); - void _fav_down_pressed(); void _dir_selected(); void _update_tree(); void _rescan(); @@ -147,7 +143,6 @@ class ScenesDock : public VBoxContainer { void _favorites_pressed(); void _open_pressed(); - void _search_toggled(); void _search_changed(const String& p_text); @@ -158,6 +153,8 @@ class ScenesDock : public VBoxContainer { String name; String path; StringName type; + int import_status; //0 not imported, 1 - ok, 2- must reimport, 3- broken + Vector<String> sources; bool operator<(const FileInfo& fi) const { return name < fi.name; @@ -176,6 +173,8 @@ protected: public: String get_selected_path() const; + + String get_current_path() const; void focus_on_filter(); void fix_dependencies(const String& p_for_file); diff --git a/tools/editor/script_editor_debugger.cpp b/tools/editor/script_editor_debugger.cpp index 479b694f0b..2f4846d63a 100644 --- a/tools/editor/script_editor_debugger.cpp +++ b/tools/editor/script_editor_debugger.cpp @@ -615,7 +615,7 @@ void ScriptEditorDebugger::_parse_message(const String& p_msg,const Array& p_dat bool warning = err[9]; bool e; String time = String("%d:%02d:%02d:%04d").sprintf(vals,&e); - String txt=time+" - "+String(err[8]); + String txt=time+" - "+(err[8].is_zero()?String(err[7]):String(err[8])); String tooltip=TTR("Type:")+String(warning?TTR("Warning"):TTR("Error")); tooltip+="\n"+TTR("Description:")+" "+String(err[8]); @@ -944,6 +944,7 @@ void ScriptEditorDebugger::_notification(int p_what) { } last_error_count=error_count; } + if (connection.is_null()) { if (server->is_connection_available()) { @@ -1801,7 +1802,7 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor){ inspect_info->add_child(info_left); inspect_scene_tree = memnew( Tree ); - info_left->add_margin_child("Live Scene Tree:",inspect_scene_tree,true); + info_left->add_margin_child(TTR("Live Scene Tree:"),inspect_scene_tree,true); inspect_scene_tree->connect("cell_selected",this,"_scene_tree_selected"); inspect_scene_tree->connect("item_collapsed",this,"_scene_tree_folded"); @@ -1816,7 +1817,7 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor){ inspect_properties->set_show_categories(true); inspect_properties->connect("object_id_selected",this,"_scene_tree_property_select_object"); - info_right->add_margin_child("Remote Object Properties: ",inspect_properties,true); + info_right->add_margin_child(TTR("Remote Object Properties: "),inspect_properties,true); inspect_scene_tree_timeout=EDITOR_DEF("debugger/scene_tree_refresh_interval",1.0); inspect_edited_object_timeout=EDITOR_DEF("debugger/remote_inspect_refresh_interval",0.2); @@ -1829,7 +1830,7 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor){ { //profiler profiler = memnew( EditorProfiler ); - profiler->set_name("Profiler"); + profiler->set_name(TTR("Profiler")); tabs->add_child(profiler); profiler->connect("enable_profiling",this,"_profiler_activate"); profiler->connect("break_request",this,"_profiler_seeked"); @@ -1851,7 +1852,7 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor){ perf_draw = memnew( Control ); perf_draw->connect("draw",this,"_performance_draw"); hsp->add_child(perf_draw); - hsp->set_name("Monitors"); + hsp->set_name(TTR("Monitors")); hsp->set_split_offset(300); tabs->add_child(hsp); perf_max.resize(Performance::MONITOR_MAX); @@ -1891,7 +1892,7 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor){ vmem_hb->add_child( memnew(Label(TTR("Total:")+" ")) ); vmem_total = memnew( LineEdit ); vmem_total->set_editable(false); - vmem_total->set_custom_minimum_size(Size2(100,1)); + vmem_total->set_custom_minimum_size(Size2(100,1)*EDSCALE); vmem_hb->add_child(vmem_total); vmem_refresh = memnew( Button ); vmem_hb->add_child(vmem_refresh); @@ -1928,7 +1929,7 @@ ScriptEditorDebugger::ScriptEditorDebugger(EditorNode *p_editor){ { // misc VBoxContainer *info_left = memnew( VBoxContainer ); info_left->set_h_size_flags(SIZE_EXPAND_FILL); - info_left->set_name("Misc"); + info_left->set_name(TTR("Misc")); tabs->add_child(info_left); clicked_ctrl = memnew( LineEdit ); info_left->add_margin_child(TTR("Clicked Control:"),clicked_ctrl); diff --git a/tools/editor/settings_config_dialog.cpp b/tools/editor/settings_config_dialog.cpp index 7d369d7262..79bcaa4dae 100644 --- a/tools/editor/settings_config_dialog.cpp +++ b/tools/editor/settings_config_dialog.cpp @@ -45,6 +45,7 @@ void EditorSettingsDialog::_settings_changed() { timer->start(); + property_editor->get_property_editor()->update_tree(); // else color's won't update when theme is selected. } void EditorSettingsDialog::_settings_save() { @@ -70,6 +71,8 @@ void EditorSettingsDialog::popup_edit_settings() { if (!EditorSettings::get_singleton()) return; + EditorSettings::get_singleton()->list_text_editor_themes(); // make sure we have an up to date list of themes + property_editor->edit(EditorSettings::get_singleton()); property_editor->get_property_editor()->update_tree(); diff --git a/tools/editor_fonts/droid_sans.ttf b/tools/editor_fonts/droid_sans.ttf Binary files differnew file mode 100644 index 0000000000..a117feac85 --- /dev/null +++ b/tools/editor_fonts/droid_sans.ttf diff --git a/tools/editor_fonts/source_code_pro.otf b/tools/editor_fonts/source_code_pro.otf Binary files differnew file mode 100644 index 0000000000..4e3b9d0bcd --- /dev/null +++ b/tools/editor_fonts/source_code_pro.otf diff --git a/tools/osx_template.app/Contents/Resources/icon.icns b/tools/osx_template.app/Contents/Resources/icon.icns Binary files differindex 4a3dc0415a..375f61437d 100644 --- a/tools/osx_template.app/Contents/Resources/icon.icns +++ b/tools/osx_template.app/Contents/Resources/icon.icns diff --git a/tools/translations/Makefile b/tools/translations/Makefile new file mode 100644 index 0000000000..30b0832783 --- /dev/null +++ b/tools/translations/Makefile @@ -0,0 +1,20 @@ +# Makefile providing various facilities to manage translations + +TEMPLATE = tools.pot +POFILES = $(wildcard *.po) +LANGS = $(POFILES:%.po=%) + +all: update merge + +update: + @cd ../..; python tools/translations/extract.py + +merge: + @for po in $(POFILES); do \ + echo -e "\nMerging $$po..."; \ + msgmerge -w 80 -C $$po $$po $(TEMPLATE) > "$$po".new; \ + mv -f "$$po".new $$po; \ + done + +check: + @for po in $(POFILES); do msgfmt -c $$po -o /dev/null; done diff --git a/tools/translations/extract.py b/tools/translations/extract.py index 195f45f637..b2fa6d8af3 100755 --- a/tools/translations/extract.py +++ b/tools/translations/extract.py @@ -59,11 +59,16 @@ for fname in matches: lc = 1 while (l): + patterns = ['RTR(\"', 'TTR(\"'] + idx = 0 pos = 0 while (pos >= 0): - pos = l.find('TTR(\"', pos) + pos = l.find(patterns[idx], pos) if (pos == -1): - break + if (idx < len(patterns) - 1): + idx += 1 + pos = 0 + continue pos += 5 msg = "" @@ -83,7 +88,9 @@ for fname in matches: unique_loc[msg] = [location] elif (not location in unique_loc[msg]): # Add additional location to previous occurence too - msg_pos = main_po.find('\nmsgid "' + msg) + msg_pos = main_po.find('\nmsgid "' + msg + '"') + if (msg_pos == -1): + print("Someone apparently thought writing Python was as easy as GDScript. Ping Akien.") main_po = main_po[:msg_pos] + ' ' + location + main_po[msg_pos:] unique_loc[msg].append(location) @@ -107,5 +114,5 @@ shutil.move("tools.pot", "tools/translations/tools.pot") if (os.name == "posix"): added = subprocess.check_output("git diff tools/translations/tools.pot | grep \+msgid | wc -l", shell = True) removed = subprocess.check_output("git diff tools/translations/tools.pot | grep \\\-msgid | wc -l", shell = True) - print("Template changes compared to the staged status:") - print(" Additions: %s msgids.\n Deletions: %s msgids." % (int(added), int(removed))) + print("\n# Template changes compared to the staged status:") + print("# Additions: %s msgids.\n# Deletions: %s msgids." % (int(added), int(removed))) diff --git a/tools/translations/fr.po b/tools/translations/fr.po new file mode 100644 index 0000000000..7f3b06418b --- /dev/null +++ b/tools/translations/fr.po @@ -0,0 +1,6001 @@ +# French translation of the Godot Engine editor +# Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community +# This file is distributed under the same license as the Godot source code. +# Hugo Locurcio <hugo.l@openmailbox.org>, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Hugo Locurcio <hugo.l@openmailbox.org>\n" +"Language-Team: French\n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.7.1\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: scene/audio/sample_player.cpp scene/2d/sample_player_2d.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SamplePlayer to play sound." +msgstr "" + +#: scene/3d/body_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" +"Un CollisionShape n'est utile que lorsqu'il est enfant d'un nœud dérivé de " +"CollisionObject, comme Area, StaticBody, RigidBody, KinematicBody, etc." + +#: scene/3d/body_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it!" +msgstr "" +"Afin qu'une CollisionShape fonctionne, il lui faut une forme. Créez une " +"ressource de forme pour cette CollisionShape !" + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" +"Un CollisionPolygon n'est utile que lorsqu'il est enfant d'un nœud dérivé de " +"CollisionObject, comme Area, StaticBody, RigidBody, KinematicBody, etc." + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "Un CollisionPolygon vide n'a pas d'effet sur les collisions." + +#: scene/3d/scenario_fx.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "" +"Seul un WorldEnvironnement ne peut être utilisé par scène (ou ensemble de " +"scènes instanciées)." + +#: scene/3d/spatial_sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SpatialSamplePlayer to play sound." +msgstr "" +"Une ressource de type SampleLibrary doit être créée ou définie dans la " +"propriété « samples » afin que le SpatialSamplePlayer joue des sons." + +#: scene/3d/navigation_mesh.cpp +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "" +"Une ressource de type NavigationMesh doit être définie ou créée pour que ce " +"nœud fonctionne." + +#: scene/3d/navigation_mesh.cpp +msgid "" +"NavigationMeshInstance must be a child or grandchild to a Navigation node. It " +"only provides navigation data." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error initializing FreeType." +msgstr "Erreur d'initialisation de Freetype." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Unknown font format." +msgstr "Format de police inconnu." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error loading font." +msgstr "Erreur lors du chargement de la police." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font size." +msgstr "Taille de police invalide." + +#: scene/2d/particles_2d.cpp +msgid "Path property must point to a valid Particles2D node to work." +msgstr "" +"La propriété Path doit pointer à un nœud de type Particles2D valide pour " +"fonctionner." + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" +"Le nœud ParallaxLayer ne fonctionne que lorsqu'il s'agit d'un enfant d'un " +"nœud de type ParallaxBackground." + +#: scene/2d/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnable2D works best when used with the edited scene root directly " +"as parent." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "" +"Un polygone d'occultation doit être défini (ou dessiné) afin que cet " +"occulteur ait un effet." + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" +msgstr "" +"Le polygone d'occultation pour cet occulteur est vide. Veuillez dessiner un " +"polygone !" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" + +#: scene/2d/sprite.cpp +msgid "" +"Path property must point to a valid Viewport node to work. Such Viewport must " +"be set to 'render target' mode." +msgstr "" +"La propriété Path doit pointer vers un nœud de type Viewport valide pour " +"fonctionner. Ce Viewport doit utiliser le mode « render target »." + +#: scene/2d/sprite.cpp +msgid "" +"The Viewport set in the path property must be set as 'render target' in order " +"for this sprite to work." +msgstr "" +"Le Viewport défini dans la propriété Path doit utiliser le mode « render " +"target » pour que cette sprite fonctionne." + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"Un CollisionPolygon2D n'est utile que lorsqu'il est enfant d'un nœud dérivé " +"de CollisionObject2D, comme Area2D, StaticBody2D, RigidBody2D, " +"KinematicBody2D, etc." + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "Un CollisionPolygon2D vide n'a pas d'effet sur les collisions." + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "" + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" +"Seul un nœud de type CanvasModulate est autorisé par scène (ou ensemble de " +"scènes instanciées). Le premier créé fonctionnera, les autres seront ignorés." + +#: scene/2d/animated_sprite.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite to display frames." +msgstr "" + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "" +"La propriété Path doit pointer vers un nœud de type Node2D valide pour " +"fonctionner." + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"Un CollisionShape2D n'est utile que lorsqu'il est enfant d'un nœud dérivé de " +"CollisionObject2D, comme Area2D, StaticBody2D, RigidBody2D, KinematicBody2D, " +"etc." + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "" +"Une forme doit être créée afin qu'une CollisionShape2D fonctionne. Veuillez " +"créer une ressource de forme !" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the 'texture' " +"property." +msgstr "" +"Une texture avec la forme de la lumière doit être fournie dans la propriété « " +"texture »." + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine though, but they will hide " +"upon running." +msgstr "" +"Les pop-ups seront cachés par défaut jusqu'à ce que vous appelez une fonction " +"popup() ou une des fonctions popup*(). Les rendre visibles pour l'édition ne " +"pose pas de problème, mais elles seront cachées lors de l'exécution." + +#: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Cancel" +msgstr "Annuler" + +#: scene/gui/dialogs.cpp +msgid "OK" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Cut" +msgstr "Couper" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/resources_dock.cpp tools/editor/property_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Copy" +msgstr "Copier" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/resources_dock.cpp tools/editor/property_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste" +msgstr "Coller" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/project_export.cpp tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Select All" +msgstr "Tout sélectionner" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_log.cpp +#: tools/editor/property_editor.cpp +#: tools/editor/plugins/rich_text_editor_plugin.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear" +msgstr "Effacer" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Undo" +msgstr "Annuler" + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Edit Script Options" +msgstr "Modifier les options du script" + +#: tools/editor/project_export.cpp +msgid "Please export outside the project folder!" +msgstr "Veuillez exporter en dehors du dossier du projet !" + +#: tools/editor/project_export.cpp +msgid "Error exporting project!" +msgstr "Erreur d'exportation du projet !" + +#: tools/editor/project_export.cpp +msgid "Error writing the project PCK!" +msgstr "Erreur d'écriture du PCK du projet !" + +#: tools/editor/project_export.cpp +msgid "No exporter for platform '%s' yet." +msgstr "Pas d'exportateur pour la plate-forme « %s » actuellement." + +#: tools/editor/project_export.cpp +msgid "Include" +msgstr "Inclure" + +#: tools/editor/project_export.cpp +msgid "Change Image Group" +msgstr "Changer le groupe d'images" + +#: tools/editor/project_export.cpp +msgid "Group name can't be empty!" +msgstr "Le nom du groupe ne peut pas être vide !" + +#: tools/editor/project_export.cpp +msgid "Invalid character in group name!" +msgstr "Caractère invalide dans le nom du groupe !" + +#: tools/editor/project_export.cpp +msgid "Group name already exists!" +msgstr "Le nom du groupe existe déjà !" + +#: tools/editor/project_export.cpp +msgid "Add Image Group" +msgstr "Ajouter un groupe d'images" + +#: tools/editor/project_export.cpp +msgid "Delete Image Group" +msgstr "Supprimer le groupe d'images" + +#: tools/editor/project_export.cpp tools/editor/editor_import_export.cpp +msgid "Error saving atlas:" +msgstr "Erreur de sauvegarde de l'atlas :" + +#: tools/editor/project_export.cpp +msgid "Atlas Preview" +msgstr "Aperçu de l'atlas" + +#: tools/editor/project_export.cpp +msgid "Project Export Settings" +msgstr "Paramètres d'exportation du projet" + +#: tools/editor/project_export.cpp +msgid "Target" +msgstr "Cible" + +#: tools/editor/project_export.cpp +msgid "Export to Platform" +msgstr "Exporter vers la plate-forme" + +#: tools/editor/project_export.cpp tools/editor/plugins/theme_editor_plugin.cpp +msgid "Options" +msgstr "Options" + +#: tools/editor/project_export.cpp +msgid "Resources" +msgstr "Ressources" + +#: tools/editor/project_export.cpp +msgid "Export selected resources (including dependencies)." +msgstr "Exporter les ressources sélectionnées (y compris les dépendences)." + +#: tools/editor/project_export.cpp +msgid "Export all resources in the project." +msgstr "Exporter toutes les ressources dans le projet." + +#: tools/editor/project_export.cpp +msgid "Export all files in the project directory." +msgstr "Exporter tous les fichiers dans le répertoire du projet." + +#: tools/editor/project_export.cpp +msgid "Export Mode:" +msgstr "Mode d'exportation :" + +#: tools/editor/project_export.cpp +msgid "Resources to Export:" +msgstr "Ressources à exporter :" + +#: tools/editor/project_export.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "File" +msgstr "Fichier" + +#: tools/editor/project_export.cpp +msgid "Action" +msgstr "Action" + +#: tools/editor/project_export.cpp +msgid "" +"Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" +msgstr "" +"Filtres à utiliser pour l'exportation des fichiers (séparés par des virgules, " +"par exemple : *.json, *.txt) :" + +#: tools/editor/project_export.cpp +msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" +msgstr "" +"Filtres à utiliser pour exclure des fichiers (séparés par des virgules, par " +"exemple: *.json, *.txt) :" + +#: tools/editor/project_export.cpp +msgid "Convert text scenes to binary on export." +msgstr "Convertir les scènes en format texte au format binaire à l'exportation." + +#: tools/editor/project_export.cpp +msgid "Images" +msgstr "Images" + +#: tools/editor/project_export.cpp +msgid "Keep Original" +msgstr "Garder les originaux" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy, WebP)" +msgstr "Compression pour le disque (avec perte, WebP)" + +#: tools/editor/project_export.cpp +msgid "Compress for RAM (BC/PVRTC/ETC)" +msgstr "Compression pour la RAM (BC/PVRTC/ETC)" + +#: tools/editor/project_export.cpp +msgid "Convert Images (*.png):" +msgstr "Convertir les images (*.png) :" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy) Quality:" +msgstr "Qualité de la compression pour le disque (avec perte) :" + +#: tools/editor/project_export.cpp +msgid "Shrink All Images:" +msgstr "Réduire toutes les images :" + +#: tools/editor/project_export.cpp +msgid "Compress Formats:" +msgstr "Compresser les formats :" + +#: tools/editor/project_export.cpp +msgid "Image Groups" +msgstr "Groupes d'images" + +#: tools/editor/project_export.cpp +msgid "Groups:" +msgstr "Groupes :" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Default" +msgstr "Par défaut" + +#: tools/editor/project_export.cpp +msgid "Compress Disk" +msgstr "Compression pour le disque" + +#: tools/editor/project_export.cpp +msgid "Compress RAM" +msgstr "Compression pour la RAM" + +#: tools/editor/project_export.cpp +msgid "Compress Mode:" +msgstr "Mode de compression :" + +#: tools/editor/project_export.cpp +msgid "Lossy Quality:" +msgstr "Qualité de compression avec perte :" + +#: tools/editor/project_export.cpp +msgid "Atlas:" +msgstr "Atlas :" + +#: tools/editor/project_export.cpp +msgid "Shrink By:" +msgstr "Réduire de :" + +#: tools/editor/project_export.cpp +msgid "Preview Atlas" +msgstr "Aperçu de l'atlas" + +#: tools/editor/project_export.cpp +msgid "Image Filter:" +msgstr "Filtre d'image :" + +#: tools/editor/project_export.cpp +msgid "Images:" +msgstr "Images :" + +#: tools/editor/project_export.cpp +msgid "Select None" +msgstr "Ne rien sélectionner" + +#: tools/editor/project_export.cpp tools/editor/groups_editor.cpp +msgid "Group" +msgstr "Groupe" + +#: tools/editor/project_export.cpp +msgid "Samples" +msgstr "Échantillons" + +#: tools/editor/project_export.cpp +msgid "Sample Conversion Mode: (.wav files):" +msgstr "Mode de conversion des échantillons (fichiers .wav) :" + +#: tools/editor/project_export.cpp +msgid "Keep" +msgstr "Conserver" + +#: tools/editor/project_export.cpp +msgid "Compress (RAM - IMA-ADPCM)" +msgstr "Compresser (RAM - IMA-ADPCM)" + +#: tools/editor/project_export.cpp +msgid "Sampling Rate Limit (Hz):" +msgstr "Limite de taux d'échantillonage (Hz) :" + +#: tools/editor/project_export.cpp +msgid "Trim" +msgstr "Rogner" + +#: tools/editor/project_export.cpp +msgid "Trailing Silence:" +msgstr "Silence de fin :" + +#: tools/editor/project_export.cpp +#, fuzzy +msgid "Script" +msgstr "Lancer le script" + +#: tools/editor/project_export.cpp +msgid "Script Export Mode:" +msgstr "Mode d'exportation des scripts :" + +#: tools/editor/project_export.cpp +msgid "Text" +msgstr "Texte" + +#: tools/editor/project_export.cpp +msgid "Compiled" +msgstr "Compilé" + +#: tools/editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "Chiffré (insérez une clé ci-dessous)" + +#: tools/editor/project_export.cpp +msgid "Script Encryption Key (256-bits as hex):" +msgstr "Clé de chiffrement des scripts (256 bits en hexadécimal) :" + +#: tools/editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "Exporter le PCK/ZIP" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Export Project" +msgstr "Exporter le projet" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Password:" +msgstr "Mot de passe :" + +#: tools/editor/project_export.cpp +msgid "Export Project PCK" +msgstr "Exporter le PCK du projet" + +#: tools/editor/project_export.cpp +msgid "Export.." +msgstr "Exporter..." + +#: tools/editor/project_export.cpp +msgid "Project Export" +msgstr "Exportation de projet" + +#: tools/editor/project_export.cpp +msgid "Export Preset:" +msgstr "Pré-réglage d'exportation :" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Export" +msgstr "Exporter" + +#: tools/editor/code_editor.cpp +msgid "Go to Line" +msgstr "Aller à la ligne" + +#: tools/editor/code_editor.cpp +msgid "Line Number:" +msgstr "Numéro de ligne :" + +#: tools/editor/code_editor.cpp +#, fuzzy +msgid "No Matches" +msgstr "Correspondances :" + +#: tools/editor/code_editor.cpp +#, fuzzy +msgid "Replaced %d Ocurrence(s)." +msgstr "%d occurrence(s) remplacée(s)." + +#: tools/editor/code_editor.cpp +msgid "Replace" +msgstr "Remplacer" + +#: tools/editor/code_editor.cpp +#, fuzzy +msgid "Replace All" +msgstr "Remplacer" + +#: tools/editor/code_editor.cpp +#, fuzzy +msgid "Match Case" +msgstr "Correspondances :" + +#: tools/editor/code_editor.cpp +msgid "Whole Words" +msgstr "Mots entiers" + +#: tools/editor/code_editor.cpp +msgid "Selection Only" +msgstr "Sélection uniquement" + +#: tools/editor/code_editor.cpp tools/editor/project_settings.cpp +#: tools/editor/addon_editor_plugin.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search" +msgstr "Rechercher" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +msgid "Find" +msgstr "Trouver" + +#: tools/editor/code_editor.cpp +msgid "Next" +msgstr "Suivant" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d ocurrence(s)." +msgstr "%d occurrence(s) remplacée(s)." + +#: tools/editor/code_editor.cpp +msgid "Not found!" +msgstr "Non trouvé !" + +#: tools/editor/code_editor.cpp +msgid "Replace By" +msgstr "Remplacer par" + +#: tools/editor/code_editor.cpp +msgid "Case Sensitive" +msgstr "Sensible à la casse" + +#: tools/editor/code_editor.cpp +msgid "Backwards" +msgstr "À l'envers" + +#: tools/editor/code_editor.cpp +msgid "Prompt On Replace" +msgstr "Avertir lors du remplacement" + +#: tools/editor/code_editor.cpp +msgid "Skip" +msgstr "Passer" + +#: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Line:" +msgstr "Ligne :" + +#: tools/editor/code_editor.cpp +msgid "Col:" +msgstr "Colonne :" + +#: tools/editor/connections_dialog.cpp +msgid "Method in target Node must be specified!" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect To Node:" +msgstr "Connecter au nœud :" + +#: tools/editor/connections_dialog.cpp +msgid "Binds (Extra Params):" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/project_settings.cpp +#: tools/editor/groups_editor.cpp tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Add" +msgstr "Ajouter" + +#: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp +#: tools/editor/project_manager.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove" +msgstr "Supprimer" + +#: tools/editor/connections_dialog.cpp +msgid "Path To Node:" +msgstr "Chemin vers le nœud :" + +#: tools/editor/connections_dialog.cpp +msgid "Method In Node:" +msgstr "Méthode dans le nœud :" + +#: tools/editor/connections_dialog.cpp +msgid "Make Function" +msgstr "Créer une fonction" + +#: tools/editor/connections_dialog.cpp +msgid "Deferred" +msgstr "Différé" + +#: tools/editor/connections_dialog.cpp +msgid "Oneshot" +msgstr "One-shot" + +#: tools/editor/connections_dialog.cpp tools/editor/settings_config_dialog.cpp +#: tools/editor/import_settings.cpp tools/editor/run_settings_dialog.cpp +#: tools/editor/project_settings.cpp tools/editor/groups_editor.cpp +#: tools/editor/property_editor.cpp tools/editor/addon_editor_plugin.cpp +#: tools/editor/call_dialog.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Close" +msgstr "Fermer" + +#: tools/editor/connections_dialog.cpp +msgid "Connect" +msgstr "Connecter" + +#: tools/editor/connections_dialog.cpp +msgid "Connect '%s' to '%s'" +msgstr "Connecter « %s » à « %s »" + +#: tools/editor/connections_dialog.cpp +msgid "Create Subscription" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect.." +msgstr "Connecter..." + +#: tools/editor/connections_dialog.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Disconnect" +msgstr "Déconnecter..." + +#: tools/editor/connections_dialog.cpp +msgid "Edit Connections.." +msgstr "Modifier les connexions..." + +#: tools/editor/connections_dialog.cpp +msgid "Connections:" +msgstr "Connexions :" + +#: tools/editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "Sélectionner les nœuds à importer" + +#: tools/editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "Chemin de la scène :" + +#: tools/editor/editor_sub_scene.cpp +msgid "Import From Node:" +msgstr "Importer à partir d'un nœud :" + +#: tools/editor/settings_config_dialog.cpp tools/editor/editor_node.cpp +msgid "Editor Settings" +msgstr "Paramètres de l'éditeur" + +#: tools/editor/settings_config_dialog.cpp tools/editor/project_settings.cpp +msgid "General" +msgstr "Général" + +#: tools/editor/settings_config_dialog.cpp tools/editor/quick_open.cpp +#: tools/editor/addon_editor_plugin.cpp tools/editor/editor_node.cpp +#: tools/editor/editor_help.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search:" +msgstr "Rechercher :" + +#: tools/editor/settings_config_dialog.cpp tools/editor/project_settings.cpp +#: tools/editor/addon_editor_plugin.cpp +msgid "Plugins" +msgstr "Extensions" + +#: tools/editor/settings_config_dialog.cpp +msgid "Plugin List:" +msgstr "Liste d'extensions :" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "Choisir un répertoire" + +#: tools/editor/editor_dir_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Create Folder" +msgstr "Créer un dossier" + +#: tools/editor/editor_dir_dialog.cpp tools/editor/editor_plugin_settings.cpp +#: tools/editor/editor_file_dialog.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Name:" +msgstr "Nom :" + +#: tools/editor/editor_dir_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Could not create folder." +msgstr "Impossible de créer le dossier." + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose" +msgstr "Choisir" + +#: tools/editor/editor_file_system.cpp +msgid "Cannot go into subdir:" +msgstr "Impossible d'aller dans le sous-répertoire :" + +#: tools/editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "Scanner les sources" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "Rechercher un remplacement pour :" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "Dépendances pour :" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will not take effect unless reloaded." +msgstr "" +"La scène « %s » est actuellement en cours de modification.\n" +"Les changements n'auront pas d'effet avant un rechargement." + +#: tools/editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will take effect when reloaded." +msgstr "" +"Le ressource « %s » est utilisée.\n" +"Les changements n'auront pas d'effet avant un rechargement." + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies" +msgstr "Dépendances" + +#: tools/editor/dependency_editor.cpp +#, fuzzy +msgid "Resource" +msgstr "Ressources" + +#: tools/editor/dependency_editor.cpp tools/editor/project_settings.cpp +#: tools/editor/project_manager.cpp +#, fuzzy +msgid "Path" +msgstr "Chemin :" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies:" +msgstr "Dépendances :" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Broken" +msgstr "Corriger les dép. cassées" + +#: tools/editor/dependency_editor.cpp +msgid "Dependency Editor" +msgstr "Éditeur de dépendances" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement Resource:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "Propriétaires de :" + +#: tools/editor/dependency_editor.cpp +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Remove selected files from the project? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Scene failed to load due to missing dependencies:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Open Anyway" +msgstr "Ouvrir quand même" + +#: tools/editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "Quelle action doit être prise ?" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "Corriger les dépendances" + +#: tools/editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "Erreurs de chargement !" + +#: tools/editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "" +"Supprimer de manière permanente %d objet(s) ? (Impossible de revenir en " +"arrière !)" + +#: tools/editor/dependency_editor.cpp +msgid "Owns" +msgstr "Possède" + +#: tools/editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "Ressources sans propriété explicite :" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +msgid "Orphan Resource Explorer" +msgstr "Explorateur de ressources orphelines" + +#: tools/editor/dependency_editor.cpp +msgid "Delete selected files?" +msgstr "Supprimer les fichiers sélectionnés ?" + +#: tools/editor/dependency_editor.cpp tools/editor/scenes_dock.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Delete" +msgstr "Supprimer" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Light Radius" +msgstr "Changer le rayon d'une lumière" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera FOV" +msgstr "Changer le champ de vision d'une caméra" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera Size" +msgstr "Changer la taille d'une caméra" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "Changer le rayon d'une forme en sphère" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "Changer les extents d'une forme en boîte" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Notifier Extents" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid parent class name" +msgstr "Nom de classe parent invalide" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid chars:" +msgstr "Caractères valides :" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid class name" +msgstr "Nom de classe invalide" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid name" +msgstr "Nom valide" + +#: tools/editor/script_create_dialog.cpp +msgid "N/A" +msgstr "N/A" + +#: tools/editor/script_create_dialog.cpp +msgid "Class name is invalid!" +msgstr "Le nom de classe est invalide !" + +#: tools/editor/script_create_dialog.cpp +msgid "Parent class name is invalid!" +msgstr "Le nom de classe parent est invalide !" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid path!" +msgstr "Chemin invalide !" + +#: tools/editor/script_create_dialog.cpp +msgid "Could not create script in filesystem." +msgstr "Impossible de créer le script dans le système de fichiers." + +#: tools/editor/script_create_dialog.cpp +msgid "Path is empty" +msgstr "Le chemin est vide" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is not local" +msgstr "Le chemin n'est pas local" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid base path" +msgstr "Chemin de base invalide" + +#: tools/editor/script_create_dialog.cpp +msgid "File exists" +msgstr "Le fichier existe" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid extension" +msgstr "Extension invalide" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid path" +msgstr "Chemin valide" + +#: tools/editor/script_create_dialog.cpp +msgid "Class Name:" +msgstr "Nom de classe :" + +#: tools/editor/script_create_dialog.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/editor_help.cpp +msgid "Inherits:" +msgstr "Hérite de :" + +#: tools/editor/script_create_dialog.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Language" +msgstr "Langage" + +#: tools/editor/script_create_dialog.cpp tools/editor/property_editor.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Error!" +msgstr "Erreur !" + +#: tools/editor/script_create_dialog.cpp +msgid "Built-In Script" +msgstr "Script intégré" + +#: tools/editor/script_create_dialog.cpp tools/editor/project_settings.cpp +#: tools/editor/editor_file_dialog.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Path:" +msgstr "Chemin :" + +#: tools/editor/script_create_dialog.cpp +msgid "Create Node Script" +msgstr "Créer le script de nœud" + +#: tools/editor/script_create_dialog.cpp tools/editor/animation_editor.cpp +#: tools/editor/project_manager.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create" +msgstr "Créer" + +#: tools/editor/animation_editor.cpp +msgid "Disabled" +msgstr "Désactivé" + +#: tools/editor/animation_editor.cpp +msgid "All Selection" +msgstr "Toute la sélection" + +#: tools/editor/animation_editor.cpp +msgid "Move Add Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transition" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transform" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Value" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Call" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Up" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Down" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove Anim Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Set Transitions to:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Rename" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Interpolation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Value Mode" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Node Curve" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Selection Curve" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Delete Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Move Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale From Cursor" +msgstr "" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Duplicate Transposed" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Goto Next Step" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Goto Prev Step" +msgstr "" + +#: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp +msgid "Linear" +msgstr "Linéaire" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Constante" + +#: tools/editor/animation_editor.cpp +msgid "In" +msgstr "In" + +#: tools/editor/animation_editor.cpp +msgid "Out" +msgstr "Out" + +#: tools/editor/animation_editor.cpp +msgid "In-Out" +msgstr "In-out" + +#: tools/editor/animation_editor.cpp +msgid "Out-In" +msgstr "Out-in" + +#: tools/editor/animation_editor.cpp +msgid "Transitions" +msgstr "Transitions" + +#: tools/editor/animation_editor.cpp +msgid "Optimize Animation" +msgstr "Optimiser l'animation" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation" +msgstr "Nettoyer l'animation" + +#: tools/editor/animation_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "Créer une NOUVELLE piste pour %s et insérer une clé ?" + +#: tools/editor/animation_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "Créer %d NOUVELLES pistes et insérer des clés ?" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create & Insert" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Len" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create Typed Value Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Scale Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Call Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Animation zoom." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Length (s):" +msgstr "Longueur (s) :" + +#: tools/editor/animation_editor.cpp +msgid "Animation length (in seconds)." +msgstr "Longueur de l'animation (en secondes)." + +#: tools/editor/animation_editor.cpp +msgid "Step (s):" +msgstr "Pas (s) :" + +#: tools/editor/animation_editor.cpp +msgid "Cursor step snap (in seconds)." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable looping in animation." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Add new tracks." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move current track up." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move current track down." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove selected track." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Track tools" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable editing of individual keys by clicking them." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim. Optimizer" +msgstr "Optimiseur d'animation" + +#: tools/editor/animation_editor.cpp +msgid "Max. Linear Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max. Angular Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Optimize" +msgstr "Optimiser" + +#: tools/editor/animation_editor.cpp +msgid "Key" +msgstr "Clé" + +#: tools/editor/animation_editor.cpp +msgid "Transition" +msgstr "Transition" + +#: tools/editor/animation_editor.cpp +msgid "Scale Ratio:" +msgstr "Ratio d'échelle :" + +#: tools/editor/animation_editor.cpp +msgid "Call Functions in Which Node?" +msgstr "Appeler des fonctions dans quel nœud ?" + +#: tools/editor/animation_editor.cpp +msgid "Remove invalid keys" +msgstr "Supprimer les clés invalides" + +#: tools/editor/animation_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "Supprimer les pistes vides et non résulues" + +#: tools/editor/animation_editor.cpp +msgid "Clean-up all animations" +msgstr "Nettoyer toutes les animations" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "Nettoyer les animations (PAS DE RETOUR EN ARRIÈRE !)" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up" +msgstr "Nettoyer" + +#: tools/editor/script_editor_debugger.cpp +msgid "Bytes:" +msgstr "Octets :" + +#: tools/editor/script_editor_debugger.cpp tools/editor/project_settings.cpp +#: tools/editor/scene_tree_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Type:" +msgstr "Type :" + +#: tools/editor/script_editor_debugger.cpp +msgid "Warning" +msgstr "Avertissement" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Error" +msgstr "Erreur" + +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_help.cpp +msgid "Description:" +msgstr "Description :" + +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_profiler.cpp +msgid "Time:" +msgstr "Temps :" + +#: tools/editor/script_editor_debugger.cpp +msgid "Error:" +msgstr "Erreur :" + +#: tools/editor/script_editor_debugger.cpp +msgid "Source:" +msgstr "Source :" + +#: tools/editor/script_editor_debugger.cpp +msgid "Function:" +msgstr "Fonction :" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors" +msgstr "Erreurs" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debugger" +msgstr "Débogueur" + +#: tools/editor/script_editor_debugger.cpp +msgid "Child Process Connected" +msgstr "Processus enfant connecté" + +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_file_dialog.cpp +msgid "File:" +msgstr "Fichier :" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Step Into" +msgstr "Rentrer" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Step Over" +msgstr "Sortir" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Break" +msgstr "Mettre en pause" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Continue" +msgstr "Continuer" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Previous Instance" +msgstr "Inspecter l'instance précédente" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Next Instance" +msgstr "Inspecter l'instance suivante" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Frames" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Variable" +msgstr "Variable" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors:" +msgstr "Erreurs :" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Trace (if applicable):" +msgstr "Trace de pile (si applicable) :" + +#: tools/editor/script_editor_debugger.cpp +#, fuzzy +msgid "Remote Inspector" +msgstr "Inspecteur" + +#: tools/editor/script_editor_debugger.cpp +#, fuzzy +msgid "Live Scene Tree:" +msgstr "Arbre des scènes :" + +#: tools/editor/script_editor_debugger.cpp +#, fuzzy +msgid "Remote Object Properties: " +msgstr "Propriétés de l'objet." + +#: tools/editor/script_editor_debugger.cpp +msgid "Profiler" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitor" +msgstr "Moniteur" + +#: tools/editor/script_editor_debugger.cpp +msgid "Value" +msgstr "Valeur" + +#: tools/editor/script_editor_debugger.cpp +#, fuzzy +msgid "Monitors" +msgstr "Moniteur" + +#: tools/editor/script_editor_debugger.cpp +msgid "List of Video Memory Usage by Resource:" +msgstr "Liste de l'utilisation de la mémoire vidéo par ressource :" + +#: tools/editor/script_editor_debugger.cpp +msgid "Total:" +msgstr "Total :" + +#: tools/editor/script_editor_debugger.cpp +msgid "Video Mem" +msgstr "Mémoire vidéo" + +#: tools/editor/script_editor_debugger.cpp +msgid "Resource Path" +msgstr "Chemin de la ressource" + +#: tools/editor/script_editor_debugger.cpp +msgid "Type" +msgstr "Type" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Format" +msgstr "Format" + +#: tools/editor/script_editor_debugger.cpp +msgid "Usage" +msgstr "Utilisation" + +#: tools/editor/script_editor_debugger.cpp +msgid "Misc" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control:" +msgstr "Control cliqué :" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control Type:" +msgstr "Type de Control cliqué :" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Edit Root:" +msgstr "Racine pour l'édition en direct :" + +#: tools/editor/script_editor_debugger.cpp +msgid "Set From Tree" +msgstr "Définir depuis l'arbre" + +#: tools/editor/import_settings.cpp +msgid "Imported Resources" +msgstr "Ressources importées" + +#: tools/editor/import_settings.cpp tools/editor/editor_reimport_dialog.cpp +#: tools/editor/editor_node.cpp +msgid "Re-Import" +msgstr "Ré-importer" + +#: tools/editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "Mode d'exécution :" + +#: tools/editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "Scène actuelle" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "Scène principale" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "Arguments de la scène principale :" + +#: tools/editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Key " +msgstr "" + +#: tools/editor/project_settings.cpp +#, fuzzy +msgid "Joy Button" +msgstr "Bouton" + +#: tools/editor/project_settings.cpp +#, fuzzy +msgid "Joy Axis" +msgstr "Axe" + +#: tools/editor/project_settings.cpp +#, fuzzy +msgid "Mouse Button" +msgstr "Index du bouton de la souris :" + +#: tools/editor/project_settings.cpp +msgid "Invalid action (anything goes but '/' or ':')." +msgstr "Action invalide (tout passe, sauf « / » ou « : »)." + +#: tools/editor/project_settings.cpp +msgid "Action '%s' already exists!" +msgstr "L'action « %s » existe déjà !" + +#: tools/editor/project_settings.cpp +msgid "Rename Input Action Event" +msgstr "Renommer l'événement d'action d'entrée" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action Event" +msgstr "Ajouter un événement d'action d'entrée" + +#: tools/editor/project_settings.cpp +msgid "Meta+" +msgstr "Méta+" + +#: tools/editor/project_settings.cpp +msgid "Shift+" +msgstr "Maj+" + +#: tools/editor/project_settings.cpp +msgid "Alt+" +msgstr "Alt+" + +#: tools/editor/project_settings.cpp +msgid "Control+" +msgstr "Contrôle+" + +#: tools/editor/project_settings.cpp +msgid "Press a Key.." +msgstr "Appuyez sur une touche..." + +#: tools/editor/project_settings.cpp +msgid "Mouse Button Index:" +msgstr "Index du bouton de la souris :" + +#: tools/editor/project_settings.cpp +msgid "Left Button" +msgstr "Bouton gauche" + +#: tools/editor/project_settings.cpp +msgid "Right Button" +msgstr "Bouton droite" + +#: tools/editor/project_settings.cpp +msgid "Middle Button" +msgstr "Bouton du milieu" + +#: tools/editor/project_settings.cpp +msgid "Wheel Up Button" +msgstr "Molette vers le haut" + +#: tools/editor/project_settings.cpp +msgid "Wheel Down Button" +msgstr "Molette vers le bas" + +#: tools/editor/project_settings.cpp +msgid "Button 6" +msgstr "Bouton 6" + +#: tools/editor/project_settings.cpp +msgid "Button 7" +msgstr "Bouton 7" + +#: tools/editor/project_settings.cpp +msgid "Button 8" +msgstr "Bouton 8" + +#: tools/editor/project_settings.cpp +msgid "Button 9" +msgstr "Bouton 9" + +#: tools/editor/project_settings.cpp +msgid "Joystick Axis Index:" +msgstr "Index de l'axe du joystick :" + +#: tools/editor/project_settings.cpp +msgid "Axis" +msgstr "Axe" + +#: tools/editor/project_settings.cpp +msgid "Joystick Button Index:" +msgstr "Index du bouton du joystick :" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action" +msgstr "Ajouter une action d'entrée" + +#: tools/editor/project_settings.cpp +msgid "Erase Input Action Event" +msgstr "Effacer l'événement d'action d'entrée" + +#: tools/editor/project_settings.cpp +msgid "Device" +msgstr "Périphérique" + +#: tools/editor/project_settings.cpp +msgid "Button" +msgstr "Bouton" + +#: tools/editor/project_settings.cpp +msgid "Left Button." +msgstr "Bouton gauche." + +#: tools/editor/project_settings.cpp +msgid "Right Button." +msgstr "Bouton droite." + +#: tools/editor/project_settings.cpp +msgid "Middle Button." +msgstr "Bouton du milieu." + +#: tools/editor/project_settings.cpp +msgid "Wheel Up." +msgstr "Molette vers le haut." + +#: tools/editor/project_settings.cpp +msgid "Wheel Down." +msgstr "Molette vers le bas." + +#: tools/editor/project_settings.cpp +msgid "Toggle Persisting" +msgstr "Mode persistant" + +#: tools/editor/project_settings.cpp +msgid "Error saving settings." +msgstr "Erreur d'enregistrement des paramètres." + +#: tools/editor/project_settings.cpp +msgid "Settings saved OK." +msgstr "Paramètres enregistrés avec succès." + +#: tools/editor/project_settings.cpp +msgid "Add Translation" +msgstr "Ajouter une traduction" + +#: tools/editor/project_settings.cpp +msgid "Toggle AutoLoad Globals" +msgstr "Activer les variables globales AutoLoad" + +#: tools/editor/project_settings.cpp +msgid "Invalid name." +msgstr "Nom invalide." + +#: tools/editor/project_settings.cpp +msgid "Valid characters:" +msgstr "Caractères valides :" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing engine class name." +msgstr "" +"Nom invalide. Le nom ne doit pas rentrer en conflit avec le nom d'une classe " +"moteur existante." + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing buit-in type name." +msgstr "" +"Nom invalide. Le nom ne doit pas rentrer en conflit avec le nom d'un type " +"intégré au moteur." + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing global constant name." +msgstr "" +"Nom invalide. Le nom ne doit pas rentrer en conflit avec le nom d'une " +"constante globale." + +#: tools/editor/project_settings.cpp +msgid "Add Autoload" +msgstr "Ajouter un AutoLoad" + +#: tools/editor/project_settings.cpp +msgid "Remove Autoload" +msgstr "Supprimer l'AutoLoad" + +#: tools/editor/project_settings.cpp +msgid "Move Autoload" +msgstr "Déplacer l'AutoLoad" + +#: tools/editor/project_settings.cpp +msgid "Remove Translation" +msgstr "Supprimer la traduction" + +#: tools/editor/project_settings.cpp +msgid "Add Remapped Path" +msgstr "Ajouter un chemin remappé" + +#: tools/editor/project_settings.cpp +msgid "Resource Remap Add Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Change Resource Remap Language" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap Option" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Enable" +msgstr "Activer" + +#: tools/editor/project_settings.cpp +msgid "Project Settings (engine.cfg)" +msgstr "Paramètres du projet (engine.cfg)" + +#: tools/editor/project_settings.cpp tools/editor/addon_editor_plugin.cpp +msgid "Category:" +msgstr "Catégorie :" + +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +msgid "Property:" +msgstr "Propriété :" + +#: tools/editor/project_settings.cpp +msgid "Del" +msgstr "Supprimer" + +#: tools/editor/project_settings.cpp +msgid "Copy To Platform.." +msgstr "Copier vers la plate-forme..." + +#: tools/editor/project_settings.cpp +msgid "Input Map" +msgstr "Carte d'entrée" + +#: tools/editor/project_settings.cpp +msgid "Action:" +msgstr "Action :" + +#: tools/editor/project_settings.cpp +msgid "Device:" +msgstr "Périphérique :" + +#: tools/editor/project_settings.cpp +msgid "Index:" +msgstr "Index :" + +#: tools/editor/project_settings.cpp +msgid "Localization" +msgstr "Localisation" + +#: tools/editor/project_settings.cpp +msgid "Translations" +msgstr "Traductions" + +#: tools/editor/project_settings.cpp +msgid "Translations:" +msgstr "Traductions :" + +#: tools/editor/project_settings.cpp +msgid "Add.." +msgstr "Ajouter..." + +#: tools/editor/project_settings.cpp +msgid "Remaps" +msgstr "Remaps" + +#: tools/editor/project_settings.cpp +msgid "Resources:" +msgstr "Ressources :" + +#: tools/editor/project_settings.cpp +msgid "Remaps by Locale:" +msgstr "Remaps par langue :" + +#: tools/editor/project_settings.cpp +msgid "Locale" +msgstr "Langue" + +#: tools/editor/project_settings.cpp +msgid "AutoLoad" +msgstr "AutoLoad" + +#: tools/editor/project_settings.cpp +msgid "Node Name:" +msgstr "Nom de nœud :" + +#: tools/editor/project_settings.cpp +msgid "List:" +msgstr "Liste :" + +#: tools/editor/project_settings.cpp tools/editor/project_manager.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Name" +msgstr "Nom" + +#: tools/editor/project_settings.cpp +msgid "Singleton" +msgstr "Singleton" + +#: tools/editor/scene_tree_editor.cpp +msgid "" +"This item cannot be made visible because the parent is hidden. Unhide the " +"parent first." +msgstr "" +"Cet objet ne peut être rendu visible car son parent est caché. Affichez le " +"parent d'abord." + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle Spatial Visible" +msgstr "Afficher/cacher le Spatial" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle CanvasItem Visible" +msgstr "Afficher/cacher le CanvasItem" + +#: tools/editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "Instance :" + +#: tools/editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "Nom de nœud invalide, les caractères suivants ne sont pas autorisés :" + +#: tools/editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "Renommer le nœud" + +#: tools/editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Editable Children" +msgstr "Enfants modifiables" + +#: tools/editor/scene_tree_editor.cpp +msgid "Load As Placeholder" +msgstr "Charger en tant que fictif" + +#: tools/editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "Ouvrir dans l'éditeur" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance" +msgstr "Effacer l'héritage" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "Effacer l'héritage ? (Pas de retour en arrière !)" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear!" +msgstr "Effacer !" + +#: tools/editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "Sélectionner un nœud" + +#: tools/editor/editor_profiler.cpp +msgid "Stop Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Start Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Measure:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +#, fuzzy +msgid "Frame %" +msgstr "Ajouter une image" + +#: tools/editor/editor_profiler.cpp +#, fuzzy +msgid "Fixed Frame %" +msgstr "Ajouter une image" + +#: tools/editor/editor_profiler.cpp +#, fuzzy +msgid "Inclusive" +msgstr "Inclure" + +#: tools/editor/editor_profiler.cpp +msgid "Self" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "" + +#: tools/editor/quick_open.cpp tools/editor/editor_help.cpp +#: tools/editor/create_dialog.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Matches:" +msgstr "Correspondances :" + +#: tools/editor/quick_open.cpp tools/editor/scenes_dock.cpp +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_node.cpp +#: tools/editor/editor_help.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Open" +msgstr "Ouvrir" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Please wait for scan to complete." +msgstr "Veuillez attendre la fin du scan." + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Current scene must be saved to re-import." +msgstr "La scène actuelle doit être enregistrée afin de pouvoir ré-importer." + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Save & Re-Import" +msgstr "Enregistrer et ré-importer" + +#: tools/editor/editor_reimport_dialog.cpp tools/editor/editor_node.cpp +msgid "Re-Importing" +msgstr "Ré-importation" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import Changed Resources" +msgstr "Ré-importer les ressources modifiées" + +#: tools/editor/resources_dock.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Error saving resource!" +msgstr "Erreur d'enregistrement de la ressource !" + +#: tools/editor/resources_dock.cpp +msgid "Create New Resource" +msgstr "Créer une nouvelle ressource" + +#: tools/editor/resources_dock.cpp +msgid "Open Resource" +msgstr "Ouvrir la ressource" + +#: tools/editor/resources_dock.cpp +msgid "Save Resource" +msgstr "Enregistrer la ressource" + +#: tools/editor/resources_dock.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save Resource As.." +msgstr "Enregistrer la ressource sous..." + +#: tools/editor/resources_dock.cpp +msgid "Resource Tools" +msgstr "Outils des ressources" + +#: tools/editor/resources_dock.cpp +msgid "Make Local" +msgstr "Rendre local" + +#: tools/editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "Écrivez votre code dans la méthode _run()." + +#: tools/editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "Il y a déjà une scène éditée." + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "Impossible d'instancier le script :" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "Avez-vous oublié le mot-clé « tool » ?" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "Impossible d'exécuter le script :" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "Avez-vous oublié la méthode « _run » ?" + +#: tools/editor/editor_data.cpp +msgid "Updating Scene" +msgstr "Mise à jour de la scène" + +#: tools/editor/editor_data.cpp +msgid "Storing local changes.." +msgstr "Stockage des modifications locales..." + +#: tools/editor/editor_data.cpp +msgid "Updating scene.." +msgstr "Mise à jour de la scène..." + +#: tools/editor/file_type_cache.cpp +msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent Node" +msgstr "Re-parenter le nœud" + +#: tools/editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "Localisation pour le re-parentage (sélectionnez le nouveau parent) :" + +#: tools/editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "Conserver la transformation globale" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "Re-parenter" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp tools/editor/editor_node.cpp +msgid "Update" +msgstr "Mettre à jour" + +#: tools/editor/editor_plugin_settings.cpp +#, fuzzy +msgid "Version:" +msgstr "Description :" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Author:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "" + +#: tools/editor/scenes_dock.cpp tools/editor/editor_file_dialog.cpp +msgid "Favorites:" +msgstr "Favoris :" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination files, doing nothing." +msgstr "Fichiers source et destination identiques, rien à faire." + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination paths, doing nothing." +msgstr "Chemins source et destination identiques, rien à faire." + +#: tools/editor/scenes_dock.cpp +msgid "Can't move directories to within themselves." +msgstr "Impossible de déplacer des répertoires vers eux-mêmes." + +#: tools/editor/scenes_dock.cpp +msgid "Can't operate on '..'" +msgstr "Impossible d'opérer sur « .. »" + +#: tools/editor/scenes_dock.cpp +msgid "Pick New Name and Location For:" +msgstr "Entrez un nouveau nom et chemin pour :" + +#: tools/editor/scenes_dock.cpp +msgid "No files selected!" +msgstr "Pas de fichiers sélectionnés !" + +#: tools/editor/scenes_dock.cpp +msgid "Instance" +msgstr "Instance" + +#: tools/editor/scenes_dock.cpp +msgid "Edit Dependencies.." +msgstr "Modifier les dépendances..." + +#: tools/editor/scenes_dock.cpp +msgid "View Owners.." +msgstr "Voir les propriétaires..." + +#: tools/editor/scenes_dock.cpp +msgid "Rename or Move.." +msgstr "Renommer ou déplacer..." + +#: tools/editor/scenes_dock.cpp +msgid "Move To.." +msgstr "Déplacer vers..." + +#: tools/editor/scenes_dock.cpp +msgid "Info" +msgstr "Information" + +#: tools/editor/scenes_dock.cpp +msgid "Show In File Manager" +msgstr "Montrer dans le gestionnaire de fichiers" + +#: tools/editor/scenes_dock.cpp tools/editor/editor_node.cpp +msgid "Re-Import.." +msgstr "Ré-importer..." + +#: tools/editor/scenes_dock.cpp +msgid "Previous Directory" +msgstr "Répertoire précédent" + +#: tools/editor/scenes_dock.cpp +msgid "Next Directory" +msgstr "Répertoire suivant" + +#: tools/editor/scenes_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "Re-scanner le système de fichiers" + +#: tools/editor/scenes_dock.cpp +msgid "Toggle folder status as Favorite" +msgstr "Basculer l'état favori du dossier" + +#: tools/editor/scenes_dock.cpp +msgid "Instance the selected scene(s) as child of the selected node." +msgstr "Instancie la/les scènes sélectionnées en tant qu'enfant du nœud." + +#: tools/editor/scenes_dock.cpp +msgid "Move" +msgstr "Déplacer" + +#: tools/editor/editor_import_export.cpp +msgid "Added:" +msgstr "Ajouté :" + +#: tools/editor/editor_import_export.cpp +msgid "Removed:" +msgstr "Supprimé :" + +#: tools/editor/editor_import_export.cpp +msgid "Could not save atlas subtexture:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Storing File:" +msgstr "Stockage du fichier :" + +#: tools/editor/editor_import_export.cpp +msgid "Packing" +msgstr "Empaquetage" + +#: tools/editor/editor_import_export.cpp +msgid "Exporting for %s" +msgstr "Exportation pour %s" + +#: tools/editor/editor_import_export.cpp +msgid "Setting Up.." +msgstr "Configuration..." + +#: tools/editor/editor_settings.cpp +msgid "Default (Same as Editor)" +msgstr "Par défaut (même que l'éditeur)" + +#: tools/editor/editor_file_dialog.cpp +msgid "File Exists, Overwrite?" +msgstr "Le fichier existe, l'écraser ?" + +#: tools/editor/editor_file_dialog.cpp +msgid "All Recognized" +msgstr "Tous les fichiers reconnus" + +#: tools/editor/editor_file_dialog.cpp +msgid "All Files (*)" +msgstr "Tous les fichiers (*)" + +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save" +msgstr "Enregistrer" + +#: tools/editor/editor_file_dialog.cpp +msgid "Save a File" +msgstr "Enregistrer un fichier" + +#: tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "Récents :" + +#: tools/editor/editor_file_dialog.cpp +msgid "Directories & Files:" +msgstr "Répertoires et fichiers :" + +#: tools/editor/editor_file_dialog.cpp +msgid "Preview:" +msgstr "Aperçu :" + +#: tools/editor/editor_file_dialog.cpp +msgid "Filter:" +msgstr "Filtre :" + +#: tools/editor/editor_file_dialog.cpp +msgid "Must use a valid extension." +msgstr "Utilisez une extension valide." + +#: tools/editor/groups_editor.cpp +msgid "Add to Group" +msgstr "Ajouter au groupe" + +#: tools/editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "Supprimer du groupe" + +#: tools/editor/groups_editor.cpp +msgid "Group Editor" +msgstr "Éditeur de groupes" + +#: tools/editor/groups_editor.cpp +msgid "Node Group(s)" +msgstr "Groupes de nœuds" + +#: tools/editor/property_editor.cpp +msgid "Preset.." +msgstr "Pré-réglage..." + +#: tools/editor/property_editor.cpp +msgid "Ease In" +msgstr "Ease in" + +#: tools/editor/property_editor.cpp +msgid "Ease Out" +msgstr "Ease out" + +#: tools/editor/property_editor.cpp +msgid "Zero" +msgstr "Zéro" + +#: tools/editor/property_editor.cpp +msgid "Easing In-Out" +msgstr "Ease in-out" + +#: tools/editor/property_editor.cpp +msgid "Easing Out-In" +msgstr "Ease out-in" + +#: tools/editor/property_editor.cpp +msgid "File.." +msgstr "Fichier..." + +#: tools/editor/property_editor.cpp +msgid "Dir.." +msgstr "Répertoire..." + +#: tools/editor/property_editor.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "New" +msgstr "Nouveau" + +#: tools/editor/property_editor.cpp +msgid "Load" +msgstr "Charger" + +#: tools/editor/property_editor.cpp +msgid "Assign" +msgstr "Assigner" + +#: tools/editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "Erreur de chargement du fichier : ce n'est pas une ressource !" + +#: tools/editor/property_editor.cpp +msgid "Couldn't load image" +msgstr "Impossible de charger l'image" + +#: tools/editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "Bit %d, valeur %d." + +#: tools/editor/property_editor.cpp tools/editor/editor_help.cpp +msgid "Class:" +msgstr "Classe :" + +#: tools/editor/property_editor.cpp +msgid "On" +msgstr "Activé" + +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "Définir" + +#: tools/editor/property_editor.cpp +msgid "Properties:" +msgstr "Propriétés :" + +#: tools/editor/property_editor.cpp +msgid "Global" +msgstr "Global" + +#: tools/editor/property_editor.cpp +msgid "Sections:" +msgstr "Sections :" + +#: tools/editor/addon_editor_plugin.cpp tools/editor/editor_node.cpp +#: tools/editor/project_manager.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Import" +msgstr "Importer" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Sort:" +msgstr "Trier :" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Reverse" +msgstr "Inverser" + +#: tools/editor/addon_editor_plugin.cpp +msgid "All" +msgstr "Tout" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Site:" +msgstr "Site :" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Assets ZIP File" +msgstr "Fichier ZIP de données" + +#: tools/editor/editor_node.cpp +msgid "Importing:" +msgstr "Importation :" + +#: tools/editor/editor_node.cpp +msgid "Node From Scene" +msgstr "Nœud à partir d'une scène" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "I see.." +msgstr "Je vois..." + +#: tools/editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "Impossible d'ouvrir le fichier pour écriture :" + +#: tools/editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "Format de fichier demandé inconnu :" + +#: tools/editor/editor_node.cpp +msgid "Error while saving." +msgstr "Erreur lors de l'enregistrement." + +#: tools/editor/editor_node.cpp +msgid "Saving Scene" +msgstr "Enregistrement de la scène" + +#: tools/editor/editor_node.cpp +msgid "Analyzing" +msgstr "Analyse" + +#: tools/editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "Création de l'aperçu" + +#: tools/editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +msgstr "" +"Impossible d'enregistrer la scène. Les dépendances (instances) n'ont sans " +"doute pas pu être satisfaites." + +#: tools/editor/editor_node.cpp +msgid "Failed to load resource." +msgstr "Impossible de charger la ressource." + +#: tools/editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "Impossible de charger la MeshLibrary pour fusion !" + +#: tools/editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "Erreur d'enregistrement de la MeshLibrary !" + +#: tools/editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "Impossible de charger la TileSet pour fusion !" + +#: tools/editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "Erreur d'enregistrement de la TileSet !" + +#: tools/editor/editor_node.cpp +msgid "Can't open export templates zip." +msgstr "Impossible d'ouvrir le ZIP de modèles d'exportation." + +#: tools/editor/editor_node.cpp +msgid "Loading Export Templates" +msgstr "Chargement des modèles d'exportation" + +#: tools/editor/editor_node.cpp +msgid "Error trying to save layout!" +msgstr "Erreur d'enregistrement de la disposition !" + +#: tools/editor/editor_node.cpp +msgid "Default editor layout overridden." +msgstr "Disposition de l'éditeur par défaut remplacée." + +#: tools/editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "Nom de la disposition non trouvé !" + +#: tools/editor/editor_node.cpp +msgid "Restored default layout to base settings." +msgstr "Disposition par défaut remise à zéro." + +#: tools/editor/editor_node.cpp +msgid "Copy Params" +msgstr "Copier paramètres" + +#: tools/editor/editor_node.cpp +msgid "Set Params" +msgstr "Définir paramètres" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "Coller la ressource" + +#: tools/editor/editor_node.cpp +msgid "Copy Resource" +msgstr "Copier la ressource" + +#: tools/editor/editor_node.cpp +msgid "Make Built-In" +msgstr "Rendre intégré" + +#: tools/editor/editor_node.cpp +msgid "Make Sub-Resources Unique" +msgstr "Rendre les sous-ressources uniques" + +#: tools/editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "Il n'y a pas de scène définie pour être lancée." + +#: tools/editor/editor_node.cpp +msgid "Current scene was never saved, please save it prior to running." +msgstr "" +"La scène actuelle n'a jamais été sauvegardée, veuillez la sauvegarder avant " +"de la lancer." + +#: tools/editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "Impossible de démarrer le sous-processus !" + +#: tools/editor/editor_node.cpp +msgid "Open Scene" +msgstr "Ouvrir une scène" + +#: tools/editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "Ouvrir scène de base" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Scene.." +msgstr "Ouvrir une scène rapidement..." + +#: tools/editor/editor_node.cpp +msgid "Quick Open Script.." +msgstr "Ouvrir un script rapidement..." + +#: tools/editor/editor_node.cpp +msgid "Yes" +msgstr "Oui" + +#: tools/editor/editor_node.cpp +msgid "Close scene? (Unsaved changes will be lost)" +msgstr "Fermer la scène ? (les modifications non sauvegardées seront perdues)" + +#: tools/editor/editor_node.cpp +msgid "Save Scene As.." +msgstr "Enregistrer la scène sous..." + +#: tools/editor/editor_node.cpp +msgid "This scene has never been saved. Save before running?" +msgstr "" +"Cette scène n'a jamais été enregistrée. L'enregistrer avant de la lancer ?" + +#: tools/editor/editor_node.cpp +msgid "Please save the scene first." +msgstr "Veuillez enregistrer la scène d'abord." + +#: tools/editor/editor_node.cpp +msgid "Save Translatable Strings" +msgstr "Enregistrer les chaînes traduisibles" + +#: tools/editor/editor_node.cpp +msgid "Export Mesh Library" +msgstr "Exporter une bibliothèque de maillages" + +#: tools/editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "Exporter un ensemble de tuiles" + +#: tools/editor/editor_node.cpp +msgid "Quit" +msgstr "Quitter" + +#: tools/editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "Quitter l'éditeur ?" + +#: tools/editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "La scène actuelle n'est pas enregistrée. Ouvrir quand même ?" + +#: tools/editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "Impossible de recharger une scène qui n'a jamais été sauvegardée." + +#: tools/editor/editor_node.cpp +msgid "Revert" +msgstr "Réinitialiser" + +#: tools/editor/editor_node.cpp +msgid "This action cannot be undone. Revert anyway?" +msgstr "Cette action ne peut être annulée. Réinitialiser quand même ?" + +#: tools/editor/editor_node.cpp +msgid "Quick Run Scene.." +msgstr "Lancer une scène rapidement..." + +#: tools/editor/editor_node.cpp +#, fuzzy +msgid "" +"Open Project Manager? \n" +"(Unsaved changes will be lost)" +msgstr "Fermer la scène ? (les modifications non sauvegardées seront perdues)" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "Ugh" +msgstr "Oups" + +#: tools/editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to open " +"the scene, then save it inside the project path." +msgstr "" +"Erreur lors du chargement de la scène, elle doit être dans le chemin du " +"projet. Utilisez « Importer » pour ouvrir la scène, puis enregistrez-la dans " +"le répertoire du projet." + +#: tools/editor/editor_node.cpp +msgid "Error loading scene." +msgstr "Erreur lors du chargement de la scène." + +#: tools/editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "La scène « %s » a des dépendences cassées :" + +#: tools/editor/editor_node.cpp +msgid "Save Layout" +msgstr "Enregistrer la disposition" + +#: tools/editor/editor_node.cpp +msgid "Delete Layout" +msgstr "Supprimer la disposition" + +#: tools/editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "Basculer entre les onglets de scène" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s)" +msgstr "%d fichier(s) supplémentaire(s)" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s) or folder(s)" +msgstr "%s fichier(s) ou dossier(s) supplémentaire(s)" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Scene" +msgstr "Scène" + +#: tools/editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "Aller à la scène ouverte précédemment." + +#: tools/editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "Opérations avec les fichiers de scène." + +#: tools/editor/editor_node.cpp +msgid "New Scene" +msgstr "Nouvelle scène" + +#: tools/editor/editor_node.cpp +msgid "New Inherited Scene.." +msgstr "Nouvelle scène héritée..." + +#: tools/editor/editor_node.cpp +msgid "Open Scene.." +msgstr "Ouvrir une scène..." + +#: tools/editor/editor_node.cpp +msgid "Save Scene" +msgstr "Enregistrer la scène" + +#: tools/editor/editor_node.cpp +msgid "Close Scene" +msgstr "Fermer la scène" + +#: tools/editor/editor_node.cpp +msgid "Close Goto Prev. Scene" +msgstr "Fermer, aller à la scène précédente" + +#: tools/editor/editor_node.cpp +msgid "Open Recent" +msgstr "Fichiers récents" + +#: tools/editor/editor_node.cpp +msgid "Quick Search File.." +msgstr "Recherche rapide d'un fichier..." + +#: tools/editor/editor_node.cpp +msgid "Convert To.." +msgstr "Convertir vers..." + +#: tools/editor/editor_node.cpp +msgid "Translatable Strings.." +msgstr "Chaînes traduisibles..." + +#: tools/editor/editor_node.cpp +msgid "MeshLibrary.." +msgstr "MeshLibrary..." + +#: tools/editor/editor_node.cpp +msgid "TileSet.." +msgstr "TileSet..." + +#: tools/editor/editor_node.cpp tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Redo" +msgstr "Refaire" + +#: tools/editor/editor_node.cpp +msgid "Run Script" +msgstr "Lancer le script" + +#: tools/editor/editor_node.cpp +msgid "Project Settings" +msgstr "Paramètres du projet" + +#: tools/editor/editor_node.cpp +msgid "Revert Scene" +msgstr "Réinitialiser la scène" + +#: tools/editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "Quitter vers la liste des projets" + +#: tools/editor/editor_node.cpp +msgid "Import assets to the project." +msgstr "Importer des ressources dans le projet." + +#: tools/editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "Outils divers liés au projet ou à la scène." + +#: tools/editor/editor_node.cpp +msgid "Tools" +msgstr "Outils" + +#: tools/editor/editor_node.cpp +msgid "Export the project to many platforms." +msgstr "Exporter le projet vers diverses plate-formes." + +#: tools/editor/editor_node.cpp +msgid "Play the project (F5)." +msgstr "Jouer le projet (F5)." + +#: tools/editor/editor_node.cpp +#, fuzzy +msgid "Pause the scene" +msgstr "Jouer une scène personnalisée" + +#: tools/editor/editor_node.cpp +msgid "Stop the scene (F8)." +msgstr "Arrêter la scène (F8)." + +#: tools/editor/editor_node.cpp +msgid "Play the edited scene (F6)." +msgstr "Jouer la scène actuellement en cours d'édition (F6)." + +#: tools/editor/editor_node.cpp +msgid "Play custom scene" +msgstr "Jouer une scène personnalisée" + +#: tools/editor/editor_node.cpp +msgid "Debug options" +msgstr "Options de débogage" + +#: tools/editor/editor_node.cpp +msgid "Live Editing" +msgstr "Édition en direct" + +#: tools/editor/editor_node.cpp +msgid "File Server" +msgstr "Serveur de fichiers" + +#: tools/editor/editor_node.cpp +msgid "Deploy Remote Debug" +msgstr "Déployer le débogage à distance" + +#: tools/editor/editor_node.cpp +msgid "Deploy File Server Clients" +msgstr "Déployer des clients de serveur de fichiers" + +#: tools/editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "Formes de collision visibles" + +#: tools/editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "Navigation visible" + +#: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Settings" +msgstr "Paramètres" + +#: tools/editor/editor_node.cpp +msgid "Editor Layout" +msgstr "Disposition de l'éditeur" + +#: tools/editor/editor_node.cpp +msgid "Install Export Templates" +msgstr "Installer les modèles d'exportation" + +#: tools/editor/editor_node.cpp +msgid "About" +msgstr "À propos" + +#: tools/editor/editor_node.cpp +msgid "Alerts when an external resource has changed." +msgstr "Alerte lorsqu'une ressource externe a été modifiée." + +#: tools/editor/editor_node.cpp +msgid "Spins when the editor window repaints!" +msgstr "Tourne lorsque la fenêtre de l'éditeur est repainte !" + +#: tools/editor/editor_node.cpp +msgid "Update Always" +msgstr "Toujours repeindre" + +#: tools/editor/editor_node.cpp +msgid "Update Changes" +msgstr "Repeindre quand modifié" + +#: tools/editor/editor_node.cpp +msgid "Inspector" +msgstr "Inspecteur" + +#: tools/editor/editor_node.cpp +msgid "Create a new resource in memory and edit it." +msgstr "Créer une nouvelle ressource dans la mémoire et la modifier." + +#: tools/editor/editor_node.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "Charger une ressource existante depuis la disque et la modifier." + +#: tools/editor/editor_node.cpp +msgid "Save the currently edited resource." +msgstr "Enregistrer la ressource actuellement modifiée." + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save As.." +msgstr "Enregistrer sous..." + +#: tools/editor/editor_node.cpp +msgid "Go to the previous edited object in history." +msgstr "Aller à l'objet modifié précédent dans l'historique." + +#: tools/editor/editor_node.cpp +msgid "Go to the next edited object in history." +msgstr "Aller à l'objet modifié suivant dans l'historique." + +#: tools/editor/editor_node.cpp +msgid "History of recently edited objects." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Object properties." +msgstr "Propriétés de l'objet." + +#: tools/editor/editor_node.cpp +msgid "FileSystem" +msgstr "Système de fichiers" + +#: tools/editor/editor_node.cpp +msgid "Output" +msgstr "Sortie" + +#: tools/editor/editor_node.cpp +msgid "Thanks from the Godot community!" +msgstr "La communauté Godot vous dit merci !" + +#: tools/editor/editor_node.cpp +msgid "Thanks!" +msgstr "Merci !" + +#: tools/editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "Importer des modèles depuis un fichier ZIP" + +#: tools/editor/editor_node.cpp +msgid "Export Library" +msgstr "Bibliothèque d'exportation" + +#: tools/editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "Fusionner avec l'existant" + +#: tools/editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "Ouvrir et exécuter un script" + +#: tools/editor/editor_node.cpp +msgid "Load Errors" +msgstr "Erreurs de chargement" + +#: tools/editor/call_dialog.cpp +msgid "Method List For '%s':" +msgstr "Liste des méthodes pour « %s » :" + +#: tools/editor/call_dialog.cpp +msgid "Call" +msgstr "Appel" + +#: tools/editor/call_dialog.cpp +msgid "Method List:" +msgstr "Liste des méthodes :" + +#: tools/editor/call_dialog.cpp +msgid "Arguments:" +msgstr "Paramètres :" + +#: tools/editor/call_dialog.cpp +msgid "Return:" +msgstr "Retourne :" + +#: tools/editor/pvrtc_compress.cpp +msgid "Could not execute PVRTC tool:" +msgstr "Impossible d'exécuter l'outil PVRTC :" + +#: tools/editor/pvrtc_compress.cpp +msgid "Can't load back converted image using PVRTC tool:" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Resize Array" +msgstr "Redimensionner le tableau" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value Type" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Search Classes" +msgstr "Chercher dans les classes" + +#: tools/editor/editor_help.cpp +msgid "Class List:" +msgstr "Liste des classes :" + +#: tools/editor/editor_help.cpp +msgid "Inherited by:" +msgstr "Héritée par :" + +#: tools/editor/editor_help.cpp +msgid "Brief Description:" +msgstr "Brève description :" + +#: tools/editor/editor_help.cpp +msgid "Public Methods:" +msgstr "Méthodes publiques :" + +#: tools/editor/editor_help.cpp +msgid "Members:" +msgstr "Membres :" + +#: tools/editor/editor_help.cpp +msgid "GUI Theme Items:" +msgstr "Items de thème GUI :" + +#: tools/editor/editor_help.cpp +msgid "Signals:" +msgstr "Signaux :" + +#: tools/editor/editor_help.cpp +msgid "Constants:" +msgstr "Constantes :" + +#: tools/editor/editor_help.cpp +msgid "Method Description:" +msgstr "Description de la méthode :" + +#: tools/editor/editor_help.cpp +msgid "Search Text" +msgstr "Chercher du texte" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, the path must exist!" +msgstr "Chemin de projet invalide, le chemin doit exister !" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must not exist." +msgstr "Chemin de projet invalide, engine.cfg ne doit pas exister." + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must exist." +msgstr "Chemin de projet invalide, engine.cfg doit exister." + +#: tools/editor/project_manager.cpp +msgid "Imported Project" +msgstr "Projet importé" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Couldn't create engine.cfg in project path." +msgstr "Impossible de créer le fichier engine.cfg dans le répertoire du projet." + +#: tools/editor/project_manager.cpp +msgid "Import Existing Project" +msgstr "Importer un projet existant" + +#: tools/editor/project_manager.cpp +msgid "Project Path (Must Exist):" +msgstr "Chemin du projet (doit exister) :" + +#: tools/editor/project_manager.cpp +msgid "Project Name:" +msgstr "Nom du projet :" + +#: tools/editor/project_manager.cpp +msgid "Create New Project" +msgstr "Créer un nouveau projet" + +#: tools/editor/project_manager.cpp +msgid "Project Path:" +msgstr "Chemin du projet" + +#: tools/editor/project_manager.cpp +msgid "Browse" +msgstr "Parcourir" + +#: tools/editor/project_manager.cpp +msgid "New Game Project" +msgstr "Nouveau projet de jeu" + +#: tools/editor/project_manager.cpp +msgid "That's a BINGO!" +msgstr "C'est un BINGO !" + +#: tools/editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "Projet sans titre" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to open more than one projects?" +msgstr "Voulez-vous vraiment ouvrir plus d'un projet à la fois ?" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to run more than one projects?" +msgstr "Voulez-vous vraiment lancer plus d'un projet à la fois ?" + +#: tools/editor/project_manager.cpp +msgid "Remove project from the list? (Folder contents will not be modified)" +msgstr "" +"Supprimer le projet de la liste ? (Le contenu du dossier ne sera pas modifié)" + +#: tools/editor/project_manager.cpp +msgid "Recent Projects:" +msgstr "Projets récents :" + +#: tools/editor/project_manager.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit" +msgstr "Modifier" + +#: tools/editor/project_manager.cpp +msgid "Run" +msgstr "Lancer" + +#: tools/editor/project_manager.cpp +msgid "Scan" +msgstr "Scanner" + +#: tools/editor/project_manager.cpp +msgid "New Project" +msgstr "Nouveau projet" + +#: tools/editor/project_manager.cpp +msgid "Exit" +msgstr "Quitter" + +#: tools/editor/scene_tree_dock.cpp +msgid "OK :(" +msgstr "OK :(" + +#: tools/editor/scene_tree_dock.cpp +msgid "No parent to instance a child at." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "Erreur de chargement de la scène depuis %s" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "Erreur d'instanciation de la scène depuis %s" + +#: tools/editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "OK" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one of " +"its nodes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "Instancier scène(s)" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "Cette opération ne peut être réalisée sur la racine de l'arbre." + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate Node(s)" +msgstr "Dupliquer le(s) nœud(s)" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)?" +msgstr "Supprimer le(s) nœud(s) ?" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done without a scene." +msgstr "Cette opération ne peut être réalisée sans une scène." + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "" +"Cette opération ne peut être réalisée uniquement avec un seul nœud " +"sélectionné." + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "Cette opération ne peut être réalisée sur des scènes instanciées." + +#: tools/editor/scene_tree_dock.cpp +msgid "Save New Scene As.." +msgstr "Enregistrer la nouvelle scène sous..." + +#: tools/editor/scene_tree_dock.cpp +msgid "Makes Sense!" +msgstr "C'est sensé !" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "Supprimer le(s) nœud(s)" + +#: tools/editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "Créer un nœud" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "Erreur d'enregistrement de la scène." + +#: tools/editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "New Scene Root" +msgstr "Nouvelle racine de la scène" + +#: tools/editor/scene_tree_dock.cpp +msgid "Inherit Scene" +msgstr "Hériter la scène" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "Ajouter un nœud enfant" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "Instancier une scène enfant" + +#: tools/editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "Changer le type" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Groups" +msgstr "Modifier les groupes" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Connections" +msgstr "Modifier les connexions" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Script" +msgstr "Ajouter un script" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Up" +msgstr "Déplacer vers le haut" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Down" +msgstr "Déplacer vers le bas" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate" +msgstr "Dupliquer" + +#: tools/editor/scene_tree_dock.cpp +#, fuzzy +msgid "Merge From Scene" +msgstr "Fusionner depuis la scène" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save Branch as Scene" +msgstr "Sauvegarder la branche comme scène" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Supprimer nœud(s)" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add/Create a New Node" +msgstr "Ajouter un nouveau nœud" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "" +"Instancie un fichier de scène comme nœud. Crée une scène héritée si aucun " +"nœud racine n'existe." + +#: tools/editor/create_dialog.cpp +msgid "Create New" +msgstr "Créer un nouveau" + +#: tools/editor/plugins/rich_text_editor_plugin.cpp +msgid "Parse BBCode" +msgstr "Analyser le BBCode" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Open Sample File(s)" +msgstr "Ouvrir un ou des fichiers d'échantillons" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "ERROR: Couldn't load sample!" +msgstr "ERREUR : Impossible de charger l'échantillon !" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Add Sample" +msgstr "Ajouter un échantillon" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stop" +msgstr "Arrêter" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Play" +msgstr "Jouer" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Rename Sample" +msgstr "Renommer l'échantillon" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Delete Sample" +msgstr "Supprimer l'échantillon" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "16 Bits" +msgstr "16 bits" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "8 Bits" +msgstr "8 bits" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stereo" +msgstr "Stéréo" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Mono" +msgstr "Mono" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/camera_editor_plugin.cpp +msgid "Preview" +msgstr "Aperçu" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Pitch" +msgstr "Hauteur" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Poly3D" +msgstr "Créer un Poly3D" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Edit Poly" +msgstr "Modifier le polygone" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "Modifier le polygone (supprimer un point)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "Activer/désactiver la lecture automatique" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "Nom de la nouvelle animation :" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "Nouvelle animation" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "Modifier le nom de l'animation :" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Remove Animation" +msgstr "Supprimer l'animation" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Invalid animation name!" +msgstr "ERREUR : Nom de l'animation invalide !" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Animation name already exists!" +msgstr "ERREUR : Le nom de l'animation existe déjà !" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Rename Animation" +msgstr "Renommer l'animation" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Animation" +msgstr "Ajouter une animation" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "Charger l'animation" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "Dupliquer l'animation" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to copy!" +msgstr "ERREUR : Aucune animation à copier !" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation resource on clipboard!" +msgstr "ERREUR : Pas de ressource de type animation dans le presse-papiers !" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "Animation collée" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "Coller l'animation" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to edit!" +msgstr "ERREUR : Pas d'animation à modifier !" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "Arrêter la lecture de l'animation. (S)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "Position de l'animation (en secondes)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create new animation in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load an animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save the current animation" +msgstr "Enregistrer l'animation actuelle" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "Afficher la liste des animations dans le lecteur." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "Lecture automatique au chargement" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Target Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Copy Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Times:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Next (Auto Queue):" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Cross-Animation Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#, fuzzy +msgid "Animation" +msgstr "Animations" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Poly" +msgstr "Créer un polygone" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "Créer un polygone occulteur" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create a new polygon from scratch." +msgstr "Créer un nouveau polygone à partir de rien." + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Edit existing polygon:" +msgstr "Modifier un polygone existant :" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "LMB: Move Point." +msgstr "Bouton gauche : déplacer un point." + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Ctrl+LMB: Split Segment." +msgstr "Contrôle + Bouton gauche : séparer le segment" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "RMB: Erase Point." +msgstr "Bouton droit : effacer un point." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "Configurer la grille" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "Décalage de la grille :" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid Step:" +msgstr "Pas de la grille :" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "Décalage de la rotation :" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +msgstr "Pas de la rotation :" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Pivot" +msgstr "Déplacer le pivot" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Action" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit IK Chain" +msgstr "Modifier la chaîne IK" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit CanvasItem" +msgstr "Modifier le CanvasItem" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom (%):" +msgstr "Zoom (%) :" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Paste Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Select Mode (Q)" +msgstr "Mode sélection (Q)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Drag: Rotate" +msgstr "Glisser : tourner" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Move" +msgstr "Alt + Glisser : déplacer" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+RMB: Depth list selection" +msgstr "Alt + Bouton droit : sélection détaillée par liste" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Move Mode (W)" +msgstr "Move déplacement (W)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode (E)" +msgstr "Mode rotation (E)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "Mode navigation" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Makes sure the object's children are not selectable." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Snap" +msgstr "Aligner sur la grille" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Show Grid" +msgstr "Afficher la grille" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "Rotation alignée" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap Relative" +msgstr "Alignement relatif" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap.." +msgstr "Configurer la grille..." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Pixel Snap" +msgstr "Aligner au pixel près" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Expand to Parent" +msgstr "Étendre au parent" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Skeleton.." +msgstr "Squelette..." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Bones" +msgstr "Créer les os" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "Effacer les os" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make IK Chain" +msgstr "Créer une chaîne IK" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear IK Chain" +msgstr "Effacer la chaîne IK" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "Affichage" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom In" +msgstr "Zoomer" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Out" +msgstr "Dézoomer" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Reset" +msgstr "Réinitialiser le zoom" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Set.." +msgstr "Définir le zoom" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Anchor" +msgstr "Ancre" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Keys (Ins)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Set a Value" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap (Pixels):" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "Seau" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "Sélectionner une case" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "Sélectionner" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase Selection" +msgstr "Supprimer la sélection" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "Transposer" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror X (A)" +msgstr "Miroir X (A)" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror Y (S)" +msgstr "Miroir Y (S)" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 0 degrees" +msgstr "Tourner de 0 degrés" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 90 degrees" +msgstr "Tourner de 90 degrés" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 180 degrees" +msgstr "Tourner de 180 degrés" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 270 degrees" +msgstr "Tourner de 270 degrés" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "New name:" +msgstr "Nouveau nom :" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "Échelle :" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "Fondu entrant (s) :" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "Fondu sortant (s) :" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend" +msgstr "Mélanger" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix" +msgstr "Mixer" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Start!" +msgstr "Démarrer !" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "Quantité :" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend:" +msgstr "Mélange :" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 0:" +msgstr "Mélange 0 :" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 1:" +msgstr "Mélange 1 :" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Current:" +msgstr "Actuel :" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Add Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Delete Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Rename" +msgstr "Renommer" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "L'arbre d'animations est valide." + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "L'arbre d'animations est invalide." + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "OneShot Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Import Animations.." +msgstr "Importer des animations..." + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "Modifier les filtres de nœud" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Filters.." +msgstr "Filtres..." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Parent has no solid faces to populate." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Couldn't map area." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate Surface" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate MultiMesh" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "X-Axis" +msgstr "Axe X" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Y-Axis" +msgstr "Axe Y" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Z-Axis" +msgstr "Axe Z" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh Up Axis:" +msgstr "Axe vers le haut du maillage :" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Rotation:" +msgstr "Rotation aléatoire :" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Tilt:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Scale:" +msgstr "Échelle aléatoire :" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate" +msgstr "Peupler" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find.." +msgstr "Trouver..." + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find Next" +msgstr "Trouver le suivant" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find Previous" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Replace.." +msgstr "Remplacer..." + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Line.." +msgstr "Aller à la ligne..." + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Vertex" +msgstr "Vertex" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Fragment" +msgstr "Fragment" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Lighting" +msgstr "Éclairage" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Can't save theme to file:" +msgstr "Impossible d'enregistrer le thème dans le fichier :" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Item" +msgstr "Ajouter un item" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All Items" +msgstr "Ajouter tous les items" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All" +msgstr "Tout ajouter" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Item" +msgstr "Supprimer l'item" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Template" +msgstr "Créer un modèle" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Item" +msgstr "Item" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Check Item" +msgstr "Item à cocher" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Checked Item" +msgstr "Item coché" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Has" +msgstr "Possède" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Many" +msgstr "Plusieurs" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Have,Many,Several,Options!" +msgstr "Ont,Plusieurs,Possibilités,D'options !" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 1" +msgstr "Onglet 1" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 2" +msgstr "Onglet 2" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 3" +msgstr "Onglet 3" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Data Type:" +msgstr "Type de données :" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Icon" +msgstr "Icône" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Style" +msgstr "Style" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font" +msgstr "Police" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Color" +msgstr "Couleur" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "BakedLightInstance does not contain a BakedLight resource." +msgstr "La BakedLightInstance ne contient pas de ressource BakedLight." + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Bake!" +msgstr "Calculer !" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Reset the lightmap octree baking process (start over)." +msgstr "Remettre le processus de calcul de l'éclairage à zéro (recommencer)." + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing %d Triangles:" +msgstr "Analyse de %d triangles :" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Triangle #" +msgstr "Triangle #" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Light Baker Setup:" +msgstr "Paramètres du calculateur d'éclairage :" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing Geometry" +msgstr "Analyse de la géométrie" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Fixing Lights" +msgstr "Correction des lumières" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Making BVH" +msgstr "Création du BVH" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Light Octree" +msgstr "Création de l'octree de lumière" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Octree Texture" +msgstr "Création de la texture d'octree" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Transfer to Lightmaps:" +msgstr "Transfert vers des lightmaps :" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Allocating Texture #" +msgstr "Allocation de la texture #" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Baking Triangle #" +msgstr "Calcul de la texture #" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Post-Processing Texture #" +msgstr "Post-traitement de la texture #" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "Orthogonale" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "Perspective" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "Transformation annulée." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "Transformation sur l'axe X." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "Transformation sur l'axe Y." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "Transformation sur l'axe Z." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling to %s%%." +msgstr "Mise à l'échelle %s%%." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "Rotation de %s degrés." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "Vue de dessous." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom" +msgstr "Dessous" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "Vue de dessus." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "Dessus" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "Vue arrière" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear" +msgstr "Arrière" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "Vue avant" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front" +msgstr "Avant" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "Vue de gauche" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left" +msgstr "Gauche" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "Vue de droite" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right" +msgstr "Droite" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "L'insertion de clé est désactivée (pas de clé insérée)." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "Clé d'animation insérée." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view" +msgstr "Aligner avec la vue" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top (Num7)" +msgstr "Dessus (Pavé num. 7)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom (Shift+Num7)" +msgstr "Dessous (Maj+Pavé num. 7)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left (Num3)" +msgstr "Gauche (Pavé num. 3)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right (Shift+Num3)" +msgstr "Droite (Maj+Pavé num. 3)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front (Num1)" +msgstr "Devant (Pavé num. 1)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear (Shift+Num1)" +msgstr "Arrière (Maj+Pavé num. 1)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective (Num5)" +msgstr "Perspective (Pavé num. 5)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal (Num5)" +msgstr "Orthogonale (Pavé num. 5)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Environment" +msgstr "Environnement" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "Écouteur audio" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "Gizmos" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Selection (F)" +msgstr "Sélection (F)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view (Ctrl+Shift+F)" +msgstr "Aligner avec la vue (Ctrl+Maj+F)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "XForm Dialog" +msgstr "Dialogue XForm" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "No scene selected to instance!" +msgstr "Pas de scène sélectionnée à instancier !" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Instance at Cursor" +msgstr "Instancier sur le cursuer" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Could not instance scene!" +msgstr "Impossible d'instancier la scène !" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode (R)" +msgstr "Mode de mise à l'échelle (R)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Transform" +msgstr "Type de transformation" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Local Coords" +msgstr "Coordonnées locales" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog.." +msgstr "Dialogue de transformation..." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default Light" +msgstr "Utiliser la lumière par défaut" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default sRGB" +msgstr "Utiliser sRGB par défaut" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "2 Viewports" +msgstr "Paramètres de la vue" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "3 Viewports" +msgstr "Paramètres de la vue" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "4 Viewports" +msgstr "Paramètres de la vue" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "Affichage normal" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "Affichage en fil de fer" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "Affichage des surimpressions" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Shadeless" +msgstr "Affichage sans ombrage" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "Afficher l'origine" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "Afficher la grille" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "Paramètres d'alignement" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "Alignement des translations :" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "Alignement des rotations (degrés) :" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "Alignement des mises à l'échelle (%) :" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "Paramètres de la vue" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Default Light Normal:" +msgstr "Normale de l'éclairage par défaut :" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Ambient Light Color:" +msgstr "Couleur de l'éclairage ambient :" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "Champ de vision de perspective (degrés) :" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "Z-Near de la vue :" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "Z-Far de la vue :" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "Modification de la transformation" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "Translater :" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "Tourner (degrés) :" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "Échelle (ratio) :" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "Type de transformation" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "Pré" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "Post" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Error while saving theme" +msgstr "Erreur lors de l'enregistrement." + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Error saving" +msgstr "Erreur de sauvegarde de l'atlas :" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Error importing theme" +msgstr "Erreur d'importation de la scène." + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Error importing" +msgstr "Erreur d'importation :" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Import Theme" +msgstr "Improter des textures" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Save Theme As.." +msgstr "Enregistrer la scène sous..." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "Tout enregistrer" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Prev" +msgstr "Précédent dans l'historique" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "Suivant dans l'historique" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Reload Theme" +msgstr "Recharger" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Save Theme" +msgstr "Enregistrer la scène" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Save Theme As" +msgstr "Enregistrer la scène sous..." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Left" +msgstr "Indenter vers la gauche" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Right" +msgstr "Indenter vers la droite" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Comment" +msgstr "Commenter/décommenter" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Clone Down" +msgstr "Cloner en dessous" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Complete Symbol" +msgstr "Compléter le symbole" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Trim Trailing Whitespace" +msgstr "Supprimer les espaces de fin de ligne" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Auto Indent" +msgstr "Indentation automatique" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Function.." +msgstr "Aller à la fonction…" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debug" +msgstr "Débogage" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Breakpoint" +msgstr "Placer un point d'arrêt" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Remove All Breakpoints" +msgstr "Placer un point d'arrêt" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Goto Next Breakpoint" +msgstr "Placer un point d'arrêt" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Goto Previous Breakpoint" +msgstr "Placer un point d'arrêt" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Keep Debugger Open" +msgstr "Garder le débogueur ouvert" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Window" +msgstr "Fenêtre" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Left" +msgstr "Aller à gauche" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Right" +msgstr "Aller à droite" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Help" +msgstr "Aide" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Contextual" +msgstr "Aide contextuelle" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Tutorials" +msgstr "Tutoriels" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Open https://godotengine.org at tutorials section." +msgstr "Ouvre https://godotengine.org dans la section des tutoriels." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Classes" +msgstr "Classes" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the class hierarchy." +msgstr "Cherche dans la hiérarchie des classes." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "Chercher dans l'aide" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the reference documentation." +msgstr "Cherche dans la documentation de référence." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "Aller au document modifié précédent." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "Aller au document modifié suivant." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "Créer un script" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" +"Les fichiers suivants sont plus récents sur le disque.\n" +"Quelle action doit être prise ? :" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload" +msgstr "Recharger" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Resave" +msgstr "Ré-enregistrer" + +#: tools/editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox Preview:" +msgstr "Aperçu de la StyleBox :" + +#: tools/editor/plugins/sample_editor_plugin.cpp +msgid "Length:" +msgstr "Longueur :" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Constant" +msgstr "Modifier une constante scalaire" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Constant" +msgstr "Modifier une constance vectorielle" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Constant" +msgstr "Modifier une constante RVB" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Operator" +msgstr "Modifier un opérateur scalaire" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Operator" +msgstr "Modifier un opérateur vectoriel" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Scalar Operator" +msgstr "Modifier un opérateur vectoriel scalaire" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Operator" +msgstr "Modifier un opérateur RVB" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Toggle Rot Only" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Default Value" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change XForm Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Texture Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Cubemap Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Comment" +msgstr "Modifier un commentaire" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Color Ramp" +msgstr "Ajouter/supprimer de la rampe de couleurs" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Modify Color Ramp" +msgstr "Modifier une rampe de couleurs" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Curve Map" +msgstr "Ajouter/supprimer de la carte de courbes" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Curve Map" +msgstr "Modifier la carte de courbes" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Input Name" +msgstr "Changer le nom de l'entrée" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Connect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Disconnect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Remove Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Move Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Duplicate Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Delete Shader Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Cyclic Connection Link" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Missing Input Connections" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "Le maillage est vide !" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Convex Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "Cela ne fonctionne pas sur la racine de la scène !" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Shape" +msgstr "Créer une forme Trimesh" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Shape" +msgstr "Créer une forme convexe" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "Créer un maillage de navigation" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "Le MeshInstance n'a pas de maillage !" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "Impossible de créer le contour !" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "Créer le contour" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "Créer un corps statique Trimesh" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Static Body" +msgstr "Créer un corps statique convexe" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh.." +msgstr "Créer un maillage de contour..." + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "Créer un maillage de contour" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "Taille du contour :" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "Créer une carte UV" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "Transformer la carte UV" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "Éditeur UV de polygones 2D" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Point" +msgstr "Déplacer le point" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "Contrôle: Tourner" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "Maj. : Tout déplacer" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "Maj.+Contrôle : Mettre à l'échelle" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "Déplacer le polygone" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "Tourner le polygone" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "Mettre à l'échelle le polygone" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon->UV" +msgstr "Polygone -> UV" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV->Polygon" +msgstr "UV -> Polygone" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "Effacer l'UV" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Snap" +msgstr "Aligner" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Enable Snap" +msgstr "Activer l'alignement" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid" +msgstr "Grille" + +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Set region_rect" +msgstr "" + +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Sprite Region Editor" +msgstr "Éditeur de région de Sprite" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "ERREUR : Impossible de charger la ressource !" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "Ajouter une ressource" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "Renommer une ressource" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Resource" +msgstr "Supprimer une ressource" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "Le presse-papiers des ressources est vide !" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Load Resource" +msgstr "Charger une ressource" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "ERREUR : Impossible de charger la resource de type trame !" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "Ajouter une image" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "Le presse-papiers des ressources est vide ou n'est pas une texture !" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "Coller une image" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "Ajouter vide" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation Loop" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "(vide)" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations" +msgstr "Animations" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed (FPS):" +msgstr "Vitesse (FPS) :" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Loop" +msgstr "Boucle" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames" +msgstr "Trames d'animation" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (Before)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (After)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Up" +msgstr "Haut" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Down" +msgstr "Bas" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "Créer un polygone de navigation" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Remove Poly And Point" +msgstr "" + +#: tools/editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Erreur de chargement de l'image :" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image.." +msgstr "Pas de pixels avec une transparence > 128 dans l'image..." + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Set Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Creating Mesh Library" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Thumbnail.." +msgstr "Aperçu..." + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "Supprimer l'objet %d ?" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Scene" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import from Scene" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Update from Scene" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry (faces)." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Faces contain no area!" +msgstr "Les faces n'ont pas de surface !" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "No faces!" +msgstr "Pas de faces !" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Generate AABB" +msgstr "Générer un AABB" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Mesh" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Node" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Clear Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Positions:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Fill:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Surface" +msgstr "Surface" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "Volume" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "Objet %d" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "Objets" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "Éditeur de listes d'objets" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Add/Remove Color Ramp Point" +msgstr "Ajouter/supprimer un point de rampe de couleur" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "Point de courbe #" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Points" +msgstr "Sélectionner des points" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "Maj. + Glisser : sélectionner des points de contrôle" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "Clic : ajouter un point" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "Clic droit : supprimer un point" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "Ajouter un point (dans un espace vide)" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Delete Point" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Close Curve" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Could not find tile:" +msgstr "Impossible de trouver la tuile :" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Item name or ID:" +msgstr "Nom d'item ou ID :" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene?" +msgstr "Créer depuis la scène ?" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "Fusionner depuis la scène ?" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "Créer depuis la scène" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "Fusionner depuis la scène" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "Supprimer le point d'une courbe" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "Déplacer le point dans la courbe" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "Sélectionner les points de contrôle (Maj. + glisser)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Uncompressed" +msgstr "Non compressé" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossless (PNG)" +msgstr "Compression sans perte (PNG)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossy (WebP)" +msgstr "Compression avec perte (WebP)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress (VRAM)" +msgstr "Compression GPU (VRAM)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Format" +msgstr "Format de texture" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Compression Quality (WebP):" +msgstr "Qualité de compression de la texture (WebP) :" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Options" +msgstr "Options de texture" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Please specify some files!" +msgstr "Veuillez spécifier des fichiers !" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path is empty." +msgstr "Le chemin de destination est vide." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path must be a complete resource path." +msgstr "" +"Le chemin de destination doit être un chemin complet vers une ressource." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path must exist." +msgstr "Le chemin de destination doit exister." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "At least one file needed for Atlas." +msgstr "Il faut au moins un fichier pour créer un atlas." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Error importing:" +msgstr "Erreur d'importation :" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Only one file is required for large texture." +msgstr "Un seul fichier est nécessaire pour créer une grande texture." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Max Texture Size:" +msgstr "Taille de texture maximale :" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for Atlas (2D)" +msgstr "Importer des textures pour un atlas (2D)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cell Size:" +msgstr "Taille des cellules :" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Large Texture" +msgstr "Grande texture" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Textures (2D)" +msgstr "Importer des grandes textures (2D)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#, fuzzy +msgid "Source Texture" +msgstr "Texture source :" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Base Atlas Texture" +msgstr "Texture d'atlas de base" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#, fuzzy +msgid "Source Texture(s)" +msgstr "Texture(s) source :" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 2D" +msgstr "Importer des textures pour la 2D" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 3D" +msgstr "Importer des textures pour la 3D" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures" +msgstr "Improter des textures" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#, fuzzy +msgid "2D Texture" +msgstr "Grande texture" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#, fuzzy +msgid "3D Texture" +msgstr "Grande texture" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#, fuzzy +msgid "Atlas Texture" +msgstr "Texture d'atlas de base" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "" +"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " +"the project." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s):" +msgstr "Texture(s) source :" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Crop empty space." +msgstr "Rogner l'espace vide." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Target Path:" +msgstr "Chemin de destination :" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Accept" +msgstr "Accepter" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#, fuzzy +msgid "Texture" +msgstr "Grande texture" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Texture" +msgstr "Importer une grande texture" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Load Source Image" +msgstr "Charger une image source" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Slicing" +msgstr "Découpage" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Inserting" +msgstr "Insertion" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Saving" +msgstr "Enregistrement" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save large texture:" +msgstr "Impossible d'enregistrer la grande texture :" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Build Atlas For:" +msgstr "Construire l'atlas pour :" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Loading Image:" +msgstr "Chargement de l'image :" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't load image:" +msgstr "Impossible de charger l'image :" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Converting Images" +msgstr "Conversion des images" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cropping Images" +msgstr "Rognage des images" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Blitting Images" +msgstr "Découpage des images" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save atlas image:" +msgstr "Impossible d'enregistrer l'image d'atlas :" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save converted texture:" +msgstr "Impossible d'enregistrer la texture convertie :" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid source!" +msgstr "Source invalide !" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid translation source!" +msgstr "Source de traduction invalide !" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Column" +msgstr "Colonne" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No items to import!" +msgstr "Pas d'objets à importer !" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No target path!" +msgstr "Pas de chemin de destination !" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translations" +msgstr "Importer des traductions" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Couldn't import!" +msgstr "Impossible d'importer !" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translation" +msgstr "Importer une traduction" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Source CSV:" +msgstr "CSV source :" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Ignore First Row" +msgstr "Ignorer la première ligne" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Compress" +msgstr "Compresser" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Add to Project (engine.cfg)" +msgstr "Ajouter au projet (engine.cfg)" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Languages:" +msgstr "Importer les langues :" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#, fuzzy +msgid "Translation" +msgstr "Traductions" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "New Clip" +msgstr "Nouvelle séquence" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Animation Options" +msgstr "Options d'animation" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Flags" +msgstr "Drapeaux" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Bake FPS:" +msgstr "FPS de calcul :" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Optimizer" +msgstr "Optimiseur" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Linear Error" +msgstr "Erreur linéaire maximale" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angular Error" +msgstr "Erreur angulaire maximale" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angle" +msgstr "Angle maximal" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Clips" +msgstr "Séquences" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Start(s)" +msgstr "Départ(s)" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "End(s)" +msgstr "Fin(s)" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Filters" +msgstr "Filtres" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source path is empty." +msgstr "Le chemin source est vide." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script." +msgstr "Impossible de charger le script de post-importation." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import." +msgstr "Script invalide ou cassé de post-importation." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error importing scene." +msgstr "Erreur d'importation de la scène." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import 3D Scene" +msgstr "Importer une scène 3D" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source Scene:" +msgstr "Scène source :" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Same as Target Scene" +msgstr "Le même que la scène de destination" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Shared" +msgstr "Partagé" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Target Texture Folder:" +msgstr "Dossier de destination des textures :" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Options:" +msgstr "Options :" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Post-Process Script:" +msgstr "Script de post-traitement :" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Custom Root Node Type:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy +msgid "Auto" +msgstr "AutoLoad" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "The Following Files are Missing:" +msgstr "Les fichiers suivants sont manquants :" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Anyway" +msgstr "Importer quand même" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import & Open" +msgstr "Importer et ouvrir" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Edited scene has not been saved, open imported scene anyway?" +msgstr "" +"La scène modifiée actuellement n'a pas été enregistrée, ouvrir la scène " +"importée quand même ?" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Importing Scene.." +msgstr "Importation de la scène..." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Running Custom Script.." +msgstr "Lancement du script personnalisé..." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script:" +msgstr "Impossible de charger le script de post-importation :" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import:" +msgstr "Script de post-importation invalide ou cassé :" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error running post-import script:" +msgstr "Erreur d'exécution du script de post-importation :" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Image:" +msgstr "Importer une image :" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Can't import a file over itself:" +msgstr "Impossible d'importer un fichier par-dessus lui-même." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't localize path: %s (already local)" +msgstr "Impossible de rendre le chemin local : %s (déjà local)" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Saving.." +msgstr "Enregistrement..." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy +msgid "3D Scene Animation" +msgstr "Renommer l'animation" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No source font file!" +msgstr "Pas de fichier de police source !" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No target font resource!" +msgstr "Pas de ressource de police de destination !" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Can't load/process source font." +msgstr "Impossible de charger ou traiter la police source." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Couldn't save font." +msgstr "Impossible d'enregistrer la police." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font:" +msgstr "Police source :" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font Size:" +msgstr "Taille de la police source :" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Dest Resource:" +msgstr "Ressource de destination :" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "The quick brown fox jumps over the lazy dog." +msgstr "The quick brown fox jumps over the lazy dog." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Test:" +msgstr "Test :" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font Import" +msgstr "Importation d'une police" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"This file is already a Godot font file, please supply a BMFont type file " +"instead." +msgstr "" +"Ce fichier est déjà un fichier de police Godot, veuillez fournir un fichier " +"de type BMFont à la place." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Failed opening as BMFont file." +msgstr "Impossible d'ouvrir le fichier en tant que fichier BMFont." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font custom source." +msgstr "Source personnalisée de police invalide." + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "No samples to import!" +msgstr "Pas d'échantillons à importer !" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Save path is empty!" +msgstr "Le chemin de sauvegarde est vide !" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Import Audio Samples" +msgstr "Importer des échantillons audio" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Source Sample(s):" +msgstr "Échantillon(s) source :" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#, fuzzy +msgid "Audio Sample" +msgstr "Ajouter un échantillon" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "No meshes to import!" +msgstr "Pas de maillages à importer !" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Single Mesh Import" +msgstr "Importer un maillage" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Source Mesh(es):" +msgstr "Maillage(s) source :" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Mesh" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Surface %d" +msgstr "Surface %d" + +#~ msgid "Overwrite Existing Scene" +#~ msgstr "Écraser la scène existante" + +#~ msgid "Overwrite Existing, Keep Materials" +#~ msgstr "Écraser l'existant, conserver les matériaux" + +#~ msgid "Keep Existing, Merge with New" +#~ msgstr "Conserver l'existant, fusionner avec les nouveautés" + +#~ msgid "Keep Existing, Ignore New" +#~ msgstr "Conserver l'existant, ignorer les nouveautés" + +#~ msgid "This Time:" +#~ msgstr "Cette fois :" + +#~ msgid "Next Time:" +#~ msgstr "Les prochaines fois :" + +#~ msgid "Move Favorite Up" +#~ msgstr "Déplacer le favori vers le haut" + +#~ msgid "Move Favorite Down" +#~ msgstr "Déplacer le favori vers le bas" + +#~ msgid "%d frames" +#~ msgstr "%d images" + +#~ msgid "" +#~ "NOTICE: You are not forced to import textures for 2D projects. Just copy " +#~ "your .jpg or .png files to your project, and change export options later. " +#~ "Atlases can be generated on export too." +#~ msgstr "" +#~ "NOTICE : Vous n'êtes pas obligé d'importer des textures pour des projets " +#~ "en 2D. Copiez simplement vos fichiers .jpg ou .png dans le projet, et " +#~ "modifiez les options d'exportation par la suite. Vous pouvez également " +#~ "générer des atlas à l'exportation." + +#~ msgid "Merging.." +#~ msgstr "Fusion..." diff --git a/tools/translations/it.po b/tools/translations/it.po new file mode 100644 index 0000000000..4333962dfa --- /dev/null +++ b/tools/translations/it.po @@ -0,0 +1,6032 @@ +# LANGUAGE translation of the Godot Engine editor +# Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community +# This file is distributed under the same license as the Godot source code. +# Dario Bonfanti <bonfi.96@hotmail.it>, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: Dario Bonfanti <bonfi.96@hotmail.it>\n" +"Language-Team: Italian\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.7\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: scene/audio/sample_player.cpp scene/2d/sample_player_2d.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SamplePlayer to play sound." +msgstr "" +"Una risorsa SampleLibrary deve essere creata o impostata nella proprietà " +"'samples' affinché SamplePlayer riproduca un suono." + +#: scene/3d/body_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" +"CollisionShape serve a fornire una forma di collisione ad un nodo derivato di " +"CollisionObject. Si prega di utilizzarlo solamente come figlio di Area, " +"StaticBody, RigidBody, KinematicBody, etc. in modo da dargli una forma." + +#: scene/3d/body_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it!" +msgstr "" +"Perché CollisionShape funzioni deve essere fornita una forma. Si prega di " +"creare una risorsa forma (shape)!" + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" +"CollisionPolygon serve solamente a fornire una forma di collisione ad un nodo " +"derivato di CollisionObject. Si prega di usarlo solamente come figlio di " +"Area, StaticBody, RigidBody, KinematicBody, etc. in modo da dargli una forma." + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "Un CollisionPolygon vuoto non ha effetti in collisione." + +#: scene/3d/scenario_fx.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "" +"Solamente un WorldEnvironment è consentito per scena (o insieme di scene " +"istanziate)." + +#: scene/3d/spatial_sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SpatialSamplePlayer to play sound." +msgstr "" +"Una risorsa SampleLibrary deve essere creata o impostata nella proprietà " +"'samples' affinché SpatialSamplePlayer riproduca un suono." + +#: scene/3d/navigation_mesh.cpp +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "" +"Una risorsa NavigationMesh deve essere creata o impostata affinché questo " +"nodo funzioni." + +#: scene/3d/navigation_mesh.cpp +msgid "" +"NavigationMeshInstance must be a child or grandchild to a Navigation node. It " +"only provides navigation data." +msgstr "" +"NavigationMeshInstance deve essere un figlio o nipote di un nodo Navigation. " +"Fornisce solamente dati per la navigazione." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error initializing FreeType." +msgstr "Errore inizializzazione FreeType" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Unknown font format." +msgstr "Formato font sconosciuto." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error loading font." +msgstr "Errore caricamento font." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font size." +msgstr "Dimensione font Invalida." + +#: scene/2d/particles_2d.cpp +msgid "Path property must point to a valid Particles2D node to work." +msgstr "" +"La proprietà path deve puntare a un nodo Particles2D valido per poter " +"funzionare." + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" +"Il nodo ParallaxLayer funziona solamente quando impostato come figlio di un " +"nodo ParallaxBackground." + +#: scene/2d/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnable2D works best when used with the edited scene root directly " +"as parent." +msgstr "" +"VisibilityEnable2D funziona al meglio quando usato direttamente come genitore " +"con il root della scena modificata." + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "" +"Un poligono di occlusione deve essere impostato (o disegnato) affinché " +"l'occlusore abbia effetto." + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" +msgstr "" +"Il poligono di occlusione per questo occlusore è vuoto. Per favore disegna un " +"poligono!" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" +"Una risorsa NavigationPolygon deve essere impostata o creata affinché questo " +"nodo funzioni. Si prega di impostare una proprietà o di disegnare un poligono." + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" +"NavigationPolygonInstance deve essere figlio o nipote di un nodo " +"Navigation2D. Fornisce solamente dati di navigazione." + +#: scene/2d/sprite.cpp +msgid "" +"Path property must point to a valid Viewport node to work. Such Viewport must " +"be set to 'render target' mode." +msgstr "" +"La proprietà path deve puntare a un nodo Viewport valido per poter " +"funzionare. Tale Viewport deve essere impostata in modalità 'render target'." + +#: scene/2d/sprite.cpp +msgid "" +"The Viewport set in the path property must be set as 'render target' in order " +"for this sprite to work." +msgstr "" +"Il Viewport impostato nella proprietà path deve essere impostato come 'render " +"target' affinché questa sprite funzioni." + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"CollisionPolygon2D serve a fornire una forma di collisione ad un nodo " +"derivato di CollisionObject2D. Si prega di utilizzarlo solamente come figlio " +"di Area2D, StaticBody2D, RigidBody2D, KinematicBody2D, etc. in modo da dargli " +"una forma." + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "Un CollisionPolygon2D vuoto non ha effetti sulla collisione." + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "" +"PathFollow2D funziona solamente quando impostato come figlio di un nodo " +"Path2D." + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" +"Solamente un CanvasModulate visibile è consentito per scena (o insieme di " +"scene istanziate). Il primo creato funzionerà, mentre i restanti saranno " +"ignorati." + +#: scene/2d/animated_sprite.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite to display frames." +msgstr "" +"Una risorsa SpriteFrames deve essere creata o impostata nella proprietà " +"'Frames' affinché AnimatedSprite mostri i frame." + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "La proprietà path deve puntare ad un nodo Node2D valido per funzionare." + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"CollisionShape2D serve a fornire una forma di collisione ad un nodo derivato " +"di CollisionObject2D. Si prega di utilizzarlo solamente come figlio di " +"Area2D, StaticBody2D, RigidBody2D, KinematicBody2D, etc. in modo da dargli " +"una forma." + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "" +"Perché CollisionShape2D funzioni deve essere fornita una forma. Si prega di " +"creare una risorsa forma (shape)!" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the 'texture' " +"property." +msgstr "" +"Una texture con la forma della luce deve essere fornita nella proprietà " +"'texture'." + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine though, but they will hide " +"upon running." +msgstr "" +"I popup saranno nascosti di default a meno che vengano chiamate la funzione " +"popup() o qualsiasi altra funzione popup*(). Renderli visibili per la " +"modifica nell'editor è okay, ma verranno nascosti una volta in esecuzione." + +#: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Cancel" +msgstr "Cancella" + +#: scene/gui/dialogs.cpp +msgid "OK" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Cut" +msgstr "Taglia" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/resources_dock.cpp tools/editor/property_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Copy" +msgstr "Copia" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/resources_dock.cpp tools/editor/property_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste" +msgstr "Incolla" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/project_export.cpp tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Select All" +msgstr "Seleziona tutti" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_log.cpp +#: tools/editor/property_editor.cpp +#: tools/editor/plugins/rich_text_editor_plugin.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear" +msgstr "Rimuovi" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Undo" +msgstr "Annulla" + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" +"Questo viewport non è impostato come target di render. Se si vuole che il suo " +"contenuto venga direttamente mostrato a schermo, renderlo figlio di un " +"Control, in modo che possa ottenere una dimensione. Altrimenti, renderlo un " +"RenderTarget e assegnare alla sua texture interna qualche nodo da mostrare." + +#: tools/editor/project_export.cpp +msgid "Edit Script Options" +msgstr "Modifica le opzioni di script" + +#: tools/editor/project_export.cpp +msgid "Please export outside the project folder!" +msgstr "Si prega di esportare al di fuori della cartella del progetto!" + +#: tools/editor/project_export.cpp +msgid "Error exporting project!" +msgstr "Errore di esportazione del progetto!" + +#: tools/editor/project_export.cpp +msgid "Error writing the project PCK!" +msgstr "Errore di scrittura del PCK del progetto." + +#: tools/editor/project_export.cpp +msgid "No exporter for platform '%s' yet." +msgstr "Per ora non vi è esportatore per la piattaforma '%s'." + +#: tools/editor/project_export.cpp +msgid "Include" +msgstr "Includi" + +#: tools/editor/project_export.cpp +msgid "Change Image Group" +msgstr "Cambia Gruppo Immagine" + +#: tools/editor/project_export.cpp +msgid "Group name can't be empty!" +msgstr "Il nome del gruppo non può essere vuoto!" + +#: tools/editor/project_export.cpp +msgid "Invalid character in group name!" +msgstr "Carattere invalido nel nome del gruppo!" + +#: tools/editor/project_export.cpp +msgid "Group name already exists!" +msgstr "Il nome del gruppo è già esistente!" + +#: tools/editor/project_export.cpp +msgid "Add Image Group" +msgstr "Aggiungi Gruppo Immagini" + +#: tools/editor/project_export.cpp +msgid "Delete Image Group" +msgstr "Elimina Gruppo Immagini" + +#: tools/editor/project_export.cpp tools/editor/editor_import_export.cpp +msgid "Error saving atlas:" +msgstr "Errore di salvataggio dell'atlas:" + +#: tools/editor/project_export.cpp +msgid "Atlas Preview" +msgstr "Anteprima Atlas" + +#: tools/editor/project_export.cpp +msgid "Project Export Settings" +msgstr "Impostazioni Esportazione Progetto" + +#: tools/editor/project_export.cpp +msgid "Target" +msgstr "Target" + +#: tools/editor/project_export.cpp +msgid "Export to Platform" +msgstr "Esporta a Piattaforma" + +#: tools/editor/project_export.cpp tools/editor/plugins/theme_editor_plugin.cpp +msgid "Options" +msgstr "Opzioni" + +#: tools/editor/project_export.cpp +msgid "Resources" +msgstr "Risorse" + +#: tools/editor/project_export.cpp +msgid "Export selected resources (including dependencies)." +msgstr "Esporta le risorse selezionate (incluse le dipendenze)." + +#: tools/editor/project_export.cpp +msgid "Export all resources in the project." +msgstr "Esporta tutte le risorse nel progetto." + +#: tools/editor/project_export.cpp +msgid "Export all files in the project directory." +msgstr "Esporta tutti i file nella directory del progetto." + +#: tools/editor/project_export.cpp +msgid "Export Mode:" +msgstr "Modalità d'Esportazione:" + +#: tools/editor/project_export.cpp +msgid "Resources to Export:" +msgstr "Risorse da Esportare:" + +#: tools/editor/project_export.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "File" +msgstr "File" + +#: tools/editor/project_export.cpp +msgid "Action" +msgstr "Azione" + +#: tools/editor/project_export.cpp +msgid "" +"Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" +msgstr "" +"Filtri per esportare file che non son risorse (separati con virgola, es.: *." +"json, *.txt):" + +#: tools/editor/project_export.cpp +msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" +msgstr "" +"Filtri per escludere dall'esportazione (separati con virgola, es.: *.json, *." +"txt):" + +#: tools/editor/project_export.cpp +msgid "Convert text scenes to binary on export." +msgstr "Converti le scene in formato testuale in binario all'esportazione. " + +#: tools/editor/project_export.cpp +msgid "Images" +msgstr "Immagini" + +#: tools/editor/project_export.cpp +msgid "Keep Original" +msgstr "Mantieni l'originale" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy, WebP)" +msgstr "Comprimi per Disco (Lossy, WebP)" + +#: tools/editor/project_export.cpp +msgid "Compress for RAM (BC/PVRTC/ETC)" +msgstr "Comprimi per RAM (BC/PVRTC/ETC)" + +#: tools/editor/project_export.cpp +msgid "Convert Images (*.png):" +msgstr "Converti Immagini (*.png):" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy) Quality:" +msgstr "Qualità compressione per disco (Lossy):" + +#: tools/editor/project_export.cpp +msgid "Shrink All Images:" +msgstr "Riduci Tutte le Immagini: " + +#: tools/editor/project_export.cpp +msgid "Compress Formats:" +msgstr "Formati di Compressione:" + +#: tools/editor/project_export.cpp +msgid "Image Groups" +msgstr "Gruppi Immagini" + +#: tools/editor/project_export.cpp +msgid "Groups:" +msgstr "Gruppi:" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Default" +msgstr "Default" + +#: tools/editor/project_export.cpp +msgid "Compress Disk" +msgstr "Comprimi Disco" + +#: tools/editor/project_export.cpp +msgid "Compress RAM" +msgstr "Comprimi RAM" + +#: tools/editor/project_export.cpp +msgid "Compress Mode:" +msgstr "Modalità di Compressione:" + +#: tools/editor/project_export.cpp +msgid "Lossy Quality:" +msgstr "Qualità Lossy:" + +#: tools/editor/project_export.cpp +msgid "Atlas:" +msgstr "Atlas:" + +#: tools/editor/project_export.cpp +msgid "Shrink By:" +msgstr "Riduci di:" + +#: tools/editor/project_export.cpp +msgid "Preview Atlas" +msgstr "Anteprima Atlas" + +#: tools/editor/project_export.cpp +msgid "Image Filter:" +msgstr "Filtro Immagine:" + +#: tools/editor/project_export.cpp +msgid "Images:" +msgstr "Immagini:" + +#: tools/editor/project_export.cpp +msgid "Select None" +msgstr "Seleziona Nulla" + +#: tools/editor/project_export.cpp tools/editor/groups_editor.cpp +msgid "Group" +msgstr "Gruppo" + +#: tools/editor/project_export.cpp +msgid "Samples" +msgstr "Samples" + +#: tools/editor/project_export.cpp +msgid "Sample Conversion Mode: (.wav files):" +msgstr "Modalità Conversione Sample (file .wav):" + +#: tools/editor/project_export.cpp +msgid "Keep" +msgstr "Mantieni" + +#: tools/editor/project_export.cpp +msgid "Compress (RAM - IMA-ADPCM)" +msgstr "Comprimi (RAM - IMA-ADPCM)" + +#: tools/editor/project_export.cpp +msgid "Sampling Rate Limit (Hz):" +msgstr "Limite Sampling Rate (Hz):" + +#: tools/editor/project_export.cpp +msgid "Trim" +msgstr "Ritaglia" + +#: tools/editor/project_export.cpp +msgid "Trailing Silence:" +msgstr "Silenzio di coda:" + +#: tools/editor/project_export.cpp +#, fuzzy +msgid "Script" +msgstr "Esegui Script" + +#: tools/editor/project_export.cpp +msgid "Script Export Mode:" +msgstr "Modalità Esportazione Script:" + +#: tools/editor/project_export.cpp +msgid "Text" +msgstr "Testo" + +#: tools/editor/project_export.cpp +msgid "Compiled" +msgstr "Compilato" + +#: tools/editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "Criptato (Fornisci la Chiave Sotto)" + +#: tools/editor/project_export.cpp +msgid "Script Encryption Key (256-bits as hex):" +msgstr "Chiave di Crittografia Script (256-bits come esadecimali):" + +#: tools/editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "Esporta PCK/Zip" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Export Project" +msgstr "Esporta Progetto" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Password:" +msgstr "Password:" + +#: tools/editor/project_export.cpp +msgid "Export Project PCK" +msgstr "Esporta Progetto PCK" + +#: tools/editor/project_export.cpp +msgid "Export.." +msgstr "Esporta.." + +#: tools/editor/project_export.cpp +msgid "Project Export" +msgstr "Esportazione Progetto" + +#: tools/editor/project_export.cpp +msgid "Export Preset:" +msgstr "Preset Esportazione:" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Export" +msgstr "Esporta" + +#: tools/editor/code_editor.cpp +msgid "Go to Line" +msgstr "Vai alla Linea" + +#: tools/editor/code_editor.cpp +msgid "Line Number:" +msgstr "Numero Linea:" + +#: tools/editor/code_editor.cpp +#, fuzzy +msgid "No Matches" +msgstr "Corrispondenze:" + +#: tools/editor/code_editor.cpp +#, fuzzy +msgid "Replaced %d Ocurrence(s)." +msgstr "Rimpiazzate %d occorrenze." + +#: tools/editor/code_editor.cpp +msgid "Replace" +msgstr "Rimpiazza" + +#: tools/editor/code_editor.cpp +#, fuzzy +msgid "Replace All" +msgstr "Rimpiazza" + +#: tools/editor/code_editor.cpp +#, fuzzy +msgid "Match Case" +msgstr "Corrispondenze:" + +#: tools/editor/code_editor.cpp +msgid "Whole Words" +msgstr "Parole Intere" + +#: tools/editor/code_editor.cpp +msgid "Selection Only" +msgstr "Solo Selezione" + +#: tools/editor/code_editor.cpp tools/editor/project_settings.cpp +#: tools/editor/addon_editor_plugin.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search" +msgstr "Cerca" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +msgid "Find" +msgstr "Trova" + +#: tools/editor/code_editor.cpp +msgid "Next" +msgstr "Successivo" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d ocurrence(s)." +msgstr "Rimpiazzate %d occorrenze." + +#: tools/editor/code_editor.cpp +msgid "Not found!" +msgstr "Non trovato!" + +#: tools/editor/code_editor.cpp +msgid "Replace By" +msgstr "Rimpiazza con" + +#: tools/editor/code_editor.cpp +msgid "Case Sensitive" +msgstr "Case Sensitive" + +#: tools/editor/code_editor.cpp +msgid "Backwards" +msgstr "All'indietro" + +#: tools/editor/code_editor.cpp +msgid "Prompt On Replace" +msgstr "Richiedi Per Rimpiazzare" + +#: tools/editor/code_editor.cpp +msgid "Skip" +msgstr "Salta" + +#: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Line:" +msgstr "Riga:" + +#: tools/editor/code_editor.cpp +msgid "Col:" +msgstr "Col:" + +#: tools/editor/connections_dialog.cpp +msgid "Method in target Node must be specified!" +msgstr "Il Metodo nel nodo di target deve essere specificato! " + +#: tools/editor/connections_dialog.cpp +msgid "Connect To Node:" +msgstr "Collega A Nodo:" + +#: tools/editor/connections_dialog.cpp +msgid "Binds (Extra Params):" +msgstr "Lega (Parametri Extra):" + +#: tools/editor/connections_dialog.cpp tools/editor/project_settings.cpp +#: tools/editor/groups_editor.cpp tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Add" +msgstr "Aggiungi" + +#: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp +#: tools/editor/project_manager.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove" +msgstr "Rimuovi" + +#: tools/editor/connections_dialog.cpp +msgid "Path To Node:" +msgstr "Percorso Al Nodo:" + +#: tools/editor/connections_dialog.cpp +msgid "Method In Node:" +msgstr "Metodo Nel Nodo:" + +#: tools/editor/connections_dialog.cpp +msgid "Make Function" +msgstr "Rendi Funzione" + +#: tools/editor/connections_dialog.cpp +msgid "Deferred" +msgstr "Differita" + +#: tools/editor/connections_dialog.cpp +msgid "Oneshot" +msgstr "Oneshot" + +#: tools/editor/connections_dialog.cpp tools/editor/settings_config_dialog.cpp +#: tools/editor/import_settings.cpp tools/editor/run_settings_dialog.cpp +#: tools/editor/project_settings.cpp tools/editor/groups_editor.cpp +#: tools/editor/property_editor.cpp tools/editor/addon_editor_plugin.cpp +#: tools/editor/call_dialog.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Close" +msgstr "Chiudi" + +#: tools/editor/connections_dialog.cpp +msgid "Connect" +msgstr "Connetti" + +#: tools/editor/connections_dialog.cpp +msgid "Connect '%s' to '%s'" +msgstr "Connetti '%s' a '%s'" + +#: tools/editor/connections_dialog.cpp +msgid "Create Subscription" +msgstr "Crea Sottoscrizione" + +#: tools/editor/connections_dialog.cpp +msgid "Connect.." +msgstr "Connetti.." + +#: tools/editor/connections_dialog.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Disconnect" +msgstr "Disconnetti" + +#: tools/editor/connections_dialog.cpp +msgid "Edit Connections.." +msgstr "Modifica Connessioni.." + +#: tools/editor/connections_dialog.cpp +msgid "Connections:" +msgstr "Connessioni:" + +#: tools/editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "Scegli Nodo(i) da Importare" + +#: tools/editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "Percorso Scena:" + +#: tools/editor/editor_sub_scene.cpp +msgid "Import From Node:" +msgstr "Importa Da Nodo:" + +#: tools/editor/settings_config_dialog.cpp tools/editor/editor_node.cpp +msgid "Editor Settings" +msgstr "Impostazioni Editor" + +#: tools/editor/settings_config_dialog.cpp tools/editor/project_settings.cpp +msgid "General" +msgstr "Generali" + +#: tools/editor/settings_config_dialog.cpp tools/editor/quick_open.cpp +#: tools/editor/addon_editor_plugin.cpp tools/editor/editor_node.cpp +#: tools/editor/editor_help.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search:" +msgstr "Cerca:" + +#: tools/editor/settings_config_dialog.cpp tools/editor/project_settings.cpp +#: tools/editor/addon_editor_plugin.cpp +msgid "Plugins" +msgstr "Plugins" + +#: tools/editor/settings_config_dialog.cpp +msgid "Plugin List:" +msgstr "Lista Plugin:" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "Scegli una Directory" + +#: tools/editor/editor_dir_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Create Folder" +msgstr "Crea Cartella" + +#: tools/editor/editor_dir_dialog.cpp tools/editor/editor_plugin_settings.cpp +#: tools/editor/editor_file_dialog.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Name:" +msgstr "Nome:" + +#: tools/editor/editor_dir_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Could not create folder." +msgstr "Impossibile creare cartella." + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose" +msgstr "Scegli" + +#: tools/editor/editor_file_system.cpp +msgid "Cannot go into subdir:" +msgstr "Impossibile accedere alla subdirectory:" + +#: tools/editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "ScansionaSorgenti" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "Cerca Rimpiazzo Per:" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "Dipendenze Per:" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will not take effect unless reloaded." +msgstr "" +"La scena '%s' è al momento in modifica.\n" +"I cambiamenti non avranno effetto a meno che venga ricaricata." + +#: tools/editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will take effect when reloaded." +msgstr "" +"La risorsa '%s' è in uso.\n" +"I cambiamenti avranno effetto quando sarà ricaricata." + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies" +msgstr "Dipendenze" + +#: tools/editor/dependency_editor.cpp +#, fuzzy +msgid "Resource" +msgstr "Risorse" + +#: tools/editor/dependency_editor.cpp tools/editor/project_settings.cpp +#: tools/editor/project_manager.cpp +#, fuzzy +msgid "Path" +msgstr "Percorso:" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies:" +msgstr "Dipendenze:" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Broken" +msgstr "Riparare Rotti" + +#: tools/editor/dependency_editor.cpp +msgid "Dependency Editor" +msgstr "Editor Dipendenze" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement Resource:" +msgstr "Cerca Risorsa di Rimpiazzo" + +#: tools/editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "Proprietari Di:" + +#: tools/editor/dependency_editor.cpp +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Remove selected files from the project? (no undo)" +msgstr "Rimuovi i file selezionati dal progetto? (no undo)" + +#: tools/editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "Errore in caricamento:" + +#: tools/editor/dependency_editor.cpp +msgid "Scene failed to load due to missing dependencies:" +msgstr "Caricamento scena fallito per mancanza di dipendenze:" + +#: tools/editor/dependency_editor.cpp +msgid "Open Anyway" +msgstr "Apri Comunque" + +#: tools/editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "Quale Azione deve essere intrapresa?" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "Ripara Dipendenze" + +#: tools/editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "Errori in caricamento!" + +#: tools/editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "Elimina permanentemente %d elementi? (No undo!)" + +#: tools/editor/dependency_editor.cpp +msgid "Owns" +msgstr "Possiede" + +#: tools/editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "Risorse Senza Proprietà Esplicita:" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +msgid "Orphan Resource Explorer" +msgstr "Explorer Risorse Orfano" + +#: tools/editor/dependency_editor.cpp +msgid "Delete selected files?" +msgstr "Eliminare i file selezionati?" + +#: tools/editor/dependency_editor.cpp tools/editor/scenes_dock.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Delete" +msgstr "Elimina" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Light Radius" +msgstr "Cambia Raggio Luce" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera FOV" +msgstr "Cambia FOV Telecamera" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera Size" +msgstr "Cambia dimensione Telecamera" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "Cambia Raggio di Sphere Shape" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "Cambia Ampiezza Box Shape" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "Cambia Raggio Capsule Shape" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "Cambia Altezza Capsule Shape" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "Cambia lunghezza Ray Shape" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Notifier Extents" +msgstr "Cambia Estensione di Notifier" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid parent class name" +msgstr "Nome classe genitore invalido" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid chars:" +msgstr "Caratteri Validi:" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid class name" +msgstr "Nome classe invalido" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid name" +msgstr "Nome valido" + +#: tools/editor/script_create_dialog.cpp +msgid "N/A" +msgstr "N/A" + +#: tools/editor/script_create_dialog.cpp +msgid "Class name is invalid!" +msgstr "Nome classe invalido!" + +#: tools/editor/script_create_dialog.cpp +msgid "Parent class name is invalid!" +msgstr "Nome classe genitore invalido!" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid path!" +msgstr "Percorso Invalido!" + +#: tools/editor/script_create_dialog.cpp +msgid "Could not create script in filesystem." +msgstr "Impossibile creare script in filesystem." + +#: tools/editor/script_create_dialog.cpp +msgid "Path is empty" +msgstr "Percorso vuoto" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is not local" +msgstr "Percorso non locale" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid base path" +msgstr "Percorso di base invalido" + +#: tools/editor/script_create_dialog.cpp +msgid "File exists" +msgstr "File esistente" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid extension" +msgstr "Estensione Invalida" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid path" +msgstr "Percorso valido" + +#: tools/editor/script_create_dialog.cpp +msgid "Class Name:" +msgstr "Nome Classe" + +#: tools/editor/script_create_dialog.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/editor_help.cpp +msgid "Inherits:" +msgstr "Eredita:" + +#: tools/editor/script_create_dialog.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Language" +msgstr "Linguaggio" + +#: tools/editor/script_create_dialog.cpp tools/editor/property_editor.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Error!" +msgstr "Errore!" + +#: tools/editor/script_create_dialog.cpp +msgid "Built-In Script" +msgstr "Built-In Script" + +#: tools/editor/script_create_dialog.cpp tools/editor/project_settings.cpp +#: tools/editor/editor_file_dialog.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Path:" +msgstr "Percorso:" + +#: tools/editor/script_create_dialog.cpp +msgid "Create Node Script" +msgstr "Crea Script Nodo" + +#: tools/editor/script_create_dialog.cpp tools/editor/animation_editor.cpp +#: tools/editor/project_manager.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create" +msgstr "Crea" + +#: tools/editor/animation_editor.cpp +msgid "Disabled" +msgstr "Disabilitato" + +#: tools/editor/animation_editor.cpp +msgid "All Selection" +msgstr "Seleziona Tutto" + +#: tools/editor/animation_editor.cpp +msgid "Move Add Key" +msgstr "Sposta Aggiunta Key" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transition" +msgstr "Anim Cambia Transizione" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transform" +msgstr "Anim Cambia Transform" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Value" +msgstr "Anim Cambia Valore" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Call" +msgstr "Anim Cambia Chiamata" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Track" +msgstr "Anim Aggiungi Traccia" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Up" +msgstr "Muovi Traccia Animazione Su" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Down" +msgstr "Muovi Traccia Animazione Giù" + +#: tools/editor/animation_editor.cpp +msgid "Remove Anim Track" +msgstr "Rimuovi Traccia Animazione" + +#: tools/editor/animation_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "Duplica Key Animazione" + +#: tools/editor/animation_editor.cpp +msgid "Set Transitions to:" +msgstr "Imposta Transizione a:" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Rename" +msgstr "Traccia Anim Rinomina " + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Interpolation" +msgstr "Traccia Anim Cambia Interpolazione " + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Value Mode" +msgstr "Traccia Anim Cambia Modalità Valore " + +#: tools/editor/animation_editor.cpp +msgid "Edit Node Curve" +msgstr "Modifica Curva del Nodo" + +#: tools/editor/animation_editor.cpp +msgid "Edit Selection Curve" +msgstr "Modifica Selezione Curva" + +#: tools/editor/animation_editor.cpp +msgid "Anim Delete Keys" +msgstr "Anim Elimina Key" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Key" +msgstr "Anim Aggiungi Key" + +#: tools/editor/animation_editor.cpp +msgid "Anim Move Keys" +msgstr "Anim Sposta Key" + +#: tools/editor/animation_editor.cpp +msgid "Scale Selection" +msgstr "Scala Selezione" + +#: tools/editor/animation_editor.cpp +msgid "Scale From Cursor" +msgstr "Scala da Cursore" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "Duplica Selezione" + +#: tools/editor/animation_editor.cpp +msgid "Duplicate Transposed" +msgstr "Duplica Transposto" + +#: tools/editor/animation_editor.cpp +msgid "Goto Next Step" +msgstr "Vai a Step Successivo" + +#: tools/editor/animation_editor.cpp +msgid "Goto Prev Step" +msgstr "Vai a Step Precedente" + +#: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp +msgid "Linear" +msgstr "Lineare" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Costante" + +#: tools/editor/animation_editor.cpp +msgid "In" +msgstr "In" + +#: tools/editor/animation_editor.cpp +msgid "Out" +msgstr "Out" + +#: tools/editor/animation_editor.cpp +msgid "In-Out" +msgstr "In-Out" + +#: tools/editor/animation_editor.cpp +msgid "Out-In" +msgstr "Out-In" + +#: tools/editor/animation_editor.cpp +msgid "Transitions" +msgstr "Transizioni" + +#: tools/editor/animation_editor.cpp +msgid "Optimize Animation" +msgstr "Ottimizza Animazione" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation" +msgstr "Pulisci Animazione" + +#: tools/editor/animation_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "Crea NUOVA traccia per %s e inserire key?" + +#: tools/editor/animation_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "Creare %d NUOVE tracce e inserire key?" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create & Insert" +msgstr "Anim Crea e Inserisci" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "Anim Inserisci Traccia e Key" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Key" +msgstr "Anim Inserisci Key" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Len" +msgstr "Cambia Lunghezza Animazione" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop" +msgstr "Cambia Loop Animazione" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create Typed Value Key" +msgstr "Anim Crea Typed Value Key" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert" +msgstr "Anim Inserisci" + +#: tools/editor/animation_editor.cpp +msgid "Anim Scale Keys" +msgstr "Anim Scala Key" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Call Track" +msgstr "Anim Aggiungi Chiamata Traccia" + +#: tools/editor/animation_editor.cpp +msgid "Animation zoom." +msgstr "Zoom Animazione." + +#: tools/editor/animation_editor.cpp +msgid "Length (s):" +msgstr "Lunghezza (e):" + +#: tools/editor/animation_editor.cpp +msgid "Animation length (in seconds)." +msgstr "Lunghezza animazone (in secondi)." + +#: tools/editor/animation_editor.cpp +msgid "Step (s):" +msgstr "Step (s):" + +#: tools/editor/animation_editor.cpp +msgid "Cursor step snap (in seconds)." +msgstr "Step Snap Cursore (in secondi)." + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable looping in animation." +msgstr "Attiva/Disattiva loop animazione." + +#: tools/editor/animation_editor.cpp +msgid "Add new tracks." +msgstr "Aggiungi nuova traccia." + +#: tools/editor/animation_editor.cpp +msgid "Move current track up." +msgstr "Muovi la traccia corrente su." + +#: tools/editor/animation_editor.cpp +msgid "Move current track down." +msgstr "Muovi la traccia corrente giù." + +#: tools/editor/animation_editor.cpp +msgid "Remove selected track." +msgstr "Rimuovi traccia selezionata." + +#: tools/editor/animation_editor.cpp +msgid "Track tools" +msgstr "Strumenti traccia" + +#: tools/editor/animation_editor.cpp +msgid "Enable editing of individual keys by clicking them." +msgstr "Attiva modifica di key individuali cliccandovi." + +#: tools/editor/animation_editor.cpp +msgid "Anim. Optimizer" +msgstr "Ottimizzatore Anim." + +#: tools/editor/animation_editor.cpp +msgid "Max. Linear Error:" +msgstr ":Max. Errore Lineare" + +#: tools/editor/animation_editor.cpp +msgid "Max. Angular Error:" +msgstr "Max. Errore Angolare:" + +#: tools/editor/animation_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "Max. Angolo Ottimizzabile:" + +#: tools/editor/animation_editor.cpp +msgid "Optimize" +msgstr "Ottimizza" + +#: tools/editor/animation_editor.cpp +msgid "Key" +msgstr "Key" + +#: tools/editor/animation_editor.cpp +msgid "Transition" +msgstr "Transizione" + +#: tools/editor/animation_editor.cpp +msgid "Scale Ratio:" +msgstr "Ratio di scalatura" + +#: tools/editor/animation_editor.cpp +msgid "Call Functions in Which Node?" +msgstr "Chiama Funzioni in Quale Nodo?" + +#: tools/editor/animation_editor.cpp +msgid "Remove invalid keys" +msgstr "Rimuovi key invalidi" + +#: tools/editor/animation_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "Rimuovi tracce Irrisolte e vuote" + +#: tools/editor/animation_editor.cpp +msgid "Clean-up all animations" +msgstr "Pulisci tutte le animazioni" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "Pulisci Animazione(i) (NO UNDO!)" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up" +msgstr "Pulisci" + +#: tools/editor/script_editor_debugger.cpp +msgid "Bytes:" +msgstr "Bytes:" + +#: tools/editor/script_editor_debugger.cpp tools/editor/project_settings.cpp +#: tools/editor/scene_tree_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Type:" +msgstr "Tipo:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Warning" +msgstr "Avvertimento" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Error" +msgstr "Errore" + +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_help.cpp +msgid "Description:" +msgstr "Descrizione:" + +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_profiler.cpp +msgid "Time:" +msgstr "Tempo:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Error:" +msgstr "Errore:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Source:" +msgstr "Sorgente:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Function:" +msgstr "Funzione:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors" +msgstr "Errori" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debugger" +msgstr "Debugger" + +#: tools/editor/script_editor_debugger.cpp +msgid "Child Process Connected" +msgstr "Processo Figlio Connesso" + +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_file_dialog.cpp +msgid "File:" +msgstr "File:" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Step Into" +msgstr "Step Into" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Step Over" +msgstr "Step Over" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Break" +msgstr "Break" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Continue" +msgstr "Continua" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Previous Instance" +msgstr "Ispeziona Istanza Precedente" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Next Instance" +msgstr "Ispeziona Istanza Successiva" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Frames" +msgstr "Impila Frame" + +#: tools/editor/script_editor_debugger.cpp +msgid "Variable" +msgstr "Valiabile" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors:" +msgstr "Errori:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Trace (if applicable):" +msgstr "Stack Trace (se applicabile):" + +#: tools/editor/script_editor_debugger.cpp +#, fuzzy +msgid "Remote Inspector" +msgstr "Inspector" + +#: tools/editor/script_editor_debugger.cpp +#, fuzzy +msgid "Live Scene Tree:" +msgstr "Scene Tree:" + +#: tools/editor/script_editor_debugger.cpp +#, fuzzy +msgid "Remote Object Properties: " +msgstr "Proprietà oggetto." + +#: tools/editor/script_editor_debugger.cpp +msgid "Profiler" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitor" +msgstr "Monitor" + +#: tools/editor/script_editor_debugger.cpp +msgid "Value" +msgstr "Valore" + +#: tools/editor/script_editor_debugger.cpp +#, fuzzy +msgid "Monitors" +msgstr "Monitor" + +#: tools/editor/script_editor_debugger.cpp +msgid "List of Video Memory Usage by Resource:" +msgstr "Lista di Utilizzo Memoria Video per Risorsa:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Total:" +msgstr "Totale:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Video Mem" +msgstr "Mem Video" + +#: tools/editor/script_editor_debugger.cpp +msgid "Resource Path" +msgstr "Percorso Risosa" + +#: tools/editor/script_editor_debugger.cpp +msgid "Type" +msgstr "Tipo" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Format" +msgstr "Formato" + +#: tools/editor/script_editor_debugger.cpp +msgid "Usage" +msgstr "Utilizzo" + +#: tools/editor/script_editor_debugger.cpp +msgid "Misc" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control:" +msgstr "Clicked Control:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control Type:" +msgstr "Clicked Control Type:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Edit Root:" +msgstr "Modifica Root Live:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Set From Tree" +msgstr "Imposta da Tree:" + +#: tools/editor/import_settings.cpp +msgid "Imported Resources" +msgstr "Risorse Importate" + +#: tools/editor/import_settings.cpp tools/editor/editor_reimport_dialog.cpp +#: tools/editor/editor_node.cpp +msgid "Re-Import" +msgstr "Re-Importa" + +#: tools/editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "MultiNode Set" + +#: tools/editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "Modalità esecuzione:" + +#: tools/editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "Scena Corrente" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "Scena Principale" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "Argomenti Scena Principale" + +#: tools/editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "Impostazioni Esecuzione Scena" + +#: tools/editor/project_settings.cpp +msgid "Key " +msgstr "" + +#: tools/editor/project_settings.cpp +#, fuzzy +msgid "Joy Button" +msgstr "Pulsante" + +#: tools/editor/project_settings.cpp +#, fuzzy +msgid "Joy Axis" +msgstr "Asse" + +#: tools/editor/project_settings.cpp +#, fuzzy +msgid "Mouse Button" +msgstr "Indice Pulsante Mouse:" + +#: tools/editor/project_settings.cpp +msgid "Invalid action (anything goes but '/' or ':')." +msgstr "Azione invalida (va bene tutto a parte '/' o ':')." + +#: tools/editor/project_settings.cpp +msgid "Action '%s' already exists!" +msgstr "L'Azione '%s' esiste già!" + +#: tools/editor/project_settings.cpp +msgid "Rename Input Action Event" +msgstr "Rinomina Evento di Azione Input" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action Event" +msgstr "Aggiungi Evento di Azione Input" + +#: tools/editor/project_settings.cpp +msgid "Meta+" +msgstr "Meta+" + +#: tools/editor/project_settings.cpp +msgid "Shift+" +msgstr "Shift+" + +#: tools/editor/project_settings.cpp +msgid "Alt+" +msgstr "Alt+" + +#: tools/editor/project_settings.cpp +msgid "Control+" +msgstr "Control+" + +#: tools/editor/project_settings.cpp +msgid "Press a Key.." +msgstr "Premi un tasto.." + +#: tools/editor/project_settings.cpp +msgid "Mouse Button Index:" +msgstr "Indice Pulsante Mouse:" + +#: tools/editor/project_settings.cpp +msgid "Left Button" +msgstr "Pulsante Sinistro" + +#: tools/editor/project_settings.cpp +msgid "Right Button" +msgstr "Pulsante Destro" + +#: tools/editor/project_settings.cpp +msgid "Middle Button" +msgstr "Pulsante Centrale" + +#: tools/editor/project_settings.cpp +msgid "Wheel Up Button" +msgstr "Pulsante Rotellina Su" + +#: tools/editor/project_settings.cpp +msgid "Wheel Down Button" +msgstr "Pulsante Rotellina Giù" + +#: tools/editor/project_settings.cpp +msgid "Button 6" +msgstr "Pulsante 6" + +#: tools/editor/project_settings.cpp +msgid "Button 7" +msgstr "Pulsante 7" + +#: tools/editor/project_settings.cpp +msgid "Button 8" +msgstr "Pulsante 8" + +#: tools/editor/project_settings.cpp +msgid "Button 9" +msgstr "Pulsante 9" + +#: tools/editor/project_settings.cpp +msgid "Joystick Axis Index:" +msgstr "Indice Asse Joystick:" + +#: tools/editor/project_settings.cpp +msgid "Axis" +msgstr "Asse" + +#: tools/editor/project_settings.cpp +msgid "Joystick Button Index:" +msgstr "Indice Pulsante Joystick:" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action" +msgstr "Aggiungi azione di input" + +#: tools/editor/project_settings.cpp +msgid "Erase Input Action Event" +msgstr "Elimina Evento di Azione Input" + +#: tools/editor/project_settings.cpp +msgid "Device" +msgstr "Dispositivo" + +#: tools/editor/project_settings.cpp +msgid "Button" +msgstr "Pulsante" + +#: tools/editor/project_settings.cpp +msgid "Left Button." +msgstr "Pulsante Sinistro." + +#: tools/editor/project_settings.cpp +msgid "Right Button." +msgstr "Pulsante DEstro." + +#: tools/editor/project_settings.cpp +msgid "Middle Button." +msgstr "Pulsante centrale." + +#: tools/editor/project_settings.cpp +msgid "Wheel Up." +msgstr "Rotellina su." + +#: tools/editor/project_settings.cpp +msgid "Wheel Down." +msgstr "Rotellina Giù." + +#: tools/editor/project_settings.cpp +msgid "Toggle Persisting" +msgstr "Attiva Persistenza" + +#: tools/editor/project_settings.cpp +msgid "Error saving settings." +msgstr "Errore nel salvare le impostazioni." + +#: tools/editor/project_settings.cpp +msgid "Settings saved OK." +msgstr "Impostazioni salvate OK." + +#: tools/editor/project_settings.cpp +msgid "Add Translation" +msgstr "Aggiungi Traduzione" + +#: tools/editor/project_settings.cpp +msgid "Toggle AutoLoad Globals" +msgstr "Abilita AutoLoad Globals" + +#: tools/editor/project_settings.cpp +msgid "Invalid name." +msgstr "Nome Invalido." + +#: tools/editor/project_settings.cpp +msgid "Valid characters:" +msgstr "Caratteri validi:" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing engine class name." +msgstr "" +"Nome invalido. Non deve essere in conflitto con un nome di classe di engine " +"esistente." + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing buit-in type name." +msgstr "" +"Nome invalido. Non deve essere in conflitto con un nome di tipo built-in " +"esistente." + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing global constant name." +msgstr "" +"Nome invalido. Non deve essere in conflitto con un nome di una costante " +"globale esistente." + +#: tools/editor/project_settings.cpp +msgid "Add Autoload" +msgstr "Aggiungi Autoload" + +#: tools/editor/project_settings.cpp +msgid "Remove Autoload" +msgstr "Rimuovi Autoload" + +#: tools/editor/project_settings.cpp +msgid "Move Autoload" +msgstr "Sposta Autoload" + +#: tools/editor/project_settings.cpp +msgid "Remove Translation" +msgstr "Rimuovi Traduzione" + +#: tools/editor/project_settings.cpp +msgid "Add Remapped Path" +msgstr "Aggiungi percorso rimappato" + +#: tools/editor/project_settings.cpp +msgid "Resource Remap Add Remap" +msgstr "Remap Risorse Aggiungi Remap" + +#: tools/editor/project_settings.cpp +msgid "Change Resource Remap Language" +msgstr "Cambia Lingua Remap Risorse" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap" +msgstr "Rimuovi Remap Risorse" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap Option" +msgstr "Rimuovi Opzione di Remap Rimorse" + +#: tools/editor/project_settings.cpp +msgid "Enable" +msgstr "Abilita" + +#: tools/editor/project_settings.cpp +msgid "Project Settings (engine.cfg)" +msgstr "Impostazioni Progetto (engine.cfg)" + +#: tools/editor/project_settings.cpp tools/editor/addon_editor_plugin.cpp +msgid "Category:" +msgstr "Categoria:" + +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +msgid "Property:" +msgstr "Proprietà:" + +#: tools/editor/project_settings.cpp +msgid "Del" +msgstr "Elim." + +#: tools/editor/project_settings.cpp +msgid "Copy To Platform.." +msgstr "Copia A Piattaforma.." + +#: tools/editor/project_settings.cpp +msgid "Input Map" +msgstr "Mappa Input" + +#: tools/editor/project_settings.cpp +msgid "Action:" +msgstr "Azione:" + +#: tools/editor/project_settings.cpp +msgid "Device:" +msgstr "Dispositivo:" + +#: tools/editor/project_settings.cpp +msgid "Index:" +msgstr "Indice:" + +#: tools/editor/project_settings.cpp +msgid "Localization" +msgstr "Localizzazione" + +#: tools/editor/project_settings.cpp +msgid "Translations" +msgstr "Traduzioni" + +#: tools/editor/project_settings.cpp +msgid "Translations:" +msgstr "Traduzioni:" + +#: tools/editor/project_settings.cpp +msgid "Add.." +msgstr "Aggiungi..." + +#: tools/editor/project_settings.cpp +msgid "Remaps" +msgstr "Remaps" + +#: tools/editor/project_settings.cpp +msgid "Resources:" +msgstr "Risorse:" + +#: tools/editor/project_settings.cpp +msgid "Remaps by Locale:" +msgstr "Remaps per Locale:" + +#: tools/editor/project_settings.cpp +msgid "Locale" +msgstr "Locale" + +#: tools/editor/project_settings.cpp +msgid "AutoLoad" +msgstr "AutoLoad" + +#: tools/editor/project_settings.cpp +msgid "Node Name:" +msgstr "Nome Nodo:" + +#: tools/editor/project_settings.cpp +msgid "List:" +msgstr "Lista:" + +#: tools/editor/project_settings.cpp tools/editor/project_manager.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Name" +msgstr "Nome" + +#: tools/editor/project_settings.cpp +msgid "Singleton" +msgstr "Singleton" + +#: tools/editor/scene_tree_editor.cpp +msgid "" +"This item cannot be made visible because the parent is hidden. Unhide the " +"parent first." +msgstr "" +"Questo elemento non può essere reso visibile perchè il genitore è nascosto. " +"Rivela prima il genitore." + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle Spatial Visible" +msgstr "Abilita Spatial Visibile" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle CanvasItem Visible" +msgstr "Abilita CanvasItem Visibile" + +#: tools/editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "Istanza:" + +#: tools/editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "Nome nodo invalido, i caratteri seguenti non sono consentiti:" + +#: tools/editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "Rinomina Nodo" + +#: tools/editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "Scene Tree (Nodi):" + +#: tools/editor/scene_tree_editor.cpp +msgid "Editable Children" +msgstr "Figlio Modificabile" + +#: tools/editor/scene_tree_editor.cpp +msgid "Load As Placeholder" +msgstr "Carica come placeholder" + +#: tools/editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "Apri nell Editor" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance" +msgstr "Liberare ereditarietà" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "Liberare ereditarietà? (No Undo!)" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear!" +msgstr "Libera!" + +#: tools/editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "Scegli un Nodo" + +#: tools/editor/editor_profiler.cpp +msgid "Stop Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Start Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Measure:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +#, fuzzy +msgid "Frame Time (sec)" +msgstr "Tempo(i) di Crossfade: " + +#: tools/editor/editor_profiler.cpp +#, fuzzy +msgid "Average Time (sec)" +msgstr "Tempo(i) di Crossfade: " + +#: tools/editor/editor_profiler.cpp +#, fuzzy +msgid "Frame %" +msgstr "Aggiungi frame" + +#: tools/editor/editor_profiler.cpp +#, fuzzy +msgid "Fixed Frame %" +msgstr "Aggiungi frame" + +#: tools/editor/editor_profiler.cpp +#, fuzzy +msgid "Inclusive" +msgstr "Includi" + +#: tools/editor/editor_profiler.cpp +msgid "Self" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "" + +#: tools/editor/quick_open.cpp tools/editor/editor_help.cpp +#: tools/editor/create_dialog.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Matches:" +msgstr "Corrispondenze:" + +#: tools/editor/quick_open.cpp tools/editor/scenes_dock.cpp +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_node.cpp +#: tools/editor/editor_help.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Open" +msgstr "Apri" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Please wait for scan to complete." +msgstr "Si prega di attendere che lo scan venga completato." + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Current scene must be saved to re-import." +msgstr "La scena corrente deve essere salvata per re-importare," + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Save & Re-Import" +msgstr "Salva e Re-Importa" + +#: tools/editor/editor_reimport_dialog.cpp tools/editor/editor_node.cpp +msgid "Re-Importing" +msgstr "Re-Importando" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import Changed Resources" +msgstr "Re-Importando Risorse Cambiate" + +#: tools/editor/resources_dock.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Error saving resource!" +msgstr "Errore salvando la Risorsa!" + +#: tools/editor/resources_dock.cpp +msgid "Create New Resource" +msgstr "Crea Nuova Risorsa" + +#: tools/editor/resources_dock.cpp +msgid "Open Resource" +msgstr "Apri Risorsa" + +#: tools/editor/resources_dock.cpp +msgid "Save Resource" +msgstr "Salva Risorsa" + +#: tools/editor/resources_dock.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save Resource As.." +msgstr "Salva Risorsa Come.." + +#: tools/editor/resources_dock.cpp +msgid "Resource Tools" +msgstr "Strumenti Risorsa" + +#: tools/editor/resources_dock.cpp +msgid "Make Local" +msgstr "Rendi Locale" + +#: tools/editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "Scrivi la logica nel metodo _run()." + +#: tools/editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "Vi è già una scena correntemente modificata." + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "Impossibile istanziare script:" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "Hai dimenticato la keyword 'tool'?" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "Impossibile eseguire lo script:" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "Hai dimenticato il metodo '_run'?" + +#: tools/editor/editor_data.cpp +msgid "Updating Scene" +msgstr "Aggiornamento Scena" + +#: tools/editor/editor_data.cpp +msgid "Storing local changes.." +msgstr "Memorizzando i cambiamenti locali.." + +#: tools/editor/editor_data.cpp +msgid "Updating scene.." +msgstr "Aggiornando la scena.." + +#: tools/editor/file_type_cache.cpp +msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" +msgstr "" +"Impossibile aprire file_type_cache.cch per scrittura, non salvo la cache dei " +"tipi di file!" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent Node" +msgstr "Reparent Nodo" + +#: tools/editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "Posizione Reparent (Seleziona nuovo genitore):" + +#: tools/editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "Mantieni Transform Globale" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "Cambia Genitore" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp tools/editor/editor_node.cpp +msgid "Update" +msgstr "Aggiorna" + +#: tools/editor/editor_plugin_settings.cpp +#, fuzzy +msgid "Version:" +msgstr "Descrizione:" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Author:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "" + +#: tools/editor/scenes_dock.cpp tools/editor/editor_file_dialog.cpp +msgid "Favorites:" +msgstr "Preferiti:" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination files, doing nothing." +msgstr "Stessi file di origine e e destinazione, non faccio nulla." + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination paths, doing nothing." +msgstr "" +"Stessi percorsi \n" +"di origine e e destinazione, non faccio nulla." + +#: tools/editor/scenes_dock.cpp +msgid "Can't move directories to within themselves." +msgstr "Impossibile muovere le directory dentro se stesse." + +#: tools/editor/scenes_dock.cpp +msgid "Can't operate on '..'" +msgstr "Non posso operare su '..'" + +#: tools/editor/scenes_dock.cpp +msgid "Pick New Name and Location For:" +msgstr "Scegli un Nuovo Nome e Posizione Per:" + +#: tools/editor/scenes_dock.cpp +msgid "No files selected!" +msgstr "Nessun File selezionato!" + +#: tools/editor/scenes_dock.cpp +msgid "Instance" +msgstr "Istanza" + +#: tools/editor/scenes_dock.cpp +msgid "Edit Dependencies.." +msgstr "Modifica Dipendenze.." + +#: tools/editor/scenes_dock.cpp +msgid "View Owners.." +msgstr "Vedi Proprietari.." + +#: tools/editor/scenes_dock.cpp +msgid "Rename or Move.." +msgstr "Rinomina o Sposta.." + +#: tools/editor/scenes_dock.cpp +msgid "Move To.." +msgstr "Sposta in.." + +#: tools/editor/scenes_dock.cpp +msgid "Info" +msgstr "Info" + +#: tools/editor/scenes_dock.cpp +msgid "Show In File Manager" +msgstr "Mostra nel File Manager" + +#: tools/editor/scenes_dock.cpp tools/editor/editor_node.cpp +msgid "Re-Import.." +msgstr "Re-Importa.." + +#: tools/editor/scenes_dock.cpp +msgid "Previous Directory" +msgstr "Directory Precedente" + +#: tools/editor/scenes_dock.cpp +msgid "Next Directory" +msgstr "Directory Successiva" + +#: tools/editor/scenes_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "Re-Scan Filesystem" + +#: tools/editor/scenes_dock.cpp +msgid "Toggle folder status as Favorite" +msgstr "Abilita lo stato della cartella come Preferito" + +#: tools/editor/scenes_dock.cpp +msgid "Instance the selected scene(s) as child of the selected node." +msgstr "Istanzia le scene selezionate come figlie del nodo selezionato." + +#: tools/editor/scenes_dock.cpp +msgid "Move" +msgstr "Sposta" + +#: tools/editor/editor_import_export.cpp +msgid "Added:" +msgstr "Agginto:" + +#: tools/editor/editor_import_export.cpp +msgid "Removed:" +msgstr "Rimosso:" + +#: tools/editor/editor_import_export.cpp +msgid "Could not save atlas subtexture:" +msgstr "Impossibile salvare la substruttura dell'atlas" + +#: tools/editor/editor_import_export.cpp +msgid "Storing File:" +msgstr "Memorizzazione File:" + +#: tools/editor/editor_import_export.cpp +msgid "Packing" +msgstr "Packing" + +#: tools/editor/editor_import_export.cpp +msgid "Exporting for %s" +msgstr "Esportando per %s" + +#: tools/editor/editor_import_export.cpp +msgid "Setting Up.." +msgstr "Impostando.." + +#: tools/editor/editor_settings.cpp +msgid "Default (Same as Editor)" +msgstr "Default (Stesso che Editor)" + +#: tools/editor/editor_file_dialog.cpp +msgid "File Exists, Overwrite?" +msgstr "File Esistente, Sovrascrivere?" + +#: tools/editor/editor_file_dialog.cpp +msgid "All Recognized" +msgstr "Tutti i Riconosciuti" + +#: tools/editor/editor_file_dialog.cpp +msgid "All Files (*)" +msgstr "Tutti i File (*)" + +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save" +msgstr "Salva" + +#: tools/editor/editor_file_dialog.cpp +msgid "Save a File" +msgstr "Salva un File" + +#: tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "Recenti:" + +#: tools/editor/editor_file_dialog.cpp +msgid "Directories & Files:" +msgstr "Directories & Files:" + +#: tools/editor/editor_file_dialog.cpp +msgid "Preview:" +msgstr "Anteprima:" + +#: tools/editor/editor_file_dialog.cpp +msgid "Filter:" +msgstr "Filtro:" + +#: tools/editor/editor_file_dialog.cpp +msgid "Must use a valid extension." +msgstr "Necessaria un'estensione valida." + +#: tools/editor/groups_editor.cpp +msgid "Add to Group" +msgstr "Aggiungi a Gruppo" + +#: tools/editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "Rimuovi da Gruppo" + +#: tools/editor/groups_editor.cpp +msgid "Group Editor" +msgstr "Editor Gruppo" + +#: tools/editor/groups_editor.cpp +msgid "Node Group(s)" +msgstr "Gruppo(i) Nodi" + +#: tools/editor/property_editor.cpp +msgid "Preset.." +msgstr "Preset.." + +#: tools/editor/property_editor.cpp +msgid "Ease In" +msgstr "Ease In" + +#: tools/editor/property_editor.cpp +msgid "Ease Out" +msgstr "Ease Out" + +#: tools/editor/property_editor.cpp +msgid "Zero" +msgstr "Zero" + +#: tools/editor/property_editor.cpp +msgid "Easing In-Out" +msgstr "Easing In-Out" + +#: tools/editor/property_editor.cpp +msgid "Easing Out-In" +msgstr "Easing Out-In" + +#: tools/editor/property_editor.cpp +msgid "File.." +msgstr "File.." + +#: tools/editor/property_editor.cpp +msgid "Dir.." +msgstr "Dir.." + +#: tools/editor/property_editor.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "New" +msgstr "Nuovo" + +#: tools/editor/property_editor.cpp +msgid "Load" +msgstr "Carica" + +#: tools/editor/property_editor.cpp +msgid "Assign" +msgstr "Assegna" + +#: tools/editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "Errore caricamento file: Non è una risorsa!" + +#: tools/editor/property_editor.cpp +msgid "Couldn't load image" +msgstr "Impossibile caricare l'immagine" + +#: tools/editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "Bit %d, val %d." + +#: tools/editor/property_editor.cpp tools/editor/editor_help.cpp +msgid "Class:" +msgstr "Classe:" + +#: tools/editor/property_editor.cpp +msgid "On" +msgstr "On" + +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "Set" + +#: tools/editor/property_editor.cpp +msgid "Properties:" +msgstr "Proprietà:" + +#: tools/editor/property_editor.cpp +msgid "Global" +msgstr "Globale" + +#: tools/editor/property_editor.cpp +msgid "Sections:" +msgstr "Sezioni:" + +#: tools/editor/addon_editor_plugin.cpp tools/editor/editor_node.cpp +#: tools/editor/project_manager.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Import" +msgstr "Importa" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Sort:" +msgstr "Ordina:" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Reverse" +msgstr "Inverti" + +#: tools/editor/addon_editor_plugin.cpp +msgid "All" +msgstr "Tutti" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Site:" +msgstr "Sito:" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Assets ZIP File" +msgstr "ZIP File degli Asset" + +#: tools/editor/editor_node.cpp +msgid "Importing:" +msgstr "Importo:" + +#: tools/editor/editor_node.cpp +msgid "Node From Scene" +msgstr "Nodo Da Scena" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "I see.." +msgstr "Capisco.." + +#: tools/editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "Impossibile aprire il file per la scrittura:" + +#: tools/editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "Formato file richiesto sconosciuto:" + +#: tools/editor/editor_node.cpp +msgid "Error while saving." +msgstr "Errore durante il salvataggio." + +#: tools/editor/editor_node.cpp +msgid "Saving Scene" +msgstr "Salvataggio Scena" + +#: tools/editor/editor_node.cpp +msgid "Analyzing" +msgstr "Analizzo" + +#: tools/editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "Creazione Miniature" + +#: tools/editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +msgstr "" +"Impossibile salvare la scena. Probabili dipendenze (instanze) non sono state " +"soddisfatte." + +#: tools/editor/editor_node.cpp +msgid "Failed to load resource." +msgstr "Caricamento della risorsa fallito." + +#: tools/editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "Impossibile caricare MeshLibrary per l'unione!" + +#: tools/editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "Errore salvataggio MeshLibrary!" + +#: tools/editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "Impossibile caricare TileSet per unione!" + +#: tools/editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "Errore di salvataggio TileSet!" + +#: tools/editor/editor_node.cpp +msgid "Can't open export templates zip." +msgstr "Impossibile aprire zip dei template d'esportazionie" + +#: tools/editor/editor_node.cpp +msgid "Loading Export Templates" +msgstr "Caricamento Template d'Esportazione" + +#: tools/editor/editor_node.cpp +msgid "Error trying to save layout!" +msgstr "Errore tentando di salvare il layout!" + +#: tools/editor/editor_node.cpp +msgid "Default editor layout overridden." +msgstr "Layout dell'editor di default ignorato." + +#: tools/editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "Nome layout non trovato!" + +#: tools/editor/editor_node.cpp +msgid "Restored default layout to base settings." +msgstr "Ripristinato il layout di default ai settaggi di base." + +#: tools/editor/editor_node.cpp +msgid "Copy Params" +msgstr "Copia parametri" + +#: tools/editor/editor_node.cpp +msgid "Set Params" +msgstr "Imposta parametri" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "Incolla Risorsa" + +#: tools/editor/editor_node.cpp +msgid "Copy Resource" +msgstr "Copia Risorsa" + +#: tools/editor/editor_node.cpp +msgid "Make Built-In" +msgstr "Rendi Built-In" + +#: tools/editor/editor_node.cpp +msgid "Make Sub-Resources Unique" +msgstr "Rendi Sotto-risorse Uniche" + +#: tools/editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "Non c'è nessuna scena definita da eseguire." + +#: tools/editor/editor_node.cpp +msgid "Current scene was never saved, please save it prior to running." +msgstr "" +"La scena corrente non è mai stata salvata, per favore salvarla prima di " +"eseguire." + +#: tools/editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "Impossibile avviare subprocesso!" + +#: tools/editor/editor_node.cpp +msgid "Open Scene" +msgstr "Apri Scena" + +#: tools/editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "Apri Scena Base" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Scene.." +msgstr "Apri scena rapido.." + +#: tools/editor/editor_node.cpp +msgid "Quick Open Script.." +msgstr "Apri Script Rapido.." + +#: tools/editor/editor_node.cpp +msgid "Yes" +msgstr "Si" + +#: tools/editor/editor_node.cpp +msgid "Close scene? (Unsaved changes will be lost)" +msgstr "Chiudi scena? (I cambiamenti non salvati saranno persi)" + +#: tools/editor/editor_node.cpp +msgid "Save Scene As.." +msgstr "Salva Scena Come.." + +#: tools/editor/editor_node.cpp +msgid "This scene has never been saved. Save before running?" +msgstr "Questa scena non è mai stata salvata. Salvare prima di eseguire?" + +#: tools/editor/editor_node.cpp +msgid "Please save the scene first." +msgstr "Si prega di salvare prima la scena." + +#: tools/editor/editor_node.cpp +msgid "Save Translatable Strings" +msgstr "Salva Stringhe Traducibili" + +#: tools/editor/editor_node.cpp +msgid "Export Mesh Library" +msgstr "Esporta Libreria Mesh" + +#: tools/editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "Esporta Tile Set" + +#: tools/editor/editor_node.cpp +msgid "Quit" +msgstr "Esci" + +#: tools/editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "Uscire dall'editor?" + +#: tools/editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "Scena corrente non salvata. Aprire comunque?" + +#: tools/editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "Impossibile ricaricare una scena che non è mai stata salvata." + +#: tools/editor/editor_node.cpp +msgid "Revert" +msgstr "Ripristina" + +#: tools/editor/editor_node.cpp +msgid "This action cannot be undone. Revert anyway?" +msgstr "Questa azione non può essere annullata. Ripristinare comunque?" + +#: tools/editor/editor_node.cpp +msgid "Quick Run Scene.." +msgstr "Esegui Scena Rapido.." + +#: tools/editor/editor_node.cpp +#, fuzzy +msgid "" +"Open Project Manager? \n" +"(Unsaved changes will be lost)" +msgstr "Chiudi scena? (I cambiamenti non salvati saranno persi)" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "Ugh" +msgstr "Ugh" + +#: tools/editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to open " +"the scene, then save it inside the project path." +msgstr "" +"Errore di caricamento scena, deve essere all'interno del percorso del " +"progetto. Usare 'Importa' per aprire la scena, salvarla poi nel percorso del " +"progetto." + +#: tools/editor/editor_node.cpp +msgid "Error loading scene." +msgstr "Errore di caricamento della scena." + +#: tools/editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "La scena '%s' ha rotto le dipendenze:" + +#: tools/editor/editor_node.cpp +msgid "Save Layout" +msgstr "Salva layout" + +#: tools/editor/editor_node.cpp +msgid "Delete Layout" +msgstr "Elimina Layout" + +#: tools/editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "Cambia Tab di Scena" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s)" +msgstr "%d altri file" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s) or folder(s)" +msgstr "% altri file o cartelle" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Scene" +msgstr "Scena" + +#: tools/editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "Vai alla scena precedentemente aperta." + +#: tools/editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "Operazioni con i file delle scene." + +#: tools/editor/editor_node.cpp +msgid "New Scene" +msgstr "Nuova scena" + +#: tools/editor/editor_node.cpp +msgid "New Inherited Scene.." +msgstr "Nuova Scena Ereditata.." + +#: tools/editor/editor_node.cpp +msgid "Open Scene.." +msgstr "Apri Scena" + +#: tools/editor/editor_node.cpp +msgid "Save Scene" +msgstr "Salva Scena" + +#: tools/editor/editor_node.cpp +msgid "Close Scene" +msgstr "Chiudi Scena" + +#: tools/editor/editor_node.cpp +msgid "Close Goto Prev. Scene" +msgstr "Vai a Scena Preced." + +#: tools/editor/editor_node.cpp +msgid "Open Recent" +msgstr "Apri Recente" + +#: tools/editor/editor_node.cpp +msgid "Quick Search File.." +msgstr "Ricerca File Rapida.." + +#: tools/editor/editor_node.cpp +msgid "Convert To.." +msgstr "Converti In.." + +#: tools/editor/editor_node.cpp +msgid "Translatable Strings.." +msgstr "Stringhe Traducibili.." + +#: tools/editor/editor_node.cpp +msgid "MeshLibrary.." +msgstr "MeshLibrary.." + +#: tools/editor/editor_node.cpp +msgid "TileSet.." +msgstr "TileSet.." + +#: tools/editor/editor_node.cpp tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Redo" +msgstr "Redo" + +#: tools/editor/editor_node.cpp +msgid "Run Script" +msgstr "Esegui Script" + +#: tools/editor/editor_node.cpp +msgid "Project Settings" +msgstr "Impostazioni Progetto" + +#: tools/editor/editor_node.cpp +msgid "Revert Scene" +msgstr "Ripristina Scena" + +#: tools/editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "Esci alla Lista Progetti" + +#: tools/editor/editor_node.cpp +msgid "Import assets to the project." +msgstr "Importa asset nel progetto." + +#: tools/editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "Strumenti di progetto o scene vari" + +#: tools/editor/editor_node.cpp +msgid "Tools" +msgstr "Strumenti" + +#: tools/editor/editor_node.cpp +msgid "Export the project to many platforms." +msgstr "Esporta il progetto a diverse piattaforme." + +#: tools/editor/editor_node.cpp +msgid "Play the project (F5)." +msgstr "Esegui il progetto (F5)." + +#: tools/editor/editor_node.cpp +#, fuzzy +msgid "Pause the scene" +msgstr "Esegui scena personalizzata" + +#: tools/editor/editor_node.cpp +msgid "Stop the scene (F8)." +msgstr "Ferma la scena (F8)." + +#: tools/editor/editor_node.cpp +msgid "Play the edited scene (F6)." +msgstr "Esegui la scena in modifica (F6)." + +#: tools/editor/editor_node.cpp +msgid "Play custom scene" +msgstr "Esegui scena personalizzata" + +#: tools/editor/editor_node.cpp +msgid "Debug options" +msgstr "Opzioni di Debug" + +#: tools/editor/editor_node.cpp +msgid "Live Editing" +msgstr "Editing Live" + +#: tools/editor/editor_node.cpp +msgid "File Server" +msgstr "File Server" + +#: tools/editor/editor_node.cpp +msgid "Deploy Remote Debug" +msgstr "Distribuisci Debug Remoto" + +#: tools/editor/editor_node.cpp +msgid "Deploy File Server Clients" +msgstr "Distribuisci i Client del File Server" + +#: tools/editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "Forme di Collisione Visibili" + +#: tools/editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "Navigazione Visibile" + +#: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Settings" +msgstr "Impostazioni" + +#: tools/editor/editor_node.cpp +msgid "Editor Layout" +msgstr "Layout dell'Editor" + +#: tools/editor/editor_node.cpp +msgid "Install Export Templates" +msgstr "Installa Template di Esportazione" + +#: tools/editor/editor_node.cpp +msgid "About" +msgstr "About" + +#: tools/editor/editor_node.cpp +msgid "Alerts when an external resource has changed." +msgstr "Avverti quando una risorsa esterna è stata modificata." + +#: tools/editor/editor_node.cpp +msgid "Spins when the editor window repaints!" +msgstr "Gira quando la finestra dell'editor viene ridisegnata. " + +#: tools/editor/editor_node.cpp +msgid "Update Always" +msgstr "Aggiorna Sempre" + +#: tools/editor/editor_node.cpp +msgid "Update Changes" +msgstr "Aggiorna Cambiamenti" + +#: tools/editor/editor_node.cpp +msgid "Inspector" +msgstr "Inspector" + +#: tools/editor/editor_node.cpp +msgid "Create a new resource in memory and edit it." +msgstr "Crea una nuova risorsa in memoria e modificala." + +#: tools/editor/editor_node.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "Carica una risorsa esistente dal disco e modificala." + +#: tools/editor/editor_node.cpp +msgid "Save the currently edited resource." +msgstr "Salva la risorsa in modifica" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save As.." +msgstr "Salva Come.." + +#: tools/editor/editor_node.cpp +msgid "Go to the previous edited object in history." +msgstr "Vai all'ultimo oggetto modificato nella cronologia." + +#: tools/editor/editor_node.cpp +msgid "Go to the next edited object in history." +msgstr "Vai al prossimo oggetto modificato nella cronologia." + +#: tools/editor/editor_node.cpp +msgid "History of recently edited objects." +msgstr "Cronologia di oggetti recentemente modificati." + +#: tools/editor/editor_node.cpp +msgid "Object properties." +msgstr "Proprietà oggetto." + +#: tools/editor/editor_node.cpp +msgid "FileSystem" +msgstr "FileSystem" + +#: tools/editor/editor_node.cpp +msgid "Output" +msgstr "Output" + +#: tools/editor/editor_node.cpp +msgid "Thanks from the Godot community!" +msgstr "Grazie dalla comunità di Godot!" + +#: tools/editor/editor_node.cpp +msgid "Thanks!" +msgstr "Grazie!" + +#: tools/editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "Importa templates Da File ZIP" + +#: tools/editor/editor_node.cpp +msgid "Export Library" +msgstr "Esporta Libreria" + +#: tools/editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "Unisci Con Esistente" + +#: tools/editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "Apri e Esegui uno Script" + +#: tools/editor/editor_node.cpp +msgid "Load Errors" +msgstr "Carica Errori" + +#: tools/editor/call_dialog.cpp +msgid "Method List For '%s':" +msgstr "Lista Metodi Per '%s':" + +#: tools/editor/call_dialog.cpp +msgid "Call" +msgstr "Chiama" + +#: tools/editor/call_dialog.cpp +msgid "Method List:" +msgstr "Lista Metodi:" + +#: tools/editor/call_dialog.cpp +msgid "Arguments:" +msgstr "Argomenti:" + +#: tools/editor/call_dialog.cpp +msgid "Return:" +msgstr "Ritorna:" + +#: tools/editor/pvrtc_compress.cpp +msgid "Could not execute PVRTC tool:" +msgstr "Impossibile eseguire lo strumento di PVRTC:" + +#: tools/editor/pvrtc_compress.cpp +msgid "Can't load back converted image using PVRTC tool:" +msgstr "Impossibile ricaricare l'immagine convertita usando il tool PVRTC:" + +#: tools/editor/array_property_edit.cpp +msgid "Resize Array" +msgstr "Ridimensiona Array" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value Type" +msgstr "Cambia Tipo del Valore Array" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value" +msgstr "Cambia Valore Array" + +#: tools/editor/editor_help.cpp +msgid "Search Classes" +msgstr "Cerca Classi" + +#: tools/editor/editor_help.cpp +msgid "Class List:" +msgstr "Lista Classi:" + +#: tools/editor/editor_help.cpp +msgid "Inherited by:" +msgstr "Ereditato da:" + +#: tools/editor/editor_help.cpp +msgid "Brief Description:" +msgstr "Breve Descrizione:" + +#: tools/editor/editor_help.cpp +msgid "Public Methods:" +msgstr "Metodi Pubblici:" + +#: tools/editor/editor_help.cpp +msgid "Members:" +msgstr "Membri" + +#: tools/editor/editor_help.cpp +msgid "GUI Theme Items:" +msgstr "Elementi Tema GUI:" + +#: tools/editor/editor_help.cpp +msgid "Signals:" +msgstr "Segnali:" + +#: tools/editor/editor_help.cpp +msgid "Constants:" +msgstr "Costanti:" + +#: tools/editor/editor_help.cpp +msgid "Method Description:" +msgstr "Descrizione Metodo:" + +#: tools/editor/editor_help.cpp +msgid "Search Text" +msgstr "Cerca Testo" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, the path must exist!" +msgstr "Percorso di progetto invalido, il percorso deve esistere!" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must not exist." +msgstr "Percorso di progetto invalido, engine.cfg non deve esistere." + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must exist." +msgstr "Percorso di progetto invalido, engine.cfg deve esistere." + +#: tools/editor/project_manager.cpp +msgid "Imported Project" +msgstr "Progetto Importato" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "Percorso di progetto invalido (cambiato qualcosa?)." + +#: tools/editor/project_manager.cpp +msgid "Couldn't create engine.cfg in project path." +msgstr "Impossibile creare engine.cfg nel percorso di progetto." + +#: tools/editor/project_manager.cpp +msgid "Import Existing Project" +msgstr "Importa Progetto Esistente" + +#: tools/editor/project_manager.cpp +msgid "Project Path (Must Exist):" +msgstr "Percorso Progetto (Deve Esistere):" + +#: tools/editor/project_manager.cpp +msgid "Project Name:" +msgstr "Nome Progetto:" + +#: tools/editor/project_manager.cpp +msgid "Create New Project" +msgstr "Crea Nuovo Progetto" + +#: tools/editor/project_manager.cpp +msgid "Project Path:" +msgstr "Percorso Progetto:" + +#: tools/editor/project_manager.cpp +msgid "Browse" +msgstr "Sfoglia" + +#: tools/editor/project_manager.cpp +msgid "New Game Project" +msgstr "Nuovo Progetto di Gioco" + +#: tools/editor/project_manager.cpp +msgid "That's a BINGO!" +msgstr "Questo è un BINGO!" + +#: tools/editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "Progetto Senza Nome" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to open more than one projects?" +msgstr "Sei sicuro di voler aprire più di un progetto?" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to run more than one projects?" +msgstr "Sei sicuro di voler eseguire più di un progetto?" + +#: tools/editor/project_manager.cpp +msgid "Remove project from the list? (Folder contents will not be modified)" +msgstr "" +"Rimuovere progetto dalla lista? (I contenuti della cartella non saranno " +"modificati)" + +#: tools/editor/project_manager.cpp +msgid "Recent Projects:" +msgstr "Progetti Recenti:" + +#: tools/editor/project_manager.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit" +msgstr "Modifica" + +#: tools/editor/project_manager.cpp +msgid "Run" +msgstr "Esegui" + +#: tools/editor/project_manager.cpp +msgid "Scan" +msgstr "Esamina" + +#: tools/editor/project_manager.cpp +msgid "New Project" +msgstr "Nuovo Progetto" + +#: tools/editor/project_manager.cpp +msgid "Exit" +msgstr "Esci" + +#: tools/editor/scene_tree_dock.cpp +msgid "OK :(" +msgstr "OK :(" + +#: tools/editor/scene_tree_dock.cpp +msgid "No parent to instance a child at." +msgstr "Nessun genitore del quale istanziare un figlio." + +#: tools/editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "Errore caricamento scena da %s" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "Errore istanziamento scena da %s" + +#: tools/editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "Ok" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one of " +"its nodes." +msgstr "" +"Impossibile istanziale la scena '%s' perché la scena corrente esiste in uno " +"dei suoi nodi." + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "Istanzia Scena(e)" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "Questa operazione non può essere eseguita alla tree root" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "Sposta Nodo In Genitore" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "Sposta Nodi In Genitore" + +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate Node(s)" +msgstr "Duplica Nodo(i)" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)?" +msgstr "Elimina Nodo(i)?" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done without a scene." +msgstr "Questa operazione non può essere eseguita senza una scena." + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "Questa operazione richiede un solo nodo selezionato." + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "Questa operazione no può essere eseguita su scene istanziate." + +#: tools/editor/scene_tree_dock.cpp +msgid "Save New Scene As.." +msgstr "Salva Nuova Scena Come.." + +#: tools/editor/scene_tree_dock.cpp +msgid "Makes Sense!" +msgstr "Ha Senso!" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "Impossibile operare su nodi da scena esterna!" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "Impossibile operare su nodi da cuoi la scena corrente eredita!" + +#: tools/editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "Rimuovi nodo(i)" + +#: tools/editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "Crea Nodo" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "" +"Impossibile salvare la scena. Probabili dipendenze (istanze) non hanno potuto " +"essere soddisfatte." + +#: tools/editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "Errore salvando la scena." + +#: tools/editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "Errore duplicando la scena per salvarla." + +#: tools/editor/scene_tree_dock.cpp +msgid "New Scene Root" +msgstr "Nuova Scena di Root" + +#: tools/editor/scene_tree_dock.cpp +msgid "Inherit Scene" +msgstr "Eredita Scena" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "Aggiungi Nodo Figlio" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "Istanzia Scena Figlia" + +#: tools/editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "Cambia Tipo" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Groups" +msgstr "Modifica Gruppi" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Connections" +msgstr "Modifica Connessioni" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Script" +msgstr "Aggiungi Script" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Up" +msgstr "Sposta Su" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Down" +msgstr "Sposta giù" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate" +msgstr "duplica" + +#: tools/editor/scene_tree_dock.cpp +#, fuzzy +msgid "Merge From Scene" +msgstr "Unisci da Scena?" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save Branch as Scene" +msgstr "Salva Ramo come Scena" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Elimina Nodo(i)" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add/Create a New Node" +msgstr "Aggiungi/Crea un Nuovo Nodo" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "" +"Istanzia un file scena come Nodo. Crea una scena ereditata se nessun nodo di " +"root esiste." + +#: tools/editor/create_dialog.cpp +msgid "Create New" +msgstr "Crea Nuovo" + +#: tools/editor/plugins/rich_text_editor_plugin.cpp +msgid "Parse BBCode" +msgstr "Parse BBCode" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Open Sample File(s)" +msgstr "Apri File(s) Sample" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "ERROR: Couldn't load sample!" +msgstr "ERRORE: Impossibile caricare sample!" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Add Sample" +msgstr "Aggiungi Sample" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stop" +msgstr "Stop" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Play" +msgstr "Play" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Rename Sample" +msgstr "Rinomina Sample" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Delete Sample" +msgstr "Elimina Sample" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "16 Bits" +msgstr "16 Bits" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "8 Bits" +msgstr "8 Bits" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stereo" +msgstr "Stereo" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Mono" +msgstr "Mono" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/camera_editor_plugin.cpp +msgid "Preview" +msgstr "Anteprima" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Pitch" +msgstr "Pitch" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Poly3D" +msgstr "Crea Poly3D" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Edit Poly" +msgstr "Modifica Poly" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "Modifica Poly (Rimuovi Punto)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "Abilità Autoplay" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "Nuovo Nome Animazione:" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "Nuova Animazione" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "Cambia Nome Animazione:" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Remove Animation" +msgstr "Rimuovi Animazione" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Invalid animation name!" +msgstr "ERRORE: Nome animazione invalido!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Animation name already exists!" +msgstr "ERRORE: Il nome dell'animazione esiste già!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Rename Animation" +msgstr "Rinomina Animazione" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Animation" +msgstr "Aggiungi Animazione" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "Blend Next Changed" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "Cambia tempo di Blend" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "Carica Animazione" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "Duplica Animazione" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to copy!" +msgstr "ERRORE: Nessuna animazione da copiare!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation resource on clipboard!" +msgstr "ERRORE; Nessuna risorsa animazione nella clipboard!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "Animazione Incollata" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "Incolla Animazione" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to edit!" +msgstr "ERRORE: Nessuna animazione da modificare!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "Esegui la seguente animazione al contrario dalla posizione corrente (A)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "Esegui la seguente animazione al contrario dalla fine. (Shift+A)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "Ferma il playback dell'animazione. (S)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "Esegui l'animazione seguente dall'inizio (Shift+D)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "Esegui la seguente animazione dalla posizione corrente (D)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "Posizione animazione (in secondi)." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "Scala playback dell'animazione globalmente per il nodo." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create new animation in player." +msgstr "Crea nuova animazione nel player." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load an animation from disk." +msgstr "Carica un'animazione da disco." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save the current animation" +msgstr "Salva l'animazione corrente" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "Mostra una lista di animazioni nel player." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "Autoplay al Caricamento" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Target Blend Times" +msgstr "Modifica i tempi di Blend della destinazione" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "Strumenti di Animazione" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Copy Animation" +msgstr "Copia Animazione" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "Crea Nuova Animazione" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "Nome Animazione:" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Times:" +msgstr "Tempi di Blend" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Next (Auto Queue):" +msgstr "Successivo (Coda Automatica):" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Cross-Animation Blend Times" +msgstr "Tempi di Blend Cross-Animation" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#, fuzzy +msgid "Animation" +msgstr "Animazioni" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Poly" +msgstr "Crea Poly" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "Crea Poligono di occlusione" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create a new polygon from scratch." +msgstr "Crea un nuovo poligono dal nulla." + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Edit existing polygon:" +msgstr "Modifica poligono esistente:" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "LMB: Move Point." +msgstr "LMB: Sposta punto." + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Ctrl+LMB: Split Segment." +msgstr "Ctrl+LMB: dividi Segmento." + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "RMB: Erase Point." +msgstr "RMB: Elimina Punto." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "Configura Snap" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "Offset Griglia:" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid Step:" +msgstr "Step:griglia" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "Offset Rotazione:" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +msgstr "Step Rotazione:" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Pivot" +msgstr "Perno di Movimento" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Action" +msgstr "Azione di spostamento" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit IK Chain" +msgstr "Modifica Catena IK" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit CanvasItem" +msgstr "Modifica CanvasItem" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors" +msgstr "Cambia Ancore" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom (%):" +msgstr "Zoom(%):" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Paste Pose" +msgstr "Incolla Posa" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Select Mode (Q)" +msgstr "Modalità di Selezione(Q)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Drag: Rotate" +msgstr "Trascina: Ruota" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Move" +msgstr "Alt+Drag: Muovi" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." +msgstr "" +"Premi 'v' per Cambiare Perno, 'Shift+v' per Trascinare il Pernno (durante lo " +"spostamento)." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+RMB: Depth list selection" +msgstr "Alt+RMB: Selezione Lista Profondità" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Move Mode (W)" +msgstr "Modalità Movimento (W)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode (E)" +msgstr "Modalità Rotazione (E)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "" +"Mostra una lista di tutti gli oggetti alla posizione cliccata\n" +"(identico a Alt+RMB in modalità selezione)." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "Clicca per cambiare il perno di rotazione dell'oggetto." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "Modalità di Pan" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "Blocca l'oggetto selezionato sul posto (non può essere mosso)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "Sblocca l'oggetto selezionato (può essere mosso). " + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Makes sure the object's children are not selectable." +msgstr "Accerta che I figli dell'oggetto non siano selezionabili." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "Ripristina l'abilità dei figli dell'oggetto di essere selezionati." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Snap" +msgstr "Usa lo Snap" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Show Grid" +msgstr "Mostra Griglia" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "Usa lo Snap di Rotazione" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap Relative" +msgstr "Snap Relativo" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap.." +msgstr "Configura Snap..." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Pixel Snap" +msgstr "Usa Snap a Pixel" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Expand to Parent" +msgstr "Espandi a Genitore" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Skeleton.." +msgstr "Scheletro.." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Bones" +msgstr "Crea Ossa" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "Elimina Ossa" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make IK Chain" +msgstr "Crea Catena IK" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear IK Chain" +msgstr "Elimina Catena IK" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "Vista" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom In" +msgstr "Zoom In" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Out" +msgstr "Zoom Out" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Reset" +msgstr "Zoom Reset" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Set.." +msgstr "Imposta Zoom.." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "Centra Selezione" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "Selezione Frame" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Anchor" +msgstr "Ancora" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Keys (Ins)" +msgstr "Inserisci Keys (Ins)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "Inserisci Key" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "Inserisci Key (Tracce Esistenti)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "Copia Posa" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "Pulisci Posa" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Set a Value" +msgstr "Imposta un Valore" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap (Pixels):" +msgstr "Snap (Pixels):" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "Disegna TileMap" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "Cancella TileMap" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "Secchiello" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "Preleva Tile" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "Seleziona" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase Selection" +msgstr "Elimina Selezione" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "Trasponi" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror X (A)" +msgstr "Specchia X (A)" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror Y (S)" +msgstr "Specchia Y (A)" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 0 degrees" +msgstr "Ruota a 0 gradi" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 90 degrees" +msgstr "Ruota a 90 gradi" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 180 degrees" +msgstr "Ruota a 180 gradi" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 270 degrees" +msgstr "Ruota a 270 gradi" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "New name:" +msgstr "Nuovo nome:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "Scala" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "Fade In (s):" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "Fade Out (s):" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend" +msgstr "Fondi" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix" +msgstr "Mischia" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "Restart Automatico:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Restart (s):" +msgstr "Restart (s):" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "Restart Casuale(i):" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Start!" +msgstr "Inizia" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "Quantità:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend:" +msgstr "Blend:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 0:" +msgstr "Blend 0:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 1:" +msgstr "Blend 1:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "Tempo(i) di Crossfade: " + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Current:" +msgstr "Corrente" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Add Input" +msgstr "Aggiungi Input" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "Pulisci Auto-Avanzamento" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "Imposta Auto-Avanzamento" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Delete Input" +msgstr "Elimina Input" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Rename" +msgstr "Rinomina" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "Animation tree valido." + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "Animation tree invalido." + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation Node" +msgstr "Nodo Animazione" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "OneShot Node" +msgstr "Nodo OneShot" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix Node" +msgstr "Node Mix" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "Nodo Blend2" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "Nodo Blend3" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "Nodo Blend4" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "Nodo TimeScale" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "Nodo TimeScale" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Transition Node" +msgstr "Nodo Transizione" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Import Animations.." +msgstr "Importa animazioni.." + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "Modifica Filtri Nodi" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Filters.." +msgstr "Filtri.." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" +"Nessuna sorgente mesh specificata (e nessun MultiMesh impostata nel nodo)." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" +"Nessuna sorgente mesh specificata (e la MultiMesh non contiene alcuna Mesh)." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "Sorgente Mesh invalida (percorso invalido)." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "Sorgente Mesh invalida (non è una MeshInstance)." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "Sorgente Mesh invalida (non contiene alcun a risorsa Mesh)." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "Nessuna sorgente di superficie specificata." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "Sorgente superficie invalida (percorso invalido)." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "Sorgente superficie invalida (nessuna geometria)." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "Sorgente superficie invalida (nessuna faccia)." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Parent has no solid faces to populate." +msgstr "Il genitore non ha facce solde da popolare." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Couldn't map area." +msgstr "Impossibile mappare l'area." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Source Mesh:" +msgstr "Seleziona una Mesh Sorgente:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Target Surface:" +msgstr "Seleziona una Superficie di Target: " + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate Surface" +msgstr "Popola la Superficie" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate MultiMesh" +msgstr "Popola MultiMesh" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Target Surface:" +msgstr "Superficie Target:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Source Mesh:" +msgstr "Mesh Sorgente:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "X-Axis" +msgstr "Asse-X" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Y-Axis" +msgstr "Asse-Y" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Z-Axis" +msgstr "Asse-Z" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh Up Axis:" +msgstr "Asse Mesh Su" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Rotation:" +msgstr "Rotazione Casuale" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Tilt:" +msgstr "Inclinazione Casuale:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Scale:" +msgstr "Scala Casuale:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate" +msgstr "Popola" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find.." +msgstr "Trova.." + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find Next" +msgstr "Trova Successivo" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find Previous" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Replace.." +msgstr "Rimpiazza.." + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Line.." +msgstr "Vai a Linea.." + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Vertex" +msgstr "Vertice" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Fragment" +msgstr "Frammento" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Lighting" +msgstr "Illuminazione" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Can't save theme to file:" +msgstr "Impossibile salvare il tema su file:" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Item" +msgstr "Aggiungi Elemento" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All Items" +msgstr "Aggiungi Tutti gli Elementi" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All" +msgstr "Aggiungi Tutti" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Item" +msgstr "Rimuovi Elemento" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add Class Items" +msgstr "Aggiungi Elementi di Classe" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove Class Items" +msgstr "Rimuovi Elementi di Classe" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Template" +msgstr "Crea Template" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio1" +msgstr "CheckBox Radio1" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio2" +msgstr "CheckBox Radio2" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Item" +msgstr "Elemento" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Check Item" +msgstr "Check Item" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Checked Item" +msgstr "Checked Item" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Has" +msgstr "Ha" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Many" +msgstr "Molte" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Have,Many,Several,Options!" +msgstr "Ha, Molte, Diverse, Opzioni!" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 1" +msgstr "Tab 1" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 2" +msgstr "Tab 2" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 3" +msgstr "Tab 3" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Data Type:" +msgstr "Tipo Dato:" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Icon" +msgstr "Icona" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Style" +msgstr "Stile" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font" +msgstr "Font" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Color" +msgstr "Colore" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "BakedLightInstance does not contain a BakedLight resource." +msgstr "BakedLightInstance non contiene una risorsa BakedLight." + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Bake!" +msgstr "Bake!" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Reset the lightmap octree baking process (start over)." +msgstr "Resetta il processo di baking dell'octree (ricomincia da capo)." + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing %d Triangles:" +msgstr "Elaborazione %d Triangoli:" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Triangle #" +msgstr "Triangolo #" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Light Baker Setup:" +msgstr "Impostazioni Baker Luci:" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing Geometry" +msgstr "Elaborazione Geometria" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Fixing Lights" +msgstr "Aggiustando le Luci" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Making BVH" +msgstr "Making BVH" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Light Octree" +msgstr "Creazione Octree Luci" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Octree Texture" +msgstr "Creazione Octree Texture" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Transfer to Lightmaps:" +msgstr "Trasferisci a Lightmap:" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Allocating Texture #" +msgstr "Allocazione Texture #" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Baking Triangle #" +msgstr "Backing Triangoli #" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Post-Processing Texture #" +msgstr "Texture Post-Processing #" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "Ortogonale" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "Prospettiva" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "Transform Abortito." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "Visualizza Tranform del Piano." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "Transform Asse-X" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "Transform Asse-Y" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "Transform Asse-Z" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling to %s%%." +msgstr "Scalando a %s%%." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "Ruotando di %s gradi." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "Vista dal Basso" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom" +msgstr "Basso" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "Vista dall'Alto." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "Alto" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "Vista dal Retro." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear" +msgstr "Retro" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "Vista Frontale." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front" +msgstr "Fronte" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "Vista Sinistra." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left" +msgstr "Sinistra" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "Vista Destra." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right" +msgstr "Destra" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "Keying disabilitato (nessun key inserito)." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "Key d'Animazione Inserito." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view" +msgstr "Allinea a vista" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top (Num7)" +msgstr "Alto (Num7)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom (Shift+Num7)" +msgstr "Basso (Shift+Num7)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left (Num3)" +msgstr "Sinistra (Num3)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right (Shift+Num3)" +msgstr "Right (Shift+Num3)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front (Num1)" +msgstr "Fronte (Num1)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear (Shift+Num1)" +msgstr "Retro (Shift+Num1)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective (Num5)" +msgstr "Prospettiva (Num5)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal (Num5)" +msgstr "Ortogonale (Num5)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Environment" +msgstr "Ambientazione" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "Audio Listener" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "Gizmos" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Selection (F)" +msgstr "Selezione (F)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view (Ctrl+Shift+F)" +msgstr "Allinea con vista (Ctrl+Shift+F)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "XForm Dialog" +msgstr "Finestra di XForm" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "No scene selected to instance!" +msgstr "Nessuna scena da istanziare selezionata!" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Instance at Cursor" +msgstr "Istanzia a Cursore" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Could not instance scene!" +msgstr "Impossibile istanziare la scena!" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode (R)" +msgstr "Modalità Scala (R)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Transform" +msgstr "Tipo Transform" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Local Coords" +msgstr "Coordinate locali" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog.." +msgstr "Finestra di Transform.." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default Light" +msgstr "Usa Luce Default" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default sRGB" +msgstr "Usa sRGB Default" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "2 Viewports" +msgstr "Impostazioni Viewport" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "3 Viewports" +msgstr "Impostazioni Viewport" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "4 Viewports" +msgstr "Impostazioni Viewport" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "Mostra Normale" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "Mostra Wireframe" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "Mostra Overdraw" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Shadeless" +msgstr "Mostra senza Shader" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "Visualizza Origine" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "Visualizza Griglia" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "Impostazioni Snap" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "Trasla Snap: " + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "Ruota Snap (deg.):" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "Scala Snap (%):" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "Impostazioni Viewport" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Default Light Normal:" +msgstr "Normale Luce di Default:" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Ambient Light Color:" +msgstr "Colore Luce Ambiente:" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "FOV Prospettiva (deg.):" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "Visualizza Z-Near:" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "Visualizza Z-Far:" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "Cambiamento Transform" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "Transla:" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "Ruota (deg.):" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "Scala (rateo):" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "Tipo Transform" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "Pre" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "Post" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Error while saving theme" +msgstr "Errore durante il salvataggio." + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Error saving" +msgstr "Errore di salvataggio dell'atlas:" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Error importing theme" +msgstr "Errore di importazione scena." + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Error importing" +msgstr "Errore di importazione:" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Import Theme" +msgstr "Importa Scena" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Save Theme As.." +msgstr "Salva Scena Come.." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "Salva Tutto" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Prev" +msgstr "Cronologia Succ." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "Cronologia Prec." + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Reload Theme" +msgstr "Ricarica" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Save Theme" +msgstr "Salva Scena" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Save Theme As" +msgstr "Salva Scena Come.." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Left" +msgstr "Indenta Sinistra" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Right" +msgstr "Indenta Destra" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Comment" +msgstr "Cambia a Commento" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Clone Down" +msgstr "Clona Sotto" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Complete Symbol" +msgstr "Completa Simbolo" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Trim Trailing Whitespace" +msgstr "Taglia Spazi in Coda " + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Auto Indent" +msgstr "Auto Indenta" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Function.." +msgstr "Vai a Funzione.." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debug" +msgstr "Debug" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Breakpoint" +msgstr "Abilita Breakpoint" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Remove All Breakpoints" +msgstr "Abilita Breakpoint" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Goto Next Breakpoint" +msgstr "Vai a Step Successivo" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Goto Previous Breakpoint" +msgstr "Abilita Breakpoint" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Keep Debugger Open" +msgstr "Mantieni Debugger Aperto" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Window" +msgstr "Finestra" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Left" +msgstr "Sposta a Sinistra" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Right" +msgstr "Sposta a Destra" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Help" +msgstr "Aiuto" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Contextual" +msgstr "Contestuale" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Tutorials" +msgstr "Tutorials" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Open https://godotengine.org at tutorials section." +msgstr "Apri https://godotengine.org alla sezione tutorial." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Classes" +msgstr "Classi" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the class hierarchy." +msgstr "Cerca nella gerarchia delle classi." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "Cerca Aiuto" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the reference documentation." +msgstr "Cerca Riferimenti nella documentazione." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "Vai al documento precedentemente modificato." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "Vai al documento successivo." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "Crea Script" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" +"I file seguenti sono più recenti su disco. Che azione deve essere intrapresa?" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload" +msgstr "Ricarica" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Resave" +msgstr "Risalva" + +#: tools/editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox Preview:" +msgstr "Anteprima StyleBox" + +#: tools/editor/plugins/sample_editor_plugin.cpp +msgid "Length:" +msgstr "Lunghezza:" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Constant" +msgstr "Cambia Costante Scalare" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Constant" +msgstr "Cambia Costante Vett." + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Constant" +msgstr "Cambia Costante RGB" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Operator" +msgstr "Cambia Operatore Scalare" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Operator" +msgstr "Cambia Operatore Vett." + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Scalar Operator" +msgstr "Cambia Operatore Scalare Vett." + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Operator" +msgstr "Cambia Operatore RGB" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Toggle Rot Only" +msgstr "Abilita Solo Rot" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Function" +msgstr "Cambia Funzione Scalare" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Function" +msgstr "Cambia Funzione Vett." + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Uniform" +msgstr "Cambia Uniforme Scalare" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Uniform" +msgstr "Cambia Uniforme Vett." + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Uniform" +msgstr "Cambia Uniforme RGB" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Default Value" +msgstr "Cambia Valore di Default" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change XForm Uniform" +msgstr "Cambia Uniforme XForm" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Texture Uniform" +msgstr "Cambia Uniforme Texture" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Cubemap Uniform" +msgstr "Cambia Uniforme Cubemap" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Comment" +msgstr "Cambia Commento" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Color Ramp" +msgstr "Aggiungi/Rimuovi alla Rampa Colori" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Modify Color Ramp" +msgstr "Modifica Rampa Colori" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Curve Map" +msgstr "Aggiung/Rimuovi alla Mappa Curve" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Curve Map" +msgstr "Modifica la Mappa Curve" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Input Name" +msgstr "Cambia Nome Input" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Connect Graph Nodes" +msgstr "Connetti Nodi Grafico" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Disconnect Graph Nodes" +msgstr "Disconnetti Nodi Grafico" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Remove Shader Graph Node" +msgstr "Rimuovi Nodo Grafico di Shader" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Move Shader Graph Node" +msgstr "Sposta Nodo Grafico di Shader" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Duplicate Graph Node(s)" +msgstr "Duplica Nodo(i) Grafico" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Delete Shader Graph Node(s)" +msgstr "Elimina Nodo(i) Grafico di Shader" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Cyclic Connection Link" +msgstr "Errore: Giunzione ciclica" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Missing Input Connections" +msgstr "Errore: Connessioni Input MAncanti" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add Shader Graph Node" +msgstr "Aggiungi Nodo Grafico Shader" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "La mesh è vuota!" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "Crea Corpo Trimesh Statico" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Convex Body" +msgstr "Crea Corpo Convesso Statico" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "Questo non funziona sulla root della scena! " + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Shape" +msgstr "Crea Forma Trimesh" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Shape" +msgstr "Crea Forma Convessa" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "Crea Mesh di Navigazione" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "MeshInstance manca di una Mesh!" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "Impossiblile creare outline!" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "Crea Outline" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "Crea Corpo Statico Trimesh" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Static Body" +msgstr "Crea Corpo Statico Convesso" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "Crea Fratello di Collisione Trimesh" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Collision Sibling" +msgstr "Crea Fratello di Collisione Convessa" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh.." +msgstr "Crea Mesh di Outline.." + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "Crea Mesh di Outline" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "Dimensione Outline:" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "Crea UV Map" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "Trasla UV Map" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "Polygon 2D UV Editor" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Point" +msgstr "Sposta Punto" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "Ctrl: Ruota" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "Shift: Muovi Tutti" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "Shift+Ctrl: Scala" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "Sposta Poligono" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "Ruota Poligono" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "Scala Poligono" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon->UV" +msgstr "Poligono->UV" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV->Polygon" +msgstr "UV->Poligono" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "Cancella UV" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Snap" +msgstr "Snap" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Enable Snap" +msgstr "Abilita Snap" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid" +msgstr "Griglia" + +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Set region_rect" +msgstr "Imposta region_rect" + +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Sprite Region Editor" +msgstr "Editor Regioni Sprite" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "ERROERE: Impossibile caricare la risorsa!" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "Aggiungi Risorsa" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "Rinomina Risorsa" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Resource" +msgstr "Elimina Risorsa" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "Clipboard risorse vuota!" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Load Resource" +msgstr "Carica Risorsa" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "ERRORE; Impossibile caricare la risorsa frame!" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "Aggiungi frame" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "Clipboard risorse vuota o non è una texture!" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "Incolla Frame" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "Aggiungi vuoto" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation Loop" +msgstr "Cambia Loop Animazione" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "Cambia FPS ANimazione" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "(vuoto)" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations" +msgstr "Animazioni" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed (FPS):" +msgstr "Velocità (FPS):" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Loop" +msgstr "Loop" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames" +msgstr "Frames Animazione" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (Before)" +msgstr "Inserisci Vuoto (Prima)" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (After)" +msgstr "Inserisci Vuoto (Dopo)" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Up" +msgstr "Su" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Down" +msgstr "Giù" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "Crea Poligono di Navigazione" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Remove Poly And Point" +msgstr "Rimuovi Poligono e Punto" + +#: tools/editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "Imposta Maniglia" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Errore di caricamento immagine:" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image.." +msgstr "Nessun pixel con trasparenza >128 nell'immagine.." + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Set Emission Mask" +msgstr "Imposta Maschera Emissione" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Cancella Maschera Emissione" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Carica Maschera Emissione" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Conteggio Punti Generati:" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Creating Mesh Library" +msgstr "Creazione Libreria Mesh" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Thumbnail.." +msgstr "Miniatura.." + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "Rimuovi elemento %d?" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Scene" +msgstr "Importa Scena" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "Rimuovi Elementi Selezionati" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import from Scene" +msgstr "Importa da Scena" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Update from Scene" +msgstr "Aggiorna da Scena" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry." +msgstr "Il nodo non contiene geometria." + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry (faces)." +msgstr "Il nodo non contiene geometria (facce)." + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Faces contain no area!" +msgstr "Le facce non contengono area!" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "No faces!" +msgstr "Nessuna faccia!" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Generate AABB" +msgstr "Genera AABB" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Mesh" +msgstr "Crea Emitter Da Mesh" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Node" +msgstr "Crea Emitter Da Nodo" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Clear Emitter" +msgstr "Cancella Emitter" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter" +msgstr "Crea Emitter:" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Positions:" +msgstr "Posizioni di Emissione:" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Fill:" +msgstr "Riempimento Emissione:" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Surface" +msgstr "Superficie" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "Volume" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "Elemento %d" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "Elementi" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "Editor Lista Elementi" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Add/Remove Color Ramp Point" +msgstr "Aggiungi/Rimuovi Punto Rampa Colori" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "Punto Curva #" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Pos" +msgstr "Imposta Posizione Punti curva" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Pos" +msgstr "Imposta Posizione Curve In" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Pos" +msgstr "Imposta Posizione Curve Out" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "Dividi Percorso" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "Aggiungi Punto a Curva" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "Rimuovi Punto Percorso" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Points" +msgstr "Selezione Punti" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "Shift+Trascina: Seleziona Punti di Controllo" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "Click: Aggiungi Punto" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "Click Destro: Elimina Punto" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "Aggiungi Punto (in sapzio vuoto)" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "Spezza Segmento (in curva)" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Delete Point" +msgstr "Elimina Punto" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Close Curve" +msgstr "Chiudi curva" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Could not find tile:" +msgstr "Impossibile trovare tile:" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Item name or ID:" +msgstr "Nome elemento o ID:" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene?" +msgstr "Crea da scena?" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "Unisci da scena?" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "Crea da Scena?" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "Unisci da Scena?" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "Rimuovi Punto da Curva" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "Sposta Punto in curva" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "Sposta In-Control sulla Curva" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "Sposta Out-Control sulla Curva" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "Seleziona Punti di Controllo (Shift+Trascina)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Uncompressed" +msgstr "Decompressi" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossless (PNG)" +msgstr "Comprimi Lossless (PNG)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossy (WebP)" +msgstr "Comprimi Lossy (WebP)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress (VRAM)" +msgstr "Comprimi (VRAM)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Format" +msgstr "Formato Texture" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Compression Quality (WebP):" +msgstr "Qualità Compressione Texture (WebP)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Options" +msgstr "Opzioni Texture" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Please specify some files!" +msgstr "Si prega di specificare qualche file!" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path is empty." +msgstr "Il percorso di destinazione vuoto." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path must be a complete resource path." +msgstr "" +"Il percorso di destinazione deve essere un percorso completo di risorsa." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path must exist." +msgstr "Il percorso di destinazione deve esistere." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "At least one file needed for Atlas." +msgstr "Almeno un file è richiesto per l'Atlas." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Error importing:" +msgstr "Errore di importazione:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Only one file is required for large texture." +msgstr "Solo un file è richiesto per una texture grande." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Max Texture Size:" +msgstr "Dimensione Texture Massima:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for Atlas (2D)" +msgstr "Importa Textures per Atlas (2D)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cell Size:" +msgstr "Dimensione Cella:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Large Texture" +msgstr "Texture Grande" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Textures (2D)" +msgstr "Importa Texture Grandi (2D)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#, fuzzy +msgid "Source Texture" +msgstr "Texture Sorgente:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Base Atlas Texture" +msgstr "Texture Base Atlas" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#, fuzzy +msgid "Source Texture(s)" +msgstr "Texture Sorgenti:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 2D" +msgstr "Importa Textures per 2D" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 3D" +msgstr "Importa Textures per 3D" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures" +msgstr "Importa Textures" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#, fuzzy +msgid "2D Texture" +msgstr "Texture Grande" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#, fuzzy +msgid "3D Texture" +msgstr "Texture Grande" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#, fuzzy +msgid "Atlas Texture" +msgstr "Texture Base Atlas" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "" +"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " +"the project." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s):" +msgstr "Texture Sorgenti:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Crop empty space." +msgstr "Ritaglia spazio vuoto." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Target Path:" +msgstr "Percorso di destinazione:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Accept" +msgstr "Accetta" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#, fuzzy +msgid "Texture" +msgstr "Testo" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Texture" +msgstr "Importa Texture Grande" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Load Source Image" +msgstr "Carica Immagine Sorgente" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Slicing" +msgstr "Taglio" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Inserting" +msgstr "Inserimento" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Saving" +msgstr "Salvataggio" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save large texture:" +msgstr "Impossibile salvare texture grande:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Build Atlas For:" +msgstr "Costruisci Atlas Per:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Loading Image:" +msgstr "Immagine Caricamento:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't load image:" +msgstr "Impossibile caricare immagine" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Converting Images" +msgstr "Convertendo Immagini" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cropping Images" +msgstr "Tagliando Immagini" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Blitting Images" +msgstr "Bliting Immagini" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save atlas image:" +msgstr "Impossibile salvare l'immagine di atlas:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save converted texture:" +msgstr "Impossibile salvare la texture convertita:" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid source!" +msgstr "Sorgente invalida!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid translation source!" +msgstr "Sorgente traduzione invalida!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Column" +msgstr "Colonna" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No items to import!" +msgstr "Nessun elemento da importare!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No target path!" +msgstr "Nessun percorso di destinazione!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translations" +msgstr "Importa Traduzioni" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Couldn't import!" +msgstr "Impossibile Importare!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translation" +msgstr "Importa Traduzione" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Source CSV:" +msgstr "CSV Sorgente:" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Ignore First Row" +msgstr "Ignora Prima Riga" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Compress" +msgstr "Comprimi" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Add to Project (engine.cfg)" +msgstr "Aggiungi a Progetto (engine.cfg)" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Languages:" +msgstr "Importa Lingue:" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#, fuzzy +msgid "Translation" +msgstr "Traduzioni" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "New Clip" +msgstr "Nuova Clip" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Animation Options" +msgstr "Opzioni Animazione" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Flags" +msgstr "Flags" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Bake FPS:" +msgstr "Bake FPS:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Optimizer" +msgstr "Ottimizzatore" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Linear Error" +msgstr "Errore Lineare Max" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angular Error" +msgstr "Errore Angolare Max" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angle" +msgstr "Angolo Max" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Clips" +msgstr "Clips" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Start(s)" +msgstr "Inizio(i)" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "End(s)" +msgstr "Fine(i)" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Filters" +msgstr "Filtri" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source path is empty." +msgstr "Il percorso sorgente è vuoto." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script." +msgstr "Impossibile caricare script di post-importazione" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import." +msgstr "Script di post-importazione invalido/non funzionante." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error importing scene." +msgstr "Errore di importazione scena." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import 3D Scene" +msgstr "Importa Scena 3D" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source Scene:" +msgstr "Scena Sorgente:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Same as Target Scene" +msgstr "Stesso che Scena di Destinazione" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Shared" +msgstr "Condiviso" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Target Texture Folder:" +msgstr "Cartella Texture di Destinazione:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Options:" +msgstr "Opzioni:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Post-Process Script:" +msgstr "Script di Post-Process:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Custom Root Node Type:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy +msgid "Auto" +msgstr "AutoLoad" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "The Following Files are Missing:" +msgstr "I File Seguenti sono Mancanti:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Anyway" +msgstr "Importa ComunqueImporta Comunque" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import & Open" +msgstr "Importa e Apri" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Edited scene has not been saved, open imported scene anyway?" +msgstr "" +"La scena modificata non è stata salvata, aprire la scena importata comunque?" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Importing Scene.." +msgstr "Importando Scena.." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Running Custom Script.." +msgstr "Eseguendo Script Personalizzato.." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script:" +msgstr "Impossibile caricare lo script di post-import:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import:" +msgstr "Script di post-import invalido/non funzionante:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error running post-import script:" +msgstr "Errore di esecuzione dello script di post-import" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Image:" +msgstr "Importa Immagine:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Can't import a file over itself:" +msgstr "Impossibile importare un file su se stesso:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't localize path: %s (already local)" +msgstr "Impossibile localizzare il percorso: %s (già locale)" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Saving.." +msgstr "Salvataggio.." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy +msgid "3D Scene Animation" +msgstr "Rinomina Animazione" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No source font file!" +msgstr "Nessun file font sorgente!" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No target font resource!" +msgstr "Nessuna risorsa font di destinazione!" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Can't load/process source font." +msgstr "Impossibile caricare/processare il font sorgente." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Couldn't save font." +msgstr "Impossibile salvare font." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font:" +msgstr "Font Sorgente:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font Size:" +msgstr "Dimensione Font sorgente:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Dest Resource:" +msgstr "Risorsa di dest." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "The quick brown fox jumps over the lazy dog." +msgstr "La rapida volpe bianca scavalca il cane pigro." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Test:" +msgstr "Test:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font Import" +msgstr "Importazione font" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"This file is already a Godot font file, please supply a BMFont type file " +"instead." +msgstr "" +"Questo file è già un file font di Godot, si prega di fornire invece un file " +"di tipo BMfont." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Failed opening as BMFont file." +msgstr "Apertura come BMFont file fallita." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font custom source." +msgstr "Sorgente font personalizzato invalido." + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "No samples to import!" +msgstr "Nessun sample da importare!" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Save path is empty!" +msgstr "Il percorso di salvataggio è vuoto!" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Import Audio Samples" +msgstr "Importa Sample Audio" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Source Sample(s):" +msgstr "Sample Sorgente(i):" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#, fuzzy +msgid "Audio Sample" +msgstr "Aggiungi Sample" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "No meshes to import!" +msgstr "Nessuna mesh da importare!" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Single Mesh Import" +msgstr "Importa Mesh Singola" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Source Mesh(es):" +msgstr "Mesh Sorgente(i)" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Mesh" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Surface %d" +msgstr "Superficie %d" + +#~ msgid "Move Favorite Up" +#~ msgstr "Sposta Preferito Su" + +#~ msgid "Move Favorite Down" +#~ msgstr "Sposta Preferito Giù" + +#~ msgid "%d frames" +#~ msgstr "%d frames" + +#~ msgid "" +#~ "NOTICE: You are not forced to import textures for 2D projects. Just copy " +#~ "your .jpg or .png files to your project, and change export options later. " +#~ "Atlases can be generated on export too." +#~ msgstr "" +#~ "NOTA: Non sei obbligato ad importare le texture per i progetti 2D. È " +#~ "sufficiente copiare i tuoi file .jpg o .png nel tuo progetto, e cambiare " +#~ "le opzioni di esportazione successivamente. Gli atlas possono essere anche " +#~ "generati in esportazione." + +#~ msgid "Overwrite Existing Scene" +#~ msgstr "Sovrascrivi Scena esistente" + +#~ msgid "Overwrite Existing, Keep Materials" +#~ msgstr "Sovrascrivi Esistente, Mantieni Materiali" + +#~ msgid "Keep Existing, Merge with New" +#~ msgstr "Mantieni Esistente, Unisci a Nuova" + +#~ msgid "Keep Existing, Ignore New" +#~ msgstr "Mantieni Esistente, Ignora Nuova" + +#~ msgid "This Time:" +#~ msgstr "Questa Volta:" + +#~ msgid "Next Time:" +#~ msgstr "Prossima Volta:" + +#~ msgid "Merging.." +#~ msgstr "Unione.." diff --git a/tools/translations/ru.po b/tools/translations/ru.po new file mode 100644 index 0000000000..212970a790 --- /dev/null +++ b/tools/translations/ru.po @@ -0,0 +1,5960 @@ +# LANGUAGE translation of the Godot Engine editor +# Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community +# This file is distributed under the same license as the Godot source code. +# DimOkGamer dimokgamer@gmail.com , 2016 +# +# +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: DimOkGamer <dimokgamer@gmail.com>\n" +"Language-Team: Russian\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 1.8.7\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: scene/audio/sample_player.cpp scene/2d/sample_player_2d.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SamplePlayer to play sound." +msgstr "" +"Чтобы SamplePlayer воспроизводил звук, нужно создать или установить ресурс " +"SampleLibrary в параметре 'samples'." + +#: scene/3d/body_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" +"CollisionShape служит только для обеспечения столкновений фигурам типа " +"CollisionObject. Пожалуйста использовать его только в качестве дочернего для " +"Area, StaticBody, RigidBody, KinematicBody и др. чтобы придать им форму." + +#: scene/3d/body_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it!" +msgstr "" +"Шэйп должен быть предусмотрен для функций CollisionShape. Пожалуйста, " +"создайте шэйп-ресурс для этого!" + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" +"CollisionPolygon служит только для обеспечения столкновений фигурам типа " +"CollisionObject. Пожалуйста использовать его только в качестве дочернего для " +"Area, StaticBody, RigidBody, KinematicBody и др. чтобы придать им форму." + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "Пустой CollisionPolygon не влияет на столкновения." + +#: scene/3d/scenario_fx.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "" +"Только один WorldEnvironment допускается на сцену или совокупность " +"приведённых сцен." + +#: scene/3d/spatial_sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SpatialSamplePlayer to play sound." +msgstr "" +"Чтобы SpatialSamplePlayer воспроизводил звук, нужно создать или установить " +"ресурс SampleLibrary в параметре 'samples'." + +#: scene/3d/navigation_mesh.cpp +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "Ресурс NavigationMesh должен быть установлен или создан для этого нода." + +#: scene/3d/navigation_mesh.cpp +msgid "" +"NavigationMeshInstance must be a child or grandchild to a Navigation node. It " +"only provides navigation data." +msgstr "" +"NavigationMeshInstance должен быть ребёнком или внуком нода Navigation. Он " +"обеспечивает только навигационные данные." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error initializing FreeType." +msgstr "Ошибка инициализации FreeType." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Unknown font format." +msgstr "Неизвестный формат шрифта." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error loading font." +msgstr "Ошибка загрузки шрифта." + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font size." +msgstr "Недопустимый размер шрифта." + +#: scene/2d/particles_2d.cpp +msgid "Path property must point to a valid Particles2D node to work." +msgstr "" +"Свойство Path должен указывать на действительный нод Particles2D для работы." + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" +"Нод ParallaxLayer работает только при установке его в качестве дочернего узла " +"ParallaxBackground." + +#: scene/2d/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnable2D works best when used with the edited scene root directly " +"as parent." +msgstr "" +"VisibilityEnable2D работает лучше, когда используется, как дочерний нод корня." + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "" +"Заслоняющий полигон должен быть установлен (или нарисован) на этот окклюдер, " +"чтобы работать." + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" +msgstr "" +"Заслоняющий полигон для этого окклюдера пуст. Пожалуйста, нарисуйте полигон!" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" +"Ресурс NavigationPolygon должен быть установлен или создан для этого нода. " +"Пожалуйста, установите свойство или нарисуйте многоугольник." + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" +"NavigationPolygonInstance должен быть ребёнком или внуком нода Navigation2D. " +"Он обеспечивает только навигационные данные." + +#: scene/2d/sprite.cpp +msgid "" +"Path property must point to a valid Viewport node to work. Such Viewport must " +"be set to 'render target' mode." +msgstr "" +"Для работы, параметр Path должен указывать на действительный Нод Viewport. " +"Такой Viewport должен быть установлен в качестве цели рендеринга." + +#: scene/2d/sprite.cpp +msgid "" +"The Viewport set in the path property must be set as 'render target' in order " +"for this sprite to work." +msgstr "" +"Области просмотра установленная в свойстве path должна быть назначена \"целью " +"визуализации\" для того, чтобы этот спрайт работал." + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"CollisionPolygon2D служит только для обеспечения столкновений фигурам типа " +"CollisionObject2D. Пожалуйста использовать его только в качестве дочернего " +"для Area2D, StaticBody2D, RigidBody2D, KinematicBody2D и др. чтобы придать им " +"форму." + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "Пустой CollisionPolygon2D не влияет на столкновения." + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "" +"PathFollow2D работает только при установке его в качестве дочернего узла " +"Path2D." + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" +"Только один видимый CanvasModulate на сцену (или совокупность приведённых " +"сцен). Будет работать первый созданный, остальные будут проигнорированы." + +#: scene/2d/animated_sprite.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite to display frames." +msgstr "" +"Чтобы AnimatedSprite отображал кадры, пожалуйста установите или создайте " +"ресурс SpriteFrames в параметре 'Frames'" + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "Свойство Path должен указывать на действительный нод Node2D для работы." + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"CollisionShape2D служит только для обеспечения столкновений фигурам типа " +"CollisionObject2D. Пожалуйста использовать его только в качестве дочернего " +"для Area2D, StaticBody2D, RigidBody2D, KinematicBody2D и др. чтобы придать им " +"форму." + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "" +"Шэйп должен быть предусмотрен для функций CollisionShape2D. Пожалуйста, " +"создайте шэйп- ресурс для этого!" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the 'texture' " +"property." +msgstr "" +"Текстуры с формой света должна быть предоставлена параметру \"texture\"." + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine though, but they will hide " +"upon running." +msgstr "" +"Всплывающие окна будут скрываться по умолчанию, если Вы не вызовете popup() " +"или любой из popup*(). Делая их доступными для редактирования хорошая мысль, " +"хотя они будут прятаться при запуске." + +#: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Cancel" +msgstr "Отмена" + +#: scene/gui/dialogs.cpp +msgid "OK" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Cut" +msgstr "Вырезать" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/resources_dock.cpp tools/editor/property_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Copy" +msgstr "Копировать" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/resources_dock.cpp tools/editor/property_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste" +msgstr "Вставить" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/project_export.cpp tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Select All" +msgstr "Выбрать все" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_log.cpp +#: tools/editor/property_editor.cpp +#: tools/editor/plugins/rich_text_editor_plugin.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear" +msgstr "Очистить" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Undo" +msgstr "Отменить" + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" +"Эта область не установлена в качестве цели рендеринга. Если вы собираетесь " +"использовать его, чтобы отобразить его содержимое прямо на экране, сделать " +"его потомком Control'а, чтобы он мог получить размер. В противном случае, " +"сделайте его целью рендеринга и передайте его внутренние текстуры какому-то " +"другому Ноду для отображения." + +#: tools/editor/project_export.cpp +msgid "Edit Script Options" +msgstr "Редактировать параметры скрипта" + +#: tools/editor/project_export.cpp +msgid "Please export outside the project folder!" +msgstr "Пожалуйста экспортируйте вне папки проекта!" + +#: tools/editor/project_export.cpp +msgid "Error exporting project!" +msgstr "Ошибка экспортирования проекта!" + +#: tools/editor/project_export.cpp +msgid "Error writing the project PCK!" +msgstr "Ошибка записи PCK файла!" + +#: tools/editor/project_export.cpp +msgid "No exporter for platform '%s' yet." +msgstr "Данная платформа '%s' пока не поддерживается." + +#: tools/editor/project_export.cpp +msgid "Include" +msgstr "Включить" + +#: tools/editor/project_export.cpp +msgid "Change Image Group" +msgstr "Измените изображение группы" + +#: tools/editor/project_export.cpp +msgid "Group name can't be empty!" +msgstr "Название группы не может быть пустым!" + +#: tools/editor/project_export.cpp +msgid "Invalid character in group name!" +msgstr "Недопустимый символ в названии группы!" + +#: tools/editor/project_export.cpp +msgid "Group name already exists!" +msgstr "Название группы уже существует!" + +#: tools/editor/project_export.cpp +msgid "Add Image Group" +msgstr "Добавить изображение группы" + +#: tools/editor/project_export.cpp +msgid "Delete Image Group" +msgstr "Удалить изображение группы" + +#: tools/editor/project_export.cpp tools/editor/editor_import_export.cpp +msgid "Error saving atlas:" +msgstr "Ошибка сохранения атласа:" + +#: tools/editor/project_export.cpp +msgid "Atlas Preview" +msgstr "Предварительный просмотр атласа" + +#: tools/editor/project_export.cpp +msgid "Project Export Settings" +msgstr "Параметры экспорта проекта" + +#: tools/editor/project_export.cpp +msgid "Target" +msgstr "Цель" + +#: tools/editor/project_export.cpp +msgid "Export to Platform" +msgstr "Платформа для экспорта" + +#: tools/editor/project_export.cpp tools/editor/plugins/theme_editor_plugin.cpp +msgid "Options" +msgstr "Параметры" + +#: tools/editor/project_export.cpp +msgid "Resources" +msgstr "Ресурсы" + +#: tools/editor/project_export.cpp +msgid "Export selected resources (including dependencies)." +msgstr "Экспортировать выбранные ресурсы (включая зависимости)." + +#: tools/editor/project_export.cpp +msgid "Export all resources in the project." +msgstr "Экспортировать все ресурсы проекта" + +#: tools/editor/project_export.cpp +msgid "Export all files in the project directory." +msgstr "Экспортировать все файлы в папке проекта" + +#: tools/editor/project_export.cpp +msgid "Export Mode:" +msgstr "Режим экспортирования" + +#: tools/editor/project_export.cpp +msgid "Resources to Export:" +msgstr "Ресурсы для экспорта:" + +#: tools/editor/project_export.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "File" +msgstr "Файл" + +#: tools/editor/project_export.cpp +msgid "Action" +msgstr "Действие" + +#: tools/editor/project_export.cpp +msgid "" +"Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" +msgstr "" +"Фильтр для экспорта не ресурсных файлов (через запятую, например: *.json, *." +"txt):" + +#: tools/editor/project_export.cpp +msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" +msgstr "Фильтр для исключения (через запятую, например: *.json, *.txt):" + +#: tools/editor/project_export.cpp +msgid "Convert text scenes to binary on export." +msgstr "Преобразовать текстовые сцены в двоичные при экспорте." + +#: tools/editor/project_export.cpp +msgid "Images" +msgstr "Изображения" + +#: tools/editor/project_export.cpp +msgid "Keep Original" +msgstr "Оставить исходными" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy, WebP)" +msgstr "Сжать для Диска (с потерями, WebP)" + +#: tools/editor/project_export.cpp +msgid "Compress for RAM (BC/PVRTC/ETC)" +msgstr "Сжать для RAM (BC/PVRTC/ETC)" + +#: tools/editor/project_export.cpp +msgid "Convert Images (*.png):" +msgstr "Преобразовать изображения (*.png):" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy) Quality:" +msgstr "Сжать для Диска (с потерями) - Качество:" + +#: tools/editor/project_export.cpp +msgid "Shrink All Images:" +msgstr "Уменьшить все изображения (1 - оригинал, 2 - сжать в два раза...)" + +#: tools/editor/project_export.cpp +msgid "Compress Formats:" +msgstr "Формат для сжатия:" + +#: tools/editor/project_export.cpp +msgid "Image Groups" +msgstr "Группы изображений" + +#: tools/editor/project_export.cpp +msgid "Groups:" +msgstr "Группы" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Default" +msgstr "По умолчанию" + +#: tools/editor/project_export.cpp +msgid "Compress Disk" +msgstr "Сжать для Диска" + +#: tools/editor/project_export.cpp +msgid "Compress RAM" +msgstr "Сжать для RAM" + +#: tools/editor/project_export.cpp +msgid "Compress Mode:" +msgstr "Режим сжатия:" + +#: tools/editor/project_export.cpp +msgid "Lossy Quality:" +msgstr "Потеря качества:" + +#: tools/editor/project_export.cpp +msgid "Atlas:" +msgstr "Атласы:" + +#: tools/editor/project_export.cpp +msgid "Shrink By:" +msgstr "Степень сжатия:" + +#: tools/editor/project_export.cpp +msgid "Preview Atlas" +msgstr "Предпросмотр атласа" + +#: tools/editor/project_export.cpp +msgid "Image Filter:" +msgstr "Фильтр:" + +#: tools/editor/project_export.cpp +msgid "Images:" +msgstr "Изображения:" + +#: tools/editor/project_export.cpp +msgid "Select None" +msgstr "Сбросить выделение" + +#: tools/editor/project_export.cpp tools/editor/groups_editor.cpp +msgid "Group" +msgstr "Группа" + +#: tools/editor/project_export.cpp +msgid "Samples" +msgstr "Сэмплы" + +#: tools/editor/project_export.cpp +msgid "Sample Conversion Mode: (.wav files):" +msgstr "Режим преобразования сэмплов ( .wav файлы)" + +#: tools/editor/project_export.cpp +msgid "Keep" +msgstr "Оставить оригинал" + +#: tools/editor/project_export.cpp +msgid "Compress (RAM - IMA-ADPCM)" +msgstr "Сжать (RAM - IMA-ADPCM)" + +#: tools/editor/project_export.cpp +msgid "Sampling Rate Limit (Hz):" +msgstr "Ограничение частоты сэмплов (Гц):" + +#: tools/editor/project_export.cpp +msgid "Trim" +msgstr "Обрезать" + +#: tools/editor/project_export.cpp +msgid "Trailing Silence:" +msgstr "Удаление тишины:" + +#: tools/editor/project_export.cpp +msgid "Script" +msgstr "Скрипт" + +#: tools/editor/project_export.cpp +msgid "Script Export Mode:" +msgstr "Режим экспортирования скриптов:" + +#: tools/editor/project_export.cpp +msgid "Text" +msgstr "Текст" + +#: tools/editor/project_export.cpp +msgid "Compiled" +msgstr "Компилированный" + +#: tools/editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "Зашифрованный (Напишите ключ ниже)" + +#: tools/editor/project_export.cpp +msgid "Script Encryption Key (256-bits as hex):" +msgstr "Ключ шифрования скрипта (256-бит, а в шестнадцатеричном виде):" + +#: tools/editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "Экспортировать PCK/Zip" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Export Project" +msgstr "Экспортировать проект" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Password:" +msgstr "Пароль:" + +#: tools/editor/project_export.cpp +msgid "Export Project PCK" +msgstr "Экспортировать PCK проекта" + +#: tools/editor/project_export.cpp +msgid "Export.." +msgstr "Экспортировать.." + +#: tools/editor/project_export.cpp +msgid "Project Export" +msgstr "Экспортирование проекта" + +#: tools/editor/project_export.cpp +msgid "Export Preset:" +msgstr "Экспортировать настройки:" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Export" +msgstr "Экспорт" + +#: tools/editor/code_editor.cpp +msgid "Go to Line" +msgstr "Перейти к строке" + +#: tools/editor/code_editor.cpp +msgid "Line Number:" +msgstr "Номер строки:" + +#: tools/editor/code_editor.cpp +msgid "No Matches" +msgstr "Нет совпадений" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d Ocurrence(s)." +msgstr "Заменено совпадений: %d." + +#: tools/editor/code_editor.cpp +msgid "Replace" +msgstr "Заменить" + +#: tools/editor/code_editor.cpp +msgid "Replace All" +msgstr "Заменить всё" + +#: tools/editor/code_editor.cpp +msgid "Match Case" +msgstr "Учитывать регистр" + +#: tools/editor/code_editor.cpp +msgid "Whole Words" +msgstr "Целые слова" + +#: tools/editor/code_editor.cpp +msgid "Selection Only" +msgstr "Только выделять" + +#: tools/editor/code_editor.cpp tools/editor/project_settings.cpp +#: tools/editor/addon_editor_plugin.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search" +msgstr "Поиск" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +msgid "Find" +msgstr "Найти" + +#: tools/editor/code_editor.cpp +msgid "Next" +msgstr "Следующий" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d ocurrence(s)." +msgstr "Заменено %d совпадений." + +#: tools/editor/code_editor.cpp +msgid "Not found!" +msgstr "Не найдено!" + +#: tools/editor/code_editor.cpp +msgid "Replace By" +msgstr "Заменить чем" + +#: tools/editor/code_editor.cpp +msgid "Case Sensitive" +msgstr "Чувствительность регистра" + +#: tools/editor/code_editor.cpp +msgid "Backwards" +msgstr "В обратном направлении" + +#: tools/editor/code_editor.cpp +msgid "Prompt On Replace" +msgstr "Подтверждение замены" + +#: tools/editor/code_editor.cpp +msgid "Skip" +msgstr "Пропустить" + +#: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Line:" +msgstr "Стр:" + +#: tools/editor/code_editor.cpp +msgid "Col:" +msgstr "Стлб:" + +#: tools/editor/connections_dialog.cpp +msgid "Method in target Node must be specified!" +msgstr "Метод должен быть указан в целевом Ноде!" + +#: tools/editor/connections_dialog.cpp +msgid "Connect To Node:" +msgstr "Присоединить к ноду:" + +#: tools/editor/connections_dialog.cpp +msgid "Binds (Extra Params):" +msgstr "Связи (Необязательные параметры):" + +#: tools/editor/connections_dialog.cpp tools/editor/project_settings.cpp +#: tools/editor/groups_editor.cpp tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Add" +msgstr "Добавить" + +#: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp +#: tools/editor/project_manager.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove" +msgstr "Удалить" + +#: tools/editor/connections_dialog.cpp +msgid "Path To Node:" +msgstr "Путь к ноду" + +#: tools/editor/connections_dialog.cpp +msgid "Method In Node:" +msgstr "Название метода:" + +#: tools/editor/connections_dialog.cpp +msgid "Make Function" +msgstr "Сделать функцию" + +#: tools/editor/connections_dialog.cpp +msgid "Deferred" +msgstr "Отложенное" + +#: tools/editor/connections_dialog.cpp +msgid "Oneshot" +msgstr "Один раз" + +#: tools/editor/connections_dialog.cpp tools/editor/settings_config_dialog.cpp +#: tools/editor/import_settings.cpp tools/editor/run_settings_dialog.cpp +#: tools/editor/project_settings.cpp tools/editor/groups_editor.cpp +#: tools/editor/property_editor.cpp tools/editor/addon_editor_plugin.cpp +#: tools/editor/call_dialog.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Close" +msgstr "Закрыть" + +#: tools/editor/connections_dialog.cpp +msgid "Connect" +msgstr "Присоединить" + +#: tools/editor/connections_dialog.cpp +msgid "Connect '%s' to '%s'" +msgstr "Присоединить '%s' к '%s'" + +#: tools/editor/connections_dialog.cpp +msgid "Create Subscription" +msgstr "Создать подписку" + +#: tools/editor/connections_dialog.cpp +msgid "Connect.." +msgstr "Присоединить.." + +#: tools/editor/connections_dialog.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Disconnect" +msgstr "Отсоединить" + +#: tools/editor/connections_dialog.cpp +msgid "Edit Connections.." +msgstr "Изменить связи" + +#: tools/editor/connections_dialog.cpp +msgid "Connections:" +msgstr "Связи:" + +#: tools/editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "Выберите нод(ы) для импорта" + +#: tools/editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "Путь к сцене:" + +#: tools/editor/editor_sub_scene.cpp +msgid "Import From Node:" +msgstr "Импортировать из нода" + +#: tools/editor/settings_config_dialog.cpp tools/editor/editor_node.cpp +msgid "Editor Settings" +msgstr "Настройки редактора" + +#: tools/editor/settings_config_dialog.cpp tools/editor/project_settings.cpp +msgid "General" +msgstr "Основное" + +#: tools/editor/settings_config_dialog.cpp tools/editor/quick_open.cpp +#: tools/editor/addon_editor_plugin.cpp tools/editor/editor_node.cpp +#: tools/editor/editor_help.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search:" +msgstr "Поиск:" + +#: tools/editor/settings_config_dialog.cpp tools/editor/project_settings.cpp +#: tools/editor/addon_editor_plugin.cpp +msgid "Plugins" +msgstr "Плагины" + +#: tools/editor/settings_config_dialog.cpp +msgid "Plugin List:" +msgstr "Список плагинов:" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "Выбрать каталог" + +#: tools/editor/editor_dir_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Create Folder" +msgstr "Создать папку" + +#: tools/editor/editor_dir_dialog.cpp tools/editor/editor_plugin_settings.cpp +#: tools/editor/editor_file_dialog.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Name:" +msgstr "Имя:" + +#: tools/editor/editor_dir_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Could not create folder." +msgstr "Невозможно создать папку." + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose" +msgstr "Выбрать" + +#: tools/editor/editor_file_system.cpp +msgid "Cannot go into subdir:" +msgstr "Невозможно перейти в подпапку:" + +#: tools/editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "Просканировать исходники" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "Поиск замены для:" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "Зависимости для:" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will not take effect unless reloaded." +msgstr "" +"Сцена '%s' в настоящее время редактируется.\n" +"Изменения вступят в силу, после перезагрузки." + +#: tools/editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will take effect when reloaded." +msgstr "" +"Ресурсу '% s' используется.\n" +"Изменения вступят в силу после перезагрузке." + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies" +msgstr "Зависимости" + +#: tools/editor/dependency_editor.cpp +msgid "Resource" +msgstr "Ресурс" + +#: tools/editor/dependency_editor.cpp tools/editor/project_settings.cpp +#: tools/editor/project_manager.cpp +msgid "Path" +msgstr "Путь" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies:" +msgstr "Зависимости:" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Broken" +msgstr "Исправить ошибку" + +#: tools/editor/dependency_editor.cpp +msgid "Dependency Editor" +msgstr "Редактор зависимостей" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement Resource:" +msgstr "Найти заменяемый ресурс:" + +#: tools/editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "Владельцы:" + +#: tools/editor/dependency_editor.cpp +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (no undo)" +msgstr "" +"Удаляемый файл требуется для правильной работы других ресурсов.\n" +"Всё равно удалить его? (нельзя отменить)" + +#: tools/editor/dependency_editor.cpp +msgid "Remove selected files from the project? (no undo)" +msgstr "Удалить выбранный файл из проекта? (нельзя отменить!)" + +#: tools/editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "Ошибка при загрузке:" + +#: tools/editor/dependency_editor.cpp +msgid "Scene failed to load due to missing dependencies:" +msgstr "Не удалось загрузить сцену из-за отсутствия зависимостей:" + +#: tools/editor/dependency_editor.cpp +msgid "Open Anyway" +msgstr "Всё равно открыть" + +#: tools/editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "Какое действие следует выполнить" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "Исправить зависимости" + +#: tools/editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "Ошибки загрузки!" + +#: tools/editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "Навсегда удалить %d элемент(ов)? (нельзя отменить!)" + +#: tools/editor/dependency_editor.cpp +msgid "Owns" +msgstr "Кол-во" + +#: tools/editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "Ресурсы без явного владения:" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +msgid "Orphan Resource Explorer" +msgstr "Обозреватель зависимостей ресурсов" + +#: tools/editor/dependency_editor.cpp +msgid "Delete selected files?" +msgstr "Удалить выбранные файлы?" + +#: tools/editor/dependency_editor.cpp tools/editor/scenes_dock.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Delete" +msgstr "Удалить" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Light Radius" +msgstr "Change Light Radius" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera FOV" +msgstr "Change Camera FOV" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera Size" +msgstr "Change Camera Size" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "Change Sphere Shape Radius" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "Change Box Shape Extents" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "Change Box Shape Extents" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "Change Capsule Shape Height" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "Change Ray Shape Length" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Notifier Extents" +msgstr "Change Notifier Extents" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid parent class name" +msgstr "Недопустимое имя вышестоящего класса" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid chars:" +msgstr "Допустимые символы:" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid class name" +msgstr "Недопустимое имя класса:" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid name" +msgstr "Допустимое имя" + +#: tools/editor/script_create_dialog.cpp +msgid "N/A" +msgstr "Н/Д" + +#: tools/editor/script_create_dialog.cpp +msgid "Class name is invalid!" +msgstr "Имя класса является недействительным!" + +#: tools/editor/script_create_dialog.cpp +msgid "Parent class name is invalid!" +msgstr "Имя вышестоящего класса является недействительным!" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid path!" +msgstr "Недопустимый путь!" + +#: tools/editor/script_create_dialog.cpp +msgid "Could not create script in filesystem." +msgstr "Не удалось создать скрипт в файловой системе." + +#: tools/editor/script_create_dialog.cpp +msgid "Path is empty" +msgstr "Путь не назначен" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is not local" +msgstr "Путь не локальный" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid base path" +msgstr "Недопустимый базовый путь" + +#: tools/editor/script_create_dialog.cpp +msgid "File exists" +msgstr "Файл существует" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid extension" +msgstr "Недопустимое расширение" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid path" +msgstr "Допустимый путь" + +#: tools/editor/script_create_dialog.cpp +msgid "Class Name:" +msgstr "Имя Класса:" + +#: tools/editor/script_create_dialog.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/editor_help.cpp +msgid "Inherits:" +msgstr "Наследует:" + +#: tools/editor/script_create_dialog.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Language" +msgstr "Язык" + +#: tools/editor/script_create_dialog.cpp tools/editor/property_editor.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Error!" +msgstr "Ошибка!" + +#: tools/editor/script_create_dialog.cpp +msgid "Built-In Script" +msgstr "Встроенный Скрипт" + +#: tools/editor/script_create_dialog.cpp tools/editor/project_settings.cpp +#: tools/editor/editor_file_dialog.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Path:" +msgstr "Путь:" + +#: tools/editor/script_create_dialog.cpp +msgid "Create Node Script" +msgstr "Создать скрипт для нода" + +#: tools/editor/script_create_dialog.cpp tools/editor/animation_editor.cpp +#: tools/editor/project_manager.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create" +msgstr "Создать" + +#: tools/editor/animation_editor.cpp +msgid "Disabled" +msgstr "Отключить" + +#: tools/editor/animation_editor.cpp +msgid "All Selection" +msgstr "Все выбранные элементы" + +#: tools/editor/animation_editor.cpp +msgid "Move Add Key" +msgstr "Move Add Key" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transition" +msgstr "Anim Change Transition" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transform" +msgstr "Anim Change Transform" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Value" +msgstr "Anim Change Value" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Call" +msgstr "Anim Change Call" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Track" +msgstr "Anim Add Track" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Up" +msgstr "Move Anim Track Up" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Down" +msgstr "Move Anim Track Down" + +#: tools/editor/animation_editor.cpp +msgid "Remove Anim Track" +msgstr "Remove Anim Track" + +#: tools/editor/animation_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "Anim Duplicate Keys" + +#: tools/editor/animation_editor.cpp +msgid "Set Transitions to:" +msgstr "Set Transitions to:" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Rename" +msgstr "Anim Track Rename" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Interpolation" +msgstr "Anim Track Change Interpolation" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Value Mode" +msgstr "Anim Track Change Value Mode" + +#: tools/editor/animation_editor.cpp +msgid "Edit Node Curve" +msgstr "Edit Node Curve" + +#: tools/editor/animation_editor.cpp +msgid "Edit Selection Curve" +msgstr "Edit Selection Curve" + +#: tools/editor/animation_editor.cpp +msgid "Anim Delete Keys" +msgstr "Anim Delete Keys" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Key" +msgstr "Anim Add Key" + +#: tools/editor/animation_editor.cpp +msgid "Anim Move Keys" +msgstr "Anim Move Keys" + +#: tools/editor/animation_editor.cpp +msgid "Scale Selection" +msgstr "Масштаб выбранного промежутка" + +#: tools/editor/animation_editor.cpp +msgid "Scale From Cursor" +msgstr "Масштаб относительно курсора" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "Дублировать выделенное" + +#: tools/editor/animation_editor.cpp +msgid "Duplicate Transposed" +msgstr "Дублировать перемещённый" + +#: tools/editor/animation_editor.cpp +msgid "Goto Next Step" +msgstr "Перейти к следующему шагу" + +#: tools/editor/animation_editor.cpp +msgid "Goto Prev Step" +msgstr "Перейти к предыдущему шагу" + +#: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp +msgid "Linear" +msgstr "Линейный" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "Постоянный" + +#: tools/editor/animation_editor.cpp +msgid "In" +msgstr "В" + +#: tools/editor/animation_editor.cpp +msgid "Out" +msgstr "Из" + +#: tools/editor/animation_editor.cpp +msgid "In-Out" +msgstr "В-Из" + +#: tools/editor/animation_editor.cpp +msgid "Out-In" +msgstr "Из-В" + +#: tools/editor/animation_editor.cpp +msgid "Transitions" +msgstr "Переходы" + +#: tools/editor/animation_editor.cpp +msgid "Optimize Animation" +msgstr "Оптимизировать анимацию" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation" +msgstr "Подчистить анимацию" + +#: tools/editor/animation_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "Создать новую дорожку для %s и вставить ключ?" + +#: tools/editor/animation_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "Создать %d новые дорожки и вставить ключи?" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create & Insert" +msgstr "Anim Create & Insert" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "Anim Insert Track & Key" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Key" +msgstr "Anim Insert Key" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Len" +msgstr "Change Anim Len" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop" +msgstr "Change Anim Loop" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create Typed Value Key" +msgstr "Anim Create Typed Value Key" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert" +msgstr "Anim Insert" + +#: tools/editor/animation_editor.cpp +msgid "Anim Scale Keys" +msgstr "Anim Scale Keys" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Call Track" +msgstr "Anim Add Call Track" + +#: tools/editor/animation_editor.cpp +msgid "Animation zoom." +msgstr "Масштаб анимации." + +#: tools/editor/animation_editor.cpp +msgid "Length (s):" +msgstr "Длинна (сек.):" + +#: tools/editor/animation_editor.cpp +msgid "Animation length (in seconds)." +msgstr "Длинна анимации (в секундах)." + +#: tools/editor/animation_editor.cpp +msgid "Step (s):" +msgstr "Шаг (сек.):" + +#: tools/editor/animation_editor.cpp +msgid "Cursor step snap (in seconds)." +msgstr "Шаг привязки курсора (в секундах)." + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable looping in animation." +msgstr "Включить/отключить зацикливание в анимации." + +#: tools/editor/animation_editor.cpp +msgid "Add new tracks." +msgstr "Добавить новые дорожки." + +#: tools/editor/animation_editor.cpp +msgid "Move current track up." +msgstr "Подвинуть текущую дорожку вверх." + +#: tools/editor/animation_editor.cpp +msgid "Move current track down." +msgstr "Подвинуть текущую дорожку вниз." + +#: tools/editor/animation_editor.cpp +msgid "Remove selected track." +msgstr "Удалить текущую дорожку." + +#: tools/editor/animation_editor.cpp +msgid "Track tools" +msgstr "Инструменты дорожек" + +#: tools/editor/animation_editor.cpp +msgid "Enable editing of individual keys by clicking them." +msgstr "Включить индивидуальное редактирование ключей, кликая по ним." + +#: tools/editor/animation_editor.cpp +msgid "Anim. Optimizer" +msgstr "Оптимизатор анимации." + +#: tools/editor/animation_editor.cpp +msgid "Max. Linear Error:" +msgstr "Макс. Линейные погрешности:" + +#: tools/editor/animation_editor.cpp +msgid "Max. Angular Error:" +msgstr "Макс. Угловые погрешности:" + +#: tools/editor/animation_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "Максимальный оптимизируемы угол:" + +#: tools/editor/animation_editor.cpp +msgid "Optimize" +msgstr "Оптимизировать" + +#: tools/editor/animation_editor.cpp +msgid "Key" +msgstr "Ключ" + +#: tools/editor/animation_editor.cpp +msgid "Transition" +msgstr "Переход" + +#: tools/editor/animation_editor.cpp +msgid "Scale Ratio:" +msgstr "Коэффициент масштабирования:" + +#: tools/editor/animation_editor.cpp +msgid "Call Functions in Which Node?" +msgstr "Вызвать функцию в каком ноде?" + +#: tools/editor/animation_editor.cpp +msgid "Remove invalid keys" +msgstr "Удалить недопустимые ключи" + +#: tools/editor/animation_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "Удалить не разрешенные и пустые дорожки" + +#: tools/editor/animation_editor.cpp +msgid "Clean-up all animations" +msgstr "Подчистить все анимации" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "Подчистить анимацию (нельзя отменить)" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up" +msgstr "Подчистить" + +#: tools/editor/script_editor_debugger.cpp +msgid "Bytes:" +msgstr "Байты:" + +#: tools/editor/script_editor_debugger.cpp tools/editor/project_settings.cpp +#: tools/editor/scene_tree_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Type:" +msgstr "Тип:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Warning" +msgstr "Предупреждение" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Error" +msgstr "Ошибка" + +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_help.cpp +msgid "Description:" +msgstr "Описание:" + +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_profiler.cpp +msgid "Time:" +msgstr "Время:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Error:" +msgstr "Ошибка:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Source:" +msgstr "Источник:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Function:" +msgstr "Функция:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors" +msgstr "Ошибки" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debugger" +msgstr "Отладчик" + +#: tools/editor/script_editor_debugger.cpp +msgid "Child Process Connected" +msgstr "Дочерний процесс связан" + +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_file_dialog.cpp +msgid "File:" +msgstr "Файл:" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Step Into" +msgstr "Шаг в" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Step Over" +msgstr "Шаг через" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Break" +msgstr "Пауза" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Continue" +msgstr "Продолжить" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Previous Instance" +msgstr "Осмотреть предыдущий экземпляр" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Next Instance" +msgstr "Осмотреть следующий экземпляр" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Frames" +msgstr "Стек" + +#: tools/editor/script_editor_debugger.cpp +msgid "Variable" +msgstr "Переменная" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors:" +msgstr "Ошибки:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Trace (if applicable):" +msgstr "Трассировка стека (если применимо):" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Inspector" +msgstr "Удалённый отладчик" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Scene Tree:" +msgstr "Дерево сцены в реальном времени:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Object Properties: " +msgstr "Параметры объекта:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Profiler" +msgstr "Профайлер" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitor" +msgstr "Параметр" + +#: tools/editor/script_editor_debugger.cpp +msgid "Value" +msgstr "Значение" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitors" +msgstr "Мониторинг" + +#: tools/editor/script_editor_debugger.cpp +msgid "List of Video Memory Usage by Resource:" +msgstr "Список использования видеопамяти ресурсами:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Total:" +msgstr "Всего:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Video Mem" +msgstr "Видео память" + +#: tools/editor/script_editor_debugger.cpp +msgid "Resource Path" +msgstr "Путь ресурса" + +#: tools/editor/script_editor_debugger.cpp +msgid "Type" +msgstr "Тип" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Format" +msgstr "Формат" + +#: tools/editor/script_editor_debugger.cpp +msgid "Usage" +msgstr "Использует" + +#: tools/editor/script_editor_debugger.cpp +msgid "Misc" +msgstr "Прочее" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control:" +msgstr "Нажатый нод:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control Type:" +msgstr "Тип нажатого нода:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Edit Root:" +msgstr "Редактирование корня в реальном времени:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Set From Tree" +msgstr "Установить из дерева нодов" + +#: tools/editor/import_settings.cpp +msgid "Imported Resources" +msgstr "Импортированные ресурсы" + +#: tools/editor/import_settings.cpp tools/editor/editor_reimport_dialog.cpp +#: tools/editor/editor_node.cpp +msgid "Re-Import" +msgstr "Импортировать снова" + +#: tools/editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "Мульти нодовый набор" + +#: tools/editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "Режим запуска:" + +#: tools/editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "Текущая сцена" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "Главная сцена" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "Аргументы главной сцены:" + +#: tools/editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "Параметры запуска сцены" + +#: tools/editor/project_settings.cpp +msgid "Key " +msgstr "Кнопка" + +#: tools/editor/project_settings.cpp +msgid "Joy Button" +msgstr "Кнопка геймпада" + +#: tools/editor/project_settings.cpp +msgid "Joy Axis" +msgstr "Ось геймпада" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button" +msgstr "Кнопка мыши" + +#: tools/editor/project_settings.cpp +msgid "Invalid action (anything goes but '/' or ':')." +msgstr "Недопустимое название действия (подойдёт всё кроме '/' или ':')." + +#: tools/editor/project_settings.cpp +msgid "Action '%s' already exists!" +msgstr "Действие '%s' уже существует!" + +#: tools/editor/project_settings.cpp +msgid "Rename Input Action Event" +msgstr "Переименовать действие" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action Event" +msgstr "Добавить действие" + +#: tools/editor/project_settings.cpp +msgid "Meta+" +msgstr "Meta+" + +#: tools/editor/project_settings.cpp +msgid "Shift+" +msgstr "Shift+" + +#: tools/editor/project_settings.cpp +msgid "Alt+" +msgstr "Alt+" + +#: tools/editor/project_settings.cpp +msgid "Control+" +msgstr "Control+" + +#: tools/editor/project_settings.cpp +msgid "Press a Key.." +msgstr "Нажмите любую клавишу..." + +#: tools/editor/project_settings.cpp +msgid "Mouse Button Index:" +msgstr "Индекс клавиши мыши:" + +#: tools/editor/project_settings.cpp +msgid "Left Button" +msgstr "Левая кнопка мыши" + +#: tools/editor/project_settings.cpp +msgid "Right Button" +msgstr "Правая кнопка мыши" + +#: tools/editor/project_settings.cpp +msgid "Middle Button" +msgstr "Средняя кнопка мыши" + +#: tools/editor/project_settings.cpp +msgid "Wheel Up Button" +msgstr "Колёсико вверх" + +#: tools/editor/project_settings.cpp +msgid "Wheel Down Button" +msgstr "Колёсико вниз" + +#: tools/editor/project_settings.cpp +msgid "Button 6" +msgstr "Кнопка 6" + +#: tools/editor/project_settings.cpp +msgid "Button 7" +msgstr "Кнопка 7" + +#: tools/editor/project_settings.cpp +msgid "Button 8" +msgstr "Кнопка 8" + +#: tools/editor/project_settings.cpp +msgid "Button 9" +msgstr "Кнопка 9" + +#: tools/editor/project_settings.cpp +msgid "Joystick Axis Index:" +msgstr "Индекс оси джойстика" + +#: tools/editor/project_settings.cpp +msgid "Axis" +msgstr "Ось" + +#: tools/editor/project_settings.cpp +msgid "Joystick Button Index:" +msgstr "Индекс кнопки джойстика" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action" +msgstr "Добавить действие" + +#: tools/editor/project_settings.cpp +msgid "Erase Input Action Event" +msgstr "Удалить действие" + +#: tools/editor/project_settings.cpp +msgid "Device" +msgstr "Устройство:" + +#: tools/editor/project_settings.cpp +msgid "Button" +msgstr "Кнопка" + +#: tools/editor/project_settings.cpp +msgid "Left Button." +msgstr "Левая кнопка." + +#: tools/editor/project_settings.cpp +msgid "Right Button." +msgstr "Правая кнопка." + +#: tools/editor/project_settings.cpp +msgid "Middle Button." +msgstr "Средняя кнопка." + +#: tools/editor/project_settings.cpp +msgid "Wheel Up." +msgstr "Колёсико вверх." + +#: tools/editor/project_settings.cpp +msgid "Wheel Down." +msgstr "Колёсико вниз." + +#: tools/editor/project_settings.cpp +msgid "Toggle Persisting" +msgstr "Toggle Persisting" + +#: tools/editor/project_settings.cpp +msgid "Error saving settings." +msgstr "Error saving settings." + +#: tools/editor/project_settings.cpp +msgid "Settings saved OK." +msgstr "Settings saved OK." + +#: tools/editor/project_settings.cpp +msgid "Add Translation" +msgstr "Add Translation" + +#: tools/editor/project_settings.cpp +msgid "Toggle AutoLoad Globals" +msgstr "Toggle AutoLoad Globals" + +#: tools/editor/project_settings.cpp +msgid "Invalid name." +msgstr "Недопустимое имя" + +#: tools/editor/project_settings.cpp +msgid "Valid characters:" +msgstr "Допустимые символы:" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing engine class name." +msgstr "" +"Недопустимое имя. Не должно конфликтовать с существующим именем класса движка." + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing buit-in type name." +msgstr "" +"Недопустимое имя. Не должно конфликтовать с существующим встроенным именем " +"типа." + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing global constant name." +msgstr "" +"Недопустимое имя. Не должно конфликтовать с существующим глобальным именем " +"константы." + +#: tools/editor/project_settings.cpp +msgid "Add Autoload" +msgstr "Add Autoload" + +#: tools/editor/project_settings.cpp +msgid "Remove Autoload" +msgstr "Remove Autoload" + +#: tools/editor/project_settings.cpp +msgid "Move Autoload" +msgstr "Move Autoload" + +#: tools/editor/project_settings.cpp +msgid "Remove Translation" +msgstr "Remove Translation" + +#: tools/editor/project_settings.cpp +msgid "Add Remapped Path" +msgstr "Add Remapped Path" + +#: tools/editor/project_settings.cpp +msgid "Resource Remap Add Remap" +msgstr "Resource Remap Add Remap" + +#: tools/editor/project_settings.cpp +msgid "Change Resource Remap Language" +msgstr "Change Resource Remap Language" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap" +msgstr "Remove Resource Remap" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap Option" +msgstr "Remove Resource Remap Option" + +#: tools/editor/project_settings.cpp +msgid "Enable" +msgstr "Включить" + +#: tools/editor/project_settings.cpp +msgid "Project Settings (engine.cfg)" +msgstr "Настройки проекта (engine.cfg)" + +#: tools/editor/project_settings.cpp tools/editor/addon_editor_plugin.cpp +msgid "Category:" +msgstr "Категория:" + +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +msgid "Property:" +msgstr "Параметр" + +#: tools/editor/project_settings.cpp +msgid "Del" +msgstr "Удалить" + +#: tools/editor/project_settings.cpp +msgid "Copy To Platform.." +msgstr "Скопировать на платформу.." + +#: tools/editor/project_settings.cpp +msgid "Input Map" +msgstr "Список действий" + +#: tools/editor/project_settings.cpp +msgid "Action:" +msgstr "Действие:" + +#: tools/editor/project_settings.cpp +msgid "Device:" +msgstr "Девайс:" + +#: tools/editor/project_settings.cpp +msgid "Index:" +msgstr "Индекс:" + +#: tools/editor/project_settings.cpp +msgid "Localization" +msgstr "Локализация" + +#: tools/editor/project_settings.cpp +msgid "Translations" +msgstr "Переводы" + +#: tools/editor/project_settings.cpp +msgid "Translations:" +msgstr "Переводы:" + +#: tools/editor/project_settings.cpp +msgid "Add.." +msgstr "Добавить.." + +#: tools/editor/project_settings.cpp +msgid "Remaps" +msgstr "Переназначения" + +#: tools/editor/project_settings.cpp +msgid "Resources:" +msgstr "Ресурсы:" + +#: tools/editor/project_settings.cpp +msgid "Remaps by Locale:" +msgstr "Заменить на язык:" + +#: tools/editor/project_settings.cpp +msgid "Locale" +msgstr "Язык" + +#: tools/editor/project_settings.cpp +msgid "AutoLoad" +msgstr "Автозагрузка" + +#: tools/editor/project_settings.cpp +msgid "Node Name:" +msgstr "Имя Нода:" + +#: tools/editor/project_settings.cpp +msgid "List:" +msgstr "Список:" + +#: tools/editor/project_settings.cpp tools/editor/project_manager.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Name" +msgstr "Имя" + +#: tools/editor/project_settings.cpp +msgid "Singleton" +msgstr "Синглтон" + +#: tools/editor/scene_tree_editor.cpp +msgid "" +"This item cannot be made visible because the parent is hidden. Unhide the " +"parent first." +msgstr "" +"Этот объект не может быть отображён, потому что его родитель скрыт. " +"Отобразите сначала родительский нод." + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle Spatial Visible" +msgstr "Toggle Spatial Visible" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle CanvasItem Visible" +msgstr "Toggle CanvasItem Visible" + +#: tools/editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "Экземпляр:" + +#: tools/editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "Недопустимые символы в названии нода:" + +#: tools/editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "Rename Node" + +#: tools/editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "Дерево сцены (ноды):" + +#: tools/editor/scene_tree_editor.cpp +msgid "Editable Children" +msgstr "Редактируемые потомки" + +#: tools/editor/scene_tree_editor.cpp +msgid "Load As Placeholder" +msgstr "Загрузить как заполнитель" + +#: tools/editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "Открыть в редакторе" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance" +msgstr "Очистить наследование" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "Очистить наследование?? (нельзя отменить)" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear!" +msgstr "Очистить!" + +#: tools/editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "Выберете нод" + +#: tools/editor/editor_profiler.cpp +msgid "Stop Profiling" +msgstr "Остановить профилирование" + +#: tools/editor/editor_profiler.cpp +msgid "Start Profiling" +msgstr "Запустить профилирование" + +#: tools/editor/editor_profiler.cpp +msgid "Measure:" +msgstr "Единица измерения:" + +#: tools/editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "Время кадра (сек)" + +#: tools/editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "Среднее время (сек)" + +#: tools/editor/editor_profiler.cpp +msgid "Frame %" +msgstr "Кадр %" + +#: tools/editor/editor_profiler.cpp +msgid "Fixed Frame %" +msgstr "Фиксированный кадр %" + +#: tools/editor/editor_profiler.cpp +msgid "Inclusive" +msgstr "Включительно" + +#: tools/editor/editor_profiler.cpp +msgid "Self" +msgstr "Сущность" + +#: tools/editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "Кадр:" + +#: tools/editor/quick_open.cpp tools/editor/editor_help.cpp +#: tools/editor/create_dialog.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Matches:" +msgstr "Совпадения:" + +#: tools/editor/quick_open.cpp tools/editor/scenes_dock.cpp +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_node.cpp +#: tools/editor/editor_help.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Open" +msgstr "Открыть" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Please wait for scan to complete." +msgstr "Пожалуйста дождитесь окончания сканирования." + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Current scene must be saved to re-import." +msgstr "Текущая сцена должна быть сохранена для повторного импорта." + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Save & Re-Import" +msgstr "Сохранить & Переимпортировать" + +#: tools/editor/editor_reimport_dialog.cpp tools/editor/editor_node.cpp +msgid "Re-Importing" +msgstr "Переимпортировать" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import Changed Resources" +msgstr "Переимпортировать изменённые ресурсы" + +#: tools/editor/resources_dock.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Error saving resource!" +msgstr "Ошибка при сохранении ресурса!" + +#: tools/editor/resources_dock.cpp +msgid "Create New Resource" +msgstr "Создать новый ресурс" + +#: tools/editor/resources_dock.cpp +msgid "Open Resource" +msgstr "Открыть ресурс" + +#: tools/editor/resources_dock.cpp +msgid "Save Resource" +msgstr "Сохранить ресурс" + +#: tools/editor/resources_dock.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save Resource As.." +msgstr "Сохранить ресурс как.." + +#: tools/editor/resources_dock.cpp +msgid "Resource Tools" +msgstr "Инструменты ресурсов" + +#: tools/editor/resources_dock.cpp +msgid "Make Local" +msgstr "Сделать локальным" + +#: tools/editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "Пишите ваш код в методе _run()." + +#: tools/editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "Уже существует отредактированная сцена." + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "Скрипт не соответствует требованиям:" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "Быть может вы забыли слово \"tool\" в начале?" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "Невозможно запустить скрипт:" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "Быть может вы забыли метод _run()?" + +#: tools/editor/editor_data.cpp +msgid "Updating Scene" +msgstr "Обновление сцены" + +#: tools/editor/editor_data.cpp +msgid "Storing local changes.." +msgstr "Сохранение локальных изменений.." + +#: tools/editor/editor_data.cpp +msgid "Updating scene.." +msgstr "Обновление сцены.." + +#: tools/editor/file_type_cache.cpp +msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" +msgstr "" +"Невозможно открыть file_type_cache.cch для записи. Не будет сохранён кэш " +"типов файлов!" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent Node" +msgstr "Переподчинить нод" + +#: tools/editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "Новое место (выберите нового Родителя):" + +#: tools/editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "Сохранить Глобальные Преоброзования" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "Переподчинить" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "Установленные плагины:" + +#: tools/editor/editor_plugin_settings.cpp tools/editor/editor_node.cpp +msgid "Update" +msgstr "Обновление" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Version:" +msgstr "Версия:" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Author:" +msgstr "Автор:" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "Статус:" + +#: tools/editor/scenes_dock.cpp tools/editor/editor_file_dialog.cpp +msgid "Favorites:" +msgstr "Избранное:" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination files, doing nothing." +msgstr "Файл назначения и исходный файлы совпадают. Ничего не делать." + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination paths, doing nothing." +msgstr "Путь назначения и исходный пути совпадают. Ничего не делать." + +#: tools/editor/scenes_dock.cpp +msgid "Can't move directories to within themselves." +msgstr "Невозможно переместить каталоги внутрь себя." + +#: tools/editor/scenes_dock.cpp +msgid "Can't operate on '..'" +msgstr "Невозможно работать с '..'" + +#: tools/editor/scenes_dock.cpp +msgid "Pick New Name and Location For:" +msgstr "Выберете новое имя и расположение для:" + +#: tools/editor/scenes_dock.cpp +msgid "No files selected!" +msgstr "Файлы не выбраны:" + +#: tools/editor/scenes_dock.cpp +msgid "Instance" +msgstr "Экземпляр" + +#: tools/editor/scenes_dock.cpp +msgid "Edit Dependencies.." +msgstr "Редактировать зависимости.." + +#: tools/editor/scenes_dock.cpp +msgid "View Owners.." +msgstr "Просмотреть владельцев.." + +#: tools/editor/scenes_dock.cpp +msgid "Rename or Move.." +msgstr "Переименовать или Переместить.." + +#: tools/editor/scenes_dock.cpp +msgid "Move To.." +msgstr "Переместить в.." + +#: tools/editor/scenes_dock.cpp +msgid "Info" +msgstr "Информация" + +#: tools/editor/scenes_dock.cpp +msgid "Show In File Manager" +msgstr "Просмотреть в проводнике" + +#: tools/editor/scenes_dock.cpp tools/editor/editor_node.cpp +msgid "Re-Import.." +msgstr "Переимпортировать.." + +#: tools/editor/scenes_dock.cpp +msgid "Previous Directory" +msgstr "Предыдущий каталог" + +#: tools/editor/scenes_dock.cpp +msgid "Next Directory" +msgstr "Следующий каталог" + +#: tools/editor/scenes_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "Повторное сканирование файловой системы" + +#: tools/editor/scenes_dock.cpp +msgid "Toggle folder status as Favorite" +msgstr "Переключить статус папки как избранной" + +#: tools/editor/scenes_dock.cpp +msgid "Instance the selected scene(s) as child of the selected node." +msgstr "Добавить выбранную сцену(сцены), как потомка выбранного нода." + +#: tools/editor/scenes_dock.cpp +msgid "Move" +msgstr "Переместить" + +#: tools/editor/editor_import_export.cpp +msgid "Added:" +msgstr "Добавлено:" + +#: tools/editor/editor_import_export.cpp +msgid "Removed:" +msgstr "Удалено:" + +#: tools/editor/editor_import_export.cpp +msgid "Could not save atlas subtexture:" +msgstr "Невозможно сохранить текстуру атласа:" + +#: tools/editor/editor_import_export.cpp +msgid "Storing File:" +msgstr "Сохранение файла:" + +#: tools/editor/editor_import_export.cpp +msgid "Packing" +msgstr "Упаковывание" + +#: tools/editor/editor_import_export.cpp +msgid "Exporting for %s" +msgstr "Экспортирование для %s" + +#: tools/editor/editor_import_export.cpp +msgid "Setting Up.." +msgstr "Настройка.." + +#: tools/editor/editor_settings.cpp +msgid "Default (Same as Editor)" +msgstr "По умолчанию (как редактор)" + +#: tools/editor/editor_file_dialog.cpp +msgid "File Exists, Overwrite?" +msgstr "Файл существует. Перезаписать?" + +#: tools/editor/editor_file_dialog.cpp +msgid "All Recognized" +msgstr "Все разрешённые" + +#: tools/editor/editor_file_dialog.cpp +msgid "All Files (*)" +msgstr "Все файлы (*)" + +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save" +msgstr "Сохранить" + +#: tools/editor/editor_file_dialog.cpp +msgid "Save a File" +msgstr "Сохранить файл" + +#: tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "Недавнее:" + +#: tools/editor/editor_file_dialog.cpp +msgid "Directories & Files:" +msgstr "Каталоги & Файлы:" + +#: tools/editor/editor_file_dialog.cpp +msgid "Preview:" +msgstr "Предпросмотр:" + +#: tools/editor/editor_file_dialog.cpp +msgid "Filter:" +msgstr "Фильтр:" + +#: tools/editor/editor_file_dialog.cpp +msgid "Must use a valid extension." +msgstr "Нужно использовать доступное расширение." + +#: tools/editor/groups_editor.cpp +msgid "Add to Group" +msgstr "Добавить в группу" + +#: tools/editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "Удалить из группы" + +#: tools/editor/groups_editor.cpp +msgid "Group Editor" +msgstr "Редактор групп" + +#: tools/editor/groups_editor.cpp +msgid "Node Group(s)" +msgstr "Группы нода" + +#: tools/editor/property_editor.cpp +msgid "Preset.." +msgstr "Предустановка.." + +#: tools/editor/property_editor.cpp +msgid "Ease In" +msgstr "Ease In" + +#: tools/editor/property_editor.cpp +msgid "Ease Out" +msgstr "Ease Out" + +#: tools/editor/property_editor.cpp +msgid "Zero" +msgstr "Ноль" + +#: tools/editor/property_editor.cpp +msgid "Easing In-Out" +msgstr "Easing In-Out" + +#: tools/editor/property_editor.cpp +msgid "Easing Out-In" +msgstr "Easing Out-In" + +#: tools/editor/property_editor.cpp +msgid "File.." +msgstr "Файл.." + +#: tools/editor/property_editor.cpp +msgid "Dir.." +msgstr "Папка.." + +#: tools/editor/property_editor.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "New" +msgstr "Новый" + +#: tools/editor/property_editor.cpp +msgid "Load" +msgstr "Загрузить" + +#: tools/editor/property_editor.cpp +msgid "Assign" +msgstr "Назначить" + +#: tools/editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "Ошибка загрузки файла: не ресурс!" + +#: tools/editor/property_editor.cpp +msgid "Couldn't load image" +msgstr "Невозможно загрузить изображение" + +#: tools/editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "Бит %d, значение %d." + +#: tools/editor/property_editor.cpp tools/editor/editor_help.cpp +msgid "Class:" +msgstr "Класс:" + +#: tools/editor/property_editor.cpp +msgid "On" +msgstr "Вкл" + +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "Задать" + +#: tools/editor/property_editor.cpp +msgid "Properties:" +msgstr "Свойства:" + +#: tools/editor/property_editor.cpp +msgid "Global" +msgstr "Глобальные" + +#: tools/editor/property_editor.cpp +msgid "Sections:" +msgstr "Разделы:" + +#: tools/editor/addon_editor_plugin.cpp tools/editor/editor_node.cpp +#: tools/editor/project_manager.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Import" +msgstr "Импорт" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Sort:" +msgstr "Сортировать:" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Reverse" +msgstr "Обратный" + +#: tools/editor/addon_editor_plugin.cpp +msgid "All" +msgstr "Все" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Site:" +msgstr "Сайт:" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Assets ZIP File" +msgstr "ZIP файл ассетов" + +#: tools/editor/editor_node.cpp +msgid "Importing:" +msgstr "Импортируется:" + +#: tools/editor/editor_node.cpp +msgid "Node From Scene" +msgstr "Нод со сцены" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "I see.." +msgstr "Я понял" + +#: tools/editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "Невозможно открыть файл для записи:" + +#: tools/editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "Неизвестный формат запрашиваемого файла:" + +#: tools/editor/editor_node.cpp +msgid "Error while saving." +msgstr "Ошибка при сохранении." + +#: tools/editor/editor_node.cpp +msgid "Saving Scene" +msgstr "Сохранение сцены" + +#: tools/editor/editor_node.cpp +msgid "Analyzing" +msgstr "Анализ" + +#: tools/editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "Создание эскизов" + +#: tools/editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +msgstr "" +"Не возможно сохранить сцену. Вероятно, зависимости (экземпляры) не могли быть " +"удовлетворены." + +#: tools/editor/editor_node.cpp +msgid "Failed to load resource." +msgstr "Не удалось загрузить ресурс." + +#: tools/editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "Невозможно загрузить библиотеку мэшей для слияния!" + +#: tools/editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "Ошибка сохранения библиотеки мэшей!" + +#: tools/editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "Невозможно загрузить набор тайлов для слияния!" + +#: tools/editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "Ошибка сохранения набора тайлов!" + +#: tools/editor/editor_node.cpp +msgid "Can't open export templates zip." +msgstr "Не удаётся открыть архив шаблонов экспорта." + +#: tools/editor/editor_node.cpp +msgid "Loading Export Templates" +msgstr "Загрузка шаблонов экспорта" + +#: tools/editor/editor_node.cpp +msgid "Error trying to save layout!" +msgstr "Ошибка при попытке сохранить макет!" + +#: tools/editor/editor_node.cpp +msgid "Default editor layout overridden." +msgstr "Переопределить макет по умолчанию." + +#: tools/editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "Название макета не найдено!" + +#: tools/editor/editor_node.cpp +msgid "Restored default layout to base settings." +msgstr "Вернуть макет по умолчанию к стандартному." + +#: tools/editor/editor_node.cpp +msgid "Copy Params" +msgstr "Копировать параметры" + +#: tools/editor/editor_node.cpp +msgid "Set Params" +msgstr "Назначить параметры" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "Вставить параметры" + +#: tools/editor/editor_node.cpp +msgid "Copy Resource" +msgstr "Копировать параметры" + +#: tools/editor/editor_node.cpp +msgid "Make Built-In" +msgstr "Сделать встроенным" + +#: tools/editor/editor_node.cpp +msgid "Make Sub-Resources Unique" +msgstr "Сделать вложенные ресурсы уникальными" + +#: tools/editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "Нет определённой сцены, чтобы работать." + +#: tools/editor/editor_node.cpp +msgid "Current scene was never saved, please save it prior to running." +msgstr "Текущая сцена никогда не была сохранена, сохраните его до выполнения." + +#: tools/editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "Не удаётся запустить подпроцесс!" + +#: tools/editor/editor_node.cpp +msgid "Open Scene" +msgstr "Открыть сцену" + +#: tools/editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "Открыть основную сцену" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Scene.." +msgstr "Быстро открыть сцену.." + +#: tools/editor/editor_node.cpp +msgid "Quick Open Script.." +msgstr "Быстро открыть скрипт.." + +#: tools/editor/editor_node.cpp +msgid "Yes" +msgstr "Да" + +#: tools/editor/editor_node.cpp +msgid "Close scene? (Unsaved changes will be lost)" +msgstr "Закрыть сцену? (Несохранённые изменения будут потеряны)" + +#: tools/editor/editor_node.cpp +msgid "Save Scene As.." +msgstr "Сохранить сцену как.." + +#: tools/editor/editor_node.cpp +msgid "This scene has never been saved. Save before running?" +msgstr "Эта сцена никогда не была сохранена. Сохранить перед запуском?" + +#: tools/editor/editor_node.cpp +msgid "Please save the scene first." +msgstr "Пожалуйста сначала сохраните сцену." + +#: tools/editor/editor_node.cpp +msgid "Save Translatable Strings" +msgstr "Сохранить переводимые строки" + +#: tools/editor/editor_node.cpp +msgid "Export Mesh Library" +msgstr "Экспортировать библиотеку мэшей" + +#: tools/editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "Экспортировать набор тайлов" + +#: tools/editor/editor_node.cpp +msgid "Quit" +msgstr "Выйти" + +#: tools/editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "Выйти из редактора?" + +#: tools/editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "Текущая сцена не сохранена. Открыть в любом случае?" + +#: tools/editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "Не возможно загрузить сцену, которая не была сохранена." + +#: tools/editor/editor_node.cpp +msgid "Revert" +msgstr "Вернуться" + +#: tools/editor/editor_node.cpp +msgid "This action cannot be undone. Revert anyway?" +msgstr "Это действие нельзя отменить. Восстановить в любом случае?" + +#: tools/editor/editor_node.cpp +msgid "Quick Run Scene.." +msgstr "Быстро запустить сцену.." + +#: tools/editor/editor_node.cpp +msgid "" +"Open Project Manager? \n" +"(Unsaved changes will be lost)" +msgstr "" +"Открыть менеджер проектов? \n" +"(Несохранённые изменения будут потеряны)" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "Ugh" +msgstr "Нууу блин(((" + +#: tools/editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to open " +"the scene, then save it inside the project path." +msgstr "" +"Ошибка при загрузке сцены, она должна быть внутри каталога проекта. " +"Используйте \"Импорт\", чтобы открыть сцену, а затем сохраните её в каталоге " +"проекта." + +#: tools/editor/editor_node.cpp +msgid "Error loading scene." +msgstr "Ошибка загрузки сцены." + +#: tools/editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "Сцена '%s' имеет испорченные зависимости:" + +#: tools/editor/editor_node.cpp +msgid "Save Layout" +msgstr "Сохранить макет" + +#: tools/editor/editor_node.cpp +msgid "Delete Layout" +msgstr "Удалить макет" + +#: tools/editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "Смена вкладки со сценой" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s)" +msgstr "Ещё %d файла(ов)" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s) or folder(s)" +msgstr "Ещё %d файла(ов) или папка(ок)" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Scene" +msgstr "Сцена" + +#: tools/editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "Перейти к предыдущей открытой сцене." + +#: tools/editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "Операции с файлами сцены." + +#: tools/editor/editor_node.cpp +msgid "New Scene" +msgstr "Новая сцена" + +#: tools/editor/editor_node.cpp +msgid "New Inherited Scene.." +msgstr "Новая унаследованная Сцена" + +#: tools/editor/editor_node.cpp +msgid "Open Scene.." +msgstr "Открыть сцену.." + +#: tools/editor/editor_node.cpp +msgid "Save Scene" +msgstr "Сохранить сцену" + +#: tools/editor/editor_node.cpp +msgid "Close Scene" +msgstr "Закрыть сцену" + +#: tools/editor/editor_node.cpp +msgid "Close Goto Prev. Scene" +msgstr "Закрыть и перейти к предыдущей сцене" + +#: tools/editor/editor_node.cpp +msgid "Open Recent" +msgstr "Открыть последнее" + +#: tools/editor/editor_node.cpp +msgid "Quick Search File.." +msgstr "Быстрый поиск файлов.." + +#: tools/editor/editor_node.cpp +msgid "Convert To.." +msgstr "Конвертировать в.." + +#: tools/editor/editor_node.cpp +msgid "Translatable Strings.." +msgstr "Переводимые строки.." + +#: tools/editor/editor_node.cpp +msgid "MeshLibrary.." +msgstr "Библиотека мэшей.." + +#: tools/editor/editor_node.cpp +msgid "TileSet.." +msgstr "Набор тайлов.." + +#: tools/editor/editor_node.cpp tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Redo" +msgstr "Повторить" + +#: tools/editor/editor_node.cpp +msgid "Run Script" +msgstr "Запустить скрипт" + +#: tools/editor/editor_node.cpp +msgid "Project Settings" +msgstr "Параметры проекта" + +#: tools/editor/editor_node.cpp +msgid "Revert Scene" +msgstr "Восстановить сцену" + +#: tools/editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "Выйти в список проектов" + +#: tools/editor/editor_node.cpp +msgid "Import assets to the project." +msgstr "Импортировать ассеты в проект." + +#: tools/editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "Прочие инструменты." + +#: tools/editor/editor_node.cpp +msgid "Tools" +msgstr "Инструменты" + +#: tools/editor/editor_node.cpp +msgid "Export the project to many platforms." +msgstr "Экспортировать проект на многие платформы." + +#: tools/editor/editor_node.cpp +msgid "Play the project (F5)." +msgstr "Запустить проект (F5)." + +#: tools/editor/editor_node.cpp +msgid "Pause the scene" +msgstr "Приостановить сцену" + +#: tools/editor/editor_node.cpp +msgid "Stop the scene (F8)." +msgstr "Остановить проект (F8)." + +#: tools/editor/editor_node.cpp +msgid "Play the edited scene (F6)." +msgstr "Запустить текущую сцену (F6)." + +#: tools/editor/editor_node.cpp +msgid "Play custom scene" +msgstr "Запустить выборочную сцену" + +#: tools/editor/editor_node.cpp +msgid "Debug options" +msgstr "Параметры отладки" + +#: tools/editor/editor_node.cpp +msgid "Live Editing" +msgstr "Редактирование в реальном времени" + +#: tools/editor/editor_node.cpp +msgid "File Server" +msgstr "Файловый сервер" + +#: tools/editor/editor_node.cpp +msgid "Deploy Remote Debug" +msgstr "Развернуть удалённую отладку" + +#: tools/editor/editor_node.cpp +msgid "Deploy File Server Clients" +msgstr "Развернуть файловый сервер для клиентов" + +#: tools/editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "Видимые области соприкосновения" + +#: tools/editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "Видимые области навигации" + +#: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Settings" +msgstr "Настройки" + +#: tools/editor/editor_node.cpp +msgid "Editor Layout" +msgstr "Макет редактора" + +#: tools/editor/editor_node.cpp +msgid "Install Export Templates" +msgstr "Установить шаблоны экспорта" + +#: tools/editor/editor_node.cpp +msgid "About" +msgstr "О движке" + +#: tools/editor/editor_node.cpp +msgid "Alerts when an external resource has changed." +msgstr "Оповещения, когда внешний ресурс был изменён." + +#: tools/editor/editor_node.cpp +msgid "Spins when the editor window repaints!" +msgstr "Вращается, когда окно редактора перерисовывается!" + +#: tools/editor/editor_node.cpp +msgid "Update Always" +msgstr "Обновлять всегда" + +#: tools/editor/editor_node.cpp +msgid "Update Changes" +msgstr "Обновлять при изменениях" + +#: tools/editor/editor_node.cpp +msgid "Inspector" +msgstr "Инспектор" + +#: tools/editor/editor_node.cpp +msgid "Create a new resource in memory and edit it." +msgstr "Создать новый ресурс в памяти, и редактировать его." + +#: tools/editor/editor_node.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "Загрузить существующий ресурс с диска и редактировать его." + +#: tools/editor/editor_node.cpp +msgid "Save the currently edited resource." +msgstr "Сохранить текущий редактируемый ресурс." + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save As.." +msgstr "Сохранить как.." + +#: tools/editor/editor_node.cpp +msgid "Go to the previous edited object in history." +msgstr "Перейти к предыдущему редактируемому объекту в истории." + +#: tools/editor/editor_node.cpp +msgid "Go to the next edited object in history." +msgstr "Перейти к следующему редактируемому объекту в истории." + +#: tools/editor/editor_node.cpp +msgid "History of recently edited objects." +msgstr "История последних отредактированных объектов." + +#: tools/editor/editor_node.cpp +msgid "Object properties." +msgstr "Свойства объекта." + +#: tools/editor/editor_node.cpp +msgid "FileSystem" +msgstr "Файловая система" + +#: tools/editor/editor_node.cpp +msgid "Output" +msgstr "Вывод" + +#: tools/editor/editor_node.cpp +msgid "Thanks from the Godot community!" +msgstr "Спасибо от сообщества Godot!" + +#: tools/editor/editor_node.cpp +msgid "Thanks!" +msgstr "Спасибо!" + +#: tools/editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "Импортировать шаблоны из ZIP файла" + +#: tools/editor/editor_node.cpp +msgid "Export Library" +msgstr "Экспортировать библиотеку" + +#: tools/editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "Объединить с существующей" + +#: tools/editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "Открыть и запустить скрипт" + +#: tools/editor/editor_node.cpp +msgid "Load Errors" +msgstr "Ошибки загрузки" + +#: tools/editor/call_dialog.cpp +msgid "Method List For '%s':" +msgstr "Список способ для '%s':" + +#: tools/editor/call_dialog.cpp +msgid "Call" +msgstr "Вызов" + +#: tools/editor/call_dialog.cpp +msgid "Method List:" +msgstr "Список методов" + +#: tools/editor/call_dialog.cpp +msgid "Arguments:" +msgstr "Аргументы:" + +#: tools/editor/call_dialog.cpp +msgid "Return:" +msgstr "Возвращение:" + +#: tools/editor/pvrtc_compress.cpp +msgid "Could not execute PVRTC tool:" +msgstr "Невозможно запустить PVRTC инструмент:" + +#: tools/editor/pvrtc_compress.cpp +msgid "Can't load back converted image using PVRTC tool:" +msgstr "" +"Не возможно загрузить обратно конвертированное изображение используя PVRTC " +"инструмент:" + +#: tools/editor/array_property_edit.cpp +msgid "Resize Array" +msgstr "Изменить размер Массива" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value Type" +msgstr "Изменение типа значения массива" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value" +msgstr "Изменить значение массива" + +#: tools/editor/editor_help.cpp +msgid "Search Classes" +msgstr "Поиск классов" + +#: tools/editor/editor_help.cpp +msgid "Class List:" +msgstr "Список классов:" + +#: tools/editor/editor_help.cpp +msgid "Inherited by:" +msgstr "Унаследован им:" + +#: tools/editor/editor_help.cpp +msgid "Brief Description:" +msgstr "Краткое описание:" + +#: tools/editor/editor_help.cpp +msgid "Public Methods:" +msgstr "Публичные методы:" + +#: tools/editor/editor_help.cpp +msgid "Members:" +msgstr "Участники:" + +#: tools/editor/editor_help.cpp +msgid "GUI Theme Items:" +msgstr "Тема элементов GUI:" + +#: tools/editor/editor_help.cpp +msgid "Signals:" +msgstr "Сигналы:" + +#: tools/editor/editor_help.cpp +msgid "Constants:" +msgstr "Константы:" + +#: tools/editor/editor_help.cpp +msgid "Method Description:" +msgstr "Описание методов:" + +#: tools/editor/editor_help.cpp +msgid "Search Text" +msgstr "Искать текст:" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, the path must exist!" +msgstr "Неверный путь к проекту, путь должен существовать!" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must not exist." +msgstr "Недопустимый путь к проекту, engine.cfg не должен существовать." + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must exist." +msgstr "Недопустимый путь к проекту, engine.cfg должен существовать." + +#: tools/editor/project_manager.cpp +msgid "Imported Project" +msgstr "Импортированный проект" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "Неверный путь к проекту (что-то изменили?)." + +#: tools/editor/project_manager.cpp +msgid "Couldn't create engine.cfg in project path." +msgstr "Не могу создать engine.cfg в папке проекта." + +#: tools/editor/project_manager.cpp +msgid "Import Existing Project" +msgstr "Импортировать существующий проект" + +#: tools/editor/project_manager.cpp +msgid "Project Path (Must Exist):" +msgstr "Путь к проекту (должен существовать):" + +#: tools/editor/project_manager.cpp +msgid "Project Name:" +msgstr "Название проекта:" + +#: tools/editor/project_manager.cpp +msgid "Create New Project" +msgstr "Создать новый проект" + +#: tools/editor/project_manager.cpp +msgid "Project Path:" +msgstr "Путь к проекту:" + +#: tools/editor/project_manager.cpp +msgid "Browse" +msgstr "Обзор" + +#: tools/editor/project_manager.cpp +msgid "New Game Project" +msgstr "Новый игровой проект" + +#: tools/editor/project_manager.cpp +msgid "That's a BINGO!" +msgstr "Бинго!" + +#: tools/editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "Безымянный проект" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to open more than one projects?" +msgstr "Вы уверены, что открыть несколько проектов?" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to run more than one projects?" +msgstr "Вы уверены, что хотите запустить более одного проекта?" + +#: tools/editor/project_manager.cpp +msgid "Remove project from the list? (Folder contents will not be modified)" +msgstr "Удалить проект из списка? (Содержимое папки не будет изменено)" + +#: tools/editor/project_manager.cpp +msgid "Recent Projects:" +msgstr "Последние проекты:" + +#: tools/editor/project_manager.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit" +msgstr "Редактировать" + +#: tools/editor/project_manager.cpp +msgid "Run" +msgstr "Запустить" + +#: tools/editor/project_manager.cpp +msgid "Scan" +msgstr "Сканировать" + +#: tools/editor/project_manager.cpp +msgid "New Project" +msgstr "Новый проект" + +#: tools/editor/project_manager.cpp +msgid "Exit" +msgstr "Выход" + +#: tools/editor/scene_tree_dock.cpp +msgid "OK :(" +msgstr "Ок :(" + +#: tools/editor/scene_tree_dock.cpp +msgid "No parent to instance a child at." +msgstr "Нет родителя для добавления потомка." + +#: tools/editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "Ошибка при загрузке сцены из %s" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "Ошибка добавления сцены из %s" + +#: tools/editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "Ок" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one of " +"its nodes." +msgstr "" +"Невозможно добавить сцену %s, потому что текущая сцена существует в одном из " +"его Нодов." + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "Дополнить сценой(ами)" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "Эта операция не может быть произведена над корнем дерева." + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "Перемещение нода в Родительский" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "Перемещение нодов в родительский" + +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate Node(s)" +msgstr "Дублировать нод(ы)" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)?" +msgstr "Удалить нод(ы)?" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done without a scene." +msgstr "Эта операция не может быть выполнена без сцены." + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "Эта операция требует одного выбранного нода." + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "Эта операция не может быть сделана на редактируемой сцене." + +#: tools/editor/scene_tree_dock.cpp +msgid "Save New Scene As.." +msgstr "Сохранить новую Сцену как.." + +#: tools/editor/scene_tree_dock.cpp +msgid "Makes Sense!" +msgstr "Уууу круто!" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "Не могу работать с нодами из внешней сцены!" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "" +"Не могу работать с нодами текущей сцены наследуемой откуда то!\n" +"Очистите наследование, чтобы продолжить работу с ними." + +#: tools/editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "Удалить нод(ы)" + +#: tools/editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "Создать нод" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "" +"Не возможно сохранить новую сцену. Вероятно, зависимости (экземпляры) не " +"могли быть удовлетворены." + +#: tools/editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "Ошибка сохранения сцены." + +#: tools/editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "Ошибка дублирования сцены, чтобы сохранить её." + +#: tools/editor/scene_tree_dock.cpp +msgid "New Scene Root" +msgstr "Новый корень сцены" + +#: tools/editor/scene_tree_dock.cpp +msgid "Inherit Scene" +msgstr "Унаследовать сцену" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "Добавить дочерний нод" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "Добавить дочернюю сцену" + +#: tools/editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "Изменить тип" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Groups" +msgstr "Редактировать группы" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Connections" +msgstr "Редактировать связи" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Script" +msgstr "Добавить скрипт" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Up" +msgstr "Переместить вверх" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Down" +msgstr "Переместить вниз" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate" +msgstr "Дублировать" + +#: tools/editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "Соединить со сценой" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save Branch as Scene" +msgstr "Сохранить ветку, как сцену" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "Удалить нод(ы)" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add/Create a New Node" +msgstr "Добавить/создать новый узел" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "" +"Добавить файл сцены как нод. Создаёт наследуемую сцену, если корневой узел не " +"существует." + +#: tools/editor/create_dialog.cpp +msgid "Create New" +msgstr "Создать новый" + +#: tools/editor/plugins/rich_text_editor_plugin.cpp +msgid "Parse BBCode" +msgstr "Парсить BB Код" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Open Sample File(s)" +msgstr "Открыть сэмпл(ы)" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "ERROR: Couldn't load sample!" +msgstr "ОШИБКА: Не удалось загрузить сэмпл!" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Add Sample" +msgstr "Добавить сэмпл" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stop" +msgstr "Остановить" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Play" +msgstr "Воспроизвести" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Rename Sample" +msgstr "Переименовать сэмпл" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Delete Sample" +msgstr "Удалить сэмпл" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "16 Bits" +msgstr "16 Бит" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "8 Bits" +msgstr "8 Бит" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stereo" +msgstr "Стерео" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Mono" +msgstr "Моно" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/camera_editor_plugin.cpp +msgid "Preview" +msgstr "Предпросмотр" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Pitch" +msgstr "Высота" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Poly3D" +msgstr "Create Poly3D" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Edit Poly" +msgstr "Edit Poly" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "Edit Poly (Remove Point)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "Toggle Autoplay" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "Новое имя анимации:" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "Новая анимация" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "Изменить имя анимации:" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Remove Animation" +msgstr "Удалить анимацию" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Invalid animation name!" +msgstr "ОШИБКА: Недопустимое название анимации!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Animation name already exists!" +msgstr "ОШИБКА: Такое название анимации уже существует!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Rename Animation" +msgstr "Переименовать анимацию" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Animation" +msgstr "Добавить анимацию" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "Blend Next Changed" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "Change Blend Time" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "Загрузить анимацию" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "Дублировать анимацию" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to copy!" +msgstr "ОШИБКА: Нет анимации для копирования!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation resource on clipboard!" +msgstr "ОШИБКА: Нет анимации в буфере обмена!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "Вставленная анимация" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "Вставить анимацию" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to edit!" +msgstr "ОШИБКА: Нет анимации для редактирования!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "" +"Воспроизвести выбранную анимацию в обратном направлении с текущей позиции. (A)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "" +"Воспроизвести выбранную анимацию в обратном направлении с конца. (Shift+A)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "Остановить воспроизведение анимации. (S)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "Воспроизвести выбранную анимацию сначала. (Shift+D)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "Воспроизвести выбранную анимацию с текущей позиции. (D)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "Текущий кадр анимации (в секундах)." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "Скорость воспроизведения анимации." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create new animation in player." +msgstr "Создать новую анимацию." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load an animation from disk." +msgstr "Загрузить анимацию с диска." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save the current animation" +msgstr "Сохранить текущую анимацию." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "Показать список анимаций." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "Автовоспроизведение" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Target Blend Times" +msgstr "Редактировать время \"смешивания\"" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "Инструменты анимации" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Copy Animation" +msgstr "Копировать анимацию" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "Создать новую анимацию" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "Название анимации:" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Times:" +msgstr "Время смешивания:" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Next (Auto Queue):" +msgstr "Следующая анимация (автоматический переход):" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Cross-Animation Blend Times" +msgstr "Межанимационный инструмент смешивания" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation" +msgstr "Анимация" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Poly" +msgstr "Create Poly" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "Create Occluder Polygon" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create a new polygon from scratch." +msgstr "Создать новый полигон с нуля." + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Edit existing polygon:" +msgstr "Редактировать существующий полигон:" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "LMB: Move Point." +msgstr "ЛКМ: Передвинуть точку." + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Ctrl+LMB: Split Segment." +msgstr "Ctrl+ЛКМ: Разделить сегмент." + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "RMB: Erase Point." +msgstr "ПКМ: Удалить точку." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "Настроить привязку" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "Отступ сетку:" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid Step:" +msgstr "Шаг сетки:" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "Отступ поворота:" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +msgstr "Шаг поворота:" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Pivot" +msgstr "Переместить точку вращения" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Action" +msgstr "Переместить действие" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit IK Chain" +msgstr "Редактировать цепь ИК" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit CanvasItem" +msgstr "Редактировать CanvasItem" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors" +msgstr "Изменить привязку" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom (%):" +msgstr "Масштаб (%):" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Paste Pose" +msgstr "Вставить позу" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Select Mode (Q)" +msgstr "Режим выделения" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Drag: Rotate" +msgstr "Тащить: Поворот" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Move" +msgstr "Alt+Тащить: Перемещение" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." +msgstr "" +"Нажмите 'v' чтобы изменить точку вращения, 'Shift+v' чтобы перемещать точку " +"вращения." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+RMB: Depth list selection" +msgstr "Alt+ПКМ: Список выбора глубины" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Move Mode (W)" +msgstr "Режим перемещения (W)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode (E)" +msgstr "Режим поворота (E)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "" +"Показывает список всех объектов нажатой позиции,\n" +"так же как и Alt+ПКМ в режиме выделения" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "При клике изменяет точку вращения объекта." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "Режим осмотра" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "Зафиксировать выбранный объект." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "Разблокировать выбранный объект." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Makes sure the object's children are not selectable." +msgstr "Делает потомков объекта невыбираемыми." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "Восстанавливает возможность выбора потомков объекта." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Snap" +msgstr "Использовать привязку" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Show Grid" +msgstr "Показать сетку" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "Использовать привязку вращения" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap Relative" +msgstr "Относительная привязка" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap.." +msgstr "Настроить привязку.." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Pixel Snap" +msgstr "Использовать попиксельную привязку" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Expand to Parent" +msgstr "Растянуть до размера родителей" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Skeleton.." +msgstr "Скелет.." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Bones" +msgstr "Создать кости" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "Очистить кости" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make IK Chain" +msgstr "Создать цепь ИК" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear IK Chain" +msgstr "Очистить цепь ИК" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "Обзор" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom In" +msgstr "Приблизить" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Out" +msgstr "Отдалить" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Reset" +msgstr "Сбросить масштаб" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Set.." +msgstr "Установить масштаб" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "Центрировать на выбранном" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "Кадрировать выбранное" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Anchor" +msgstr "Привязка" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Keys (Ins)" +msgstr "Вставить ключи (Ins)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "Вставить ключ" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "Вставить ключ (существующие треки)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "Копировать позу" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "Очистить позу" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Set a Value" +msgstr "Установить значение" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap (Pixels):" +msgstr "Привязка (пиксели):" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "Рисовать карту тайлов" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "Стирать карту тайлов" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "Заливка" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "Выбрать тайл" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "Выделение" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase Selection" +msgstr "Очистить выделенное" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "Транспонировать" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror X (A)" +msgstr "Зеркально по X (A)" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror Y (S)" +msgstr "Зеркально по Y (S)" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 0 degrees" +msgstr "Поворот на 0 градусов" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 90 degrees" +msgstr "Поворот на 90 градусов" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 180 degrees" +msgstr "Поворот на 180 градусов" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 270 degrees" +msgstr "Поворот на 270 градусов" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "New name:" +msgstr "Новое имя:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "Масштаб:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "Проявление (сек):" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "Исчезновение (сек):" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend" +msgstr "Смешивание" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix" +msgstr "Сочетание" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "Авто перезапуск:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Restart (s):" +msgstr "Перезапуск (сек):" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "Случайность рестарта (с):" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Start!" +msgstr "Запуск!" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "Величина:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend:" +msgstr "Смешивание" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 0:" +msgstr "Смешивание 0:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 1:" +msgstr "Смешивание 1:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "Время X-Fade (сек):" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Current:" +msgstr "Выбранный:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Add Input" +msgstr "Добавить вход" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "Автоматическая очистка" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "Автоматическая установка" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Delete Input" +msgstr "Удалить вход" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Rename" +msgstr "Переименовать" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "Дерево анимации действительно." + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "Дерево анимации не действительно." + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation Node" +msgstr "Animation Node" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "OneShot Node" +msgstr "OneShot Node" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix Node" +msgstr "Mix Node" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "Blend2 Node" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "Blend3 Node" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "Blend4 Node" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "TimeScale Node" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "TimeSeek Node" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Transition Node" +msgstr "Transition Node" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Import Animations.." +msgstr "Импортировать анимации.." + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "Редактировать фильтры нода" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Filters.." +msgstr "Фильтры.." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "Не указан исходный мэш (и нету нода MultiMesh)." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "Не указан исходный мэш (и MultiMesh не содержит мэш)." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "Источник мэша является недействительным (неверный путь)." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "Источник мэша является недействительным (не MeshInstance)." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "Источник мэша является недействительным (не содержит ресурс мэша)." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "Поверхность источника не определена." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "Поверхность источника недопустима (неверный путь)" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "Поверхность источника недопустима (нет геометрии)" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "Поверхность источника недопустима (нет граней)" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Parent has no solid faces to populate." +msgstr "Родитель не имеет твёрдых граней для заполнения." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Couldn't map area." +msgstr "Не удалось отобразить область." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Source Mesh:" +msgstr "Выберите источник мэша:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Target Surface:" +msgstr "Выберите целевую поверхность:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate Surface" +msgstr "Заполнить поверхность" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate MultiMesh" +msgstr "Заполнить мультиМэш" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Target Surface:" +msgstr "Целевая поверхность:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Source Mesh:" +msgstr "Исходный мэш:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "X-Axis" +msgstr "Ось X" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Y-Axis" +msgstr "Ось Y" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Z-Axis" +msgstr "Ось Z" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh Up Axis:" +msgstr "Сетка до оси:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Rotation:" +msgstr "Случайный поворот:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Tilt:" +msgstr "Случайный наклон:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Scale:" +msgstr "Случайный размер:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate" +msgstr "Заполнить" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find.." +msgstr "Найти.." + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find Next" +msgstr "Найти далее" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find Previous" +msgstr "Найти предыдущее" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Replace.." +msgstr "Заменить" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Line.." +msgstr "Перейти к строке.." + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Vertex" +msgstr "Вертекс" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Fragment" +msgstr "Фрагмент" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Lighting" +msgstr "Освещение" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Can't save theme to file:" +msgstr "Невозможно сохранить тему в файл:" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Item" +msgstr "Добавить элемент" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All Items" +msgstr "Добавить все элементы" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All" +msgstr "Добавить все" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Item" +msgstr "Удалить элемент" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add Class Items" +msgstr "Добавить элемент класса" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove Class Items" +msgstr "Удалить элемент класса" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Template" +msgstr "Создать шаблон" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio1" +msgstr "CheckBox Radio1" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio2" +msgstr "CheckBox Radio2" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Item" +msgstr "Элемент" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Check Item" +msgstr "Проверить пункт" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Checked Item" +msgstr "Проверенный пункт" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Has" +msgstr "Имеет" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Many" +msgstr "Много" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Have,Many,Several,Options!" +msgstr "Имеет,Много,Разных,Опций!" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 1" +msgstr "Вкладка 1" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 2" +msgstr "Вкладка 2" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 3" +msgstr "Вкладка " + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Data Type:" +msgstr "Тип информации:" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Icon" +msgstr "Иконка" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Style" +msgstr "Стиль" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font" +msgstr "Шрифт" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Color" +msgstr "Цвет" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "BakedLightInstance does not contain a BakedLight resource." +msgstr "BakedLightInstance не содержит BakedLight ресурс." + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Bake!" +msgstr "Запечь!" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Reset the lightmap octree baking process (start over)." +msgstr "Сброс запекания света (начать сначала)." + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing %d Triangles:" +msgstr "Парсинг %d треугольников:" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Triangle #" +msgstr "Треугольник #" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Light Baker Setup:" +msgstr "Параметры запекания света:" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing Geometry" +msgstr "Парсинг геометрии" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Fixing Lights" +msgstr "Исправление света" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Making BVH" +msgstr "Создание BVH" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Light Octree" +msgstr "Создание октодерева света" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Octree Texture" +msgstr "Создание текстуры октодерева" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Transfer to Lightmaps:" +msgstr "Передача в карты освещения:" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Allocating Texture #" +msgstr "Выделение текстуры #" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Baking Triangle #" +msgstr "Запекание треугольников #" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Post-Processing Texture #" +msgstr "Пост-обработка текстуры #" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "Ортогональность" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "Перспектива" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "Преобразования прерывается." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "Вид преобразования плоскости." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "Преобразование по X" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "Преобразование по Y" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "Преобразование по Z" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling to %s%%." +msgstr "Масштабирование до %s%%" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "Поворот на %s градусов." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "Вид Снизу." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom" +msgstr "Низ" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "Вид сверху." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "Верх" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "Вид сзади." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear" +msgstr "Зад" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "Вид спереди." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front" +msgstr "Перед" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "Вид слева." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left" +msgstr "Лево" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "Вид справа." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right" +msgstr "Право" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "Манипуляция отключена (без вставленного ключа)." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "Ключ анимации вставлен." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view" +msgstr "Совместить с видом" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top (Num7)" +msgstr "Вид сверху (Num 7)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom (Shift+Num7)" +msgstr "Вид снизу (Shift+Num7)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left (Num3)" +msgstr "Вид слева (Num3)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right (Shift+Num3)" +msgstr "Вид справа (Shift+)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front (Num1)" +msgstr "Вид спереди (Num1)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear (Shift+Num1)" +msgstr "Вид сзади (Shift+Num1)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective (Num5)" +msgstr "Перспектива (Num5)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal (Num5)" +msgstr "Ортогонально (Num5)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Environment" +msgstr "Окружение" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "Прослушиватель звука" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "Вещицы" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Selection (F)" +msgstr "Показать выбранный нод (F)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view (Ctrl+Shift+F)" +msgstr "Совместите с видом (Ctrl+Shift+F)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "XForm Dialog" +msgstr "XForm диалоговое окно" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "No scene selected to instance!" +msgstr "Не выбрана сцена!" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Instance at Cursor" +msgstr "Экземпляр на курсор" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Could not instance scene!" +msgstr "Не возможно добавить сцену!" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode (R)" +msgstr "Режим масштабирования (R)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform" +msgstr "Преобразование" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Local Coords" +msgstr "Локальные координаты" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog.." +msgstr "Окно преоброзования" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default Light" +msgstr "Использовать стандартный свет" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default sRGB" +msgstr "Использовать sRGB" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "1 Окно" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports" +msgstr "2 Окна" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "2 Окна (другой)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports" +msgstr "3 Окна" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "3 Окна (другой)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "4 Viewports" +msgstr "4 Окна" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "Режим нормалей" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "Режим сетки" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "Режим просвечивания" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Shadeless" +msgstr "Режим без теней" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "Отображать начало координат" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "Отображать сетку" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "Параметры привязки" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "Привязка преобразований:" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "Привязка поворота (градусы):" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "Привязка масштабирования (%):" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "Настройки окна просмотра" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Default Light Normal:" +msgstr "Образец стандартного освещения:" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Ambient Light Color:" +msgstr "Цвет окружающего света:" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "FOV перспективы (градусы):" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "Ближний Z отображения:" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "Дальний Z отображения:" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "Изменение преобразования" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "Преоброзования:" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "Поворот (градусы):" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "Масштаб (соотношение)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "Тип преоброзования" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "До" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "После" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme" +msgstr "Ошибка во время сохранения темы" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error saving" +msgstr "Ошибка сохранения" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing theme" +msgstr "Ошибка импортирования темы" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing" +msgstr "Ошибка импортирования" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Import Theme" +msgstr "Импортировать тему" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As.." +msgstr "Сохранить тему как.." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "Сохранить всё" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Prev" +msgstr "История - назад" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "История - вперёд" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload Theme" +msgstr "Перезагрузить тему" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme" +msgstr "Сохранить тему" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As" +msgstr "Сохранить тему как" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Left" +msgstr "Убрать отступ слева" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Right" +msgstr "Добавить отступ" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Comment" +msgstr "Вкл/Выкл комментарий" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Clone Down" +msgstr "Копировать вниз" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Complete Symbol" +msgstr "Список автозавершения" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Trim Trailing Whitespace" +msgstr "Удаление пробелов в конце строк" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Auto Indent" +msgstr "Автоотступ" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Function.." +msgstr "Перейти к функции.." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debug" +msgstr "Отладка" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Breakpoint" +msgstr "Точка останова" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Remove All Breakpoints" +msgstr "Удалить все точки останова" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Next Breakpoint" +msgstr "Перейти к следующей точке останова" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Previous Breakpoint" +msgstr "Перейти к предыдущей точке останова" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Keep Debugger Open" +msgstr "Оставить отладчик открытым" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Window" +msgstr "Окно" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Left" +msgstr "Двигать влево" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Right" +msgstr "Двигать вправо" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Help" +msgstr "Справка" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Contextual" +msgstr "Контекстная" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Tutorials" +msgstr "Уроки" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Open https://godotengine.org at tutorials section." +msgstr "Открыть https://godotengine.org с разделом уроков." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Classes" +msgstr "Классы" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the class hierarchy." +msgstr "Поиск в классовой иерархии." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "Поиск внутри классов" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the reference documentation." +msgstr "Поиск справочной документации." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "Перейти к предыдущему редактируемому документу." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "Перейти к следующему редактируемому документу." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "Создать скрипт" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" +"Следующие файлы новее на диске.\n" +"Какие меры должны быть приняты?:" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload" +msgstr "Перезагрузить" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Resave" +msgstr "Пересохранить" + +#: tools/editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox Preview:" +msgstr "StyleBox предпросмотр:" + +#: tools/editor/plugins/sample_editor_plugin.cpp +msgid "Length:" +msgstr "Длинна:" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Constant" +msgstr "Change Scalar Constant" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Constant" +msgstr "Change Vec Constant" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Constant" +msgstr "Change RGB Constant" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Operator" +msgstr "Change Scalar Operator" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Operator" +msgstr "Change Vec Operator" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Scalar Operator" +msgstr "Change Vec Scalar Operator" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Operator" +msgstr "Change RGB Operator" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Toggle Rot Only" +msgstr "Toggle Rot Only" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Function" +msgstr "Change Scalar Function" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Function" +msgstr "Change Vec Function" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Uniform" +msgstr "Change Scalar Uniform" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Uniform" +msgstr "Change Vec Uniform" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Uniform" +msgstr "Change RGB Uniform" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Default Value" +msgstr "Change Default Value" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change XForm Uniform" +msgstr "Change XForm Uniform" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Texture Uniform" +msgstr "Change Texture Uniform" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Cubemap Uniform" +msgstr "Change Cubemap Uniform" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Comment" +msgstr "Change Comment" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Color Ramp" +msgstr "Add/Remove to Color Ramp" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Modify Color Ramp" +msgstr "Modify Color Ramp" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Curve Map" +msgstr "Add/Remove to Curve Map" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Curve Map" +msgstr "Modify Curve Map" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Input Name" +msgstr "Change Input Name" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Connect Graph Nodes" +msgstr "Connect Graph Nodes" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Disconnect Graph Nodes" +msgstr "Disconnect Graph Nodes" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Remove Shader Graph Node" +msgstr "Remove Shader Graph Node" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Move Shader Graph Node" +msgstr "Move Shader Graph Node" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Duplicate Graph Node(s)" +msgstr "Duplicate Graph Node(s)" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Delete Shader Graph Node(s)" +msgstr "Delete Shader Graph Node(s)" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Cyclic Connection Link" +msgstr "Ошибка: Циклическая подключение" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Missing Input Connections" +msgstr "Ошибка: Отсутствует входное подключение" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add Shader Graph Node" +msgstr "Add Shader Graph Node" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "Мэш пустой!" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "Create Static Trimesh Body" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Convex Body" +msgstr "Create Static Convex Body" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "Это не работает на корне сцены!" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Shape" +msgstr "Create Trimesh Shape" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Shape" +msgstr "Create Convex Shape" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "Create Navigation Mesh" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "В MeshInstance нет сетки!" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "Невозможно создать контур!" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "Создать контур" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "Создать вогнутый Static Body" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Static Body" +msgstr "Создать выпуклый Static Body" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "Создать вогнутый Collision Sibling" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Collision Sibling" +msgstr "Создать выпуклый Collision Sibling" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh.." +msgstr "Создать мэш обводки.." + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "Создать мэш обводки" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "Размер обводки:" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "Создать UV карту" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "Преобразовать UV карту" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "Polygon 2D UV редактор" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Point" +msgstr "Передвинуть точку" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "Ctrl: Поворот" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "Shift: Передвинуть все" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "Shift+Ctrl: Масштаб" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "Передвинуть полигон" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "Повернуть полигон" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "Масштабировать полигон" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon->UV" +msgstr "Полигон -> UV" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV->Polygon" +msgstr "UV -> Полигон" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "Очистить UV" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Snap" +msgstr "Привязка" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Enable Snap" +msgstr "Активировать привязку" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid" +msgstr "Сетка" + +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Set region_rect" +msgstr "Установить прямоугольник региона" + +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Sprite Region Editor" +msgstr "Редактор Области Спрайта" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "ОШИБКА: Невозможно загрузить ресурс!" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "Добавить ресурс" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "Переименовать ресурс" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Resource" +msgstr "Удалить ресурс" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "Нет ресурса в буфере обмена!" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Load Resource" +msgstr "Загрузить ресурс" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "ОШИБКА: Невозможно загрузить кадр!" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "Добавить кадр" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "Буфер обмена чист или не содержит текстуру!" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "Вставить кадр" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "Добавить пустоту" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation Loop" +msgstr "Изменить цикличность анимации" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "Изменить FPS анимации" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "(пусто)" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations" +msgstr "Анимации" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed (FPS):" +msgstr "Скорость (FPS):" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Loop" +msgstr "Зациклить" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames" +msgstr "Кадры анимации" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (Before)" +msgstr "Вставить пустоту (До)" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (After)" +msgstr "Вставить пустоту (После)" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Up" +msgstr "Вверх" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Down" +msgstr "Вниз" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "Создать Navigation Polygon" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Remove Poly And Point" +msgstr "Удалить полигон и точку" + +#: tools/editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "Установить обработчик" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "Ошибка при загрузке изображения:" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image.." +msgstr "Никаких пикселей с прозрачностью > 128 в изображении.." + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Set Emission Mask" +msgstr "Set Emission Mask" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "Clear Emission Mask" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "Load Emission Mask" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "Количество создаваемых точек:" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Creating Mesh Library" +msgstr "Создание библиотеки мэшей" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Thumbnail.." +msgstr "Миниатюра.." + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "Удалить элемент %d?" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Scene" +msgstr "Импортировать сцену" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "Удалить выбранный элемент" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import from Scene" +msgstr "Импортировать из сцены" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Update from Scene" +msgstr "Обновить из сцены" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry." +msgstr "Нод не содержит геометрии." + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry (faces)." +msgstr "Нод не содержит геометрии (грани)." + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Faces contain no area!" +msgstr "Грани не содержат зоны!" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "No faces!" +msgstr "Нет граней!" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Generate AABB" +msgstr "Сгенерировать AABB" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Mesh" +msgstr "Создать излучатель из мэша" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Node" +msgstr "Создать излучатель из нода" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Clear Emitter" +msgstr "Очистить излучатель" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter" +msgstr "Создать излучатель" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Positions:" +msgstr "Количество выбросов:" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Fill:" +msgstr "Заполнение излучателя:" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Surface" +msgstr "Поверхность" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "Объём" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "Элемент %d" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "Элементы" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "Редактор списка элементов" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Add/Remove Color Ramp Point" +msgstr "Добавить/Удалить точку Color Ramp" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "Точка Кривой #" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Pos" +msgstr "Установить позицию точки кривой" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Pos" +msgstr "Установить позицию входа кривой" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Pos" +msgstr "Установить позицию выхода кривой" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "Разделить путь" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "Добавить точку к кривой" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "Удалить точку пути" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Points" +msgstr "Выбрать точки" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "Shift+Тащить: Выбрать точки управления" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "ЛКМ: Добавить точку" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "ПКМ: Удалить точку" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "Добавить точку (в пустом пространстрве)" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "Разделить сегмент (в кривой)" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Delete Point" +msgstr "Удалить точку" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Close Curve" +msgstr "Сомкнуть кривую" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Could not find tile:" +msgstr "Невозможно найти тайл:" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Item name or ID:" +msgstr "ID или имя элемента" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene?" +msgstr "Создать из сцены?" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "Слияние из сцены?" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "Создать из сцены" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "Слияние из сцены" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "Remove Point from Curve" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "Move Point in Curve" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "Move In-Control in Curve" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "Move Out-Control in Curve" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "Выбор точек управления (Shift+Drag)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Uncompressed" +msgstr "Несжатый" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossless (PNG)" +msgstr "Сжатие без потери качества (PNG)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossy (WebP)" +msgstr "Сжатие с потерями (WebP)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress (VRAM)" +msgstr "Сжатие (VRAM)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Format" +msgstr "Формат текстуры" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Compression Quality (WebP):" +msgstr "Качество сжатия текстур (WebP):" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Options" +msgstr "Параметры текстуры" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Please specify some files!" +msgstr "Пожалуйста, укажите некоторые файлы!" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path is empty." +msgstr "Конечный путь пуст." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path must be a complete resource path." +msgstr "Конечный путь должен быть полным путём к ресурсу." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path must exist." +msgstr "Конечный путь должен существовать." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "At least one file needed for Atlas." +msgstr "Для атласа нужен хотя бы 1 файл." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Error importing:" +msgstr "Ошибка импортирования:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Only one file is required for large texture." +msgstr "Только один файл необходим для большой текстуры." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Max Texture Size:" +msgstr "Максимальный размер текстуры:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for Atlas (2D)" +msgstr "Импортировать текстуры для атласа (2D)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cell Size:" +msgstr "Размер ячейки:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Large Texture" +msgstr "Большая текстура" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Textures (2D)" +msgstr "Импорт больших текстур (2D)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture" +msgstr "Исходная текстура" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Base Atlas Texture" +msgstr "Базовая текстура атласа" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s)" +msgstr "Исходная текстура(ы)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 2D" +msgstr "Импорт текстур для 2D" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 3D" +msgstr "Импорт текстур для 3D" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures" +msgstr "Импорт текстур" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "2D Texture" +msgstr "2D текстура" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "3D Texture" +msgstr "3D текстура" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Atlas Texture" +msgstr "Текстура атласа" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "" +"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " +"the project." +msgstr "" +"ВНИМАНИЕ: Импортирование 2D текстур не обязательно. Просто скопируйте png/jpg " +"файлы в папку проекта." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s):" +msgstr "Исходные текстура(ы):" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Crop empty space." +msgstr "Обрезать пустое пространство." + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Target Path:" +msgstr "Целевой путь:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Accept" +msgstr "Принять" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture" +msgstr "Текстура" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Texture" +msgstr "Импорт большой текстуры" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Load Source Image" +msgstr "Загрузка исходного изображения" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Slicing" +msgstr "Нарезка" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Inserting" +msgstr "Вставка" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Saving" +msgstr "Сохранение" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save large texture:" +msgstr "Невозможно сохранить большую текстуру:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Build Atlas For:" +msgstr "Построение атласа для:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Loading Image:" +msgstr "Загрузка изображения:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't load image:" +msgstr "Невозможно загрузить изображение:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Converting Images" +msgstr "Преобразование изображений" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cropping Images" +msgstr "Обрезка изображений" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Blitting Images" +msgstr "Блитирование Изображений" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save atlas image:" +msgstr "Невозможно сохранить изображение атласа:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save converted texture:" +msgstr "Невозможно сохранить конвертированную текстуру:" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid source!" +msgstr "Неверный источник!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid translation source!" +msgstr "Неверный источник перевода!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Column" +msgstr "Колонка" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No items to import!" +msgstr "Нет элементов для импорта!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No target path!" +msgstr "Нет конечного пути!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translations" +msgstr "Импорт переводов" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Couldn't import!" +msgstr "Не удалось импортировать!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translation" +msgstr "Импортирование перевода" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Source CSV:" +msgstr "Исходный CSV:" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Ignore First Row" +msgstr "Игнорировать первую строку" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Compress" +msgstr "Сжимать" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Add to Project (engine.cfg)" +msgstr "Добавить в проект (engine.cfg)" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Languages:" +msgstr "Импортировать языки:" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Translation" +msgstr "Перевод" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "New Clip" +msgstr "Новый клип" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Animation Options" +msgstr "Параметры анимации" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Flags" +msgstr "Флаги" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Bake FPS:" +msgstr "FPS:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Optimizer" +msgstr "Оптимизатор" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Linear Error" +msgstr "Макс. линейная погрешность" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angular Error" +msgstr "Макс. угловая погрешность" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angle" +msgstr "Макс. угол" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Clips" +msgstr "Клипы" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Start(s)" +msgstr "Нач(с.)" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "End(s)" +msgstr "Кон(с.)" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Filters" +msgstr "Фильтры" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source path is empty." +msgstr "Путь к источнику пуст." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script." +msgstr "Не могу загрузить скрипт пост-процесса." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import." +msgstr "Поврежденный/сломанный сценарий для пост-импорта." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error importing scene." +msgstr "Ошибка импортирования сцены." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import 3D Scene" +msgstr "Импорт 3D сцены" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source Scene:" +msgstr "Исходная сцена:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Same as Target Scene" +msgstr "Та же, что и у сцены" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Shared" +msgstr "Раздельно" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Target Texture Folder:" +msgstr "Целевая папка текстуры:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Options:" +msgstr "Параметры:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Post-Process Script:" +msgstr "Скрипт пост-процесса:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Custom Root Node Type:" +msgstr "Настраиваемый тип корневого нода:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Auto" +msgstr "Авто" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "The Following Files are Missing:" +msgstr "Отсутствуют следующие файлы:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Anyway" +msgstr "Импорт в любом случае" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import & Open" +msgstr "Импортировать & Открыть" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Edited scene has not been saved, open imported scene anyway?" +msgstr "" +"Редактируемая сцена не была сохранена, открыть импортированную сцену в любом " +"случае?" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Importing Scene.." +msgstr "Импортирование сцены.." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Running Custom Script.." +msgstr "Запуск пользовательского скрипта.." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script:" +msgstr "Не могу загрузить скрипт для пост-импорта:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import:" +msgstr "Повреждённый/сломанный скрипт для пост-импорта:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error running post-import script:" +msgstr "Ошибка запуска пост-импорт скрипта:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Image:" +msgstr "Импорт изображения:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Can't import a file over itself:" +msgstr "Невозможно импортировать файл поверх негоже:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't localize path: %s (already local)" +msgstr "Невозможно локализовать путь: %s (уже локальный)" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Saving.." +msgstr "Сохранение.." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "3D Scene Animation" +msgstr "Анимация 3D сцены" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No source font file!" +msgstr "Нет исходного файл шрифта!" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No target font resource!" +msgstr "Нет целевого ресурса шрифта!" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Can't load/process source font." +msgstr "Не удалось загрузить/исполнить исходный шрифт." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Couldn't save font." +msgstr "Невозможно сохранить шрифт." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font:" +msgstr "Исходный шрифт:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font Size:" +msgstr "Исходный размер шрифта:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Dest Resource:" +msgstr "Ресурс назначения:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "The quick brown fox jumps over the lazy dog." +msgstr "" +"Съешь ещё этих мягких французских булок да выпей чаю. \n" +"The quick brown fox jumps over the lazy dog.\n" +"0123456789`!@#$%^&*()_+-=\\/" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Test:" +msgstr "Проверка:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font Import" +msgstr "Импортирование шрифта" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"This file is already a Godot font file, please supply a BMFont type file " +"instead." +msgstr "" +"Это уже файл шрифта Godot, пожалуйста используйте BitMapFont за место него." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Failed opening as BMFont file." +msgstr "Ошибка открытия BitMapFont файла." + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font custom source." +msgstr "Недопустимый шрифт пользовательского источника." + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "No samples to import!" +msgstr "Нет сэмплов для импорта!" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Save path is empty!" +msgstr "Путь сохранения пуст!" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Import Audio Samples" +msgstr "Импорт аудио сэмплов" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Source Sample(s):" +msgstr "Исходный сэмпл (ы)" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Audio Sample" +msgstr "Аудио сэмпл" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "No meshes to import!" +msgstr "Нет мэша для импорта!" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Single Mesh Import" +msgstr "Импорт одиночного мэша" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Source Mesh(es):" +msgstr "Исходный мэш(ы)" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Mesh" +msgstr "Мэш" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Surface %d" +msgstr "Поверхностей %d" + +#~ msgid "Overwrite Existing Scene" +#~ msgstr "Перезаписать существующую сцену" + +#~ msgid "Overwrite Existing, Keep Materials" +#~ msgstr "Перезаписать существующую сцену с сохранением материалов" + +#~ msgid "Keep Existing, Merge with New" +#~ msgstr "Сохранить существующую сцену и объединить с новой" + +#~ msgid "Keep Existing, Ignore New" +#~ msgstr "Сохранить существующую и игнорировать новую" + +#~ msgid "This Time:" +#~ msgstr "В этот раз:" + +#~ msgid "Next Time:" +#~ msgstr "В следующий раз:" diff --git a/tools/translations/tools.pot b/tools/translations/tools.pot index 41aba64129..ba9cf6e9e4 100644 --- a/tools/translations/tools.pot +++ b/tools/translations/tools.pot @@ -61,6 +61,26 @@ msgid "" "only provides navigation data." msgstr "" +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error initializing FreeType." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Unknown font format." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error loading font." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font size." +msgstr "" + #: scene/2d/particles_2d.cpp msgid "Path property must point to a valid Particles2D node to work." msgstr "" @@ -166,6 +186,22 @@ msgid "" "upon running." msgstr "" +#: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Cancel" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "OK" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "" + #: scene/gui/text_edit.cpp scene/gui/line_edit.cpp #: tools/editor/plugins/shader_editor_plugin.cpp #: tools/editor/plugins/script_editor_plugin.cpp @@ -217,10 +253,6 @@ msgid "" msgstr "" #: tools/editor/project_export.cpp -#: tools/editor/plugins/canvas_item_editor_plugin.cpp -#: tools/editor/plugins/shader_editor_plugin.cpp -#: tools/editor/plugins/script_editor_plugin.cpp -#: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Edit Script Options" msgstr "" @@ -229,7 +261,6 @@ msgid "Please export outside the project folder!" msgstr "" #: tools/editor/project_export.cpp -#: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Error exporting project!" msgstr "" @@ -249,7 +280,7 @@ msgstr "" msgid "Change Image Group" msgstr "" -#: tools/editor/project_export.cpp tools/editor/groups_editor.cpp +#: tools/editor/project_export.cpp msgid "Group name can't be empty!" msgstr "" @@ -261,14 +292,11 @@ msgstr "" msgid "Group name already exists!" msgstr "" -#: tools/editor/project_export.cpp tools/editor/project_settings.cpp -#: tools/editor/groups_editor.cpp tools/editor/plugins/theme_editor_plugin.cpp -#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "Add Image Group" msgstr "" -#: tools/editor/project_export.cpp tools/editor/scenes_dock.cpp -#: tools/editor/editor_node.cpp tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "Delete Image Group" msgstr "" @@ -288,7 +316,7 @@ msgstr "" msgid "Target" msgstr "" -#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +#: tools/editor/project_export.cpp msgid "Export to Platform" msgstr "" @@ -409,7 +437,7 @@ msgstr "" msgid "Shrink By:" msgstr "" -#: tools/editor/project_export.cpp tools/editor/plugins/camera_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "Preview Atlas" msgstr "" @@ -425,7 +453,7 @@ msgstr "" msgid "Select None" msgstr "" -#: tools/editor/project_export.cpp +#: tools/editor/project_export.cpp tools/editor/groups_editor.cpp msgid "Group" msgstr "" @@ -458,6 +486,10 @@ msgid "Trailing Silence:" msgstr "" #: tools/editor/project_export.cpp +msgid "Script" +msgstr "" + +#: tools/editor/project_export.cpp msgid "Script Export Mode:" msgstr "" @@ -505,7 +537,7 @@ msgstr "" msgid "Export Preset:" msgstr "" -#: tools/editor/project_export.cpp +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp msgid "Export" msgstr "" @@ -517,6 +549,34 @@ msgstr "" msgid "Line Number:" msgstr "" +#: tools/editor/code_editor.cpp +msgid "No Matches" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d Ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace All" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Match Case" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Whole Words" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Selection Only" +msgstr "" + #: tools/editor/code_editor.cpp tools/editor/project_settings.cpp #: tools/editor/addon_editor_plugin.cpp tools/editor/editor_help.cpp #: tools/editor/plugins/shader_editor_plugin.cpp @@ -529,10 +589,6 @@ msgid "Find" msgstr "" #: tools/editor/code_editor.cpp -msgid "Replace" -msgstr "" - -#: tools/editor/code_editor.cpp msgid "Next" msgstr "" @@ -549,10 +605,6 @@ msgid "Replace By" msgstr "" #: tools/editor/code_editor.cpp -msgid "Whole Words" -msgstr "" - -#: tools/editor/code_editor.cpp msgid "Case Sensitive" msgstr "" @@ -565,10 +617,6 @@ msgid "Prompt On Replace" msgstr "" #: tools/editor/code_editor.cpp -msgid "Selection Only" -msgstr "" - -#: tools/editor/code_editor.cpp msgid "Skip" msgstr "" @@ -592,7 +640,9 @@ msgstr "" msgid "Binds (Extra Params):" msgstr "" -#: tools/editor/connections_dialog.cpp +#: tools/editor/connections_dialog.cpp tools/editor/project_settings.cpp +#: tools/editor/groups_editor.cpp tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp msgid "Add" msgstr "" @@ -645,12 +695,7 @@ msgstr "" msgid "Connect '%s' to '%s'" msgstr "" -#: tools/editor/connections_dialog.cpp tools/editor/animation_editor.cpp -#: tools/editor/project_manager.cpp tools/editor/create_dialog.cpp -#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp -#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp -#: tools/editor/plugins/particles_editor_plugin.cpp -#: tools/editor/plugins/mesh_editor_plugin.cpp +#: tools/editor/connections_dialog.cpp msgid "Create Subscription" msgstr "" @@ -679,14 +724,7 @@ msgstr "" msgid "Scene Path:" msgstr "" -#: tools/editor/editor_sub_scene.cpp tools/editor/editor_node.cpp -#: tools/editor/project_manager.cpp -#: tools/editor/io_plugins/editor_texture_import_plugin.cpp -#: tools/editor/io_plugins/editor_translation_import_plugin.cpp -#: tools/editor/io_plugins/editor_scene_import_plugin.cpp -#: tools/editor/io_plugins/editor_font_import_plugin.cpp -#: tools/editor/io_plugins/editor_sample_import_plugin.cpp -#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/editor_sub_scene.cpp msgid "Import From Node:" msgstr "" @@ -723,10 +761,8 @@ msgid "Create Folder" msgstr "" #: tools/editor/editor_dir_dialog.cpp tools/editor/editor_plugin_settings.cpp -#: tools/editor/editor_file_dialog.cpp tools/editor/project_manager.cpp -#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/editor_file_dialog.cpp #: tools/editor/plugins/theme_editor_plugin.cpp -#: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Name:" msgstr "" @@ -771,6 +807,15 @@ msgid "Dependencies" msgstr "" #: tools/editor/dependency_editor.cpp +msgid "Resource" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/project_settings.cpp +#: tools/editor/project_manager.cpp +msgid "Path" +msgstr "" + +#: tools/editor/dependency_editor.cpp msgid "Dependencies:" msgstr "" @@ -791,6 +836,13 @@ msgid "Owners Of:" msgstr "" #: tools/editor/dependency_editor.cpp +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp msgid "Remove selected files from the project? (no undo)" msgstr "" @@ -802,9 +854,7 @@ msgstr "" msgid "Scene failed to load due to missing dependencies:" msgstr "" -#: tools/editor/dependency_editor.cpp tools/editor/scenes_dock.cpp -#: tools/editor/editor_file_dialog.cpp tools/editor/editor_node.cpp -#: tools/editor/editor_help.cpp tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/dependency_editor.cpp msgid "Open Anyway" msgstr "" @@ -840,7 +890,8 @@ msgstr "" msgid "Delete selected files?" msgstr "" -#: tools/editor/dependency_editor.cpp +#: tools/editor/dependency_editor.cpp tools/editor/scenes_dock.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/item_list_editor_plugin.cpp msgid "Delete" msgstr "" @@ -976,7 +1027,12 @@ msgstr "" msgid "Create Node Script" msgstr "" -#: tools/editor/script_create_dialog.cpp +#: tools/editor/script_create_dialog.cpp tools/editor/animation_editor.cpp +#: tools/editor/project_manager.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/particles_editor_plugin.cpp msgid "Create" msgstr "" @@ -1289,6 +1345,7 @@ msgid "Warning" msgstr "" #: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Error" msgstr "" @@ -1296,7 +1353,7 @@ msgstr "" msgid "Description:" msgstr "" -#: tools/editor/script_editor_debugger.cpp +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_profiler.cpp msgid "Time:" msgstr "" @@ -1374,6 +1431,22 @@ msgid "Stack Trace (if applicable):" msgstr "" #: tools/editor/script_editor_debugger.cpp +msgid "Remote Inspector" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Scene Tree:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Object Properties: " +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Profiler" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp msgid "Monitor" msgstr "" @@ -1382,6 +1455,10 @@ msgid "Value" msgstr "" #: tools/editor/script_editor_debugger.cpp +msgid "Monitors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp msgid "List of Video Memory Usage by Resource:" msgstr "" @@ -1410,8 +1487,8 @@ msgstr "" msgid "Usage" msgstr "" -#: tools/editor/script_editor_debugger.cpp tools/editor/scenes_dock.cpp -msgid "Info" +#: tools/editor/script_editor_debugger.cpp +msgid "Misc" msgstr "" #: tools/editor/script_editor_debugger.cpp @@ -1430,10 +1507,6 @@ msgstr "" msgid "Set From Tree" msgstr "" -#: tools/editor/script_editor_debugger.cpp -msgid "Scene Tree:" -msgstr "" - #: tools/editor/import_settings.cpp msgid "Imported Resources" msgstr "" @@ -1468,6 +1541,22 @@ msgid "Scene Run Settings" msgstr "" #: tools/editor/project_settings.cpp +msgid "Key " +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Axis" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button" +msgstr "" + +#: tools/editor/project_settings.cpp msgid "Invalid action (anything goes but '/' or ':')." msgstr "" @@ -1600,7 +1689,6 @@ msgid "Error saving settings." msgstr "" #: tools/editor/project_settings.cpp -#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Settings saved OK." msgstr "" @@ -1752,7 +1840,9 @@ msgstr "" msgid "List:" msgstr "" -#: tools/editor/project_settings.cpp +#: tools/editor/project_settings.cpp tools/editor/project_manager.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Name" msgstr "" @@ -1818,12 +1908,54 @@ msgstr "" msgid "Select a Node" msgstr "" +#: tools/editor/editor_profiler.cpp +msgid "Stop Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Start Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Measure:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Fixed Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Inclusive" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Self" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "" + #: tools/editor/quick_open.cpp tools/editor/editor_help.cpp #: tools/editor/create_dialog.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Matches:" msgstr "" -#: tools/editor/quick_open.cpp +#: tools/editor/quick_open.cpp tools/editor/scenes_dock.cpp +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_node.cpp +#: tools/editor/editor_help.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Open" msgstr "" @@ -1835,13 +1967,11 @@ msgstr "" msgid "Current scene must be saved to re-import." msgstr "" -#: tools/editor/editor_reimport_dialog.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/animation_player_editor_plugin.cpp -#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/editor_reimport_dialog.cpp msgid "Save & Re-Import" msgstr "" -#: tools/editor/editor_reimport_dialog.cpp +#: tools/editor/editor_reimport_dialog.cpp tools/editor/editor_node.cpp msgid "Re-Importing" msgstr "" @@ -1931,14 +2061,30 @@ msgstr "" msgid "Keep Global Transform" msgstr "" -#: tools/editor/reparent_dialog.cpp +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp msgid "Reparent" msgstr "" +#: tools/editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "" + #: tools/editor/editor_plugin_settings.cpp tools/editor/editor_node.cpp msgid "Update" msgstr "" +#: tools/editor/editor_plugin_settings.cpp +msgid "Version:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Author:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "" + #: tools/editor/scenes_dock.cpp tools/editor/editor_file_dialog.cpp msgid "Favorites:" msgstr "" @@ -1975,7 +2121,7 @@ msgstr "" msgid "Edit Dependencies.." msgstr "" -#: tools/editor/scenes_dock.cpp tools/editor/plugins/spatial_editor_plugin.cpp +#: tools/editor/scenes_dock.cpp msgid "View Owners.." msgstr "" @@ -1988,27 +2134,27 @@ msgid "Move To.." msgstr "" #: tools/editor/scenes_dock.cpp -msgid "Show In File Manager" +msgid "Info" msgstr "" #: tools/editor/scenes_dock.cpp -msgid "Previous Directory" +msgid "Show In File Manager" msgstr "" -#: tools/editor/scenes_dock.cpp -msgid "Next Directory" +#: tools/editor/scenes_dock.cpp tools/editor/editor_node.cpp +msgid "Re-Import.." msgstr "" #: tools/editor/scenes_dock.cpp -msgid "Re-Scan Filesystem" +msgid "Previous Directory" msgstr "" #: tools/editor/scenes_dock.cpp -msgid "Move Favorite Up" +msgid "Next Directory" msgstr "" #: tools/editor/scenes_dock.cpp -msgid "Move Favorite Down" +msgid "Re-Scan Filesystem" msgstr "" #: tools/editor/scenes_dock.cpp @@ -2067,7 +2213,9 @@ msgstr "" msgid "All Files (*)" msgstr "" -#: tools/editor/editor_file_dialog.cpp +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp msgid "Save" msgstr "" @@ -2192,7 +2340,14 @@ msgstr "" msgid "Sections:" msgstr "" -#: tools/editor/addon_editor_plugin.cpp +#: tools/editor/addon_editor_plugin.cpp tools/editor/editor_node.cpp +#: tools/editor/project_manager.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp msgid "Import" msgstr "" @@ -2217,11 +2372,11 @@ msgid "Assets ZIP File" msgstr "" #: tools/editor/editor_node.cpp -msgid "Node From Scene" +msgid "Importing:" msgstr "" #: tools/editor/editor_node.cpp -msgid "Re-Import.." +msgid "Node From Scene" msgstr "" #: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp @@ -2286,10 +2441,6 @@ msgid "Loading Export Templates" msgstr "" #: tools/editor/editor_node.cpp -msgid "Importing:" -msgstr "" - -#: tools/editor/editor_node.cpp msgid "Error trying to save layout!" msgstr "" @@ -2418,6 +2569,12 @@ msgstr "" msgid "Quick Run Scene.." msgstr "" +#: tools/editor/editor_node.cpp +msgid "" +"Open Project Manager? \n" +"(Unsaved changes will be lost)" +msgstr "" + #: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp msgid "Ugh" msgstr "" @@ -2457,6 +2614,7 @@ msgid "%d more file(s) or folder(s)" msgstr "" #: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Scene" msgstr "" @@ -2558,6 +2716,10 @@ msgid "Play the project (F5)." msgstr "" #: tools/editor/editor_node.cpp +msgid "Pause the scene" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Stop the scene (F8)." msgstr "" @@ -2597,7 +2759,7 @@ msgstr "" msgid "Visible Navigation" msgstr "" -#: tools/editor/editor_node.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp msgid "Settings" msgstr "" @@ -2864,6 +3026,10 @@ msgid "Recent Projects:" msgstr "" #: tools/editor/project_manager.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Edit" msgstr "" @@ -3026,10 +3192,15 @@ msgid "Move Down" msgstr "" #: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Duplicate" msgstr "" #: tools/editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp msgid "Save Branch as Scene" msgstr "" @@ -3084,26 +3255,23 @@ msgid "Delete Sample" msgstr "" #: tools/editor/plugins/sample_library_editor_plugin.cpp -#: tools/editor/plugins/sample_editor_plugin.cpp msgid "16 Bits" msgstr "" #: tools/editor/plugins/sample_library_editor_plugin.cpp -#: tools/editor/plugins/sample_editor_plugin.cpp msgid "8 Bits" msgstr "" #: tools/editor/plugins/sample_library_editor_plugin.cpp -#: tools/editor/plugins/sample_editor_plugin.cpp msgid "Stereo" msgstr "" #: tools/editor/plugins/sample_library_editor_plugin.cpp -#: tools/editor/plugins/sample_editor_plugin.cpp msgid "Mono" msgstr "" #: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/camera_editor_plugin.cpp msgid "Preview" msgstr "" @@ -3112,9 +3280,6 @@ msgid "Pitch" msgstr "" #: tools/editor/plugins/collision_polygon_editor_plugin.cpp -#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp -#: tools/editor/plugins/polygon_2d_editor_plugin.cpp -#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Create Poly3D" msgstr "" @@ -3291,7 +3456,14 @@ msgstr "" msgid "Cross-Animation Blend Times" msgstr "" +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation" +msgstr "" + #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Create Poly" msgstr "" @@ -3453,7 +3625,6 @@ msgid "Use Rotation Snap" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#: tools/editor/plugins/sprite_region_editor_plugin.cpp msgid "Snap Relative" msgstr "" @@ -3491,6 +3662,7 @@ msgid "Clear IK Chain" msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "View" msgstr "" @@ -3856,6 +4028,11 @@ msgstr "" #: tools/editor/plugins/shader_editor_plugin.cpp #: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find Previous" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp msgid "Replace.." msgstr "" @@ -3968,6 +4145,7 @@ msgid "Style" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Font" msgstr "" @@ -4204,6 +4382,10 @@ msgid "Scale Mode (R)" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Local Coords" msgstr "" @@ -4220,6 +4402,30 @@ msgid "Use Default sRGB" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "4 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" msgstr "" @@ -4312,6 +4518,30 @@ msgid "Post" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error saving" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Import Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp msgid "Save All" msgstr "" @@ -4324,6 +4554,18 @@ msgid "History Next" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp msgid "Indent Left" msgstr "" @@ -4364,6 +4606,18 @@ msgid "Toggle Breakpoint" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp +msgid "Remove All Breakpoints" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Next Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Previous Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp msgid "Keep Debugger Open" msgstr "" @@ -4445,10 +4699,6 @@ msgstr "" msgid "Length:" msgstr "" -#: tools/editor/plugins/sample_editor_plugin.cpp -msgid "%d frames" -msgstr "" - #: tools/editor/plugins/shader_graph_editor_plugin.cpp msgid "Change Scalar Constant" msgstr "" @@ -4578,6 +4828,74 @@ msgstr "" msgid "Add Shader Graph Node" msgstr "" +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Convex Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh.." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "" + #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create UV Map" msgstr "" @@ -4631,6 +4949,7 @@ msgid "Clear UV" msgstr "" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp msgid "Snap" msgstr "" @@ -4640,6 +4959,7 @@ msgid "Enable Snap" msgstr "" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp msgid "Grid" msgstr "" @@ -4944,74 +5264,6 @@ msgstr "" msgid "Close Curve" msgstr "" -#: tools/editor/plugins/mesh_editor_plugin.cpp -msgid "Mesh is empty!" -msgstr "" - -#: tools/editor/plugins/mesh_editor_plugin.cpp -msgid "Create Static Trimesh Body" -msgstr "" - -#: tools/editor/plugins/mesh_editor_plugin.cpp -msgid "Create Static Convex Body" -msgstr "" - -#: tools/editor/plugins/mesh_editor_plugin.cpp -msgid "This doesn't work on scene root!" -msgstr "" - -#: tools/editor/plugins/mesh_editor_plugin.cpp -msgid "Create Trimesh Shape" -msgstr "" - -#: tools/editor/plugins/mesh_editor_plugin.cpp -msgid "Create Convex Shape" -msgstr "" - -#: tools/editor/plugins/mesh_editor_plugin.cpp -msgid "Create Navigation Mesh" -msgstr "" - -#: tools/editor/plugins/mesh_editor_plugin.cpp -msgid "MeshInstance lacks a Mesh!" -msgstr "" - -#: tools/editor/plugins/mesh_editor_plugin.cpp -msgid "Could not create outline!" -msgstr "" - -#: tools/editor/plugins/mesh_editor_plugin.cpp -msgid "Create Outline" -msgstr "" - -#: tools/editor/plugins/mesh_editor_plugin.cpp -msgid "Create Trimesh Static Body" -msgstr "" - -#: tools/editor/plugins/mesh_editor_plugin.cpp -msgid "Create Convex Static Body" -msgstr "" - -#: tools/editor/plugins/mesh_editor_plugin.cpp -msgid "Create Trimesh Collision Sibling" -msgstr "" - -#: tools/editor/plugins/mesh_editor_plugin.cpp -msgid "Create Convex Collision Sibling" -msgstr "" - -#: tools/editor/plugins/mesh_editor_plugin.cpp -msgid "Create Outline Mesh.." -msgstr "" - -#: tools/editor/plugins/mesh_editor_plugin.cpp -msgid "Create Outline Mesh" -msgstr "" - -#: tools/editor/plugins/mesh_editor_plugin.cpp -msgid "Outline Size:" -msgstr "" - #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Could not find tile:" msgstr "" @@ -5085,13 +5337,6 @@ msgid "Texture Options" msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -msgid "" -"NOTICE: You are not forced to import textures for 2D projects. Just copy " -"your .jpg or .png files to your project, and change export options later. " -"Atlases can be generated on export too." -msgstr "" - -#: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Please specify some files!" msgstr "" @@ -5126,67 +5371,93 @@ msgid "Only one file is required for large texture." msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -msgid "Import Textures" +msgid "Max Texture Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for Atlas (2D)" msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -msgid "Source Texture:" +msgid "Cell Size:" msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -msgid "Source Texture(s):" +msgid "Large Texture" msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -msgid "Crop empty space." +msgid "Import Large Textures (2D)" msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -#: tools/editor/io_plugins/editor_translation_import_plugin.cpp -#: tools/editor/io_plugins/editor_scene_import_plugin.cpp -#: tools/editor/io_plugins/editor_sample_import_plugin.cpp -#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp -msgid "Target Path:" +msgid "Source Texture" msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -msgid "Max Texture Size:" +msgid "Base Atlas Texture" msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -msgid "Cell Size:" +msgid "Source Texture(s)" msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -msgid "Large Texture" +msgid "Import Textures for 2D" msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -msgid "Base Atlas Texture" +msgid "Import Textures for 3D" msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -#: tools/editor/io_plugins/editor_translation_import_plugin.cpp -#: tools/editor/io_plugins/editor_scene_import_plugin.cpp -#: tools/editor/io_plugins/editor_font_import_plugin.cpp -#: tools/editor/io_plugins/editor_sample_import_plugin.cpp -msgid "Accept" +msgid "Import Textures" msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -msgid "Import Textures for Atlas (2D)" +msgid "2D Texture" msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -msgid "Import Large Textures (2D)" +msgid "3D Texture" msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -msgid "Import Textures for 2D" +msgid "Atlas Texture" msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -msgid "Import Textures for 3D" +msgid "" +"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " +"the project." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Crop empty space." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Target Path:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Accept" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture" msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp @@ -5297,6 +5568,10 @@ msgstr "" msgid "Import Languages:" msgstr "" +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Translation" +msgstr "" + #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "New Clip" msgstr "" @@ -5393,27 +5668,11 @@ msgid "Post-Process Script:" msgstr "" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp -msgid "Overwrite Existing Scene" -msgstr "" - -#: tools/editor/io_plugins/editor_scene_import_plugin.cpp -msgid "Overwrite Existing, Keep Materials" +msgid "Custom Root Node Type:" msgstr "" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp -msgid "Keep Existing, Merge with New" -msgstr "" - -#: tools/editor/io_plugins/editor_scene_import_plugin.cpp -msgid "Keep Existing, Ignore New" -msgstr "" - -#: tools/editor/io_plugins/editor_scene_import_plugin.cpp -msgid "This Time:" -msgstr "" - -#: tools/editor/io_plugins/editor_scene_import_plugin.cpp -msgid "Next Time:" +msgid "Auto" msgstr "" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp @@ -5425,10 +5684,6 @@ msgid "Import Anyway" msgstr "" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp -msgid "Cancel" -msgstr "" - -#: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import & Open" msgstr "" @@ -5469,11 +5724,11 @@ msgid "Couldn't localize path: %s (already local)" msgstr "" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp -msgid "Merging.." +msgid "Saving.." msgstr "" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp -msgid "Saving.." +msgid "3D Scene Animation" msgstr "" #: tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -5527,22 +5782,6 @@ msgid "Failed opening as BMFont file." msgstr "" #: tools/editor/io_plugins/editor_font_import_plugin.cpp -msgid "Error initializing FreeType." -msgstr "" - -#: tools/editor/io_plugins/editor_font_import_plugin.cpp -msgid "Unknown font format." -msgstr "" - -#: tools/editor/io_plugins/editor_font_import_plugin.cpp -msgid "Error loading font." -msgstr "" - -#: tools/editor/io_plugins/editor_font_import_plugin.cpp -msgid "Invalid font size." -msgstr "" - -#: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Invalid font custom source." msgstr "" @@ -5563,6 +5802,10 @@ msgstr "" msgid "Source Sample(s):" msgstr "" +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Audio Sample" +msgstr "" + #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp msgid "No meshes to import!" msgstr "" @@ -5576,5 +5819,9 @@ msgid "Source Mesh(es):" msgstr "" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Mesh" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp msgid "Surface %d" msgstr "" diff --git a/tools/translations/zh_CN.po b/tools/translations/zh_CN.po new file mode 100644 index 0000000000..52aa2c8251 --- /dev/null +++ b/tools/translations/zh_CN.po @@ -0,0 +1,5900 @@ +# LANGUAGE translation of the Godot Engine editor +# Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community +# This file is distributed under the same license as the Godot source code. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# Geequlim <geequlim@gmail.com>, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2016-05-30 00:04+0800\n" +"Last-Translator: Geequlim <geequlim@gmail.com>\n" +"Language-Team: Chinese (Simplified)\n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Gtranslator 2.91.7\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: scene/audio/sample_player.cpp scene/2d/sample_player_2d.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SamplePlayer to play sound." +msgstr "" +"SampleLibrary类型的资源必须是通过SamplePlayer类型节点的samples属性创建的,这样" +"的资源才能用于播放声音。" + +#: scene/3d/body_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" +"CollisionShape类型节点只能为CollisionObject的派生类提供碰撞形状数据,请将其放" +"在Area、StaticBody、RigidBody或KinematicBody节点下。" + +#: scene/3d/body_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it!" +msgstr "" +"CollisionShape节点必须拥有一个形状才能进行碰撞检测工作,请为它创建一个形状资" +"源!" + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" +"CollisionPolygon类型节点只能为CollisionObject的派生类提供碰撞形状数据,请将其" +"放在Area、StaticBody、RigidBody或KinematicBody节点下。" + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "空CollisionPolygon节点不起碰撞检测作用。" + +#: scene/3d/scenario_fx.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "每个场景中只允许有一个WorldEnvironment类型的节点。" + +#: scene/3d/spatial_sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SpatialSamplePlayer to play sound." +msgstr "" +"SampleLibrary类型的资源必须通过SpatialSamplePlayer节点的'samples'属性创建才能" +"正常播放声音。" + +#: scene/3d/navigation_mesh.cpp +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "此节点需要设置NavigationMesh资源才能工作。" + +#: scene/3d/navigation_mesh.cpp +msgid "" +"NavigationMeshInstance must be a child or grandchild to a Navigation node. It " +"only provides navigation data." +msgstr "" +"NavigationMeshInstance类型节点必须作为Navigation节点的子孙才能提供导航数据。" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error initializing FreeType." +msgstr "初始化FreeType出错。" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Unknown font format." +msgstr "未知的字体格式。" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error loading font." +msgstr "加载字体出错。" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font size." +msgstr "字体大小非法。" + +#: scene/2d/particles_2d.cpp +msgid "Path property must point to a valid Particles2D node to work." +msgstr "path属性必须指向一个合法的Particles2D节点才能正常工作。" + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "ParallaxLayer类型的节点必须作为ParallaxBackground的子节点才能正常工作。" + +#: scene/2d/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnable2D works best when used with the edited scene root directly " +"as parent." +msgstr "VisibilityEnable2D类型的节点用于场景的根节点才能获得最好的效果。" + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "此遮光体必须设置遮光形状才能起到遮光作用。" + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" +msgstr "此遮光体的遮光形状为空,请为其绘制一个遮光形状!" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" +"请为此节点设置一个NavigationPolygon类型的资源作为形状,这样它才能正常工作。" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" +"NavigationPolygonInstance类型的节点必须作为Navigation2D的子孙才能为其提供导航" +"数据。" + +#: scene/2d/sprite.cpp +msgid "" +"Path property must point to a valid Viewport node to work. Such Viewport must " +"be set to 'render target' mode." +msgstr "" +"Path属性必须指向一个合法的Viewport节点才能工作,同时此Viewport还需要启" +"用'render target'。" + +#: scene/2d/sprite.cpp +msgid "" +"The Viewport set in the path property must be set as 'render target' in order " +"for this sprite to work." +msgstr "" +"为了让此精灵正常工作,它的path属性所指向的Viewport需要开启'render target'。" + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"CollisionPolygon2D类型节点只能为CollisionObject2D的派生类提供碰撞形状数据,请" +"将其放在Area2D、StaticBody2D、RigidBody2D或KinematicBody2D节点下。" + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "空的CollisionPolygon2D不起任何碰撞检测作用。" + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "PathFollow2D类型的节点只有放在Path2D节点下才能正常工作。" + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" +"每个场景中只允许有一个CanvasModulate类型的节点,场景中的第一个CanvasModulate节" +"点能正常工作,其余的将被忽略。" + +#: scene/2d/animated_sprite.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite to display frames." +msgstr "" +"SpriteFrames资源必须是通过AnimatedSprite节点的frames属性创建的,否则无法显示动" +"画帧。" + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "path属性必须指向一个合法的Node2D节点才能正常工作。" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"CollisionShape2D类型节点只能为CollisionObject2D的派生类提供碰撞形状数据,请将" +"其放在Area2D、StaticBody2D、RigidBody2D或者是KinematicBody2D节点下。" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "形状资源必须是通过CollisionShape2D节点的shape属性创建的!" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the 'texture' " +"property." +msgstr "" + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine though, but they will hide " +"upon running." +msgstr "" +"Popup对象在你调用popup()方法之前将保持隐藏,这里设置为可见并不代表执行场景时它" +"会出现。" + +#: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Cancel" +msgstr "取消" + +#: scene/gui/dialogs.cpp +msgid "OK" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Cut" +msgstr "剪切" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/resources_dock.cpp tools/editor/property_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Copy" +msgstr "复制" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/resources_dock.cpp tools/editor/property_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste" +msgstr "粘贴" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/project_export.cpp tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Select All" +msgstr "全选" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_log.cpp +#: tools/editor/property_editor.cpp +#: tools/editor/plugins/rich_text_editor_plugin.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear" +msgstr "清除" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Undo" +msgstr "撤销" + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Edit Script Options" +msgstr "脚本编辑器选项" + +#: tools/editor/project_export.cpp +msgid "Please export outside the project folder!" +msgstr "请导出到项目目录之外!" + +#: tools/editor/project_export.cpp +msgid "Error exporting project!" +msgstr "导出项目出错!" + +#: tools/editor/project_export.cpp +msgid "Error writing the project PCK!" +msgstr "写入项目PCK文件出错!" + +#: tools/editor/project_export.cpp +msgid "No exporter for platform '%s' yet." +msgstr "没有针对'%s'平台的导出模板。" + +#: tools/editor/project_export.cpp +msgid "Include" +msgstr "包含" + +#: tools/editor/project_export.cpp +msgid "Change Image Group" +msgstr "修改图片分组" + +#: tools/editor/project_export.cpp +msgid "Group name can't be empty!" +msgstr "分组名称不能为空!" + +#: tools/editor/project_export.cpp +msgid "Invalid character in group name!" +msgstr "分组名称中包含非法字符!" + +#: tools/editor/project_export.cpp +msgid "Group name already exists!" +msgstr "分组名称已存在!" + +#: tools/editor/project_export.cpp +msgid "Add Image Group" +msgstr "添加图片分组" + +#: tools/editor/project_export.cpp +msgid "Delete Image Group" +msgstr "删除图片分组" + +#: tools/editor/project_export.cpp tools/editor/editor_import_export.cpp +msgid "Error saving atlas:" +msgstr "保存贴图集出错:" + +#: tools/editor/project_export.cpp +msgid "Atlas Preview" +msgstr "预览精灵集" + +#: tools/editor/project_export.cpp +msgid "Project Export Settings" +msgstr "项目导出设置" + +#: tools/editor/project_export.cpp +msgid "Target" +msgstr "平台" + +#: tools/editor/project_export.cpp +msgid "Export to Platform" +msgstr "导出到平台" + +#: tools/editor/project_export.cpp tools/editor/plugins/theme_editor_plugin.cpp +msgid "Options" +msgstr "选项" + +#: tools/editor/project_export.cpp +msgid "Resources" +msgstr "资源" + +#: tools/editor/project_export.cpp +msgid "Export selected resources (including dependencies)." +msgstr "导出选中的资源(包括其依赖资源)" + +#: tools/editor/project_export.cpp +msgid "Export all resources in the project." +msgstr "导出项目中的所有资源" + +#: tools/editor/project_export.cpp +msgid "Export all files in the project directory." +msgstr "导出项目目录下的所有文件" + +#: tools/editor/project_export.cpp +msgid "Export Mode:" +msgstr "导出模式:" + +#: tools/editor/project_export.cpp +msgid "Resources to Export:" +msgstr "导出的资源:" + +#: tools/editor/project_export.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "File" +msgstr "文件" + +#: tools/editor/project_export.cpp +msgid "Action" +msgstr "动作" + +#: tools/editor/project_export.cpp +msgid "" +"Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" +msgstr "导出非资源文件筛选(使用英文逗号分隔,如:*.json,*.txt):" + +#: tools/editor/project_export.cpp +msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" +msgstr "排除导出的非资源文件筛选(使用英文逗号分隔,如:*.json,*.txt):" + +#: tools/editor/project_export.cpp +msgid "Convert text scenes to binary on export." +msgstr "导出时将文本场景写入二进制文件。" + +#: tools/editor/project_export.cpp +msgid "Images" +msgstr "图片" + +#: tools/editor/project_export.cpp +msgid "Keep Original" +msgstr "保持原样" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy, WebP)" +msgstr "节省磁盘空间(有损压缩,WebP)" + +#: tools/editor/project_export.cpp +msgid "Compress for RAM (BC/PVRTC/ETC)" +msgstr "节省内存(BC/PVRTC/ETC)" + +#: tools/editor/project_export.cpp +msgid "Convert Images (*.png):" +msgstr "转换图片(*.png):" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy) Quality:" +msgstr "高质量(有损)节省磁盘空间" + +#: tools/editor/project_export.cpp +msgid "Shrink All Images:" +msgstr "收缩所有图片:" + +#: tools/editor/project_export.cpp +msgid "Compress Formats:" +msgstr "压缩格式:" + +#: tools/editor/project_export.cpp +msgid "Image Groups" +msgstr "图片分组" + +#: tools/editor/project_export.cpp +msgid "Groups:" +msgstr "分组:" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Default" +msgstr "默认" + +#: tools/editor/project_export.cpp +msgid "Compress Disk" +msgstr "节省磁盘空间" + +#: tools/editor/project_export.cpp +msgid "Compress RAM" +msgstr "节省内存" + +#: tools/editor/project_export.cpp +msgid "Compress Mode:" +msgstr "压缩方式:" + +#: tools/editor/project_export.cpp +msgid "Lossy Quality:" +msgstr "图片质量:" + +#: tools/editor/project_export.cpp +msgid "Atlas:" +msgstr "精灵集:" + +#: tools/editor/project_export.cpp +msgid "Shrink By:" +msgstr "收缩方式:" + +#: tools/editor/project_export.cpp +msgid "Preview Atlas" +msgstr "精灵集预览:" + +#: tools/editor/project_export.cpp +msgid "Image Filter:" +msgstr "纹理过滤:\t\t" + +#: tools/editor/project_export.cpp +msgid "Images:" +msgstr "图片" + +#: tools/editor/project_export.cpp +msgid "Select None" +msgstr "取消选择" + +#: tools/editor/project_export.cpp tools/editor/groups_editor.cpp +msgid "Group" +msgstr "分组" + +#: tools/editor/project_export.cpp +msgid "Samples" +msgstr "音效" + +#: tools/editor/project_export.cpp +msgid "Sample Conversion Mode: (.wav files):" +msgstr "音效转换方式(.wav文件):" + +#: tools/editor/project_export.cpp +msgid "Keep" +msgstr "保持不变" + +#: tools/editor/project_export.cpp +msgid "Compress (RAM - IMA-ADPCM)" +msgstr "压缩(RAM - IMA-ADPCM)" + +#: tools/editor/project_export.cpp +msgid "Sampling Rate Limit (Hz):" +msgstr "采样率(Hz):" + +#: tools/editor/project_export.cpp +msgid "Trim" +msgstr "修剪" + +#: tools/editor/project_export.cpp +msgid "Trailing Silence:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script" +msgstr "脚本" + +#: tools/editor/project_export.cpp +msgid "Script Export Mode:" +msgstr "脚本导出方式:" + +#: tools/editor/project_export.cpp +msgid "Text" +msgstr "文本" + +#: tools/editor/project_export.cpp +msgid "Compiled" +msgstr "编译" + +#: tools/editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "使用下列密码加密" + +#: tools/editor/project_export.cpp +msgid "Script Encryption Key (256-bits as hex):" +msgstr "脚本密匙(256位16进制码)" + +#: tools/editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "导出 PCK/ZIP" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Export Project" +msgstr "导出项目" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Password:" +msgstr "密码" + +#: tools/editor/project_export.cpp +msgid "Export Project PCK" +msgstr "导出项目PCK文件" + +#: tools/editor/project_export.cpp +msgid "Export.." +msgstr "导出.." + +#: tools/editor/project_export.cpp +msgid "Project Export" +msgstr "项目导出" + +#: tools/editor/project_export.cpp +msgid "Export Preset:" +msgstr "导出预设" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Export" +msgstr "导出" + +#: tools/editor/code_editor.cpp +msgid "Go to Line" +msgstr "转到行" + +#: tools/editor/code_editor.cpp +msgid "Line Number:" +msgstr "行号:" + +#: tools/editor/code_editor.cpp +#, fuzzy +msgid "No Matches" +msgstr "匹配项:" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d Ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace" +msgstr "替换" + +#: tools/editor/code_editor.cpp +#, fuzzy +msgid "Replace All" +msgstr "替换" + +#: tools/editor/code_editor.cpp +#, fuzzy +msgid "Match Case" +msgstr "匹配项:" + +#: tools/editor/code_editor.cpp +msgid "Whole Words" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Selection Only" +msgstr "仅选中" + +#: tools/editor/code_editor.cpp tools/editor/project_settings.cpp +#: tools/editor/addon_editor_plugin.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search" +msgstr "搜索" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +msgid "Find" +msgstr "查找" + +#: tools/editor/code_editor.cpp +msgid "Next" +msgstr "下一项" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Not found!" +msgstr "未找到!" + +#: tools/editor/code_editor.cpp +msgid "Replace By" +msgstr "替换" + +#: tools/editor/code_editor.cpp +msgid "Case Sensitive" +msgstr "区分大小写" + +#: tools/editor/code_editor.cpp +msgid "Backwards" +msgstr "向后" + +#: tools/editor/code_editor.cpp +msgid "Prompt On Replace" +msgstr "更换时提示" + +#: tools/editor/code_editor.cpp +msgid "Skip" +msgstr "跳过" + +#: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Line:" +msgstr "行:" + +#: tools/editor/code_editor.cpp +msgid "Col:" +msgstr "列:" + +#: tools/editor/connections_dialog.cpp +msgid "Method in target Node must be specified!" +msgstr "必须设置方法的对象节点!" + +#: tools/editor/connections_dialog.cpp +msgid "Connect To Node:" +msgstr "连接到节点:" + +#: tools/editor/connections_dialog.cpp +msgid "Binds (Extra Params):" +msgstr "绑定(附加参数):" + +#: tools/editor/connections_dialog.cpp tools/editor/project_settings.cpp +#: tools/editor/groups_editor.cpp tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Add" +msgstr "添加" + +#: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp +#: tools/editor/project_manager.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove" +msgstr "移除" + +#: tools/editor/connections_dialog.cpp +msgid "Path To Node:" +msgstr "节点路径:" + +#: tools/editor/connections_dialog.cpp +msgid "Method In Node:" +msgstr "节点方法:" + +#: tools/editor/connections_dialog.cpp +msgid "Make Function" +msgstr "创建方法" + +#: tools/editor/connections_dialog.cpp +msgid "Deferred" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Oneshot" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/settings_config_dialog.cpp +#: tools/editor/import_settings.cpp tools/editor/run_settings_dialog.cpp +#: tools/editor/project_settings.cpp tools/editor/groups_editor.cpp +#: tools/editor/property_editor.cpp tools/editor/addon_editor_plugin.cpp +#: tools/editor/call_dialog.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Close" +msgstr "关闭" + +#: tools/editor/connections_dialog.cpp +msgid "Connect" +msgstr "连接" + +#: tools/editor/connections_dialog.cpp +msgid "Connect '%s' to '%s'" +msgstr "连接'%s'到'%s'" + +#: tools/editor/connections_dialog.cpp +msgid "Create Subscription" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect.." +msgstr "连接事件" + +#: tools/editor/connections_dialog.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Disconnect" +msgstr "删除事件连接" + +#: tools/editor/connections_dialog.cpp +msgid "Edit Connections.." +msgstr "编辑事件连接" + +#: tools/editor/connections_dialog.cpp +msgid "Connections:" +msgstr "事件:" + +#: tools/editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "选择要导入的节点" + +#: tools/editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "场景路径:" + +#: tools/editor/editor_sub_scene.cpp +msgid "Import From Node:" +msgstr "从节点中导入:" + +#: tools/editor/settings_config_dialog.cpp tools/editor/editor_node.cpp +msgid "Editor Settings" +msgstr "编辑器设置" + +#: tools/editor/settings_config_dialog.cpp tools/editor/project_settings.cpp +msgid "General" +msgstr "一般" + +#: tools/editor/settings_config_dialog.cpp tools/editor/quick_open.cpp +#: tools/editor/addon_editor_plugin.cpp tools/editor/editor_node.cpp +#: tools/editor/editor_help.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search:" +msgstr "搜索:" + +#: tools/editor/settings_config_dialog.cpp tools/editor/project_settings.cpp +#: tools/editor/addon_editor_plugin.cpp +msgid "Plugins" +msgstr "插件" + +#: tools/editor/settings_config_dialog.cpp +msgid "Plugin List:" +msgstr "插件列表" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "选择目录" + +#: tools/editor/editor_dir_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Create Folder" +msgstr "新建目录" + +#: tools/editor/editor_dir_dialog.cpp tools/editor/editor_plugin_settings.cpp +#: tools/editor/editor_file_dialog.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Name:" +msgstr "名称" + +#: tools/editor/editor_dir_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Could not create folder." +msgstr "无法创建目录。" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose" +msgstr "选择" + +#: tools/editor/editor_file_system.cpp +msgid "Cannot go into subdir:" +msgstr "无法打开目录:" + +#: tools/editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "搜索替换:" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "依赖项:" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will not take effect unless reloaded." +msgstr "场景%s已被修改,重新加载后生效。" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will take effect when reloaded." +msgstr "资源%s正在使用中,修改将在重新加载后生效。" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies" +msgstr "依赖" + +#: tools/editor/dependency_editor.cpp +msgid "Resource" +msgstr "资源" + +#: tools/editor/dependency_editor.cpp tools/editor/project_settings.cpp +#: tools/editor/project_manager.cpp +msgid "Path" +msgstr "路径" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies:" +msgstr "依赖:" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Broken" +msgstr "修复依赖" + +#: tools/editor/dependency_editor.cpp +msgid "Dependency Editor" +msgstr "依赖编辑器" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement Resource:" +msgstr "查找替换资源:" + +#: tools/editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "拥有者:" + +#: tools/editor/dependency_editor.cpp +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (no undo)" +msgstr "要删除的文件被其他资源所依赖,仍然要删除吗(无法撤销)?" + +#: tools/editor/dependency_editor.cpp +msgid "Remove selected files from the project? (no undo)" +msgstr "确定从项目中删除文件(此操作无法撤销)?" + +#: tools/editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "加载出错:" + +#: tools/editor/dependency_editor.cpp +msgid "Scene failed to load due to missing dependencies:" +msgstr "加载场景失败,找不到以下依赖项目:" + +#: tools/editor/dependency_editor.cpp +msgid "Open Anyway" +msgstr "仍然打开" + +#: tools/editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "应采取哪项行动?" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "修复依赖项" + +#: tools/editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "加载出错!" + +#: tools/editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "永久删除选中的%d条项目吗(此操作无法撤销!)?" + +#: tools/editor/dependency_editor.cpp +msgid "Owns" +msgstr "拥有对象" + +#: tools/editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "没有指定所属关系的资源:" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +msgid "Orphan Resource Explorer" +msgstr "查看孤立资源" + +#: tools/editor/dependency_editor.cpp +msgid "Delete selected files?" +msgstr "删除选中的文件?" + +#: tools/editor/dependency_editor.cpp tools/editor/scenes_dock.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Delete" +msgstr "删除" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Light Radius" +msgstr "设置光照半径" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera FOV" +msgstr "更改摄像机视角" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera Size" +msgstr "修改摄像机尺寸" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "更改球体半径" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "更改胶囊半径" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "更改胶囊高度" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Notifier Extents" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid parent class name" +msgstr "基类名称非法" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid chars:" +msgstr "合法的字符:" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid class name" +msgstr "类名非法" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid name" +msgstr "名称可用" + +#: tools/editor/script_create_dialog.cpp +msgid "N/A" +msgstr "N/A" + +#: tools/editor/script_create_dialog.cpp +msgid "Class name is invalid!" +msgstr "类名非法" + +#: tools/editor/script_create_dialog.cpp +msgid "Parent class name is invalid!" +msgstr "基类名称非法" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid path!" +msgstr "路径非法!" + +#: tools/editor/script_create_dialog.cpp +msgid "Could not create script in filesystem." +msgstr "无法创建脚本。" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is empty" +msgstr "文件路径为空" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is not local" +msgstr "必须是项目路径" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid base path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "File exists" +msgstr "文件已存在" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid extension" +msgstr "扩展名非法" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid path" +msgstr "路径可用" + +#: tools/editor/script_create_dialog.cpp +msgid "Class Name:" +msgstr "类名:" + +#: tools/editor/script_create_dialog.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/editor_help.cpp +msgid "Inherits:" +msgstr "基类:" + +#: tools/editor/script_create_dialog.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Language" +msgstr "语言:" + +#: tools/editor/script_create_dialog.cpp tools/editor/property_editor.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Error!" +msgstr "错误!" + +#: tools/editor/script_create_dialog.cpp +msgid "Built-In Script" +msgstr "内置脚本" + +#: tools/editor/script_create_dialog.cpp tools/editor/project_settings.cpp +#: tools/editor/editor_file_dialog.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Path:" +msgstr "路径:" + +#: tools/editor/script_create_dialog.cpp +msgid "Create Node Script" +msgstr "创建脚本" + +#: tools/editor/script_create_dialog.cpp tools/editor/animation_editor.cpp +#: tools/editor/project_manager.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create" +msgstr "创建" + +#: tools/editor/animation_editor.cpp +msgid "Disabled" +msgstr "已禁用" + +#: tools/editor/animation_editor.cpp +msgid "All Selection" +msgstr "所有选项" + +#: tools/editor/animation_editor.cpp +msgid "Move Add Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transition" +msgstr "修改过度效果" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transform" +msgstr "修改变换" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Value" +msgstr "修改动画值" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Call" +msgstr "修改回调" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Track" +msgstr "添加轨道" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Up" +msgstr "上移轨道" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Down" +msgstr "下移轨道" + +#: tools/editor/animation_editor.cpp +msgid "Remove Anim Track" +msgstr "移除轨道" + +#: tools/editor/animation_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "复制关键帧" + +#: tools/editor/animation_editor.cpp +msgid "Set Transitions to:" +msgstr "设置过渡效果:" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Rename" +msgstr "重命名轨道" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Interpolation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Value Mode" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Node Curve" +msgstr "编辑节点曲线" + +#: tools/editor/animation_editor.cpp +msgid "Edit Selection Curve" +msgstr "编辑选项曲线" + +#: tools/editor/animation_editor.cpp +msgid "Anim Delete Keys" +msgstr "删除关键帧" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Key" +msgstr "添加关键帧" + +#: tools/editor/animation_editor.cpp +msgid "Anim Move Keys" +msgstr "移动关键帧" + +#: tools/editor/animation_editor.cpp +msgid "Scale Selection" +msgstr "缩放选中项" + +#: tools/editor/animation_editor.cpp +msgid "Scale From Cursor" +msgstr "通过光标缩放" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "复制选中项" + +#: tools/editor/animation_editor.cpp +msgid "Duplicate Transposed" +msgstr "复制并转置" + +#: tools/editor/animation_editor.cpp +msgid "Goto Next Step" +msgstr "前往下一步" + +#: tools/editor/animation_editor.cpp +msgid "Goto Prev Step" +msgstr "前往上一步" + +#: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp +msgid "Linear" +msgstr "线性" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "常量" + +#: tools/editor/animation_editor.cpp +msgid "In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "In-Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out-In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Transitions" +msgstr "过渡" + +#: tools/editor/animation_editor.cpp +msgid "Optimize Animation" +msgstr "优化动画" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation" +msgstr "清理动画" + +#: tools/editor/animation_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "为%s创建新轨道并插入关键帧?" + +#: tools/editor/animation_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "创建%d个新轨道并插入关键帧?" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create & Insert" +msgstr "创建|插入动画" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "创建|插入 轨道和关键帧" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Key" +msgstr "插入关键帧" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Len" +msgstr "修改动画时长" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop" +msgstr "修改动画循环" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create Typed Value Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert" +msgstr "插入动画" + +#: tools/editor/animation_editor.cpp +msgid "Anim Scale Keys" +msgstr "缩放键" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Call Track" +msgstr "添加回调轨道" + +#: tools/editor/animation_editor.cpp +msgid "Animation zoom." +msgstr "动画时间缩放" + +#: tools/editor/animation_editor.cpp +msgid "Length (s):" +msgstr "时长(秒):" + +#: tools/editor/animation_editor.cpp +msgid "Animation length (in seconds)." +msgstr "动画时长(秒)" + +#: tools/editor/animation_editor.cpp +msgid "Step (s):" +msgstr "步长(秒)" + +#: tools/editor/animation_editor.cpp +msgid "Cursor step snap (in seconds)." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable looping in animation." +msgstr "启用/禁用循环" + +#: tools/editor/animation_editor.cpp +msgid "Add new tracks." +msgstr "新建轨道" + +#: tools/editor/animation_editor.cpp +msgid "Move current track up." +msgstr "上移当前轨道" + +#: tools/editor/animation_editor.cpp +msgid "Move current track down." +msgstr "下移当前轨道" + +#: tools/editor/animation_editor.cpp +msgid "Remove selected track." +msgstr "移除选中轨道" + +#: tools/editor/animation_editor.cpp +msgid "Track tools" +msgstr "轨道工具" + +#: tools/editor/animation_editor.cpp +msgid "Enable editing of individual keys by clicking them." +msgstr "允许通过单击启用各个键的编辑。" + +#: tools/editor/animation_editor.cpp +msgid "Anim. Optimizer" +msgstr "优化动画" + +#: tools/editor/animation_editor.cpp +msgid "Max. Linear Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max. Angular Error:" +msgstr "最大角错误:" + +#: tools/editor/animation_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "调整最大的角度:" + +#: tools/editor/animation_editor.cpp +msgid "Optimize" +msgstr "优化" + +#: tools/editor/animation_editor.cpp +msgid "Key" +msgstr "键" + +#: tools/editor/animation_editor.cpp +msgid "Transition" +msgstr "过渡" + +#: tools/editor/animation_editor.cpp +msgid "Scale Ratio:" +msgstr "缩放比率" + +#: tools/editor/animation_editor.cpp +msgid "Call Functions in Which Node?" +msgstr "在那个节点中调用函数?" + +#: tools/editor/animation_editor.cpp +msgid "Remove invalid keys" +msgstr "移除无效键" + +#: tools/editor/animation_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "移除未分解的空轨道" + +#: tools/editor/animation_editor.cpp +msgid "Clean-up all animations" +msgstr "清除所有动画" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "清除所有动画吗(无法撤销)?" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up" +msgstr "清理" + +#: tools/editor/script_editor_debugger.cpp +msgid "Bytes:" +msgstr "字节:" + +#: tools/editor/script_editor_debugger.cpp tools/editor/project_settings.cpp +#: tools/editor/scene_tree_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Type:" +msgstr "类型:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Warning" +msgstr "警告:" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Error" +msgstr "错误" + +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_help.cpp +msgid "Description:" +msgstr "描述:" + +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_profiler.cpp +msgid "Time:" +msgstr "时间:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Error:" +msgstr "错误:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Source:" +msgstr "源:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Function:" +msgstr "函数:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors" +msgstr "错误" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debugger" +msgstr "调试器" + +#: tools/editor/script_editor_debugger.cpp +msgid "Child Process Connected" +msgstr "子进程已连接" + +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_file_dialog.cpp +msgid "File:" +msgstr "文件:" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Step Into" +msgstr "单步进入" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Step Over" +msgstr "单步跳过" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Break" +msgstr "跳过" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Continue" +msgstr "继续" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Previous Instance" +msgstr "编辑上一个实例" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Next Instance" +msgstr "编辑下一个实例" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Frames" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Variable" +msgstr "变量" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors:" +msgstr "错误:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Trace (if applicable):" +msgstr "调用堆栈:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Inspector" +msgstr "远程属性面板" + +#: tools/editor/script_editor_debugger.cpp +#, fuzzy +msgid "Live Scene Tree:" +msgstr "场景树:" + +#: tools/editor/script_editor_debugger.cpp +#, fuzzy +msgid "Remote Object Properties: " +msgstr "对象属性。" + +#: tools/editor/script_editor_debugger.cpp +msgid "Profiler" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitor" +msgstr "键名" + +#: tools/editor/script_editor_debugger.cpp +msgid "Value" +msgstr "值" + +#: tools/editor/script_editor_debugger.cpp +#, fuzzy +msgid "Monitors" +msgstr "键名" + +#: tools/editor/script_editor_debugger.cpp +msgid "List of Video Memory Usage by Resource:" +msgstr "占用显存的资源列表:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Total:" +msgstr "合计:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Video Mem" +msgstr "显存" + +#: tools/editor/script_editor_debugger.cpp +msgid "Resource Path" +msgstr "资源路径" + +#: tools/editor/script_editor_debugger.cpp +msgid "Type" +msgstr "类型" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Format" +msgstr "格式" + +#: tools/editor/script_editor_debugger.cpp +msgid "Usage" +msgstr "用量" + +#: tools/editor/script_editor_debugger.cpp +msgid "Misc" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control:" +msgstr "点击的控件:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control Type:" +msgstr "点击的控件类型:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Edit Root:" +msgstr "实时编辑根节点:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Set From Tree" +msgstr "从场景树设置" + +#: tools/editor/import_settings.cpp +msgid "Imported Resources" +msgstr "已导入的资源" + +#: tools/editor/import_settings.cpp tools/editor/editor_reimport_dialog.cpp +#: tools/editor/editor_node.cpp +msgid "Re-Import" +msgstr "重新导入" + +#: tools/editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "运行模式:" + +#: tools/editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "当前场景" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "主场景" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "主场景参数:" + +#: tools/editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "场景运行设置" + +#: tools/editor/project_settings.cpp +msgid "Key " +msgstr "" + +#: tools/editor/project_settings.cpp +#, fuzzy +msgid "Joy Button" +msgstr "按钮" + +#: tools/editor/project_settings.cpp +#, fuzzy +msgid "Joy Axis" +msgstr "轴" + +#: tools/editor/project_settings.cpp +#, fuzzy +msgid "Mouse Button" +msgstr "鼠标按键:" + +#: tools/editor/project_settings.cpp +msgid "Invalid action (anything goes but '/' or ':')." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action '%s' already exists!" +msgstr "动作%s已存在!" + +#: tools/editor/project_settings.cpp +msgid "Rename Input Action Event" +msgstr "重命名输入事件" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action Event" +msgstr "添加输入事件" + +#: tools/editor/project_settings.cpp +msgid "Meta+" +msgstr "Meta+" + +#: tools/editor/project_settings.cpp +msgid "Shift+" +msgstr "Shift+" + +#: tools/editor/project_settings.cpp +msgid "Alt+" +msgstr "Alt+" + +#: tools/editor/project_settings.cpp +msgid "Control+" +msgstr "Ctrl+" + +#: tools/editor/project_settings.cpp +msgid "Press a Key.." +msgstr "按下一个键.." + +#: tools/editor/project_settings.cpp +msgid "Mouse Button Index:" +msgstr "鼠标按键:" + +#: tools/editor/project_settings.cpp +msgid "Left Button" +msgstr "左键" + +#: tools/editor/project_settings.cpp +msgid "Right Button" +msgstr "右键" + +#: tools/editor/project_settings.cpp +msgid "Middle Button" +msgstr "中键" + +#: tools/editor/project_settings.cpp +msgid "Wheel Up Button" +msgstr "滚轮向上" + +#: tools/editor/project_settings.cpp +msgid "Wheel Down Button" +msgstr "滚轮向下" + +#: tools/editor/project_settings.cpp +msgid "Button 6" +msgstr "按键 6" + +#: tools/editor/project_settings.cpp +msgid "Button 7" +msgstr "按键 7" + +#: tools/editor/project_settings.cpp +msgid "Button 8" +msgstr "按键 8" + +#: tools/editor/project_settings.cpp +msgid "Button 9" +msgstr "按键 9" + +#: tools/editor/project_settings.cpp +msgid "Joystick Axis Index:" +msgstr "手柄摇杆" + +#: tools/editor/project_settings.cpp +msgid "Axis" +msgstr "轴" + +#: tools/editor/project_settings.cpp +msgid "Joystick Button Index:" +msgstr "手柄按钮" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action" +msgstr "添加输入动作" + +#: tools/editor/project_settings.cpp +msgid "Erase Input Action Event" +msgstr "移除输入事件" + +#: tools/editor/project_settings.cpp +msgid "Device" +msgstr "设备" + +#: tools/editor/project_settings.cpp +msgid "Button" +msgstr "按钮" + +#: tools/editor/project_settings.cpp +msgid "Left Button." +msgstr "左键" + +#: tools/editor/project_settings.cpp +msgid "Right Button." +msgstr "右键" + +#: tools/editor/project_settings.cpp +msgid "Middle Button." +msgstr "中键(滚轮)" + +#: tools/editor/project_settings.cpp +msgid "Wheel Up." +msgstr "滚轮向上滚动" + +#: tools/editor/project_settings.cpp +msgid "Wheel Down." +msgstr "滚轮向下滚动" + +#: tools/editor/project_settings.cpp +msgid "Toggle Persisting" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Error saving settings." +msgstr "保存设置出错。" + +#: tools/editor/project_settings.cpp +msgid "Settings saved OK." +msgstr "保存设置成功。" + +#: tools/editor/project_settings.cpp +msgid "Add Translation" +msgstr "添加语言" + +#: tools/editor/project_settings.cpp +msgid "Toggle AutoLoad Globals" +msgstr "切换全局AutoLoad" + +#: tools/editor/project_settings.cpp +msgid "Invalid name." +msgstr "名称非法:" + +#: tools/editor/project_settings.cpp +msgid "Valid characters:" +msgstr "字符合法:" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing engine class name." +msgstr "名称非法,与引擎内置类型名称冲突。" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing buit-in type name." +msgstr "名称非法,与引擎内置类型名称冲突。" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing global constant name." +msgstr "名称非法,与已存在的全局常量名称冲突。" + +#: tools/editor/project_settings.cpp +msgid "Add Autoload" +msgstr "添加Autoload" + +#: tools/editor/project_settings.cpp +msgid "Remove Autoload" +msgstr "移除Autoload" + +#: tools/editor/project_settings.cpp +msgid "Move Autoload" +msgstr "移动Autoload" + +#: tools/editor/project_settings.cpp +msgid "Remove Translation" +msgstr "移除语言" + +#: tools/editor/project_settings.cpp +msgid "Add Remapped Path" +msgstr "添加重定向路径" + +#: tools/editor/project_settings.cpp +msgid "Resource Remap Add Remap" +msgstr "添加资源重定向" + +#: tools/editor/project_settings.cpp +msgid "Change Resource Remap Language" +msgstr "修改语言资源重定向" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap" +msgstr "移除资源重定向" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap Option" +msgstr "移除资源重定向选项" + +#: tools/editor/project_settings.cpp +msgid "Enable" +msgstr "启用" + +#: tools/editor/project_settings.cpp +msgid "Project Settings (engine.cfg)" +msgstr "项目设置(engine.cfg)" + +#: tools/editor/project_settings.cpp tools/editor/addon_editor_plugin.cpp +msgid "Category:" +msgstr "分类:" + +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +msgid "Property:" +msgstr "属性:" + +#: tools/editor/project_settings.cpp +msgid "Del" +msgstr "删除" + +#: tools/editor/project_settings.cpp +msgid "Copy To Platform.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Input Map" +msgstr "事件表" + +#: tools/editor/project_settings.cpp +msgid "Action:" +msgstr "动作:" + +#: tools/editor/project_settings.cpp +msgid "Device:" +msgstr "设备:" + +#: tools/editor/project_settings.cpp +msgid "Index:" +msgstr "序号:" + +#: tools/editor/project_settings.cpp +msgid "Localization" +msgstr "本地化" + +#: tools/editor/project_settings.cpp +msgid "Translations" +msgstr "语言" + +#: tools/editor/project_settings.cpp +msgid "Translations:" +msgstr "语言:" + +#: tools/editor/project_settings.cpp +msgid "Add.." +msgstr "添加:" + +#: tools/editor/project_settings.cpp +msgid "Remaps" +msgstr "重定向" + +#: tools/editor/project_settings.cpp +msgid "Resources:" +msgstr "资源:" + +#: tools/editor/project_settings.cpp +msgid "Remaps by Locale:" +msgstr "地区重定向:" + +#: tools/editor/project_settings.cpp +msgid "Locale" +msgstr "地区" + +#: tools/editor/project_settings.cpp +msgid "AutoLoad" +msgstr "AutoLoad" + +#: tools/editor/project_settings.cpp +msgid "Node Name:" +msgstr "节点名称:" + +#: tools/editor/project_settings.cpp +msgid "List:" +msgstr "列表:" + +#: tools/editor/project_settings.cpp tools/editor/project_manager.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Name" +msgstr "名称" + +#: tools/editor/project_settings.cpp +msgid "Singleton" +msgstr "单例" + +#: tools/editor/scene_tree_editor.cpp +msgid "" +"This item cannot be made visible because the parent is hidden. Unhide the " +"parent first." +msgstr "无法显示此节点,请先取消隐藏其父节点。" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle Spatial Visible" +msgstr "切换Spatial可见" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle CanvasItem Visible" +msgstr "切换CanvasItem可见" + +#: tools/editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "实例:" + +#: tools/editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "节点名称非法,不允许包含以下字符:" + +#: tools/editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "重命名节点" + +#: tools/editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "场景树:" + +#: tools/editor/scene_tree_editor.cpp +msgid "Editable Children" +msgstr "允许编辑子孙节点" + +#: tools/editor/scene_tree_editor.cpp +msgid "Load As Placeholder" +msgstr "加载为占位符" + +#: tools/editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "在编辑器中打开" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance" +msgstr "清除继承" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "确定要清除继承吗(无法撤销!)?" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear!" +msgstr "清除!" + +#: tools/editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "选择一个节点" + +#: tools/editor/editor_profiler.cpp +msgid "Stop Profiling" +msgstr "停止" + +#: tools/editor/editor_profiler.cpp +msgid "Start Profiling" +msgstr "开始" + +#: tools/editor/editor_profiler.cpp +msgid "Measure:" +msgstr "测量:" + +#: tools/editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "帧时间(秒)" + +#: tools/editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "平均帧时间(秒)" + +#: tools/editor/editor_profiler.cpp +msgid "Frame %" +msgstr "渲染速度" + +#: tools/editor/editor_profiler.cpp +msgid "Fixed Frame %" +msgstr "物理速度" + +#: tools/editor/editor_profiler.cpp +msgid "Inclusive" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Self" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "帧序号:" + +#: tools/editor/quick_open.cpp tools/editor/editor_help.cpp +#: tools/editor/create_dialog.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Matches:" +msgstr "匹配项:" + +#: tools/editor/quick_open.cpp tools/editor/scenes_dock.cpp +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_node.cpp +#: tools/editor/editor_help.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Open" +msgstr "打开" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Please wait for scan to complete." +msgstr "扫描中,请稍后..." + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Current scene must be saved to re-import." +msgstr "需要先保存当前场景才能重新导入。" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Save & Re-Import" +msgstr "保存并重新导入" + +#: tools/editor/editor_reimport_dialog.cpp tools/editor/editor_node.cpp +msgid "Re-Importing" +msgstr "重新导入" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import Changed Resources" +msgstr "重新导入改变的资源" + +#: tools/editor/resources_dock.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Error saving resource!" +msgstr "保存资源出错!" + +#: tools/editor/resources_dock.cpp +msgid "Create New Resource" +msgstr "创建资源" + +#: tools/editor/resources_dock.cpp +msgid "Open Resource" +msgstr "打开资源" + +#: tools/editor/resources_dock.cpp +msgid "Save Resource" +msgstr "保存资源" + +#: tools/editor/resources_dock.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save Resource As.." +msgstr "资源另存为.." + +#: tools/editor/resources_dock.cpp +msgid "Resource Tools" +msgstr "资源工具" + +#: tools/editor/resources_dock.cpp +msgid "Make Local" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "在_run()方中填写您的逻辑代码。" + +#: tools/editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "已经存在一个正在编辑的场景。" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "无法实例化脚本:" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "您是否遗漏了tool关键字?" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "无法执行脚本:" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "您是否遗漏了_run()方法?" + +#: tools/editor/editor_data.cpp +msgid "Updating Scene" +msgstr "更新场景" + +#: tools/editor/editor_data.cpp +msgid "Storing local changes.." +msgstr "保存修改中.." + +#: tools/editor/editor_data.cpp +msgid "Updating scene.." +msgstr "更新场景中.." + +#: tools/editor/file_type_cache.cpp +msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" +msgstr "无法以可写方式打开file_type_cache.cch!" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent Node" +msgstr "重设父节点" + +#: tools/editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "重设位置(选择父节点)" + +#: tools/editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "保持全局变换" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "重设父节点" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "已安装插件:" + +#: tools/editor/editor_plugin_settings.cpp tools/editor/editor_node.cpp +msgid "Update" +msgstr "更新" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Version:" +msgstr "版本" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Author:" +msgstr "作者" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "状态" + +#: tools/editor/scenes_dock.cpp tools/editor/editor_file_dialog.cpp +msgid "Favorites:" +msgstr "收藏:" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination files, doing nothing." +msgstr "源文件和目标文件相同,操作忽略。" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination paths, doing nothing." +msgstr "源路径和目标路径相同,操作忽略。" + +#: tools/editor/scenes_dock.cpp +msgid "Can't move directories to within themselves." +msgstr "无法将目录移动到自身下。" + +#: tools/editor/scenes_dock.cpp +msgid "Can't operate on '..'" +msgstr "无法对'..'引用操作。" + +#: tools/editor/scenes_dock.cpp +msgid "Pick New Name and Location For:" +msgstr "选择新名称和路径:" + +#: tools/editor/scenes_dock.cpp +msgid "No files selected!" +msgstr "没有选中任何文件!" + +#: tools/editor/scenes_dock.cpp +msgid "Instance" +msgstr "创建实例节点" + +#: tools/editor/scenes_dock.cpp +msgid "Edit Dependencies.." +msgstr "编辑依赖.." + +#: tools/editor/scenes_dock.cpp +msgid "View Owners.." +msgstr "查看所有者" + +#: tools/editor/scenes_dock.cpp +msgid "Rename or Move.." +msgstr "移动或重命名" + +#: tools/editor/scenes_dock.cpp +msgid "Move To.." +msgstr "移动" + +#: tools/editor/scenes_dock.cpp +msgid "Info" +msgstr "信息" + +#: tools/editor/scenes_dock.cpp +msgid "Show In File Manager" +msgstr "在资源管理器中打开" + +#: tools/editor/scenes_dock.cpp tools/editor/editor_node.cpp +msgid "Re-Import.." +msgstr "重新导入.." + +#: tools/editor/scenes_dock.cpp +msgid "Previous Directory" +msgstr "上一个目录:" + +#: tools/editor/scenes_dock.cpp +msgid "Next Directory" +msgstr "下一个目录:" + +#: tools/editor/scenes_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "重新扫描文件系统" + +#: tools/editor/scenes_dock.cpp +msgid "Toggle folder status as Favorite" +msgstr "收藏目录" + +#: tools/editor/scenes_dock.cpp +msgid "Instance the selected scene(s) as child of the selected node." +msgstr "将选中的场景实例为选中节点的子节点。" + +#: tools/editor/scenes_dock.cpp +msgid "Move" +msgstr "移动" + +#: tools/editor/editor_import_export.cpp +msgid "Added:" +msgstr "已添加:" + +#: tools/editor/editor_import_export.cpp +msgid "Removed:" +msgstr "已移除:" + +#: tools/editor/editor_import_export.cpp +msgid "Could not save atlas subtexture:" +msgstr "无法保存精灵集子贴图:" + +#: tools/editor/editor_import_export.cpp +msgid "Storing File:" +msgstr "文件排序:" + +#: tools/editor/editor_import_export.cpp +msgid "Packing" +msgstr "打包中" + +#: tools/editor/editor_import_export.cpp +msgid "Exporting for %s" +msgstr "正在导出 %s" + +#: tools/editor/editor_import_export.cpp +msgid "Setting Up.." +msgstr "配置.." + +#: tools/editor/editor_settings.cpp +msgid "Default (Same as Editor)" +msgstr "默认(与编辑器相同)" + +#: tools/editor/editor_file_dialog.cpp +msgid "File Exists, Overwrite?" +msgstr "文件已存在,确定要覆盖它吗?" + +#: tools/editor/editor_file_dialog.cpp +msgid "All Recognized" +msgstr "所有可用类型" + +#: tools/editor/editor_file_dialog.cpp +msgid "All Files (*)" +msgstr "所有文件(*)" + +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save" +msgstr "保存" + +#: tools/editor/editor_file_dialog.cpp +msgid "Save a File" +msgstr "保存文件" + +#: tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "最近文件:" + +#: tools/editor/editor_file_dialog.cpp +msgid "Directories & Files:" +msgstr "目录|文件:" + +#: tools/editor/editor_file_dialog.cpp +msgid "Preview:" +msgstr "预览" + +#: tools/editor/editor_file_dialog.cpp +msgid "Filter:" +msgstr "筛选:" + +#: tools/editor/editor_file_dialog.cpp +msgid "Must use a valid extension." +msgstr "必须使用合法的拓展名。" + +#: tools/editor/groups_editor.cpp +msgid "Add to Group" +msgstr "添加到分组" + +#: tools/editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "从分组中移除" + +#: tools/editor/groups_editor.cpp +msgid "Group Editor" +msgstr "分组编辑" + +#: tools/editor/groups_editor.cpp +msgid "Node Group(s)" +msgstr "节点分组" + +#: tools/editor/property_editor.cpp +msgid "Preset.." +msgstr "预设.." + +#: tools/editor/property_editor.cpp +msgid "Ease In" +msgstr "慢速开始" + +#: tools/editor/property_editor.cpp +msgid "Ease Out" +msgstr "慢速结束" + +#: tools/editor/property_editor.cpp +msgid "Zero" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing In-Out" +msgstr "慢速开始和结束" + +#: tools/editor/property_editor.cpp +msgid "Easing Out-In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "File.." +msgstr "文件.." + +#: tools/editor/property_editor.cpp +msgid "Dir.." +msgstr "目录.." + +#: tools/editor/property_editor.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "New" +msgstr "新建" + +#: tools/editor/property_editor.cpp +msgid "Load" +msgstr "加载" + +#: tools/editor/property_editor.cpp +msgid "Assign" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "加载文件出错:不是资源文件!" + +#: tools/editor/property_editor.cpp +msgid "Couldn't load image" +msgstr "无法加载图片" + +#: tools/editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "" + +#: tools/editor/property_editor.cpp tools/editor/editor_help.cpp +msgid "Class:" +msgstr "类:" + +#: tools/editor/property_editor.cpp +msgid "On" +msgstr "启用" + +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "设置" + +#: tools/editor/property_editor.cpp +msgid "Properties:" +msgstr "属性:" + +#: tools/editor/property_editor.cpp +msgid "Global" +msgstr "全局" + +#: tools/editor/property_editor.cpp +msgid "Sections:" +msgstr "选项:" + +#: tools/editor/addon_editor_plugin.cpp tools/editor/editor_node.cpp +#: tools/editor/project_manager.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Import" +msgstr "导入" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Sort:" +msgstr "排序:" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Reverse" +msgstr "反选" + +#: tools/editor/addon_editor_plugin.cpp +msgid "All" +msgstr "全部" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Site:" +msgstr "站点:" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Assets ZIP File" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Importing:" +msgstr "导入:" + +#: tools/editor/editor_node.cpp +msgid "Node From Scene" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "I see.." +msgstr "好吧.." + +#: tools/editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "无法以可写模式打开文件:" + +#: tools/editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "未知的文件类型请求:" + +#: tools/editor/editor_node.cpp +msgid "Error while saving." +msgstr "保存出错。" + +#: tools/editor/editor_node.cpp +msgid "Saving Scene" +msgstr "正在保存场景" + +#: tools/editor/editor_node.cpp +msgid "Analyzing" +msgstr "正在分析" + +#: tools/editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +msgstr "无法保存场景,依赖项(实例)验证失败。" + +#: tools/editor/editor_node.cpp +msgid "Failed to load resource." +msgstr "加载资源失败。" + +#: tools/editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "无法加载要合并的砖块集!" + +#: tools/editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "保存砖块集失败!" + +#: tools/editor/editor_node.cpp +msgid "Can't open export templates zip." +msgstr "无法打开ZIP导出模板" + +#: tools/editor/editor_node.cpp +msgid "Loading Export Templates" +msgstr "正在加载导出模板" + +#: tools/editor/editor_node.cpp +msgid "Error trying to save layout!" +msgstr "保存布局出错!" + +#: tools/editor/editor_node.cpp +msgid "Default editor layout overridden." +msgstr "覆盖编辑器默认布局。" + +#: tools/editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "布局名称未找到!" + +#: tools/editor/editor_node.cpp +msgid "Restored default layout to base settings." +msgstr "重置为默认布局设置。" + +#: tools/editor/editor_node.cpp +msgid "Copy Params" +msgstr "拷贝参数" + +#: tools/editor/editor_node.cpp +msgid "Set Params" +msgstr "设置参数" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "粘贴资源" + +#: tools/editor/editor_node.cpp +msgid "Copy Resource" +msgstr "拷贝资源" + +#: tools/editor/editor_node.cpp +msgid "Make Built-In" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Sub-Resources Unique" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "没有设置要执行的场景。" + +#: tools/editor/editor_node.cpp +msgid "Current scene was never saved, please save it prior to running." +msgstr "当前场景尚未保存,请保存后再尝试执行。" + +#: tools/editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "无法启动子进程!" + +#: tools/editor/editor_node.cpp +msgid "Open Scene" +msgstr "打开场景" + +#: tools/editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Scene.." +msgstr "快速打开场景.." + +#: tools/editor/editor_node.cpp +msgid "Quick Open Script.." +msgstr "快速打开脚本.." + +#: tools/editor/editor_node.cpp +msgid "Yes" +msgstr "是" + +#: tools/editor/editor_node.cpp +msgid "Close scene? (Unsaved changes will be lost)" +msgstr "确定要关闭场景吗,未保存的修改将丢失?" + +#: tools/editor/editor_node.cpp +msgid "Save Scene As.." +msgstr "场景另存为" + +#: tools/editor/editor_node.cpp +msgid "This scene has never been saved. Save before running?" +msgstr "此场景尚未保存,要在运行之前保存它吗?" + +#: tools/editor/editor_node.cpp +msgid "Please save the scene first." +msgstr "请先保存场景。" + +#: tools/editor/editor_node.cpp +msgid "Save Translatable Strings" +msgstr "保存可翻译字符串" + +#: tools/editor/editor_node.cpp +msgid "Export Mesh Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "导出砖块集" + +#: tools/editor/editor_node.cpp +msgid "Quit" +msgstr "退出" + +#: tools/editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "确定要退出编辑器吗?" + +#: tools/editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "当前场景尚未保存,仍要打开?" + +#: tools/editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "无法重新加载未保存的场景。" + +#: tools/editor/editor_node.cpp +msgid "Revert" +msgstr "恢复" + +#: tools/editor/editor_node.cpp +msgid "This action cannot be undone. Revert anyway?" +msgstr "此操作无法撤销,确定要继续吗?" + +#: tools/editor/editor_node.cpp +msgid "Quick Run Scene.." +msgstr "快速运行场景" + +#: tools/editor/editor_node.cpp +#, fuzzy +msgid "" +"Open Project Manager? \n" +"(Unsaved changes will be lost)" +msgstr "确定要关闭场景吗,未保存的修改将丢失?" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "Ugh" +msgstr "额" + +#: tools/editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to open " +"the scene, then save it inside the project path." +msgstr "" +"加载场景出错,场景必须放在项目目录下。请尝试使用'导入'菜单导入此场景后再试。" + +#: tools/editor/editor_node.cpp +msgid "Error loading scene." +msgstr "加载场景出错。" + +#: tools/editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "场景%s的依赖已被破坏:" + +#: tools/editor/editor_node.cpp +msgid "Save Layout" +msgstr "保存布局" + +#: tools/editor/editor_node.cpp +msgid "Delete Layout" +msgstr "删除布局" + +#: tools/editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "切换场景标签页" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s)" +msgstr "更多的%d个文件" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s) or folder(s)" +msgstr "更多的%d个文件或目录" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Scene" +msgstr "场景" + +#: tools/editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "前往上一个打开的场景。" + +#: tools/editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "操作场景文件。" + +#: tools/editor/editor_node.cpp +msgid "New Scene" +msgstr "新建场景" + +#: tools/editor/editor_node.cpp +msgid "New Inherited Scene.." +msgstr "从现有场景中创建.." + +#: tools/editor/editor_node.cpp +msgid "Open Scene.." +msgstr "打开场景" + +#: tools/editor/editor_node.cpp +msgid "Save Scene" +msgstr "保存场景" + +#: tools/editor/editor_node.cpp +msgid "Close Scene" +msgstr "关闭场景" + +#: tools/editor/editor_node.cpp +msgid "Close Goto Prev. Scene" +msgstr "关闭并前往上一个场景" + +#: tools/editor/editor_node.cpp +msgid "Open Recent" +msgstr "最近打开" + +#: tools/editor/editor_node.cpp +msgid "Quick Search File.." +msgstr "快速查找文件.." + +#: tools/editor/editor_node.cpp +msgid "Convert To.." +msgstr "转换为.." + +#: tools/editor/editor_node.cpp +msgid "Translatable Strings.." +msgstr "可翻译字符串" + +#: tools/editor/editor_node.cpp +msgid "MeshLibrary.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "TileSet.." +msgstr "砖块集.." + +#: tools/editor/editor_node.cpp tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Redo" +msgstr "重做" + +#: tools/editor/editor_node.cpp +msgid "Run Script" +msgstr "运行脚本" + +#: tools/editor/editor_node.cpp +msgid "Project Settings" +msgstr "项目设置" + +#: tools/editor/editor_node.cpp +msgid "Revert Scene" +msgstr "恢复场景" + +#: tools/editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "退出到项目列表" + +#: tools/editor/editor_node.cpp +msgid "Import assets to the project." +msgstr "导入资源" + +#: tools/editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Tools" +msgstr "工具" + +#: tools/editor/editor_node.cpp +msgid "Export the project to many platforms." +msgstr "导出项目到多个平台。" + +#: tools/editor/editor_node.cpp +msgid "Play the project (F5)." +msgstr "运行此项目(F5)" + +#: tools/editor/editor_node.cpp +msgid "Pause the scene" +msgstr "暂停运行场景" + +#: tools/editor/editor_node.cpp +msgid "Stop the scene (F8)." +msgstr "停止运行场景(F8)" + +#: tools/editor/editor_node.cpp +msgid "Play the edited scene (F6)." +msgstr "运行打开的场景(F6)" + +#: tools/editor/editor_node.cpp +msgid "Play custom scene" +msgstr "运行自定义场景" + +#: tools/editor/editor_node.cpp +msgid "Debug options" +msgstr "调试选项" + +#: tools/editor/editor_node.cpp +msgid "Live Editing" +msgstr "实时编辑" + +#: tools/editor/editor_node.cpp +msgid "File Server" +msgstr "文件服务" + +#: tools/editor/editor_node.cpp +msgid "Deploy Remote Debug" +msgstr "部署远程调试" + +#: tools/editor/editor_node.cpp +msgid "Deploy File Server Clients" +msgstr "部署文件服务客户端" + +#: tools/editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "碰撞区域可见" + +#: tools/editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "Navigation可见" + +#: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Settings" +msgstr "设置" + +#: tools/editor/editor_node.cpp +msgid "Editor Layout" +msgstr "编辑器布局" + +#: tools/editor/editor_node.cpp +msgid "Install Export Templates" +msgstr "安装导出模板" + +#: tools/editor/editor_node.cpp +msgid "About" +msgstr "关于" + +#: tools/editor/editor_node.cpp +msgid "Alerts when an external resource has changed." +msgstr "外部资源改变后弹出提示。" + +#: tools/editor/editor_node.cpp +msgid "Spins when the editor window repaints!" +msgstr "旋转时,重新绘制编辑器窗口!" + +#: tools/editor/editor_node.cpp +msgid "Update Always" +msgstr "持续更新UI" + +#: tools/editor/editor_node.cpp +msgid "Update Changes" +msgstr "有更改时更新UI" + +#: tools/editor/editor_node.cpp +msgid "Inspector" +msgstr "属性面板" + +#: tools/editor/editor_node.cpp +msgid "Create a new resource in memory and edit it." +msgstr "在内存中新建资源并编辑。" + +#: tools/editor/editor_node.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "从磁盘中加载资源并编辑。" + +#: tools/editor/editor_node.cpp +msgid "Save the currently edited resource." +msgstr "保存当前编辑的资源。" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save As.." +msgstr "另存为" + +#: tools/editor/editor_node.cpp +msgid "Go to the previous edited object in history." +msgstr "前往上一个编辑对象。" + +#: tools/editor/editor_node.cpp +msgid "Go to the next edited object in history." +msgstr "前往下一个编辑对象。" + +#: tools/editor/editor_node.cpp +msgid "History of recently edited objects." +msgstr "最近编辑历史对象。" + +#: tools/editor/editor_node.cpp +msgid "Object properties." +msgstr "对象属性。" + +#: tools/editor/editor_node.cpp +msgid "FileSystem" +msgstr "文件系统" + +#: tools/editor/editor_node.cpp +msgid "Output" +msgstr "输出" + +#: tools/editor/editor_node.cpp +msgid "Thanks from the Godot community!" +msgstr "感谢Godot社区" + +#: tools/editor/editor_node.cpp +msgid "Thanks!" +msgstr "谢谢!" + +#: tools/editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "从ZIP文件中导入模板" + +#: tools/editor/editor_node.cpp +msgid "Export Library" +msgstr "导出库" + +#: tools/editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "与现有合并" + +#: tools/editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "打开并运行脚本" + +#: tools/editor/editor_node.cpp +msgid "Load Errors" +msgstr "加载错误" + +#: tools/editor/call_dialog.cpp +msgid "Method List For '%s':" +msgstr "%s的方法列表" + +#: tools/editor/call_dialog.cpp +msgid "Call" +msgstr "调用" + +#: tools/editor/call_dialog.cpp +msgid "Method List:" +msgstr "方法列表:" + +#: tools/editor/call_dialog.cpp +msgid "Arguments:" +msgstr "参数:" + +#: tools/editor/call_dialog.cpp +msgid "Return:" +msgstr "返回:" + +#: tools/editor/pvrtc_compress.cpp +msgid "Could not execute PVRTC tool:" +msgstr "无法执行PVPTC工具:" + +#: tools/editor/pvrtc_compress.cpp +msgid "Can't load back converted image using PVRTC tool:" +msgstr "无法加载使用PVRTC工具转换的图片:" + +#: tools/editor/array_property_edit.cpp +msgid "Resize Array" +msgstr "修改数组大小" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value Type" +msgstr "修改数组类型" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value" +msgstr "修改数组值" + +#: tools/editor/editor_help.cpp +msgid "Search Classes" +msgstr "搜索类型" + +#: tools/editor/editor_help.cpp +msgid "Class List:" +msgstr "类型列表" + +#: tools/editor/editor_help.cpp +msgid "Inherited by:" +msgstr "派生类:" + +#: tools/editor/editor_help.cpp +msgid "Brief Description:" +msgstr "简介:" + +#: tools/editor/editor_help.cpp +msgid "Public Methods:" +msgstr "公共方法:" + +#: tools/editor/editor_help.cpp +msgid "Members:" +msgstr "成员:" + +#: tools/editor/editor_help.cpp +msgid "GUI Theme Items:" +msgstr "GUI主题:" + +#: tools/editor/editor_help.cpp +msgid "Signals:" +msgstr "事件:" + +#: tools/editor/editor_help.cpp +msgid "Constants:" +msgstr "常量:" + +#: tools/editor/editor_help.cpp +msgid "Method Description:" +msgstr "方法描述:" + +#: tools/editor/editor_help.cpp +msgid "Search Text" +msgstr "搜索文本" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, the path must exist!" +msgstr "项目目录不存在!" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must not exist." +msgstr "项目目录下必须包含engin.cfg文件。" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must exist." +msgstr "项目目录下必须包含engin.cfg文件。" + +#: tools/editor/project_manager.cpp +msgid "Imported Project" +msgstr "已导入的项目" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "项目路径非法(被外部修改?)。" + +#: tools/editor/project_manager.cpp +msgid "Couldn't create engine.cfg in project path." +msgstr "无法在项目目录下创建engine.cfg文件。" + +#: tools/editor/project_manager.cpp +msgid "Import Existing Project" +msgstr "导入现有项目" + +#: tools/editor/project_manager.cpp +msgid "Project Path (Must Exist):" +msgstr "项目目录(必须存在)" + +#: tools/editor/project_manager.cpp +msgid "Project Name:" +msgstr "项目名称:" + +#: tools/editor/project_manager.cpp +msgid "Create New Project" +msgstr "新建项目" + +#: tools/editor/project_manager.cpp +msgid "Project Path:" +msgstr "项目目录" + +#: tools/editor/project_manager.cpp +msgid "Browse" +msgstr "浏览" + +#: tools/editor/project_manager.cpp +msgid "New Game Project" +msgstr "新建游戏项目" + +#: tools/editor/project_manager.cpp +msgid "That's a BINGO!" +msgstr "碉堡了!" + +#: tools/editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "未命名项目" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to open more than one projects?" +msgstr "您确定要打开多个项目吗?" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to run more than one projects?" +msgstr "您确定要执行多个项目吗?" + +#: tools/editor/project_manager.cpp +msgid "Remove project from the list? (Folder contents will not be modified)" +msgstr "移除此项目(项目的文件不受影响)" + +#: tools/editor/project_manager.cpp +msgid "Recent Projects:" +msgstr "最近打开的项目:" + +#: tools/editor/project_manager.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit" +msgstr "编辑" + +#: tools/editor/project_manager.cpp +msgid "Run" +msgstr "运行" + +#: tools/editor/project_manager.cpp +msgid "Scan" +msgstr "扫描" + +#: tools/editor/project_manager.cpp +msgid "New Project" +msgstr "新建" + +#: tools/editor/project_manager.cpp +msgid "Exit" +msgstr "退出" + +#: tools/editor/scene_tree_dock.cpp +msgid "OK :(" +msgstr "好吧" + +#: tools/editor/scene_tree_dock.cpp +msgid "No parent to instance a child at." +msgstr "没有选中节点来添加实例。" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "从%s加载场景出错!" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "从%s实例化场景出错!" + +#: tools/editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "好的" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one of " +"its nodes." +msgstr "无法实例化场景%s当前场景已存在于它的子节点中。" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "实例化场景" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "此操作不能被用于根节点。" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "在父节点中移动" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "在父节点中移动多个节点" + +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate Node(s)" +msgstr "复制节点" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)?" +msgstr "确定要删除节点吗?" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done without a scene." +msgstr "此操作必须在打开一个场景后才能执行。" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "此操作只能应用于单个选中节点。" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "此操作不能应用于实例化的场景。" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save New Scene As.." +msgstr "将新场景另存为.." + +#: tools/editor/scene_tree_dock.cpp +msgid "Makes Sense!" +msgstr "有道理!" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "无法操作外部场景的节点!" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "无法操作此节点,因为当前场景继承自该节点!" + +#: tools/editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "移除节点" + +#: tools/editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "新节点" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "无法保存场景,场景或其实例的的依赖存在问题。" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "保存场景出错。" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "复制场景出错。" + +#: tools/editor/scene_tree_dock.cpp +msgid "New Scene Root" +msgstr "创建场景根节点" + +#: tools/editor/scene_tree_dock.cpp +msgid "Inherit Scene" +msgstr "继承场景" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "添加子节点" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "实例化子场景" + +#: tools/editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "更改类型" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Groups" +msgstr "编辑分组" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Connections" +msgstr "编辑事件连接" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Script" +msgstr "添加脚本" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Up" +msgstr "向上移动" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Down" +msgstr "向下移动" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate" +msgstr "拷贝" + +#: tools/editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "从场景中合并" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save Branch as Scene" +msgstr "将分支保存为场景" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "删除节点" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add/Create a New Node" +msgstr "添加/创建节点" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "实例化场景文件为一个节点,如果没有根节点则创建一个继承自该文件的场景。" + +#: tools/editor/create_dialog.cpp +msgid "Create New" +msgstr "新建" + +#: tools/editor/plugins/rich_text_editor_plugin.cpp +msgid "Parse BBCode" +msgstr "解析BBCode" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Open Sample File(s)" +msgstr "打开声音文件" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "ERROR: Couldn't load sample!" +msgstr "错误:无法加载音效!" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Add Sample" +msgstr "添加音效" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stop" +msgstr "停止" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Play" +msgstr "播放" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Rename Sample" +msgstr "重命名音效" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Delete Sample" +msgstr "删除音效" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "16 Bits" +msgstr "16位" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "8 Bits" +msgstr "8位" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stereo" +msgstr "立体声" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Mono" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/camera_editor_plugin.cpp +msgid "Preview" +msgstr "预览" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Pitch" +msgstr "" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Poly3D" +msgstr "" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Edit Poly" +msgstr "编辑多边形" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "编辑多边形(移除顶点)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "切换AutoPlay" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "新动画名称:" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "新建动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "重命名动画:" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Remove Animation" +msgstr "移除动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Invalid animation name!" +msgstr "错误:动画名不合法!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Animation name already exists!" +msgstr "错误:已存在同名动画!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Rename Animation" +msgstr "重命名动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Animation" +msgstr "添加动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "更改混合时间" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "加载动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "复制动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to copy!" +msgstr "错误:没有拷贝的动画!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation resource on clipboard!" +msgstr "错误:剪切板中没有动画资源!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "已粘贴的动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "粘贴动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to edit!" +msgstr "错误:没有选中要编辑的动画!" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "从当前位置倒放选中动画(A)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "从结束时间倒放选中动画(Shift+A)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "从头播放选中动画(Shift+D)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "从当前位置播放选中动画(D)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "动画位置(单位:秒)" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create new animation in player." +msgstr "在播放中创建动画。" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load an animation from disk." +msgstr "从磁盘中加载动画。" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save the current animation" +msgstr "保存当前动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "在播放器中显示动画列表。" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "加载后自动播放" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Target Blend Times" +msgstr "编辑目标混合时间" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "动画工具" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Copy Animation" +msgstr "拷贝动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "创建新动画" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "动画名称:" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Times:" +msgstr "混合时间:" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Next (Auto Queue):" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Cross-Animation Blend Times" +msgstr "跨动画时间混合" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation" +msgstr "动画" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Poly" +msgstr "创建多边形" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "添加遮光多边形" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create a new polygon from scratch." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Edit existing polygon:" +msgstr "编辑已存在的多边形:" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "LMB: Move Point." +msgstr "鼠标左键:移动点" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Ctrl+LMB: Split Segment." +msgstr "Ctrl+鼠标左键:分割视图块" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "RMB: Erase Point." +msgstr "鼠标右键:移除点" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "网格偏移量:" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid Step:" +msgstr "网格大小:" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "旋转偏移量:" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +msgstr "旋转步长:" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Pivot" +msgstr "移动旋转中心位置" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Action" +msgstr "移动动作" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit IK Chain" +msgstr "编辑IK链" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit CanvasItem" +msgstr "编辑CanvasItem" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors" +msgstr "编辑锚点" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom (%):" +msgstr "缩放(%)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Paste Pose" +msgstr "粘贴姿势" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Select Mode (Q)" +msgstr "选择模式(Q)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Drag: Rotate" +msgstr "拖动来旋转" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Move" +msgstr "按住Alt拖动: 移动" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." +msgstr "按下V键修改旋转中心,在移动时按下Shift+V来拖动它。" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+RMB: Depth list selection" +msgstr "Alt+鼠标右键:显示鼠标点击位置下的所有节点列表" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Move Mode (W)" +msgstr "移动模式(W)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode (E)" +msgstr "旋转模式(E)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "显示鼠标点击位置的所有节点(同Alt+鼠标右键)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "点击设置对象的旋转中心。" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "移动画布" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "锁定选中对象的位置。" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "解锁选中对象的位置。" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Makes sure the object's children are not selectable." +msgstr "确保节点的子孙无法被选中。" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "恢复节点的子孙能够被选中。" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Show Grid" +msgstr "显示网格" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap Relative" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Pixel Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Expand to Parent" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Skeleton.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Bones" +msgstr "添加骨骼" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "清除骨骼" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make IK Chain" +msgstr "添加IK链" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear IK Chain" +msgstr "清除IK链" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "视图" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom In" +msgstr "放大" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Out" +msgstr "缩小" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Reset" +msgstr "重置缩放" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Set.." +msgstr "设置缩放.." + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "居中显示选中节点" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "最大化显示选中节点" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Anchor" +msgstr "锚点" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Keys (Ins)" +msgstr "插入关键帧( 创建轨道)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "插入关键帧" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "插入关键帧(已有轨道)" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "拷贝姿势" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "清除姿势" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Set a Value" +msgstr "设置值" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap (Pixels):" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "绘制砖块地图" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "擦除砖块地图" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "选择砖块" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "选择" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase Selection" +msgstr "擦除选中" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "转置" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror X (A)" +msgstr "沿X轴翻转(A)" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror Y (S)" +msgstr "沿Y轴翻转(S)" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 0 degrees" +msgstr "旋转0度" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 90 degrees" +msgstr "旋转90度" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 180 degrees" +msgstr "旋转180度" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 270 degrees" +msgstr "旋转270度" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "New name:" +msgstr "新名称:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "缩放" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Restart (s):" +msgstr "重新开始(秒):" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "随机开始(秒):" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Start!" +msgstr "开始!" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "数量:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend:" +msgstr "混合:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 0:" +msgstr "混合0:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 1:" +msgstr "混合1:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Current:" +msgstr "当前:" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Add Input" +msgstr "添加输入事件" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Delete Input" +msgstr "删除输入事件" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Rename" +msgstr "重命名" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "动画树可用。" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "动画树不可用。" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation Node" +msgstr "动画节点" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "OneShot Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Import Animations.." +msgstr "导入动画" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "编辑节点筛选" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Filters.." +msgstr "筛选.." + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Parent has no solid faces to populate." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Couldn't map area." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Source Mesh:" +msgstr "选择源Mesh:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate Surface" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate MultiMesh" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Source Mesh:" +msgstr "源Mesh:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "X-Axis" +msgstr "X轴" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Y-Axis" +msgstr "Y轴" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Z-Axis" +msgstr "Z轴" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh Up Axis:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Rotation:" +msgstr "随机旋转:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Tilt:" +msgstr "随机砖块:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Scale:" +msgstr "随机缩放:" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find.." +msgstr "查找.." + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find Next" +msgstr "查找下一项" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find Previous" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Replace.." +msgstr "替换.." + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Line.." +msgstr "前往行.." + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Vertex" +msgstr "顶点" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Fragment" +msgstr "片段" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Lighting" +msgstr "光照" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Can't save theme to file:" +msgstr "无法保存主题到文件:" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Item" +msgstr "添加项目" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All Items" +msgstr "添加所有项目" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All" +msgstr "添加所有" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Item" +msgstr "移除项目" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add Class Items" +msgstr "添加类项目" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove Class Items" +msgstr "移除类项目" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Template" +msgstr "创建模板" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Check Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Checked Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Has" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Many" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Have,Many,Several,Options!" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 1" +msgstr "分页1" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 2" +msgstr "分页2" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 3" +msgstr "分页3" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Data Type:" +msgstr "数据类型:" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Icon" +msgstr "图标" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Style" +msgstr "样式" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font" +msgstr "字体" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Color" +msgstr "颜色" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "BakedLightInstance does not contain a BakedLight resource." +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Bake!" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Reset the lightmap octree baking process (start over)." +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing %d Triangles:" +msgstr "正在解析第%d个三角形:" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Triangle #" +msgstr "三角形 #" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Light Baker Setup:" +msgstr "建立烘培:" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing Geometry" +msgstr "解析多边形中" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Fixing Lights" +msgstr "修正光照" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Making BVH" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Light Octree" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Octree Texture" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Transfer to Lightmaps:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Allocating Texture #" +msgstr "分配纹理 #" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Baking Triangle #" +msgstr "烘培三角形 #" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Post-Processing Texture #" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "正交" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "透视" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "已忽略变换。" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "X轴变换。" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "Y轴变换。" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "Z轴变换。" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling to %s%%." +msgstr "缩放到%s%%" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "旋转%s度" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top (Num7)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom (Shift+Num7)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left (Num3)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right (Shift+Num3)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front (Num1)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear (Shift+Num1)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective (Num5)" +msgstr "透视(Num5)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal (Num5)" +msgstr "正交(Num5)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Environment" +msgstr "环境" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Selection (F)" +msgstr "选中项(F)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view (Ctrl+Shift+F)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "XForm Dialog" +msgstr "XForm对话框" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "No scene selected to instance!" +msgstr "没有选用要实例化的场景!" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Instance at Cursor" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Could not instance scene!" +msgstr "无法实例化场景!" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode (R)" +msgstr "缩放模式(R)" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "Transform" +msgstr "变换类型" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Local Coords" +msgstr "本地坐标" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog.." +msgstr "变换对话框.." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default Light" +msgstr "使用默认光照" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default sRGB" +msgstr "使用默认sRGB" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "2 Viewports" +msgstr "Viewport设置" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "3 Viewports" +msgstr "Viewport设置" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +#, fuzzy +msgid "4 Viewports" +msgstr "Viewport设置" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "显示法线" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "显示线框" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Shadeless" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "显示原点" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "显示网格" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "Viewport设置" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Default Light Normal:" +msgstr "默认光照法线:" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Ambient Light Color:" +msgstr "环境光颜色:" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "透视视角(角度):" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "查看Z-Near" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "查看Z-Far" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "修改变换" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "移动:" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "旋转(角度):" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "缩放(比率):" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "变换类型" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme" +msgstr "保存主题出错。" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error saving" +msgstr "保存出错" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing theme" +msgstr "导入主题出错。" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing" +msgstr "导入出错" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Import Theme" +msgstr "导入主题" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As.." +msgstr "主题另存为" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "全部保存" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Prev" +msgstr "后退" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "前进" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload Theme" +msgstr "重新加载主题" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme" +msgstr "保存主题" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As" +msgstr "主题另存为" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Left" +msgstr "向左缩进" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Right" +msgstr "向右缩进" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Comment" +msgstr "切换注释" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Clone Down" +msgstr "拷贝到下一行" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Complete Symbol" +msgstr "代码补全" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Trim Trailing Whitespace" +msgstr "修剪行后空白" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Auto Indent" +msgstr "自动缩进" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Function.." +msgstr "前往函数.." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debug" +msgstr "调试" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Breakpoint" +msgstr "切换断点" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Remove All Breakpoints" +msgstr "切换断点" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Goto Next Breakpoint" +msgstr "前往下一步" + +#: tools/editor/plugins/script_editor_plugin.cpp +#, fuzzy +msgid "Goto Previous Breakpoint" +msgstr "切换断点" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Keep Debugger Open" +msgstr "保持调试器打开" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Window" +msgstr "窗口" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Left" +msgstr "向左移动" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Right" +msgstr "向右移动" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Help" +msgstr "帮助" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Contextual" +msgstr "搜索光标位置" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Tutorials" +msgstr "教程" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Open https://godotengine.org at tutorials section." +msgstr "打开 https://godotengine.org 中的教程." + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Classes" +msgstr "类型" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the class hierarchy." +msgstr "搜索类" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "搜索帮助" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the reference documentation." +msgstr "搜索文档" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "前往上一个编辑文档" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "前往下一个编辑文档" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "创建脚本" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" +"磁盘中的下列文件已更新。\n" +"请选择执行那项操作?:" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload" +msgstr "重新加载" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Resave" +msgstr "重新保存" + +#: tools/editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox Preview:" +msgstr "StyleBox预览:" + +#: tools/editor/plugins/sample_editor_plugin.cpp +msgid "Length:" +msgstr "长度:" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Toggle Rot Only" +msgstr "切换旋转模式" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Default Value" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change XForm Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Texture Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Cubemap Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Comment" +msgstr "更改注释" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Color Ramp" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Modify Color Ramp" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Input Name" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Connect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Disconnect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Remove Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Move Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Duplicate Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Delete Shader Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Cyclic Connection Link" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Missing Input Connections" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Convex Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "此操作无法引用在根节点上!" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh.." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "创建UV贴图" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "变换UV贴图" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "2D多边形UV编辑器" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Point" +msgstr "移动点" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "Ctrl:旋转" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "Shift: 移动所有" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "Shift+Ctrl: 缩放" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "移动多边形" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "旋转多边形" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "缩放多边形" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon->UV" +msgstr "多边形->UV" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV->Polygon" +msgstr "UV->多边形" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "清除UV" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Enable Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid" +msgstr "网格" + +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Set region_rect" +msgstr "设置纹理区域" + +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Sprite Region Editor" +msgstr "精灵纹理区域编辑" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "错误:无法加载资源!" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "添加资源" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "重命名资源" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Resource" +msgstr "删除资源" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "资源剪切板中无内容!" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Load Resource" +msgstr "加载资源" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "错误:无法加载帧资源!" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "添加帧" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "资源剪切板中无内容,或内容不是纹理贴图!" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "粘贴帧" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "添加空白帧" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation Loop" +msgstr "修改循环" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "修改FPS" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "(空)" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations" +msgstr "动画" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed (FPS):" +msgstr "速度(FPS)" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Loop" +msgstr "循环" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames" +msgstr "动画帧" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (Before)" +msgstr "插入空白帧(之前)" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (After)" +msgstr "插入空白帧(之后)" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Up" +msgstr "向上" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Down" +msgstr "向下" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "创建导航多边形" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Remove Poly And Point" +msgstr "移除多边形及顶点" + +#: tools/editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "加载图片出错:" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image.." +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Set Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Creating Mesh Library" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Thumbnail.." +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "确定要移除项目%d吗?" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Scene" +msgstr "导入场景" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "移除选中项目" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import from Scene" +msgstr "从场景中导入" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Update from Scene" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry (faces)." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Faces contain no area!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "No faces!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Generate AABB" +msgstr "生成AABB" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Mesh" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Node" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Clear Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Positions:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Fill:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Surface" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "第%d项" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "项目" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "列表编辑器" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Add/Remove Color Ramp Point" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "曲线定点 #" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Pos" +msgstr "设置曲线顶点坐标" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "向曲线添加顶点" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "移除路径顶点" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Points" +msgstr "选择顶点" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "Shift+拖拽:选择控制点" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "鼠标左键:添加点" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "鼠标右键:删除点" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Delete Point" +msgstr "删除顶点" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Close Curve" +msgstr "关闭曲线" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Could not find tile:" +msgstr "找不到砖块:" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Item name or ID:" +msgstr "项目名称或ID" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene?" +msgstr "从场景中创建?" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "确定要合并场景?" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "从场景中创建" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "从场景中合并" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "从曲线中移除顶点" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "在曲线中移动顶点" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Uncompressed" +msgstr "不压缩" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossless (PNG)" +msgstr "无损压缩(PNG)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossy (WebP)" +msgstr "有损压缩(WebP)" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress (VRAM)" +msgstr "VRAM压缩" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Format" +msgstr "纹理格式" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Compression Quality (WebP):" +msgstr "高质量(WebP)压缩方式:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Options" +msgstr "纹理选项" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Please specify some files!" +msgstr "请添加文件!" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path is empty." +msgstr "目标路径为空。" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path must be a complete resource path." +msgstr "目标路径必须是一个完整的资源文件路径。" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path must exist." +msgstr "目标路径必须存在。" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "At least one file needed for Atlas." +msgstr "精灵集至少需要一个文件。" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Error importing:" +msgstr "导入出错:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Only one file is required for large texture." +msgstr "大图导入仅支持一个输入文件。" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Max Texture Size:" +msgstr "最大纹理尺寸:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for Atlas (2D)" +msgstr "导入2D精灵集" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cell Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Large Texture" +msgstr "大图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Textures (2D)" +msgstr "导入2D大图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture" +msgstr "源贴图:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Base Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s)" +msgstr "源贴图:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 2D" +msgstr "导入2D贴图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 3D" +msgstr "导入3D贴图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures" +msgstr "导入贴图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "2D Texture" +msgstr "2D贴图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "3D Texture" +msgstr "3D贴图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Atlas Texture" +msgstr "精灵图集" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "" +"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " +"the project." +msgstr "" +"提示:大多数2D贴图并不需要导入操作,只要将png/jpg文件放到项目目录下即可。" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s):" +msgstr "源贴图:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Crop empty space." +msgstr "切除空白区域。" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Target Path:" +msgstr "目标路径:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Accept" +msgstr "接受" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture" +msgstr "贴图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Texture" +msgstr "导入大图" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Load Source Image" +msgstr "加载源图片" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Slicing" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Inserting" +msgstr "插入中" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Saving" +msgstr "正在保存文件" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save large texture:" +msgstr "无法保存大图:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Build Atlas For:" +msgstr "使用以下图片生成精灵集:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Loading Image:" +msgstr "加载图片中:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't load image:" +msgstr "无法加载图片:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Converting Images" +msgstr "正在转换图片" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cropping Images" +msgstr "剪裁图片" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Blitting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save atlas image:" +msgstr "无法保存精灵集图片:" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save converted texture:" +msgstr "无法保存转换的贴图:" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid source!" +msgstr "输入源非法!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid translation source!" +msgstr "源语言文件非法!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Column" +msgstr "列" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No items to import!" +msgstr "没有要导入的项目!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No target path!" +msgstr "目标路径为空!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translations" +msgstr "导入多种语言翻译" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Couldn't import!" +msgstr "无法导入!" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translation" +msgstr "导入语言翻译" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Source CSV:" +msgstr "源CSV文件:" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Ignore First Row" +msgstr "忽略第一行" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Compress" +msgstr "压缩" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Add to Project (engine.cfg)" +msgstr "添加到项目(engine.cfg)" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Languages:" +msgstr "导入语言:" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Translation" +msgstr "语言" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "New Clip" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Animation Options" +msgstr "动画选项" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Flags" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Bake FPS:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Optimizer" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Linear Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angular Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angle" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Clips" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Start(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "End(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Filters" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source path is empty." +msgstr "源路径为空。" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error importing scene." +msgstr "导入场景出错。" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import 3D Scene" +msgstr "导入3D场景" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source Scene:" +msgstr "源场景:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Same as Target Scene" +msgstr "与目标场景相同" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Shared" +msgstr "共享的" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Target Texture Folder:" +msgstr "目标贴图目录:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Options:" +msgstr "选项:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Post-Process Script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Custom Root Node Type:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy +msgid "Auto" +msgstr "AutoLoad" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "The Following Files are Missing:" +msgstr "找不到下列文件:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Anyway" +msgstr "仍然导入" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import & Open" +msgstr "导入|打开" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Edited scene has not been saved, open imported scene anyway?" +msgstr "正在编辑的场景尚未保存,仍然要打开导入的场景吗?" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Importing Scene.." +msgstr "导入场景" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Running Custom Script.." +msgstr "执行自定义脚本.." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error running post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Image:" +msgstr "导入图片:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Can't import a file over itself:" +msgstr "不允许导入文件本身:" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't localize path: %s (already local)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Saving.." +msgstr "保存中..." + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "3D Scene Animation" +msgstr "3D场景动画" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No source font file!" +msgstr "请设置源字体文件!" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No target font resource!" +msgstr "请设置目标字体资源!" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Can't load/process source font." +msgstr "无法加载/处理源字体。" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Couldn't save font." +msgstr "无法保存字体。" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font:" +msgstr "源字体文件:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font Size:" +msgstr "源字体大小:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Dest Resource:" +msgstr "目标资源:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "The quick brown fox jumps over the lazy dog." +msgstr "" +"The quick brown fox jumps over the lazy dog.\n" +"我能吞下玻璃而不伤身体。" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Test:" +msgstr "测试:" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font Import" +msgstr "导入字体" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"This file is already a Godot font file, please supply a BMFont type file " +"instead." +msgstr "此文件已经是一个Godot的字体文件,请提供一个位图字体(BMFont)文件。" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Failed opening as BMFont file." +msgstr "打开位图字体失败。" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font custom source." +msgstr "自定义字体文件非法。" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "No samples to import!" +msgstr "没有音效要导入!" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Save path is empty!" +msgstr "保存路径为空!" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Import Audio Samples" +msgstr "导入声音文件" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Source Sample(s):" +msgstr "源音效文件:" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Audio Sample" +msgstr "音效" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "No meshes to import!" +msgstr "没有要导入的Mesh" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Single Mesh Import" +msgstr "导入单个Mesh" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Source Mesh(es):" +msgstr "源Mesh:" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Mesh" +msgstr "Mesh" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Surface %d" +msgstr "" + +#~ msgid "Keep Existing, Merge with New" +#~ msgstr "保留已有,与新的合并。" + +#~ msgid "Keep Existing, Ignore New" +#~ msgstr "保留已有,忽略新的。" + +#~ msgid "" +#~ "NOTICE: You are not forced to import textures for 2D projects. Just copy " +#~ "your .jpg or .png files to your project, and change export options later. " +#~ "Atlases can be generated on export too." +#~ msgstr "" +#~ "注意:对于大多数2D纹理图片,一般不需要导入操作。只需要将.jpg或.png文件放到" +#~ "项目目录下,并存导出选项即可。精灵集也可以在导出时生成。" diff --git a/tools/translations/zh_HK.po b/tools/translations/zh_HK.po new file mode 100644 index 0000000000..8639e619b3 --- /dev/null +++ b/tools/translations/zh_HK.po @@ -0,0 +1,5832 @@ +# LANGUAGE translation of the Godot Engine editor +# Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community +# This file is distributed under the same license as the Godot source code. +# Wesley <ZX_WT@ymail.com>, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"PO-Revision-Date: 2016-05-30 16:42+0800\n" +"Last-Translator: Wesley <ZX_WT@ymail.com>\n" +"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n" +"Language: zh_HK\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: scene/audio/sample_player.cpp scene/2d/sample_player_2d.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SamplePlayer to play sound." +msgstr "" + +#: scene/3d/body_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/body_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it!" +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "" + +#: scene/3d/scenario_fx.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "" + +#: scene/3d/spatial_sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SpatialSamplePlayer to play sound." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "" +"NavigationMeshInstance must be a child or grandchild to a Navigation node. It " +"only provides navigation data." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error initializing FreeType." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Unknown font format." +msgstr "不明字形格式" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error loading font." +msgstr "載入字形出現錯誤" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font size." +msgstr "無效字型" + +#: scene/2d/particles_2d.cpp +msgid "Path property must point to a valid Particles2D node to work." +msgstr "" + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" + +#: scene/2d/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnable2D works best when used with the edited scene root directly " +"as parent." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" + +#: scene/2d/sprite.cpp +msgid "" +"Path property must point to a valid Viewport node to work. Such Viewport must " +"be set to 'render target' mode." +msgstr "" + +#: scene/2d/sprite.cpp +msgid "" +"The Viewport set in the path property must be set as 'render target' in order " +"for this sprite to work." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "" + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "" + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" + +#: scene/2d/animated_sprite.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite to display frames." +msgstr "" + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the 'texture' " +"property." +msgstr "" + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine though, but they will hide " +"upon running." +msgstr "" + +#: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Cancel" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "OK" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Cut" +msgstr "剪下" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/resources_dock.cpp tools/editor/property_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Copy" +msgstr "複製" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/resources_dock.cpp tools/editor/property_editor.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste" +msgstr "貼上" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/project_export.cpp tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Select All" +msgstr "全選" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_log.cpp +#: tools/editor/property_editor.cpp +#: tools/editor/plugins/rich_text_editor_plugin.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear" +msgstr "清空" + +#: scene/gui/text_edit.cpp scene/gui/line_edit.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Undo" +msgstr "復原" + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Edit Script Options" +msgstr "編輯腳本選項" + +#: tools/editor/project_export.cpp +msgid "Please export outside the project folder!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error exporting project!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error writing the project PCK!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "No exporter for platform '%s' yet." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Include" +msgstr "包括" + +#: tools/editor/project_export.cpp +msgid "Change Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name can't be empty!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Invalid character in group name!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name already exists!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Add Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Delete Image Group" +msgstr "" + +#: tools/editor/project_export.cpp tools/editor/editor_import_export.cpp +msgid "Error saving atlas:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas Preview" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export Settings" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Target" +msgstr "目標" + +#: tools/editor/project_export.cpp +msgid "Export to Platform" +msgstr "" + +#: tools/editor/project_export.cpp tools/editor/plugins/theme_editor_plugin.cpp +msgid "Options" +msgstr "選項" + +#: tools/editor/project_export.cpp +msgid "Resources" +msgstr "資源" + +#: tools/editor/project_export.cpp +msgid "Export selected resources (including dependencies)." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all resources in the project." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all files in the project directory." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Resources to Export:" +msgstr "" + +#: tools/editor/project_export.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "File" +msgstr "檔案" + +#: tools/editor/project_export.cpp +msgid "Action" +msgstr "行為" + +#: tools/editor/project_export.cpp +msgid "" +"Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert text scenes to binary on export." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images" +msgstr "圖片" + +#: tools/editor/project_export.cpp +msgid "Keep Original" +msgstr "保持原貌" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy, WebP)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for RAM (BC/PVRTC/ETC)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert Images (*.png):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy) Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink All Images:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Formats:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Groups" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Groups:" +msgstr "" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Default" +msgstr "預設" + +#: tools/editor/project_export.cpp +msgid "Compress Disk" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress RAM" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Lossy Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink By:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Preview Atlas" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Filter:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images:" +msgstr "圖片:" + +#: tools/editor/project_export.cpp +msgid "Select None" +msgstr "不選" + +#: tools/editor/project_export.cpp tools/editor/groups_editor.cpp +msgid "Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Samples" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sample Conversion Mode: (.wav files):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Keep" +msgstr "保留" + +#: tools/editor/project_export.cpp +msgid "Compress (RAM - IMA-ADPCM)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sampling Rate Limit (Hz):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trim" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trailing Silence:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script" +msgstr "腳本" + +#: tools/editor/project_export.cpp +msgid "Script Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Text" +msgstr "文字" + +#: tools/editor/project_export.cpp +msgid "Compiled" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script Encryption Key (256-bits as hex):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Export Project" +msgstr "" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Password:" +msgstr "密碼:" + +#: tools/editor/project_export.cpp +msgid "Export Project PCK" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export.." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Preset:" +msgstr "" + +#: tools/editor/project_export.cpp tools/editor/editor_node.cpp +msgid "Export" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Go to Line" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Line Number:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "No Matches" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d Ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace" +msgstr "替換" + +#: tools/editor/code_editor.cpp +msgid "Replace All" +msgstr "全部替換" + +#: tools/editor/code_editor.cpp +msgid "Match Case" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Whole Words" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Selection Only" +msgstr "只限選中" + +#: tools/editor/code_editor.cpp tools/editor/project_settings.cpp +#: tools/editor/addon_editor_plugin.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +msgid "Find" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Next" +msgstr "下一個" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Not found!" +msgstr "找不到!" + +#: tools/editor/code_editor.cpp +msgid "Replace By" +msgstr "替換為" + +#: tools/editor/code_editor.cpp +msgid "Case Sensitive" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Backwards" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Prompt On Replace" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Skip" +msgstr "跳過" + +#: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Line:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Col:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Method in target Node must be specified!" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect To Node:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Binds (Extra Params):" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/project_settings.cpp +#: tools/editor/groups_editor.cpp tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Add" +msgstr "添加" + +#: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp +#: tools/editor/project_manager.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove" +msgstr "移除" + +#: tools/editor/connections_dialog.cpp +msgid "Path To Node:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Method In Node:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Make Function" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Deferred" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Oneshot" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/settings_config_dialog.cpp +#: tools/editor/import_settings.cpp tools/editor/run_settings_dialog.cpp +#: tools/editor/project_settings.cpp tools/editor/groups_editor.cpp +#: tools/editor/property_editor.cpp tools/editor/addon_editor_plugin.cpp +#: tools/editor/call_dialog.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Close" +msgstr "關閉" + +#: tools/editor/connections_dialog.cpp +msgid "Connect" +msgstr "連到" + +#: tools/editor/connections_dialog.cpp +msgid "Connect '%s' to '%s'" +msgstr "由 '%s' 連到 '%s'" + +#: tools/editor/connections_dialog.cpp +msgid "Create Subscription" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect.." +msgstr "連到..." + +#: tools/editor/connections_dialog.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Disconnect" +msgstr "中斷" + +#: tools/editor/connections_dialog.cpp +msgid "Edit Connections.." +msgstr "編輯連接" + +#: tools/editor/connections_dialog.cpp +msgid "Connections:" +msgstr "連接" + +#: tools/editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "場景路徑" + +#: tools/editor/editor_sub_scene.cpp +msgid "Import From Node:" +msgstr "" + +#: tools/editor/settings_config_dialog.cpp tools/editor/editor_node.cpp +msgid "Editor Settings" +msgstr "編輯器設定" + +#: tools/editor/settings_config_dialog.cpp tools/editor/project_settings.cpp +msgid "General" +msgstr "" + +#: tools/editor/settings_config_dialog.cpp tools/editor/quick_open.cpp +#: tools/editor/addon_editor_plugin.cpp tools/editor/editor_node.cpp +#: tools/editor/editor_help.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search:" +msgstr "" + +#: tools/editor/settings_config_dialog.cpp tools/editor/project_settings.cpp +#: tools/editor/addon_editor_plugin.cpp +msgid "Plugins" +msgstr "插件" + +#: tools/editor/settings_config_dialog.cpp +msgid "Plugin List:" +msgstr "插件列表:" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "選擇資料夾" + +#: tools/editor/editor_dir_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Create Folder" +msgstr "新增資料夾" + +#: tools/editor/editor_dir_dialog.cpp tools/editor/editor_plugin_settings.cpp +#: tools/editor/editor_file_dialog.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Name:" +msgstr "名稱" + +#: tools/editor/editor_dir_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Could not create folder." +msgstr "無法新增資料夾" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose" +msgstr "選擇" + +#: tools/editor/editor_file_system.cpp +msgid "Cannot go into subdir:" +msgstr "無法進入次要資料夾" + +#: tools/editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will not take effect unless reloaded." +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will take effect when reloaded." +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Resource" +msgstr "資源" + +#: tools/editor/dependency_editor.cpp tools/editor/project_settings.cpp +#: tools/editor/project_manager.cpp +msgid "Path" +msgstr "路徑" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Broken" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependency Editor" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement Resource:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Remove selected files from the project? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "載入錯誤:" + +#: tools/editor/dependency_editor.cpp +msgid "Scene failed to load due to missing dependencies:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Open Anyway" +msgstr "照常開啓" + +#: tools/editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "載入錯誤!" + +#: tools/editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Owns" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +msgid "Orphan Resource Explorer" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Delete selected files?" +msgstr "要刪除選中檔案?" + +#: tools/editor/dependency_editor.cpp tools/editor/scenes_dock.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Delete" +msgstr "刪除" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Light Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera FOV" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera Size" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Notifier Extents" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid parent class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid chars:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid name" +msgstr "有效名稱" + +#: tools/editor/script_create_dialog.cpp +msgid "N/A" +msgstr "N/A" + +#: tools/editor/script_create_dialog.cpp +msgid "Class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Parent class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid path!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Could not create script in filesystem." +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is empty" +msgstr "路徑為空" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is not local" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid base path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "File exists" +msgstr "檔案已存在" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid extension" +msgstr "無效副檔名" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid path" +msgstr "有效路徑" + +#: tools/editor/script_create_dialog.cpp +msgid "Class Name:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/editor_help.cpp +msgid "Inherits:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Language" +msgstr "語言" + +#: tools/editor/script_create_dialog.cpp tools/editor/property_editor.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Error!" +msgstr "錯誤!" + +#: tools/editor/script_create_dialog.cpp +msgid "Built-In Script" +msgstr "" + +#: tools/editor/script_create_dialog.cpp tools/editor/project_settings.cpp +#: tools/editor/editor_file_dialog.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Path:" +msgstr "路徑" + +#: tools/editor/script_create_dialog.cpp +msgid "Create Node Script" +msgstr "" + +#: tools/editor/script_create_dialog.cpp tools/editor/animation_editor.cpp +#: tools/editor/project_manager.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create" +msgstr "新增" + +#: tools/editor/animation_editor.cpp +msgid "Disabled" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "All Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Add Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transition" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transform" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Value" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Call" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Up" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Down" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove Anim Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Set Transitions to:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Rename" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Interpolation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Value Mode" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Node Curve" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Selection Curve" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Delete Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Move Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale From Cursor" +msgstr "" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Duplicate Transposed" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Goto Next Step" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Goto Prev Step" +msgstr "" + +#: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp +msgid "Linear" +msgstr "" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "In-Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out-In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Transitions" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Optimize Animation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create & Insert" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Len" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create Typed Value Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Scale Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Call Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Animation zoom." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Length (s):" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Animation length (in seconds)." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Step (s):" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Cursor step snap (in seconds)." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable looping in animation." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Add new tracks." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move current track up." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move current track down." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove selected track." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Track tools" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable editing of individual keys by clicking them." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim. Optimizer" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max. Linear Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max. Angular Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Optimize" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Transition" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale Ratio:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Call Functions in Which Node?" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove invalid keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-up all animations" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Bytes:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp tools/editor/project_settings.cpp +#: tools/editor/scene_tree_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Type:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Warning" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Error" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_help.cpp +msgid "Description:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_profiler.cpp +msgid "Time:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Error:" +msgstr "錯誤:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Source:" +msgstr "來源:" + +#: tools/editor/script_editor_debugger.cpp +msgid "Function:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors" +msgstr "錯誤" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debugger" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Child Process Connected" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp tools/editor/editor_file_dialog.cpp +msgid "File:" +msgstr "檔案" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Step Into" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Step Over" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Break" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Continue" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Previous Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Next Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Frames" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Variable" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors:" +msgstr "錯誤" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Trace (if applicable):" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Inspector" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +#, fuzzy +msgid "Live Scene Tree:" +msgstr "儲存場景" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Object Properties: " +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Profiler" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitor" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Value" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "List of Video Memory Usage by Resource:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Total:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Video Mem" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Resource Path" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Type" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Format" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Usage" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Misc" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control Type:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Edit Root:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Set From Tree" +msgstr "" + +#: tools/editor/import_settings.cpp +msgid "Imported Resources" +msgstr "" + +#: tools/editor/import_settings.cpp tools/editor/editor_reimport_dialog.cpp +#: tools/editor/editor_node.cpp +msgid "Re-Import" +msgstr "" + +#: tools/editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Key " +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Axis" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid action (anything goes but '/' or ':')." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action '%s' already exists!" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Rename Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Meta+" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Shift+" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Alt+" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Control+" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Press a Key.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Left Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Right Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Middle Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Up Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Down Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 6" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 7" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 8" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 9" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Axis Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Axis" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Erase Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Device" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Left Button." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Right Button." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Middle Button." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Up." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Down." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Toggle Persisting" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Error saving settings." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Settings saved OK." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Toggle AutoLoad Globals" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Valid characters:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing engine class name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing buit-in type name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing global constant name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Move Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Remapped Path" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resource Remap Add Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Change Resource Remap Language" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap Option" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Enable" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Project Settings (engine.cfg)" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/addon_editor_plugin.cpp +msgid "Category:" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +msgid "Property:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Del" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Copy To Platform.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Input Map" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Device:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Localization" +msgstr "本地化" + +#: tools/editor/project_settings.cpp +msgid "Translations" +msgstr "翻譯" + +#: tools/editor/project_settings.cpp +msgid "Translations:" +msgstr "翻譯:" + +#: tools/editor/project_settings.cpp +msgid "Add.." +msgstr "添加..." + +#: tools/editor/project_settings.cpp +msgid "Remaps" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resources:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remaps by Locale:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Locale" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "AutoLoad" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Node Name:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "List:" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/project_manager.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Name" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Singleton" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "" +"This item cannot be made visible because the parent is hidden. Unhide the " +"parent first." +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle Spatial Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle CanvasItem Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Editable Children" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Load As Placeholder" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear!" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Stop Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Start Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Measure:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Fixed Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Inclusive" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Self" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "" + +#: tools/editor/quick_open.cpp tools/editor/editor_help.cpp +#: tools/editor/create_dialog.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Matches:" +msgstr "" + +#: tools/editor/quick_open.cpp tools/editor/scenes_dock.cpp +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_node.cpp +#: tools/editor/editor_help.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Open" +msgstr "開啟" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Please wait for scan to complete." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Current scene must be saved to re-import." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Save & Re-Import" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp tools/editor/editor_node.cpp +msgid "Re-Importing" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import Changed Resources" +msgstr "" + +#: tools/editor/resources_dock.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Error saving resource!" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Create New Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Open Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Save Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save Resource As.." +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Resource Tools" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Make Local" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Updating Scene" +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Storing local changes.." +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Updating scene.." +msgstr "" + +#: tools/editor/file_type_cache.cpp +msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent Node" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp tools/editor/editor_node.cpp +msgid "Update" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Version:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Author:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "" + +#: tools/editor/scenes_dock.cpp tools/editor/editor_file_dialog.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination files, doing nothing." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination paths, doing nothing." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Can't move directories to within themselves." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Can't operate on '..'" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Pick New Name and Location For:" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "No files selected!" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Instance" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Edit Dependencies.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "View Owners.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Rename or Move.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Move To.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Info" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Show In File Manager" +msgstr "" + +#: tools/editor/scenes_dock.cpp tools/editor/editor_node.cpp +msgid "Re-Import.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Previous Directory" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Next Directory" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Toggle folder status as Favorite" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Instance the selected scene(s) as child of the selected node." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Move" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Added:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Removed:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Could not save atlas subtexture:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Storing File:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Packing" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Exporting for %s" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Setting Up.." +msgstr "" + +#: tools/editor/editor_settings.cpp +msgid "Default (Same as Editor)" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "File Exists, Overwrite?" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "All Recognized" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "All Files (*)" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save" +msgstr "儲存" + +#: tools/editor/editor_file_dialog.cpp +msgid "Save a File" +msgstr "儲存檔案" + +#: tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "最近:" + +#: tools/editor/editor_file_dialog.cpp +msgid "Directories & Files:" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Preview:" +msgstr "預覽" + +#: tools/editor/editor_file_dialog.cpp +msgid "Filter:" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Must use a valid extension." +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Add to Group" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Group Editor" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Node Group(s)" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Preset.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Zero" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing In-Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing Out-In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "File.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Dir.." +msgstr "" + +#: tools/editor/property_editor.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "New" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Load" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Assign" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Couldn't load image" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "" + +#: tools/editor/property_editor.cpp tools/editor/editor_help.cpp +msgid "Class:" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "On" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Properties:" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Global" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Sections:" +msgstr "" + +#: tools/editor/addon_editor_plugin.cpp tools/editor/editor_node.cpp +#: tools/editor/project_manager.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Import" +msgstr "導入" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Sort:" +msgstr "" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Reverse" +msgstr "" + +#: tools/editor/addon_editor_plugin.cpp +msgid "All" +msgstr "全部" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Site:" +msgstr "" + +#: tools/editor/addon_editor_plugin.cpp +msgid "Assets ZIP File" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Importing:" +msgstr "導入中" + +#: tools/editor/editor_node.cpp +msgid "Node From Scene" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "I see.." +msgstr "如來如此" + +#: tools/editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error while saving." +msgstr "儲存時出現錯誤" + +#: tools/editor/editor_node.cpp +msgid "Saving Scene" +msgstr "場景儲存中" + +#: tools/editor/editor_node.cpp +msgid "Analyzing" +msgstr "分析中" + +#: tools/editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Failed to load resource." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't open export templates zip." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Loading Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error trying to save layout!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Default editor layout overridden." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Restored default layout to base settings." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Params" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Set Params" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Built-In" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Sub-Resources Unique" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Current scene was never saved, please save it prior to running." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene" +msgstr "開啓場景" + +#: tools/editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Script.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Yes" +msgstr "是" + +#: tools/editor/editor_node.cpp +msgid "Close scene? (Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Scene As.." +msgstr "把場景另存為" + +#: tools/editor/editor_node.cpp +msgid "This scene has never been saved. Save before running?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Please save the scene first." +msgstr "請先儲存場景" + +#: tools/editor/editor_node.cpp +msgid "Save Translatable Strings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Mesh Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit" +msgstr "離開" + +#: tools/editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "要離開編輯器嗎?" + +#: tools/editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "This action cannot be undone. Revert anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Run Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Open Project Manager? \n" +"(Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "Ugh" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to open " +"the scene, then save it inside the project path." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error loading scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Delete Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s) or folder(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Scene" +msgstr "場景" + +#: tools/editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "New Scene" +msgstr "新增場景" + +#: tools/editor/editor_node.cpp +msgid "New Inherited Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene.." +msgstr "開啓場景" + +#: tools/editor/editor_node.cpp +msgid "Save Scene" +msgstr "儲存場景" + +#: tools/editor/editor_node.cpp +msgid "Close Scene" +msgstr "關閉場景" + +#: tools/editor/editor_node.cpp +msgid "Close Goto Prev. Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Recent" +msgstr "開啓最近的" + +#: tools/editor/editor_node.cpp +msgid "Quick Search File.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Convert To.." +msgstr "轉為..." + +#: tools/editor/editor_node.cpp +msgid "Translatable Strings.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "MeshLibrary.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "TileSet.." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Redo" +msgstr "重製" + +#: tools/editor/editor_node.cpp +msgid "Run Script" +msgstr "運行腳本" + +#: tools/editor/editor_node.cpp +msgid "Project Settings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Import assets to the project." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Tools" +msgstr "工具" + +#: tools/editor/editor_node.cpp +msgid "Export the project to many platforms." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the project (F5)." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pause the scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Stop the scene (F8)." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the edited scene (F6)." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play custom scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Debug options" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Live Editing" +msgstr "即時編輯" + +#: tools/editor/editor_node.cpp +msgid "File Server" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Deploy Remote Debug" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Deploy File Server Clients" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Settings" +msgstr "設定" + +#: tools/editor/editor_node.cpp +msgid "Editor Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Install Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "About" +msgstr "關於" + +#: tools/editor/editor_node.cpp +msgid "Alerts when an external resource has changed." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Spins when the editor window repaints!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Update Always" +msgstr "不停更新" + +#: tools/editor/editor_node.cpp +msgid "Update Changes" +msgstr "當改變時更新" + +#: tools/editor/editor_node.cpp +msgid "Inspector" +msgstr "監視器" + +#: tools/editor/editor_node.cpp +msgid "Create a new resource in memory and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save the currently edited resource." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save As.." +msgstr "另存為.." + +#: tools/editor/editor_node.cpp +msgid "Go to the previous edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to the next edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "History of recently edited objects." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Object properties." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "FileSystem" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Output" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks from the Godot community!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks!" +msgstr "多謝!" + +#: tools/editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load Errors" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Method List For '%s':" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Method List:" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Arguments:" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Return:" +msgstr "" + +#: tools/editor/pvrtc_compress.cpp +msgid "Could not execute PVRTC tool:" +msgstr "" + +#: tools/editor/pvrtc_compress.cpp +msgid "Can't load back converted image using PVRTC tool:" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Resize Array" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value Type" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Search Classes" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Class List:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Inherited by:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Brief Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Public Methods:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Members:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "GUI Theme Items:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Signals:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Constants:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Method Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Search Text" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, the path must exist!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must not exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Imported Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Couldn't create engine.cfg in project path." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Import Existing Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path (Must Exist):" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Name:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Create New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Browse" +msgstr "瀏覽" + +#: tools/editor/project_manager.cpp +msgid "New Game Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "That's a BINGO!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to open more than one projects?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to run more than one projects?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Remove project from the list? (Folder contents will not be modified)" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Recent Projects:" +msgstr "" + +#: tools/editor/project_manager.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit" +msgstr "編輯" + +#: tools/editor/project_manager.cpp +msgid "Run" +msgstr "運行" + +#: tools/editor/project_manager.cpp +msgid "Scan" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Exit" +msgstr "離開" + +#: tools/editor/scene_tree_dock.cpp +msgid "OK :(" +msgstr "OK :(" + +#: tools/editor/scene_tree_dock.cpp +msgid "No parent to instance a child at." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "Ok" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one of " +"its nodes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)?" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done without a scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save New Scene As.." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Makes Sense!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "New Scene Root" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Inherit Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Groups" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Connections" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Script" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Up" +msgstr "上移" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Down" +msgstr "下移" + +#: tools/editor/scene_tree_dock.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate" +msgstr "複製" + +#: tools/editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save Branch as Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add/Create a New Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "" + +#: tools/editor/create_dialog.cpp +msgid "Create New" +msgstr "" + +#: tools/editor/plugins/rich_text_editor_plugin.cpp +msgid "Parse BBCode" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Open Sample File(s)" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "ERROR: Couldn't load sample!" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Add Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stop" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Play" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Rename Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Delete Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "16 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "8 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stereo" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Mono" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/camera_editor_plugin.cpp +msgid "Preview" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Pitch" +msgstr "" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Poly3D" +msgstr "" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Edit Poly" +msgstr "" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Remove Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Invalid animation name!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Animation name already exists!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Rename Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to copy!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation resource on clipboard!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to edit!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create new animation in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load an animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save the current animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Target Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Copy Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Times:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Next (Auto Queue):" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Cross-Animation Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Poly" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create a new polygon from scratch." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Edit existing polygon:" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "LMB: Move Point." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Ctrl+LMB: Split Segment." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "RMB: Erase Point." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Pivot" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Action" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit CanvasItem" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom (%):" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Paste Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Select Mode (Q)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Drag: Rotate" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Move" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+RMB: Depth list selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Move Mode (W)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode (E)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Makes sure the object's children are not selectable." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Show Grid" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap Relative" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Pixel Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Expand to Parent" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Skeleton.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom In" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Out" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Reset" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Set.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Anchor" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Keys (Ins)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Set a Value" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap (Pixels):" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase Selection" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror X (A)" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror Y (S)" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 0 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 90 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 180 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 270 degrees" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "New name:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Start!" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 0:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 1:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Current:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Add Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Delete Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Rename" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "OneShot Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Import Animations.." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Filters.." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Parent has no solid faces to populate." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Couldn't map area." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate Surface" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate MultiMesh" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "X-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Y-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Z-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh Up Axis:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Rotation:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Tilt:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Scale:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find.." +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find Next" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Find Previous" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Replace.." +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Line.." +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Vertex" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Fragment" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Lighting" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Can't save theme to file:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Check Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Checked Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Has" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Many" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Have,Many,Several,Options!" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 3" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Data Type:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Icon" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Style" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Color" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "BakedLightInstance does not contain a BakedLight resource." +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Bake!" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Reset the lightmap octree baking process (start over)." +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing %d Triangles:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Light Baker Setup:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing Geometry" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Fixing Lights" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Making BVH" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Light Octree" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Octree Texture" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Transfer to Lightmaps:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Allocating Texture #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Baking Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Post-Processing Texture #" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling to %s%%." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top (Num7)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom (Shift+Num7)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left (Num3)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right (Shift+Num3)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front (Num1)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear (Shift+Num1)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective (Num5)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal (Num5)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Environment" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Selection (F)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view (Ctrl+Shift+F)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "XForm Dialog" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "No scene selected to instance!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Instance at Cursor" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Could not instance scene!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode (R)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Local Coords" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog.." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default Light" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default sRGB" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "4 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Shadeless" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Default Light Normal:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Ambient Light Color:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error saving" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Import Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Prev" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Left" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Right" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Comment" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Clone Down" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Complete Symbol" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Trim Trailing Whitespace" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Auto Indent" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Function.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debug" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Remove All Breakpoints" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Next Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Previous Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Keep Debugger Open" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Window" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Left" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Right" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Help" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Contextual" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Tutorials" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Open https://godotengine.org at tutorials section." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Classes" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the class hierarchy." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the reference documentation." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: tools/editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox Preview:" +msgstr "" + +#: tools/editor/plugins/sample_editor_plugin.cpp +msgid "Length:" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Toggle Rot Only" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Default Value" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change XForm Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Texture Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Cubemap Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Comment" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Color Ramp" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Modify Color Ramp" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Input Name" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Connect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Disconnect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Remove Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Move Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Duplicate Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Delete Shader Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Cyclic Connection Link" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Missing Input Connections" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Convex Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh.." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Point" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon->UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV->Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Enable Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Grid" +msgstr "" + +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Set region_rect" +msgstr "" + +#: tools/editor/plugins/sprite_region_editor_plugin.cpp +msgid "Sprite Region Editor" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Load Resource" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation Loop" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed (FPS):" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Loop" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (Before)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (After)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Up" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Down" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Remove Poly And Point" +msgstr "" + +#: tools/editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image.." +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Set Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Creating Mesh Library" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Thumbnail.." +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Scene" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import from Scene" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Update from Scene" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry (faces)." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Faces contain no area!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "No faces!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Generate AABB" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Mesh" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Node" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Clear Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Positions:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Fill:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Surface" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Add/Remove Color Ramp Point" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Points" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Delete Point" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Close Curve" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Could not find tile:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Item name or ID:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Uncompressed" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossless (PNG)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossy (WebP)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress (VRAM)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Format" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Compression Quality (WebP):" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Options" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Please specify some files!" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path must be a complete resource path." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Target path must exist." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "At least one file needed for Atlas." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Error importing:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Only one file is required for large texture." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Max Texture Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for Atlas (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cell Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Textures (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Base Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 2D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 3D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "2D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "3D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "" +"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " +"the project." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Crop empty space." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Target Path:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Accept" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Load Source Image" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Slicing" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Inserting" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Saving" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save large texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Build Atlas For:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Loading Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't load image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Converting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cropping Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Blitting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save atlas image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save converted texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid translation source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Column" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No items to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No target path!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translations" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Couldn't import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translation" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Source CSV:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Ignore First Row" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Compress" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Add to Project (engine.cfg)" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Languages:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Translation" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "New Clip" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Animation Options" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Flags" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Bake FPS:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Optimizer" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Linear Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angular Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angle" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Clips" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Start(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "End(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Filters" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error importing scene." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import 3D Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source Scene:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Same as Target Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Shared" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Target Texture Folder:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Options:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Post-Process Script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Custom Root Node Type:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Auto" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "The Following Files are Missing:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Anyway" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import & Open" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Edited scene has not been saved, open imported scene anyway?" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Importing Scene.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Running Custom Script.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error running post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Can't import a file over itself:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't localize path: %s (already local)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Saving.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "3D Scene Animation" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No source font file!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No target font resource!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Can't load/process source font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Couldn't save font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Dest Resource:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "The quick brown fox jumps over the lazy dog." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Test:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font Import" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"This file is already a Godot font file, please supply a BMFont type file " +"instead." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Failed opening as BMFont file." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font custom source." +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "No samples to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Save path is empty!" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Import Audio Samples" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Source Sample(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Audio Sample" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "No meshes to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Single Mesh Import" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Source Mesh(es):" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Mesh" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Surface %d" +msgstr "" |