summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-10-18 21:02:31 +0800
committerchai <chaifix@163.com>2021-10-18 21:02:31 +0800
commit83474a5ec3a25da9f66192f03f9b0628ad219404 (patch)
tree3aa95792cb987b07cecee6a2fb15fc636c902207
parent45328cbadd8a946c19a77301f218efbf650e2f28 (diff)
*gitignore
-rw-r--r--.gitignore372
-rw-r--r--Projects/VisualStudio/Editor/Editor.apsbin0 -> 35344 bytes
-rw-r--r--Runtime/Debug/Log.cpp94
-rw-r--r--Runtime/Debug/Log.h22
-rw-r--r--Runtime/Scripting/Debug/Debug.bind.cpp120
5 files changed, 240 insertions, 368 deletions
diff --git a/.gitignore b/.gitignore
index bca80dd..6e267df 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,368 +1,4 @@
-## Ignore Visual Studio temporary files, build results, and
-## files generated by popular Visual Studio add-ons.
-##
-## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
-
-# User-specific files
-*.rsuser
-*.suo
-*.user
-*.userosscache
-*.sln.docstates
-
-# User-specific files (MonoDevelop/Xamarin Studio)
-*.userprefs
-
-# Mono auto generated files
-mono_crash.*
-
-# Build results
-[Dd]ebug/
-[Dd]ebugPublic/
-[Rr]elease/
-[Rr]eleases/
-x64/
-x86/
-[Ww][Ii][Nn]32/
-[Aa][Rr][Mm]/
-[Aa][Rr][Mm]64/
-bld/
-[Bb]in/
-[Oo]bj/
-[Ll]og/
-[Ll]ogs/
-
-# Visual Studio 2015/2017 cache/options directory
-.vs/
-# Uncomment if you have tasks that create the project's static files in wwwroot
-#wwwroot/
-
-# Visual Studio 2017 auto generated files
-Generated\ Files/
-
-# MSTest test Results
-[Tt]est[Rr]esult*/
-[Bb]uild[Ll]og.*
-
-# NUnit
-*.VisualState.xml
-TestResult.xml
-nunit-*.xml
-
-# Build Results of an ATL Project
-[Dd]ebugPS/
-[Rr]eleasePS/
-dlldata.c
-
-# Benchmark Results
-BenchmarkDotNet.Artifacts/
-
-# .NET Core
-project.lock.json
-project.fragment.lock.json
-artifacts/
-
-# ASP.NET Scaffolding
-ScaffoldingReadMe.txt
-
-# StyleCop
-StyleCopReport.xml
-
-# Files built by Visual Studio
-*_i.c
-*_p.c
-*_h.h
-*.ilk
-*.meta
-*.obj
-*.iobj
-*.pch
-*.pdb
-*.ipdb
-*.pgc
-*.pgd
-*.rsp
-*.sbr
-*.tlb
-*.tli
-*.tlh
-*.tmp
-*.tmp_proj
-*_wpftmp.csproj
-*.log
-*.vspscc
-*.vssscc
-.builds
-*.pidb
-*.svclog
-*.scc
-
-# Chutzpah Test files
-_Chutzpah*
-
-# Visual C++ cache files
-ipch/
-*.aps
-*.ncb
-*.opendb
-*.opensdf
-*.sdf
-*.cachefile
-*.VC.db
-*.VC.VC.opendb
-
-# Visual Studio profiler
-*.psess
-*.vsp
-*.vspx
-*.sap
-
-# Visual Studio Trace Files
-*.e2e
-
-# TFS 2012 Local Workspace
-$tf/
-
-# Guidance Automation Toolkit
-*.gpState
-
-# ReSharper is a .NET coding add-in
-_ReSharper*/
-*.[Rr]e[Ss]harper
-*.DotSettings.user
-
-# TeamCity is a build add-in
-_TeamCity*
-
-# DotCover is a Code Coverage Tool
-*.dotCover
-
-# AxoCover is a Code Coverage Tool
-.axoCover/*
-!.axoCover/settings.json
-
-# Coverlet is a free, cross platform Code Coverage Tool
-coverage*.json
-coverage*.xml
-coverage*.info
-
-# Visual Studio code coverage results
-*.coverage
-*.coveragexml
-
-# NCrunch
-_NCrunch_*
-.*crunch*.local.xml
-nCrunchTemp_*
-
-# MightyMoose
-*.mm.*
-AutoTest.Net/
-
-# Web workbench (sass)
-.sass-cache/
-
-# Installshield output folder
-[Ee]xpress/
-
-# DocProject is a documentation generator add-in
-DocProject/buildhelp/
-DocProject/Help/*.HxT
-DocProject/Help/*.HxC
-DocProject/Help/*.hhc
-DocProject/Help/*.hhk
-DocProject/Help/*.hhp
-DocProject/Help/Html2
-DocProject/Help/html
-
-# Click-Once directory
-publish/
-
-# Publish Web Output
-*.[Pp]ublish.xml
-*.azurePubxml
-# Note: Comment the next line if you want to checkin your web deploy settings,
-# but database connection strings (with potential passwords) will be unencrypted
-*.pubxml
-*.publishproj
-
-# Microsoft Azure Web App publish settings. Comment the next line if you want to
-# checkin your Azure Web App publish settings, but sensitive information contained
-# in these scripts will be unencrypted
-PublishScripts/
-
-# NuGet Packages
-*.nupkg
-# NuGet Symbol Packages
-*.snupkg
-# The packages folder can be ignored because of Package Restore
-**/[Pp]ackages/*
-# except build/, which is used as an MSBuild target.
-!**/[Pp]ackages/build/
-# Uncomment if necessary however generally it will be regenerated when needed
-#!**/[Pp]ackages/repositories.config
-# NuGet v3's project.json files produces more ignorable files
-*.nuget.props
-*.nuget.targets
-
-# Microsoft Azure Build Output
-csx/
-*.build.csdef
-
-# Microsoft Azure Emulator
-ecf/
-rcf/
-
-# Windows Store app package directories and files
-AppPackages/
-BundleArtifacts/
-Package.StoreAssociation.xml
-_pkginfo.txt
-*.appx
-*.appxbundle
-*.appxupload
-
-# Visual Studio cache files
-# files ending in .cache can be ignored
-*.[Cc]ache
-# but keep track of directories ending in .cache
-!?*.[Cc]ache/
-
-# Others
-ClientBin/
-~$*
-*~
-*.dbmdl
-*.dbproj.schemaview
-*.jfm
-*.pfx
-*.publishsettings
-orleans.codegen.cs
-
-# Including strong name files can present a security risk
-# (https://github.com/github/gitignore/pull/2483#issue-259490424)
-#*.snk
-
-# Since there are multiple workflows, uncomment next line to ignore bower_components
-# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
-#bower_components/
-
-# RIA/Silverlight projects
-Generated_Code/
-
-# Backup & report files from converting an old project file
-# to a newer Visual Studio version. Backup files are not needed,
-# because we have git ;-)
-_UpgradeReport_Files/
-Backup*/
-UpgradeLog*.XML
-UpgradeLog*.htm
-ServiceFabricBackup/
-*.rptproj.bak
-
-# SQL Server files
-*.mdf
-*.ldf
-*.ndf
-
-# Business Intelligence projects
-*.rdl.data
-*.bim.layout
-*.bim_*.settings
-*.rptproj.rsuser
-*- [Bb]ackup.rdl
-*- [Bb]ackup ([0-9]).rdl
-*- [Bb]ackup ([0-9][0-9]).rdl
-
-# Microsoft Fakes
-FakesAssemblies/
-
-# GhostDoc plugin setting file
-*.GhostDoc.xml
-
-# Node.js Tools for Visual Studio
-.ntvs_analysis.dat
-node_modules/
-
-# Visual Studio 6 build log
-*.plg
-
-# Visual Studio 6 workspace options file
-*.opt
-
-# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
-*.vbw
-
-# Visual Studio LightSwitch build output
-**/*.HTMLClient/GeneratedArtifacts
-**/*.DesktopClient/GeneratedArtifacts
-**/*.DesktopClient/ModelManifest.xml
-**/*.Server/GeneratedArtifacts
-**/*.Server/ModelManifest.xml
-_Pvt_Extensions
-
-# Paket dependency manager
-.paket/paket.exe
-paket-files/
-
-# FAKE - F# Make
-.fake/
-
-# CodeRush personal settings
-.cr/personal
-
-# Python Tools for Visual Studio (PTVS)
-__pycache__/
-*.pyc
-
-# Cake - Uncomment if you are using it
-# tools/**
-# !tools/packages.config
-
-# Tabs Studio
-*.tss
-
-# Telerik's JustMock configuration file
-*.jmconfig
-
-# BizTalk build output
-*.btp.cs
-*.btm.cs
-*.odx.cs
-*.xsd.cs
-
-# OpenCover UI analysis results
-OpenCover/
-
-# Azure Stream Analytics local run output
-ASALocalRun/
-
-# MSBuild Binary and Structured Log
-*.binlog
-
-# NVidia Nsight GPU debugger configuration file
-*.nvuser
-
-# MFractors (Xamarin productivity tool) working folder
-.mfractor/
-
-# Local History for Visual Studio
-.localhistory/
-
-# BeatPulse healthcheck temp database
-healthchecksdb
-
-# Backup folder for Package Reference Convert tool in Visual Studio 2017
-MigrationBackup/
-
-# Ionide (cross platform F# VS Code tools) working folder
-.ionide/
-
-# Fody - auto-generated XML schema
-FodyWeavers.xsd
-
-# lib file
-*.lib
-
-# exe file
-*.exe
+/Build
+/Projects/VisualStudio/.vs
+/Projects/VisualStudio/x64
+/Projects/VisualStudio/*/x64
diff --git a/Projects/VisualStudio/Editor/Editor.aps b/Projects/VisualStudio/Editor/Editor.aps
new file mode 100644
index 0000000..169fca1
--- /dev/null
+++ b/Projects/VisualStudio/Editor/Editor.aps
Binary files differ
diff --git a/Runtime/Debug/Log.cpp b/Runtime/Debug/Log.cpp
new file mode 100644
index 0000000..08c7acf
--- /dev/null
+++ b/Runtime/Debug/Log.cpp
@@ -0,0 +1,94 @@
+#include "log.h"
+#include <iostream>
+#include <ctime>
+#include <unordered_set>
+
+using namespace std;
+
+//long g_LogTags = LogTag::All;
+unordered_set<string> s_OpenTags;
+
+#ifdef GAMELAB_DEBUG
+// https://stackoverflow.com/questions/997946/how-to-get-current-time-and-date-in-c
+// Get current date/time, format is YYYY-MM-DD.HH:mm:ss
+const std::string currentDateTime() {
+ time_t now = time(0);
+ struct tm tstruct;
+ char buf[80];
+ tstruct = *localtime(&now);
+ // Visit http://en.cppreference.com/w/cpp/chrono/c/strftime
+ // for more information about date/time format
+ strftime(buf, sizeof(buf), "%Y-%m-%d %X", &tstruct);
+
+ return buf;
+}
+
+void log_open_tag(std::string tag)
+{
+ s_OpenTags.insert(tag);
+}
+
+// https://stackoverflow.com/questions/4053837/colorizing-text-in-the-console-with-c
+
+void log_info(std::string log)
+{
+ cout << "\x1B[97m" << currentDateTime() << " [Info] " << log << "\033[0m" << endl;
+}
+
+void log_warning(std::string log)
+{
+ cout << "\x1B[93m" << currentDateTime() << " [Wanning] " << log << "\033[0m" << endl;
+}
+
+void log_error(std::string log)
+{
+ cout << "\x1B[91m" << currentDateTime() << " [Error] " << log << "\033[0m" << endl;
+}
+
+void log_error_null_param(std::string funcName, std::string param)
+{
+ log_error("Null parameter in " + funcName + " called " + param);
+}
+
+void log_info(string tag, std::string log)
+{
+ if (s_OpenTags.count(tag) <= 0)
+ return;
+ log_info("[" + tag + "] " + log);
+}
+
+void log_warning(string tag, std::string log)
+{
+ if (s_OpenTags.count(tag) <= 0)
+ return;
+ log_warning("[" + tag + "] " + log);
+}
+void log_error(string tag, std::string log)
+{
+ if (s_OpenTags.count(tag) <= 0)
+ return;
+ log_error("[" + tag + "] " + log);
+}
+#else
+void log_open_tag(std::string tag) {}
+void log_info(std::string log)
+{
+}
+
+void log_warning(std::string log)
+{
+}
+
+void log_error(std::string log)
+{
+}
+
+void log_error_null_param(std::string funcName, std::string param)
+{
+}
+
+void log_info(string tag, std::string log) {}
+void log_warning(string tag, std::string log) {}
+void log_error(string tag, std::string log) {}
+
+#endif \ No newline at end of file
diff --git a/Runtime/Debug/Log.h b/Runtime/Debug/Log.h
new file mode 100644
index 0000000..d66f705
--- /dev/null
+++ b/Runtime/Debug/Log.h
@@ -0,0 +1,22 @@
+#pragma once
+#include <string>
+
+//enum LogTag : unsigned long
+//{
+//
+// All = ~0
+//};
+//
+//extern long g_LogTags;
+
+void log_open_tag(std::string tag);
+
+void log_info(std::string log);
+void log_warning(std::string log);
+void log_error(std::string log);
+
+void log_error_null_param(std::string funcName, std::string param);
+
+void log_info(std::string tag, std::string log);
+void log_warning(std::string tag, std::string log);
+void log_error(std::string tag, std::string log);
diff --git a/Runtime/Scripting/Debug/Debug.bind.cpp b/Runtime/Scripting/Debug/Debug.bind.cpp
new file mode 100644
index 0000000..1785f01
--- /dev/null
+++ b/Runtime/Scripting/Debug/Debug.bind.cpp
@@ -0,0 +1,120 @@
+#include "Runtime/LuaBind/LuaBind.h"
+#include "Runtime/Debug/Log.h"
+
+int log(lua_State* L)
+{
+ LUA_BIND_STATE(L);
+ int n = state.GetTop();
+ if (n == 1)
+ {
+ const char* msg = state.GetValue<const char*>(-1, "");
+ log_info(msg);
+ }
+ else if (n == 2)
+ {
+ const char* tag = state.GetValue<const char*>(-2, "");
+ const char* msg = state.GetValue<const char*>(-1, "");
+ log_info(tag, msg);
+ }
+ else
+ {
+ log_error("Debug.Log()错误的参数个数");
+ }
+ return 0;
+}
+
+int logWwarning(lua_State* L)
+{
+ LUA_BIND_STATE(L);
+ int n = state.GetTop();
+ if (n == 1)
+ {
+ const char* msg = state.GetValue<const char*>(-1, "");
+ log_warning(msg);
+ }
+ else if (n == 2)
+ {
+ const char* tag = state.GetValue<const char*>(-2, "");
+ const char* msg = state.GetValue<const char*>(-1, "");
+ log_warning(tag, msg);
+ }
+ else
+ {
+ log_error("Debug.Log()错误的参数个数");
+ }
+ return 0;
+}
+
+int logError(lua_State* L)
+{
+ LUA_BIND_STATE(L);
+ int n = state.GetTop();
+ if (n == 1)
+ {
+ const char* msg = state.GetValue<const char*>(-1, "");
+ log_error(msg);
+ }
+ else if (n == 2)
+ {
+ const char* tag = state.GetValue<const char*>(-2, "");
+ const char* msg = state.GetValue<const char*>(-1, "");
+ log_error(tag, msg);
+ }
+ else
+ {
+ log_error("Debug.Log()错误的参数个数");
+ }
+ return 0;
+}
+
+int logEditor(lua_State* L)
+{
+#ifdef GAMELAB_EDITOR
+ LUA_BIND_STATE(L);
+ int n = state.GetTop();
+ if (n == 1)
+ {
+ const char* msg = state.GetValue<const char*>(-1, "");
+ log_info(msg);
+ }
+ else if (n == 2)
+ {
+ const char* tag = state.GetValue<const char*>(-2, "");
+ const char* msg = state.GetValue<const char*>(-1, "");
+ log_info(tag, msg);
+ }
+ else
+ {
+ log_error("Debug.Log()错误的参数个数");
+ }
+ return 0;
+#endif
+}
+
+int openTag(lua_State* L)
+{
+ LUA_BIND_STATE(L);
+ const char* tag = state.GetValue<const char*>(-1, "");
+ log_open_tag(tag);
+ return 0;
+}
+
+int luaopen_GameLab_Debug(lua_State* L)
+{
+ log_info("Scripting", "luaopen_GameLab_Debug()");
+
+ LUA_BIND_STATE(L);
+
+ state.PushGlobalNamespace();
+ state.PushNamespace("GameLab");
+ state.PushNamespace("Debug");
+
+ state.RegisterMethod("Log", log);
+ state.RegisterMethod("LogWarning", logWwarning);
+ state.RegisterMethod("LogError", logError);
+ state.RegisterMethod("LogEditor", logEditor);
+
+ state.RegisterMethod("OpenTag", openTag);
+
+ return 1;
+} \ No newline at end of file