...
This commit is contained in:
@@ -21,7 +21,7 @@ public static class Archive
|
||||
var errors = await process.StandardError.ReadToEndAsync();
|
||||
if (!string.IsNullOrWhiteSpace(errors))
|
||||
{
|
||||
await Console.Error.WriteLineAsync("ar error when archiving:\n" + errors);
|
||||
await Console.Error.WriteLineAsync(errors);
|
||||
}
|
||||
|
||||
return process.ExitCode == 0;
|
||||
|
||||
@@ -22,7 +22,7 @@ public static class GCC
|
||||
var errors = await process.StandardError.ReadToEndAsync();
|
||||
if (!string.IsNullOrWhiteSpace(errors))
|
||||
{
|
||||
await Console.Error.WriteLineAsync("gcc error when assembling:\n" + errors);
|
||||
await Console.Error.WriteLineAsync(errors);
|
||||
}
|
||||
|
||||
return process.ExitCode == 0;
|
||||
|
||||
@@ -22,7 +22,7 @@ public static class QBE
|
||||
var errors = await process.StandardError.ReadToEndAsync();
|
||||
if (!string.IsNullOrWhiteSpace(errors))
|
||||
{
|
||||
await Console.Error.WriteLineAsync("qbe error:\n" + errors);
|
||||
await Console.Error.WriteLineAsync(errors);
|
||||
}
|
||||
|
||||
return process.ExitCode == 0;
|
||||
|
||||
@@ -118,7 +118,7 @@ public class Diagnostic
|
||||
var contextEndLine = Math.Min(lines.Length, endLine + CONTEXT_LINES);
|
||||
|
||||
var numberPadding = contextEndLine.ToString().Length;
|
||||
var codePadding = lines.Skip(contextStartLine - 1).Take(contextEndLine - contextStartLine).Max(x => x.Length);
|
||||
var codePadding = lines.Skip(contextStartLine - 1).Take(contextEndLine - contextStartLine + 1).Max(x => x.Length);
|
||||
|
||||
sb.Append('╭');
|
||||
sb.Append(new string('─', numberPadding + 2));
|
||||
@@ -144,16 +144,16 @@ public class Diagnostic
|
||||
if (i >= startLine && i <= endLine)
|
||||
{
|
||||
var markerStartColumn = 1;
|
||||
var markerEndColumn = line.Length + 1;
|
||||
var markerEndColumn = line.Length;
|
||||
|
||||
if (i == startLine)
|
||||
{
|
||||
markerStartColumn = Span.Value.Start.Column;
|
||||
markerStartColumn = Math.Min(Span.Value.Start.Column, 1);
|
||||
}
|
||||
|
||||
if (i == endLine)
|
||||
{
|
||||
markerEndColumn = Span.Value.End.Column;
|
||||
markerEndColumn = Math.Min(Span.Value.End.Column, line.Length);
|
||||
}
|
||||
|
||||
var markerLength = markerEndColumn - markerStartColumn;
|
||||
|
||||
@@ -34,4 +34,12 @@ public class Module
|
||||
.Where(x => x.Exported || includePrivate)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public List<GlobalVariableSyntax> GlobalVariables(bool includePrivate)
|
||||
{
|
||||
return _definitions
|
||||
.OfType<GlobalVariableSyntax>()
|
||||
.Where(x => x.Exported || includePrivate)
|
||||
.ToList();
|
||||
}
|
||||
}
|
||||
@@ -86,6 +86,7 @@ public sealed class Parser
|
||||
{
|
||||
Symbol.Func => ParseFunc(startIndex, exported, null),
|
||||
Symbol.Struct => ParseStruct(startIndex, exported),
|
||||
Symbol.Let => ParseGlobalVariable(startIndex, exported),
|
||||
_ => throw new ParseException(Diagnostic
|
||||
.Error($"Expected 'func' or 'struct' but found '{keyword.Symbol}'")
|
||||
.WithHelp("Valid definition keywords are 'func' and 'struct'")
|
||||
@@ -113,6 +114,22 @@ public sealed class Parser
|
||||
return definitions;
|
||||
}
|
||||
|
||||
private GlobalVariableSyntax ParseGlobalVariable(int startIndex, bool exported)
|
||||
{
|
||||
var name = ExpectIdentifier();
|
||||
|
||||
TypeSyntax? type = null;
|
||||
if (TryExpectSymbol(Symbol.Colon))
|
||||
{
|
||||
type = ParseType();
|
||||
}
|
||||
|
||||
ExpectSymbol(Symbol.Assign);
|
||||
var value = ParseExpression();
|
||||
|
||||
return new GlobalVariableSyntax(GetTokens(startIndex), name.Value, exported, type, value);
|
||||
}
|
||||
|
||||
private FuncSignatureSyntax ParseFuncSignature()
|
||||
{
|
||||
var startIndex = _tokenIndex;
|
||||
|
||||
@@ -17,3 +17,5 @@ public record StructFuncSyntax(List<Token> Tokens, string Name, string? Hook, Fu
|
||||
public record StructSyntax(List<Token> Tokens, string Name, bool Exported, List<StructFieldSyntax> Fields, List<StructFuncSyntax> Functions) : DefinitionSyntax(Tokens, Name, Exported);
|
||||
|
||||
public record StructTemplateSyntax(List<Token> Tokens, List<string> TemplateArguments, string Name, bool Exported, List<StructFieldSyntax> Fields, List<StructFuncSyntax> Functions) : DefinitionSyntax(Tokens, Name, Exported);
|
||||
|
||||
public record GlobalVariableSyntax(List<Token> Tokens, string Name, bool Exported, TypeSyntax? ExplicitType, ExpressionSyntax Value) : DefinitionSyntax(Tokens, Name, Exported);
|
||||
@@ -5,6 +5,8 @@ namespace NubLang.Tokenization;
|
||||
public enum LiteralKind
|
||||
{
|
||||
Integer,
|
||||
Hex,
|
||||
Binary,
|
||||
Float,
|
||||
String,
|
||||
Bool
|
||||
|
||||
@@ -159,6 +159,51 @@ public sealed class Tokenizer
|
||||
var isFloat = false;
|
||||
var buffer = string.Empty;
|
||||
|
||||
if (current == '0' && Peek(1) is 'x')
|
||||
{
|
||||
buffer += "0x";
|
||||
Next();
|
||||
Next();
|
||||
while (Peek() != null && Uri.IsHexDigit(Peek()!.Value))
|
||||
{
|
||||
buffer += Peek()!.Value;
|
||||
Next();
|
||||
}
|
||||
|
||||
if (buffer.Length <= 2)
|
||||
{
|
||||
throw new TokenizerException(Diagnostic
|
||||
.Error("Invalid hex literal, no digits found")
|
||||
.At(_fileName, _line, _column)
|
||||
.Build());
|
||||
}
|
||||
|
||||
return new LiteralToken(_fileName, CreateSpan(lineStart, columnStart), LiteralKind.Hex, buffer);
|
||||
}
|
||||
|
||||
if (current == '0' && Peek(1) is 'b')
|
||||
{
|
||||
buffer += "0b";
|
||||
Next();
|
||||
Next();
|
||||
while (Peek() != null && (Peek() == '0' || Peek() == '1'))
|
||||
{
|
||||
buffer += Peek()!.Value;
|
||||
Next();
|
||||
}
|
||||
|
||||
if (buffer.Length <= 2)
|
||||
{
|
||||
throw new TokenizerException(Diagnostic
|
||||
.Error("Invalid binary literal, no digits found")
|
||||
.At(_fileName, _line, _column)
|
||||
.Build());
|
||||
}
|
||||
|
||||
return new LiteralToken(_fileName, CreateSpan(lineStart, columnStart), LiteralKind.Binary, buffer);
|
||||
}
|
||||
|
||||
buffer += current;
|
||||
while (Peek() != null)
|
||||
{
|
||||
var next = Peek()!.Value;
|
||||
@@ -187,7 +232,12 @@ public sealed class Tokenizer
|
||||
}
|
||||
}
|
||||
|
||||
return new LiteralToken(_fileName, CreateSpan(lineStart, columnStart), isFloat ? LiteralKind.Float : LiteralKind.Integer, buffer);
|
||||
return new LiteralToken(
|
||||
_fileName,
|
||||
CreateSpan(lineStart, columnStart),
|
||||
isFloat ? LiteralKind.Float : LiteralKind.Integer,
|
||||
buffer
|
||||
);
|
||||
}
|
||||
|
||||
if (current == '"')
|
||||
|
||||
@@ -12,4 +12,6 @@ public record StructFieldNode(string Name, NubType Type, ExpressionNode? Value)
|
||||
|
||||
public record StructFuncNode(string Name, string? Hook, FuncSignatureNode Signature, BlockNode Body) : Node;
|
||||
|
||||
public record StructNode(string Module, string Name, List<StructFieldNode> Fields, List<StructFuncNode> Functions) : DefinitionNode(Module, Name);
|
||||
public record StructNode(string Module, string Name, List<StructFieldNode> Fields, List<StructFuncNode> Functions) : DefinitionNode(Module, Name);
|
||||
|
||||
public record GlobalVariableNode(string Module, string Name, ExpressionNode Value) : DefinitionNode(Module, Name);
|
||||
@@ -46,27 +46,33 @@ public sealed class TypeChecker
|
||||
Definitions.Clear();
|
||||
ReferencedStructTypes.Clear();
|
||||
|
||||
foreach (var definition in _syntaxTree.Definitions)
|
||||
using (BeginRootScope(_syntaxTree.Metadata.ModuleName))
|
||||
{
|
||||
try
|
||||
foreach (var definition in _syntaxTree.Definitions)
|
||||
{
|
||||
switch (definition)
|
||||
try
|
||||
{
|
||||
case FuncSyntax funcSyntax:
|
||||
Definitions.Add(CheckFuncDefinition(funcSyntax));
|
||||
break;
|
||||
case StructSyntax structSyntax:
|
||||
Definitions.Add(CheckStructDefinition(structSyntax));
|
||||
break;
|
||||
case StructTemplateSyntax:
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
switch (definition)
|
||||
{
|
||||
case FuncSyntax funcSyntax:
|
||||
Definitions.Add(CheckFuncDefinition(funcSyntax));
|
||||
break;
|
||||
case StructSyntax structSyntax:
|
||||
Definitions.Add(CheckStructDefinition(structSyntax));
|
||||
break;
|
||||
case GlobalVariableSyntax globalVariableSyntax:
|
||||
Definitions.Add(CheckGlobalVariable(globalVariableSyntax));
|
||||
break;
|
||||
case StructTemplateSyntax:
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
}
|
||||
catch (TypeCheckerException e)
|
||||
{
|
||||
Diagnostics.Add(e.Diagnostic);
|
||||
}
|
||||
}
|
||||
catch (TypeCheckerException e)
|
||||
{
|
||||
Diagnostics.Add(e.Diagnostic);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -85,9 +91,41 @@ public sealed class TypeChecker
|
||||
return new ScopeDisposer(this);
|
||||
}
|
||||
|
||||
private ScopeDisposer BeginRootScope(string module)
|
||||
private ScopeDisposer BeginRootScope(string moduleName)
|
||||
{
|
||||
_scopes.Push(new Scope(module));
|
||||
if (!_visibleModules.TryGetValue(moduleName, out var moduleScope))
|
||||
{
|
||||
throw new TypeCheckerException(Diagnostic.Error($"Module with name {moduleName} not found").Build());
|
||||
}
|
||||
|
||||
var scope = new Scope(moduleName);
|
||||
_scopes.Push(scope);
|
||||
|
||||
foreach (var globalVariable in moduleScope.GlobalVariables(true))
|
||||
{
|
||||
NubType? type;
|
||||
|
||||
if (globalVariable.ExplicitType != null)
|
||||
{
|
||||
type = ResolveType(globalVariable.ExplicitType);
|
||||
var valueExpression = CheckExpression(globalVariable.Value, type);
|
||||
|
||||
if (valueExpression.Type != ResolveType(globalVariable.ExplicitType))
|
||||
{
|
||||
throw new TypeCheckerException(Diagnostic
|
||||
.Error("Value does not match explicit type of global variable")
|
||||
.At(globalVariable.Value)
|
||||
.Build());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
type = CheckExpression(globalVariable.Value).Type;
|
||||
}
|
||||
|
||||
scope.DeclareVariable(new Variable(globalVariable.Name, type, VariableKind.LValue));
|
||||
}
|
||||
|
||||
return new ScopeDisposer(this);
|
||||
}
|
||||
|
||||
@@ -105,30 +143,27 @@ public sealed class TypeChecker
|
||||
|
||||
private StructNode CheckStructDefinition(StructSyntax node)
|
||||
{
|
||||
using (BeginRootScope(_syntaxTree.Metadata.ModuleName))
|
||||
{
|
||||
var fieldTypes = node.Fields
|
||||
.Select(x => new NubStructFieldType(x.Name, ResolveType(x.Type), x.Value != null))
|
||||
.ToList();
|
||||
var fieldTypes = node.Fields
|
||||
.Select(x => new NubStructFieldType(x.Name, ResolveType(x.Type), x.Value != null))
|
||||
.ToList();
|
||||
|
||||
var fieldFunctions = node.Functions
|
||||
.Select(x =>
|
||||
{
|
||||
var parameters = x.Signature.Parameters.Select(y => ResolveType(y.Type)).ToList();
|
||||
var returnType = ResolveType(x.Signature.ReturnType);
|
||||
return new NubStructFuncType(x.Name, x.Hook, parameters, returnType);
|
||||
})
|
||||
.ToList();
|
||||
var fieldFunctions = node.Functions
|
||||
.Select(x =>
|
||||
{
|
||||
var parameters = x.Signature.Parameters.Select(y => ResolveType(y.Type)).ToList();
|
||||
var returnType = ResolveType(x.Signature.ReturnType);
|
||||
return new NubStructFuncType(x.Name, x.Hook, parameters, returnType);
|
||||
})
|
||||
.ToList();
|
||||
|
||||
var structType = new NubStructType(CurrentScope.Module, node.Name, fieldTypes, fieldFunctions);
|
||||
var structType = new NubStructType(CurrentScope.Module, node.Name, fieldTypes, fieldFunctions);
|
||||
|
||||
CurrentScope.DeclareVariable(new Variable("this", structType, VariableKind.RValue));
|
||||
CurrentScope.DeclareVariable(new Variable("this", structType, VariableKind.RValue));
|
||||
|
||||
var fields = node.Fields.Select(CheckStructField).ToList();
|
||||
var functions = node.Functions.Select(CheckStructFunc).ToList();
|
||||
var fields = node.Fields.Select(CheckStructField).ToList();
|
||||
var functions = node.Functions.Select(CheckStructFunc).ToList();
|
||||
|
||||
return new StructNode(CurrentScope.Module, node.Name, fields, functions);
|
||||
}
|
||||
return new StructNode(CurrentScope.Module, node.Name, fields, functions);
|
||||
}
|
||||
|
||||
private StructFuncNode CheckStructFunc(StructFuncSyntax function)
|
||||
@@ -157,42 +192,44 @@ public sealed class TypeChecker
|
||||
|
||||
private FuncNode CheckFuncDefinition(FuncSyntax node)
|
||||
{
|
||||
using (BeginRootScope(_syntaxTree.Metadata.ModuleName))
|
||||
foreach (var parameter in node.Signature.Parameters)
|
||||
{
|
||||
foreach (var parameter in node.Signature.Parameters)
|
||||
{
|
||||
CurrentScope.DeclareVariable(new Variable(parameter.Name, ResolveType(parameter.Type), VariableKind.RValue));
|
||||
}
|
||||
|
||||
var signature = CheckFuncSignature(node.Signature);
|
||||
|
||||
BlockNode? body = null;
|
||||
if (node.Body != null)
|
||||
{
|
||||
_funcReturnTypes.Push(signature.ReturnType);
|
||||
|
||||
body = CheckBlock(node.Body);
|
||||
|
||||
if (!AlwaysReturns(body))
|
||||
{
|
||||
if (signature.ReturnType is NubVoidType)
|
||||
{
|
||||
body.Statements.Add(new ReturnNode(null));
|
||||
}
|
||||
else
|
||||
{
|
||||
Diagnostics.Add(Diagnostic
|
||||
.Error("Not all code paths return a value")
|
||||
.At(node.Body)
|
||||
.Build());
|
||||
}
|
||||
}
|
||||
|
||||
_funcReturnTypes.Pop();
|
||||
}
|
||||
|
||||
return new FuncNode(CurrentScope.Module, node.Name, node.ExternSymbol, signature, body);
|
||||
CurrentScope.DeclareVariable(new Variable(parameter.Name, ResolveType(parameter.Type), VariableKind.RValue));
|
||||
}
|
||||
|
||||
var signature = CheckFuncSignature(node.Signature);
|
||||
|
||||
BlockNode? body = null;
|
||||
if (node.Body != null)
|
||||
{
|
||||
_funcReturnTypes.Push(signature.ReturnType);
|
||||
|
||||
body = CheckBlock(node.Body);
|
||||
|
||||
if (!AlwaysReturns(body))
|
||||
{
|
||||
if (signature.ReturnType is NubVoidType)
|
||||
{
|
||||
body.Statements.Add(new ReturnNode(null));
|
||||
}
|
||||
else
|
||||
{
|
||||
Diagnostics.Add(Diagnostic
|
||||
.Error("Not all code paths return a value")
|
||||
.At(node.Body)
|
||||
.Build());
|
||||
}
|
||||
}
|
||||
|
||||
_funcReturnTypes.Pop();
|
||||
}
|
||||
|
||||
return new FuncNode(CurrentScope.Module, node.Name, node.ExternSymbol, signature, body);
|
||||
}
|
||||
|
||||
private GlobalVariableNode CheckGlobalVariable(GlobalVariableSyntax node)
|
||||
{
|
||||
return new GlobalVariableNode(CurrentScope.Module, node.Name, CheckExpression(node.Value));
|
||||
}
|
||||
|
||||
private AssignmentNode CheckAssignment(AssignmentSyntax statement)
|
||||
@@ -701,6 +738,19 @@ public sealed class TypeChecker
|
||||
|
||||
var includePrivate = expression.Module == CurrentScope.Module;
|
||||
|
||||
var globalVariable = module.GlobalVariables(includePrivate).FirstOrDefault(x => x.Name == expression.Name);
|
||||
if (globalVariable != null)
|
||||
{
|
||||
// todo(nub31): This should be done in the global scope
|
||||
NubType? type = null;
|
||||
if (globalVariable.ExplicitType != null)
|
||||
{
|
||||
type = ResolveType(globalVariable.ExplicitType);
|
||||
}
|
||||
|
||||
return CheckExpression(globalVariable.Value, type);
|
||||
}
|
||||
|
||||
// First, look for the exported function in the specified module
|
||||
var function = module.Functions(includePrivate).FirstOrDefault(x => x.Name == expression.Name);
|
||||
if (function != null)
|
||||
@@ -733,8 +783,8 @@ public sealed class TypeChecker
|
||||
{
|
||||
return floatType.Width switch
|
||||
{
|
||||
32 => new Float32LiteralNode(floatType, float.Parse(expression.Value)),
|
||||
64 => new Float64LiteralNode(floatType, double.Parse(expression.Value)),
|
||||
32 => new Float32LiteralNode(floatType, float.Parse(expression.Value, CultureInfo.InvariantCulture)),
|
||||
64 => new Float64LiteralNode(floatType, double.Parse(expression.Value, CultureInfo.InvariantCulture)),
|
||||
_ => throw new ArgumentOutOfRangeException()
|
||||
};
|
||||
}
|
||||
@@ -749,6 +799,30 @@ public sealed class TypeChecker
|
||||
? new Float32LiteralNode(type, float.Parse(expression.Value, CultureInfo.InvariantCulture))
|
||||
: new Float64LiteralNode(type, double.Parse(expression.Value, CultureInfo.InvariantCulture));
|
||||
}
|
||||
case LiteralKind.Hex:
|
||||
{
|
||||
if (expectedType is NubIntType intType)
|
||||
{
|
||||
return intType.Signed
|
||||
? new IntLiteralNode(intType, Convert.ToInt64(expression.Value, 16))
|
||||
: new UIntLiteralNode(intType, Convert.ToUInt64(expression.Value, 16));
|
||||
}
|
||||
|
||||
var type = new NubIntType(true, 64);
|
||||
return new IntLiteralNode(type, Convert.ToInt64(expression.Value, 16));
|
||||
}
|
||||
case LiteralKind.Binary:
|
||||
{
|
||||
if (expectedType is NubIntType intType)
|
||||
{
|
||||
return intType.Signed
|
||||
? new IntLiteralNode(intType, Convert.ToInt64(expression.Value[2..], 2))
|
||||
: new UIntLiteralNode(intType, Convert.ToUInt64(expression.Value[2..], 2));
|
||||
}
|
||||
|
||||
var type = new NubIntType(true, 64);
|
||||
return new IntLiteralNode(type, Convert.ToInt64(expression.Value.Substring(2), 2));
|
||||
}
|
||||
case LiteralKind.String:
|
||||
{
|
||||
return expectedType switch
|
||||
|
||||
@@ -5,7 +5,7 @@ module "main"
|
||||
|
||||
extern "main" func main(args: []cstring): i64
|
||||
{
|
||||
raylib::SetConfigFlags(raylib::ConfigFlags::VSYNC_HINT)
|
||||
raylib::SetConfigFlags(raylib::FLAG_VSYNC_HINT)
|
||||
raylib::InitWindow(1600, 900, "Hi from nub-lang")
|
||||
raylib::SetTargetFPS(240)
|
||||
|
||||
@@ -45,7 +45,8 @@ extern "main" func main(args: []cstring): i64
|
||||
|
||||
raylib::BeginDrawing()
|
||||
{
|
||||
raylib::ClearBackground(bgColor);
|
||||
raylib::ClearBackground(bgColor)
|
||||
raylib::DrawFPS(10, 10)
|
||||
raylib::DrawRectangle(x, y, width, height, color)
|
||||
}
|
||||
raylib::EndDrawing()
|
||||
|
||||
@@ -1,34 +1,34 @@
|
||||
module "raylib"
|
||||
|
||||
// export let PI = 3.14159265358979323846
|
||||
export let PI = 3.14159265358979323846
|
||||
|
||||
// export let LIGHTGRAY = struct Color { r = 200, g = 200, b = 200, a = 255 }
|
||||
// export let GRAY = struct Color { r = 130, g = 130, b = 130, a = 255 }
|
||||
// export let DARKGRAY = struct Color { r = 80, g = 80, b = 80, a = 255 }
|
||||
// export let YELLOW = struct Color { r = 253, g = 249, b = 0, a = 255 }
|
||||
// export let GOLD = struct Color { r = 255, g = 203, b = 0, a = 255 }
|
||||
// export let ORANGE = struct Color { r = 255, g = 161, b = 0, a = 255 }
|
||||
// export let PINK = struct Color { r = 255, g = 109, b = 194, a = 255 }
|
||||
// export let RED = struct Color { r = 230, g = 41, b = 55, a = 255 }
|
||||
// export let MAROON = struct Color { r = 190, g = 33, b = 55, a = 255 }
|
||||
// export let GREEN = struct Color { r = 0, g = 228, b = 48, a = 255 }
|
||||
// export let LIME = struct Color { r = 0, g = 158, b = 47, a = 255 }
|
||||
// export let DARKGREEN = struct Color { r = 0, g = 117, b = 44, a = 255 }
|
||||
// export let SKYBLUE = struct Color { r = 102, g = 191, b = 255, a = 255 }
|
||||
// export let BLUE = struct Color { r = 0, g = 121, b = 241, a = 255 }
|
||||
// export let DARKBLUE = struct Color { r = 0, g = 82, b = 172, a = 255 }
|
||||
// export let PURPLE = struct Color { r = 200, g = 122, b = 255, a = 255 }
|
||||
// export let VIOLET = struct Color { r = 135, g = 60, b = 190, a = 255 }
|
||||
// export let DARKPURPLE = struct Color { r = 112, g = 31, b = 126, a = 255 }
|
||||
// export let BEIGE = struct Color { r = 211, g = 176, b = 131, a = 255 }
|
||||
// export let BROWN = struct Color { r = 127, g = 106, b = 79, a = 255 }
|
||||
// export let DARKBROWN = struct Color { r = 76, g = 63, b = 47, a = 255 }
|
||||
export let LIGHTGRAY = struct Color { r = 200 g = 200 b = 200 a = 255 }
|
||||
export let GRAY = struct Color { r = 130 g = 130 b = 130 a = 255 }
|
||||
export let DARKGRAY = struct Color { r = 80 g = 80 b = 80 a = 255 }
|
||||
export let YELLOW = struct Color { r = 253 g = 249 b = 0 a = 255 }
|
||||
export let GOLD = struct Color { r = 255 g = 203 b = 0 a = 255 }
|
||||
export let ORANGE = struct Color { r = 255 g = 161 b = 0 a = 255 }
|
||||
export let PINK = struct Color { r = 255 g = 109 b = 194 a = 255 }
|
||||
export let RED = struct Color { r = 230 g = 41 b = 55 a = 255 }
|
||||
export let MAROON = struct Color { r = 190 g = 33 b = 55 a = 255 }
|
||||
export let GREEN = struct Color { r = 0 g = 228 b = 48 a = 255 }
|
||||
export let LIME = struct Color { r = 0 g = 158 b = 47 a = 255 }
|
||||
export let DARKGREEN = struct Color { r = 0 g = 117 b = 44 a = 255 }
|
||||
export let SKYBLUE = struct Color { r = 102 g = 191 b = 255 a = 255 }
|
||||
export let BLUE = struct Color { r = 0 g = 121 b = 241 a = 255 }
|
||||
export let DARKBLUE = struct Color { r = 0 g = 82 b = 172 a = 255 }
|
||||
export let PURPLE = struct Color { r = 200 g = 122 b = 255 a = 255 }
|
||||
export let VIOLET = struct Color { r = 135 g = 60 b = 190 a = 255 }
|
||||
export let DARKPURPLE = struct Color { r = 112 g = 31 b = 126 a = 255 }
|
||||
export let BEIGE = struct Color { r = 211 g = 176 b = 131 a = 255 }
|
||||
export let BROWN = struct Color { r = 127 g = 106 b = 79 a = 255 }
|
||||
export let DARKBROWN = struct Color { r = 76 g = 63 b = 47 a = 255 }
|
||||
|
||||
// export let WHITE = struct Color { r = 255, g = 255, b = 255, a = 255 }
|
||||
// export let BLACK = struct Color { r = 0, g = 0, b = 0, a = 255 }
|
||||
// export let BLANK = struct Color { r = 0, g = 0, b = 0, a = 0 }
|
||||
// export let MAGENTA = struct Color { r = 255, g = 0, b = 255, a = 255 }
|
||||
// export let RAYWHITE = struct Color { r = 245, g = 245, b = 245, a = 255 }
|
||||
export let WHITE = struct Color { r = 255 g = 255 b = 255 a = 255 }
|
||||
export let BLACK = struct Color { r = 0 g = 0 b = 0 a = 255 }
|
||||
export let BLANK = struct Color { r = 0 g = 0 b = 0 a = 0 }
|
||||
export let MAGENTA = struct Color { r = 255 g = 0 b = 255 a = 255 }
|
||||
export let RAYWHITE = struct Color { r = 245 g = 245 b = 245 a = 255 }
|
||||
|
||||
export struct Vector2
|
||||
{
|
||||
@@ -382,388 +382,326 @@ export struct AutomationEventList
|
||||
events: ^AutomationEvent
|
||||
}
|
||||
|
||||
// export enum ConfigFlags
|
||||
// {
|
||||
// VSYNC_HINT = 0x00000040
|
||||
// FULLSCREEN_MODE = 0x00000002
|
||||
// WINDOW_RESIZABLE = 0x00000004
|
||||
// WINDOW_UNDECORATED = 0x00000008
|
||||
// WINDOW_HIDDEN = 0x00000080
|
||||
// WINDOW_MINIMIZED = 0x00000200
|
||||
// WINDOW_MAXIMIZED = 0x00000400
|
||||
// WINDOW_UNFOCUSED = 0x00000800
|
||||
// WINDOW_TOPMOST = 0x00001000
|
||||
// WINDOW_ALWAYS_RUN = 0x00000100
|
||||
// WINDOW_TRANSPARENT = 0x00000010
|
||||
// WINDOW_HIGHDPI = 0x00002000
|
||||
// WINDOW_MOUSE_PASSTHROUGH = 0x00004000
|
||||
// BORDERLESS_WINDOWED_MODE = 0x00008000
|
||||
// MSAA_4X_HINT = 0x00000020
|
||||
// INTERLACED_HINT = 0x00010000
|
||||
// }
|
||||
export let FLAG_VSYNC_HINT: u32 = 0x00000040
|
||||
export let FLAG_FULLSCREEN_MODE: u32 = 0x00000002
|
||||
export let FLAG_WINDOW_RESIZABLE: u32 = 0x00000004
|
||||
export let FLAG_WINDOW_UNDECORATED: u32 = 0x00000008
|
||||
export let FLAG_WINDOW_HIDDEN: u32 = 0x00000080
|
||||
export let FLAG_WINDOW_MINIMIZED: u32 = 0x00000200
|
||||
export let FLAG_WINDOW_MAXIMIZED: u32 = 0x00000400
|
||||
export let FLAG_WINDOW_UNFOCUSED: u32 = 0x00000800
|
||||
export let FLAG_WINDOW_TOPMOST: u32 = 0x00001000
|
||||
export let FLAG_WINDOW_ALWAYS_RUN: u32 = 0x00000100
|
||||
export let FLAG_WINDOW_TRANSPARENT: u32 = 0x00000010
|
||||
export let FLAG_WINDOW_HIGHDPI: u32 = 0x00002000
|
||||
export let FLAG_WINDOW_MOUSE_PASSTHROUGH: u32 = 0x00004000
|
||||
export let FLAG_BORDERLESS_WINDOWED_MODE: u32 = 0x00008000
|
||||
export let FLAG_MSAA_4X_HINT: u32 = 0x00000020
|
||||
export let FLAG_INTERLACED_HINT: u32 = 0x00010000
|
||||
|
||||
export let LOG_ALL: i32 = 0
|
||||
export let LOG_TRACE: i32 = 1
|
||||
export let LOG_DEBUG: i32 = 2
|
||||
export let LOG_INFO: i32 = 3
|
||||
export let LOG_WARNING: i32 = 4
|
||||
export let LOG_ERROR: i32 = 5
|
||||
export let LOG_FATAL: i32 = 6
|
||||
export let LOG_NONE: i32 = 7
|
||||
|
||||
// export enum TraceLogLevel
|
||||
// {
|
||||
// LOG_ALL = 0
|
||||
// LOG_TRACE
|
||||
// LOG_DEBUG
|
||||
// LOG_INFO
|
||||
// LOG_WARNING
|
||||
// LOG_ERROR
|
||||
// LOG_FATAL
|
||||
// LOG_NONE
|
||||
// }
|
||||
export let KEY_NULL: i32 = 0
|
||||
export let KEY_APOSTROPHE: i32 = 39
|
||||
export let KEY_COMMA: i32 = 44
|
||||
export let KEY_MINUS: i32 = 45
|
||||
export let KEY_PERIOD: i32 = 46
|
||||
export let KEY_SLASH: i32 = 47
|
||||
export let KEY_ZERO: i32 = 48
|
||||
export let KEY_ONE: i32 = 49
|
||||
export let KEY_TWO: i32 = 50
|
||||
export let KEY_THREE: i32 = 51
|
||||
export let KEY_FOUR: i32 = 52
|
||||
export let KEY_FIVE: i32 = 53
|
||||
export let KEY_SIX: i32 = 54
|
||||
export let KEY_SEVEN: i32 = 55
|
||||
export let KEY_EIGHT: i32 = 56
|
||||
export let KEY_NINE: i32 = 57
|
||||
export let KEY_SEMICOLON: i32 = 59
|
||||
export let KEY_EQUAL: i32 = 61
|
||||
export let KEY_A: i32 = 65
|
||||
export let KEY_B: i32 = 66
|
||||
export let KEY_C: i32 = 67
|
||||
export let KEY_D: i32 = 68
|
||||
export let KEY_E: i32 = 69
|
||||
export let KEY_F: i32 = 70
|
||||
export let KEY_G: i32 = 71
|
||||
export let KEY_H: i32 = 72
|
||||
export let KEY_I: i32 = 73
|
||||
export let KEY_J: i32 = 74
|
||||
export let KEY_K: i32 = 75
|
||||
export let KEY_L: i32 = 76
|
||||
export let KEY_M: i32 = 77
|
||||
export let KEY_N: i32 = 78
|
||||
export let KEY_O: i32 = 79
|
||||
export let KEY_P: i32 = 80
|
||||
export let KEY_Q: i32 = 81
|
||||
export let KEY_R: i32 = 82
|
||||
export let KEY_S: i32 = 83
|
||||
export let KEY_T: i32 = 84
|
||||
export let KEY_U: i32 = 85
|
||||
export let KEY_V: i32 = 86
|
||||
export let KEY_W: i32 = 87
|
||||
export let KEY_X: i32 = 88
|
||||
export let KEY_Y: i32 = 89
|
||||
export let KEY_Z: i32 = 90
|
||||
export let KEY_LEFT_BRACKET: i32 = 91
|
||||
export let KEY_BACKSLASH: i32 = 92
|
||||
export let KEY_RIGHT_BRACKET: i32 = 93
|
||||
export let KEY_GRAVE: i32 = 96
|
||||
export let KEY_SPACE: i32 = 32
|
||||
export let KEY_ESCAPE: i32 = 256
|
||||
export let KEY_ENTER: i32 = 257
|
||||
export let KEY_TAB: i32 = 258
|
||||
export let KEY_BACKSPACE: i32 = 259
|
||||
export let KEY_INSERT: i32 = 260
|
||||
export let KEY_DELETE: i32 = 261
|
||||
export let KEY_RIGHT: i32 = 262
|
||||
export let KEY_LEFT: i32 = 263
|
||||
export let KEY_DOWN: i32 = 264
|
||||
export let KEY_UP: i32 = 265
|
||||
export let KEY_PAGE_UP: i32 = 266
|
||||
export let KEY_PAGE_DOWN: i32 = 267
|
||||
export let KEY_HOME: i32 = 268
|
||||
export let KEY_END: i32 = 269
|
||||
export let KEY_CAPS_LOCK: i32 = 280
|
||||
export let KEY_SCROLL_LOCK: i32 = 281
|
||||
export let KEY_NUM_LOCK: i32 = 282
|
||||
export let KEY_PRINT_SCREEN: i32 = 283
|
||||
export let KEY_PAUSE: i32 = 284
|
||||
export let KEY_F1: i32 = 290
|
||||
export let KEY_F2: i32 = 291
|
||||
export let KEY_F3: i32 = 292
|
||||
export let KEY_F4: i32 = 293
|
||||
export let KEY_F5: i32 = 294
|
||||
export let KEY_F6: i32 = 295
|
||||
export let KEY_F7: i32 = 296
|
||||
export let KEY_F8: i32 = 297
|
||||
export let KEY_F9: i32 = 298
|
||||
export let KEY_F10: i32 = 299
|
||||
export let KEY_F11: i32 = 300
|
||||
export let KEY_F12: i32 = 301
|
||||
export let KEY_LEFT_SHIFT: i32 = 340
|
||||
export let KEY_LEFT_CONTROL: i32 = 341
|
||||
export let KEY_LEFT_ALT: i32 = 342
|
||||
export let KEY_LEFT_SUPER: i32 = 343
|
||||
export let KEY_RIGHT_SHIFT: i32 = 344
|
||||
export let KEY_RIGHT_CONTROL: i32 = 345
|
||||
export let KEY_RIGHT_ALT: i32 = 346
|
||||
export let KEY_RIGHT_SUPER: i32 = 347
|
||||
export let KEY_KB_MENU: i32 = 348
|
||||
export let KEY_KP_0: i32 = 320
|
||||
export let KEY_KP_1: i32 = 321
|
||||
export let KEY_KP_2: i32 = 322
|
||||
export let KEY_KP_3: i32 = 323
|
||||
export let KEY_KP_4: i32 = 324
|
||||
export let KEY_KP_5: i32 = 325
|
||||
export let KEY_KP_6: i32 = 326
|
||||
export let KEY_KP_7: i32 = 327
|
||||
export let KEY_KP_8: i32 = 328
|
||||
export let KEY_KP_9: i32 = 329
|
||||
export let KEY_KP_DECIMAL: i32 = 330
|
||||
export let KEY_KP_DIVIDE: i32 = 331
|
||||
export let KEY_KP_MULTIPLY: i32 = 332
|
||||
export let KEY_KP_SUBTRACT: i32 = 333
|
||||
export let KEY_KP_ADD: i32 = 334
|
||||
export let KEY_KP_ENTER: i32 = 335
|
||||
export let KEY_KP_EQUAL: i32 = 336
|
||||
export let KEY_BACK: i32 = 4
|
||||
export let KEY_MENU: i32 = 5
|
||||
export let KEY_VOLUME_UP: i32 = 24
|
||||
export let KEY_VOLUME_DOWN: i32 = 25
|
||||
|
||||
// export enum KeyboardKey
|
||||
// {
|
||||
// NULL = 0
|
||||
// APOSTROPHE = 39
|
||||
// COMMA = 44
|
||||
// MINUS = 45
|
||||
// PERIOD = 46
|
||||
// SLASH = 47
|
||||
// ZERO = 48
|
||||
// ONE = 49
|
||||
// TWO = 50
|
||||
// THREE = 51
|
||||
// FOUR = 52
|
||||
// FIVE = 53
|
||||
// SIX = 54
|
||||
// SEVEN = 55
|
||||
// EIGHT = 56
|
||||
// NINE = 57
|
||||
// SEMICOLON = 59
|
||||
// EQUAL = 61
|
||||
// A = 65
|
||||
// B = 66
|
||||
// C = 67
|
||||
// D = 68
|
||||
// E = 69
|
||||
// F = 70
|
||||
// G = 71
|
||||
// H = 72
|
||||
// I = 73
|
||||
// J = 74
|
||||
// K = 75
|
||||
// L = 76
|
||||
// M = 77
|
||||
// N = 78
|
||||
// O = 79
|
||||
// P = 80
|
||||
// Q = 81
|
||||
// R = 82
|
||||
// S = 83
|
||||
// T = 84
|
||||
// U = 85
|
||||
// V = 86
|
||||
// W = 87
|
||||
// X = 88
|
||||
// Y = 89
|
||||
// Z = 90
|
||||
// LEFT_BRACKET = 91
|
||||
// BACKSLASH = 92
|
||||
// RIGHT_BRACKET = 93
|
||||
// GRAVE = 96
|
||||
// SPACE = 32
|
||||
// ESCAPE = 256
|
||||
// ENTER = 257
|
||||
// TAB = 258
|
||||
// BACKSPACE = 259
|
||||
// INSERT = 260
|
||||
// DELETE = 261
|
||||
// RIGHT = 262
|
||||
// LEFT = 263
|
||||
// DOWN = 264
|
||||
// UP = 265
|
||||
// PAGE_UP = 266
|
||||
// PAGE_DOWN = 267
|
||||
// HOME = 268
|
||||
// END = 269
|
||||
// CAPS_LOCK = 280
|
||||
// SCROLL_LOCK = 281
|
||||
// NUM_LOCK = 282
|
||||
// PRINT_SCREEN = 283
|
||||
// PAUSE = 284
|
||||
// F1 = 290
|
||||
// F2 = 291
|
||||
// F3 = 292
|
||||
// F4 = 293
|
||||
// F5 = 294
|
||||
// F6 = 295
|
||||
// F7 = 296
|
||||
// F8 = 297
|
||||
// F9 = 298
|
||||
// F10 = 299
|
||||
// F11 = 300
|
||||
// F12 = 301
|
||||
// LEFT_SHIFT = 340
|
||||
// LEFT_CONTROL = 341
|
||||
// LEFT_ALT = 342
|
||||
// LEFT_SUPER = 343
|
||||
// RIGHT_SHIFT = 344
|
||||
// RIGHT_CONTROL = 345
|
||||
// RIGHT_ALT = 346
|
||||
// RIGHT_SUPER = 347
|
||||
// KB_MENU = 348
|
||||
// KP_0 = 320
|
||||
// KP_1 = 321
|
||||
// KP_2 = 322
|
||||
// KP_3 = 323
|
||||
// KP_4 = 324
|
||||
// KP_5 = 325
|
||||
// KP_6 = 326
|
||||
// KP_7 = 327
|
||||
// KP_8 = 328
|
||||
// KP_9 = 329
|
||||
// KP_DECIMAL = 330
|
||||
// KP_DIVIDE = 331
|
||||
// KP_MULTIPLY = 332
|
||||
// KP_SUBTRACT = 333
|
||||
// KP_ADD = 334
|
||||
// KP_ENTER = 335
|
||||
// KP_EQUAL = 336
|
||||
// BACK = 4
|
||||
// MENU = 5
|
||||
// VOLUME_UP = 24
|
||||
// VOLUME_DOWN = 25
|
||||
// }
|
||||
export let MOUSE_BUTTON_LEFT: i32 = 0
|
||||
export let MOUSE_BUTTON_RIGHT: i32 = 1
|
||||
export let MOUSE_BUTTON_MIDDLE: i32 = 2
|
||||
export let MOUSE_BUTTON_SIDE: i32 = 3
|
||||
export let MOUSE_BUTTON_EXTRA: i32 = 4
|
||||
export let MOUSE_BUTTON_FORWARD: i32 = 5
|
||||
export let MOUSE_BUTTON_BACK: i32 = 6
|
||||
|
||||
// export enum MouseButton
|
||||
// {
|
||||
// LEFT = 0
|
||||
// RIGHT = 1
|
||||
// MIDDLE = 2
|
||||
// SIDE = 3
|
||||
// EXTRA = 4
|
||||
// FORWARD = 5
|
||||
// BACK = 6
|
||||
// }
|
||||
export let MOUSE_CURSOR_DEFAULT: i32 = 0
|
||||
export let MOUSE_CURSOR_ARROW: i32 = 1
|
||||
export let MOUSE_CURSOR_IBEAM: i32 = 2
|
||||
export let MOUSE_CURSOR_CROSSHAIR: i32 = 3
|
||||
export let MOUSE_CURSOR_POINTING_HAND: i32 = 4
|
||||
export let MOUSE_CURSOR_RESIZE_EW: i32 = 5
|
||||
export let MOUSE_CURSOR_RESIZE_NS: i32 = 6
|
||||
export let MOUSE_CURSOR_RESIZE_NWSE: i32 = 7
|
||||
export let MOUSE_CURSOR_RESIZE_NESW: i32 = 8
|
||||
export let MOUSE_CURSOR_RESIZE_ALL: i32 = 9
|
||||
export let MOUSE_CURSOR_NOT_ALLOWED: i32 = 10
|
||||
|
||||
// export enum MouseCursor
|
||||
// {
|
||||
// DEFAULT = 0
|
||||
// ARROW = 1
|
||||
// IBEAM = 2
|
||||
// CROSSHAIR = 3
|
||||
// POINTING_HAND = 4
|
||||
// RESIZE_EW = 5
|
||||
// RESIZE_NS = 6
|
||||
// RESIZE_NWSE = 7
|
||||
// RESIZE_NESW = 8
|
||||
// RESIZE_ALL = 9
|
||||
// NOT_ALLOWED = 10
|
||||
// }
|
||||
export let GAMEPAD_BUTTON_UNKNOWN: i32 = 0
|
||||
export let GAMEPAD_BUTTON_LEFT_FACE_UP: i32 = 1
|
||||
export let GAMEPAD_BUTTON_LEFT_FACE_RIGHT: i32 = 2
|
||||
export let GAMEPAD_BUTTON_LEFT_FACE_DOWN: i32 = 3
|
||||
export let GAMEPAD_BUTTON_LEFT_FACE_LEFT: i32 = 4
|
||||
export let GAMEPAD_BUTTON_RIGHT_FACE_UP: i32 = 5
|
||||
export let GAMEPAD_BUTTON_RIGHT_FACE_RIGHT: i32 = 6
|
||||
export let GAMEPAD_BUTTON_RIGHT_FACE_DOWN: i32 = 7
|
||||
export let GAMEPAD_BUTTON_RIGHT_FACE_LEFT: i32 = 8
|
||||
export let GAMEPAD_BUTTON_LEFT_TRIGGER_1: i32 = 9
|
||||
export let GAMEPAD_BUTTON_LEFT_TRIGGER_2: i32 = 10
|
||||
export let GAMEPAD_BUTTON_RIGHT_TRIGGER_1: i32 = 11
|
||||
export let GAMEPAD_BUTTON_RIGHT_TRIGGER_2: i32 = 12
|
||||
export let GAMEPAD_BUTTON_MIDDLE_LEFT: i32 = 13
|
||||
export let GAMEPAD_BUTTON_MIDDLE: i32 = 14
|
||||
export let GAMEPAD_BUTTON_MIDDLE_RIGHT: i32 = 15
|
||||
export let GAMEPAD_BUTTON_LEFT_THUMB: i32 = 16
|
||||
export let GAMEPAD_BUTTON_RIGHT_THUMB: i32 = 17
|
||||
|
||||
// export enum GamepadButton
|
||||
// {
|
||||
// UNKNOWN = 0
|
||||
// LEFT_FACE_UP
|
||||
// LEFT_FACE_RIGHT
|
||||
// LEFT_FACE_DOWN
|
||||
// LEFT_FACE_LEFT
|
||||
// RIGHT_FACE_UP
|
||||
// RIGHT_FACE_RIGHT
|
||||
// RIGHT_FACE_DOWN
|
||||
// RIGHT_FACE_LEFT
|
||||
// LEFT_TRIGGER_1
|
||||
// LEFT_TRIGGER_2
|
||||
// RIGHT_TRIGGER_1
|
||||
// RIGHT_TRIGGER_2
|
||||
// MIDDLE_LEFT
|
||||
// MIDDLE
|
||||
// MIDDLE_RIGHT
|
||||
// LEFT_THUMB
|
||||
// RIGHT_THUMB
|
||||
// }
|
||||
export let GAMEPAD_AXIS_LEFT_X: i32 = 0
|
||||
export let GAMEPAD_AXIS_LEFT_Y: i32 = 1
|
||||
export let GAMEPAD_AXIS_RIGHT_X: i32 = 2
|
||||
export let GAMEPAD_AXIS_RIGHT_Y: i32 = 3
|
||||
export let GAMEPAD_AXIS_LEFT_TRIGGER: i32 = 4
|
||||
export let GAMEPAD_AXIS_RIGHT_TRIGGER: i32 = 5
|
||||
|
||||
// export enum GamepadAxis
|
||||
// {
|
||||
// LEFT_X = 0
|
||||
// LEFT_Y = 1
|
||||
// RIGHT_X = 2
|
||||
// RIGHT_Y = 3
|
||||
// LEFT_TRIGGER = 4
|
||||
// RIGHT_TRIGGER = 5
|
||||
// }
|
||||
export let MATERIAL_MAP_ALBEDO: i32 = 0
|
||||
export let MATERIAL_MAP_METALNESS: i32 = 1
|
||||
export let MATERIAL_MAP_NORMAL: i32 = 2
|
||||
export let MATERIAL_MAP_ROUGHNESS: i32 = 3
|
||||
export let MATERIAL_MAP_OCCLUSION: i32 = 4
|
||||
export let MATERIAL_MAP_EMISSION: i32 = 5
|
||||
export let MATERIAL_MAP_HEIGHT: i32 = 6
|
||||
export let MATERIAL_MAP_CUBEMAP: i32 = 7
|
||||
export let MATERIAL_MAP_IRRADIANCE: i32 = 8
|
||||
export let MATERIAL_MAP_PREFILTER: i32 = 9
|
||||
export let MATERIAL_MAP_BRDF: i32 = 10
|
||||
|
||||
// export enum MaterialMapIndex
|
||||
// {
|
||||
// ALBEDO = 0
|
||||
// METALNESS
|
||||
// NORMAL
|
||||
// ROUGHNESS
|
||||
// OCCLUSION
|
||||
// EMISSION
|
||||
// HEIGHT
|
||||
// CUBEMAP
|
||||
// IRRADIANCE
|
||||
// PREFILTER
|
||||
// BRDF
|
||||
// }
|
||||
export let SHADER_LOC_VERTEX_POSITION: i32 = 0
|
||||
export let SHADER_LOC_VERTEX_TEXCOORD01: i32 = 1
|
||||
export let SHADER_LOC_VERTEX_TEXCOORD02: i32 = 2
|
||||
export let SHADER_LOC_VERTEX_NORMAL: i32 = 3
|
||||
export let SHADER_LOC_VERTEX_TANGENT: i32 = 4
|
||||
export let SHADER_LOC_VERTEX_COLOR: i32 = 5
|
||||
export let SHADER_LOC_MATRIX_MVP: i32 = 6
|
||||
export let SHADER_LOC_MATRIX_VIEW: i32 = 7
|
||||
export let SHADER_LOC_MATRIX_PROJECTION: i32 = 8
|
||||
export let SHADER_LOC_MATRIX_MODEL: i32 = 9
|
||||
export let SHADER_LOC_MATRIX_NORMAL: i32 = 10
|
||||
export let SHADER_LOC_VECTOR_VIEW: i32 = 11
|
||||
export let SHADER_LOC_COLOR_DIFFUSE: i32 = 12
|
||||
export let SHADER_LOC_COLOR_SPECULAR: i32 = 13
|
||||
export let SHADER_LOC_COLOR_AMBIENT: i32 = 14
|
||||
export let SHADER_LOC_MAP_ALBEDO: i32 = 15
|
||||
export let SHADER_LOC_MAP_METALNESS: i32 = 16
|
||||
export let SHADER_LOC_MAP_NORMAL: i32 = 17
|
||||
export let SHADER_LOC_MAP_ROUGHNESS: i32 = 18
|
||||
export let SHADER_LOC_MAP_OCCLUSION: i32 = 19
|
||||
export let SHADER_LOC_MAP_EMISSION: i32 = 20
|
||||
export let SHADER_LOC_MAP_HEIGHT: i32 = 21
|
||||
export let SHADER_LOC_MAP_CUBEMAP: i32 = 22
|
||||
export let SHADER_LOC_MAP_IRRADIANCE: i32 = 23
|
||||
export let SHADER_LOC_MAP_PREFILTER: i32 = 24
|
||||
export let SHADER_LOC_MAP_BRDF: i32 = 25
|
||||
export let SHADER_LOC_VERTEX_BONEIDS: i32 = 26
|
||||
export let SHADER_LOC_VERTEX_BONEWEIGHTS: i32 = 27
|
||||
export let SHADER_LOC_BONE_MATRICES: i32 = 28
|
||||
|
||||
// export enum ShaderLocationIndex
|
||||
// {
|
||||
// VERTEX_POSITION = 0
|
||||
// VERTEX_TEXCOORD01
|
||||
// VERTEX_TEXCOORD02
|
||||
// VERTEX_NORMAL
|
||||
// VERTEX_TANGENT
|
||||
// VERTEX_COLOR
|
||||
// MATRIX_MVP
|
||||
// MATRIX_VIEW
|
||||
// MATRIX_PROJECTION
|
||||
// MATRIX_MODEL
|
||||
// MATRIX_NORMAL
|
||||
// VECTOR_VIEW
|
||||
// COLOR_DIFFUSE
|
||||
// COLOR_SPECULAR
|
||||
// COLOR_AMBIENT
|
||||
// MAP_ALBEDO
|
||||
// MAP_METALNESS
|
||||
// MAP_NORMAL
|
||||
// MAP_ROUGHNESS
|
||||
// MAP_OCCLUSION
|
||||
// MAP_EMISSION
|
||||
// MAP_HEIGHT
|
||||
// MAP_CUBEMAP
|
||||
// MAP_IRRADIANCE
|
||||
// MAP_PREFILTER
|
||||
// MAP_BRDF
|
||||
// VERTEX_BONEIDS
|
||||
// VERTEX_BONEWEIGHTS
|
||||
// BONE_MATRICES
|
||||
// }
|
||||
export let SHADER_UNIFORM_FLOAT: i32 = 0
|
||||
export let SHADER_UNIFORM_VEC2: i32 = 1
|
||||
export let SHADER_UNIFORM_VEC3: i32 = 2
|
||||
export let SHADER_UNIFORM_VEC4: i32 = 3
|
||||
export let SHADER_UNIFORM_INT: i32 = 4
|
||||
export let SHADER_UNIFORM_IVEC2: i32 = 5
|
||||
export let SHADER_UNIFORM_IVEC3: i32 = 6
|
||||
export let SHADER_UNIFORM_IVEC4: i32 = 7
|
||||
export let SHADER_UNIFORM_SAMPLER2D: i32 = 8
|
||||
|
||||
// export enum ShaderUniformDataType {
|
||||
// FLOAT = 0
|
||||
// VEC2
|
||||
// VEC3
|
||||
// VEC4
|
||||
// INT
|
||||
// IVEC2
|
||||
// IVEC3
|
||||
// IVEC4
|
||||
// SAMPLER2D
|
||||
// }
|
||||
export let SHADER_ATTRIB_FLOAT: i32 = 0
|
||||
export let SHADER_ATTRIB_VEC2: i32 = 1
|
||||
export let SHADER_ATTRIB_VEC3: i32 = 2
|
||||
export let SHADER_ATTRIB_VEC4: i32 = 3
|
||||
|
||||
// export enum ShaderAttributeDataType {
|
||||
// FLOAT = 0
|
||||
// VEC2
|
||||
// VEC3
|
||||
// VEC4
|
||||
// }
|
||||
export let PIXELFORMAT_UNCOMPRESSED_GRAYSCALE: i32 = 1
|
||||
export let PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA: i32 = 2
|
||||
export let PIXELFORMAT_UNCOMPRESSED_R5G6B5: i32 = 3
|
||||
export let PIXELFORMAT_UNCOMPRESSED_R8G8B8: i32 = 4
|
||||
export let PIXELFORMAT_UNCOMPRESSED_R5G5B5A1: i32 = 5
|
||||
export let PIXELFORMAT_UNCOMPRESSED_R4G4B4A4: i32 = 6
|
||||
export let PIXELFORMAT_UNCOMPRESSED_R8G8B8A8: i32 = 7
|
||||
export let PIXELFORMAT_UNCOMPRESSED_R32: i32 = 8
|
||||
export let PIXELFORMAT_UNCOMPRESSED_R32G32B32: i32 = 9
|
||||
export let PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: i32 = 10
|
||||
export let PIXELFORMAT_UNCOMPRESSED_R16: i32 = 11
|
||||
export let PIXELFORMAT_UNCOMPRESSED_R16G16B16: i32 = 12
|
||||
export let PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: i32 = 13
|
||||
export let PIXELFORMAT_COMPRESSED_DXT1_RGB: i32 = 14
|
||||
export let PIXELFORMAT_COMPRESSED_DXT1_RGBA: i32 = 15
|
||||
export let PIXELFORMAT_COMPRESSED_DXT3_RGBA: i32 = 16
|
||||
export let PIXELFORMAT_COMPRESSED_DXT5_RGBA: i32 = 17
|
||||
export let PIXELFORMAT_COMPRESSED_ETC1_RGB: i32 = 18
|
||||
export let PIXELFORMAT_COMPRESSED_ETC2_RGB: i32 = 19
|
||||
export let PIXELFORMAT_COMPRESSED_ETC2_EAC_RGBA: i32 = 20
|
||||
export let PIXELFORMAT_COMPRESSED_PVRT_RGB: i32 = 21
|
||||
export let PIXELFORMAT_COMPRESSED_PVRT_RGBA: i32 = 22
|
||||
export let PIXELFORMAT_COMPRESSED_ASTC_4x4_RGBA: i32 = 23
|
||||
export let PIXELFORMAT_COMPRESSED_ASTC_8x8_RGBA: i32 = 24
|
||||
|
||||
// export enum PixelFormat
|
||||
// {
|
||||
// UNCOMPRESSED_GRAYSCALE = 1
|
||||
// UNCOMPRESSED_GRAY_ALPHA
|
||||
// UNCOMPRESSED_R5G6B5
|
||||
// UNCOMPRESSED_R8G8B8
|
||||
// UNCOMPRESSED_R5G5B5A1
|
||||
// UNCOMPRESSED_R4G4B4A4
|
||||
// UNCOMPRESSED_R8G8B8A8
|
||||
// UNCOMPRESSED_R32
|
||||
// UNCOMPRESSED_R32G32B32
|
||||
// UNCOMPRESSED_R32G32B32A32
|
||||
// UNCOMPRESSED_R16
|
||||
// UNCOMPRESSED_R16G16B16
|
||||
// UNCOMPRESSED_R16G16B16A16
|
||||
// COMPRESSED_DXT1_RGB
|
||||
// COMPRESSED_DXT1_RGBA
|
||||
// COMPRESSED_DXT3_RGBA
|
||||
// COMPRESSED_DXT5_RGBA
|
||||
// COMPRESSED_ETC1_RGB
|
||||
// COMPRESSED_ETC2_RGB
|
||||
// COMPRESSED_ETC2_EAC_RGBA
|
||||
// COMPRESSED_PVRT_RGB
|
||||
// COMPRESSED_PVRT_RGBA
|
||||
// COMPRESSED_ASTC_4x4_RGBA
|
||||
// COMPRESSED_ASTC_8x8_RGBA
|
||||
// }
|
||||
export let TEXTURE_FILTER_POINT: i32 = 0
|
||||
export let TEXTURE_FILTER_BILINEAR: i32 = 1
|
||||
export let TEXTURE_FILTER_TRILINEAR: i32 = 2
|
||||
export let TEXTURE_FILTER_ANISOTROPIC_4X: i32 = 3
|
||||
export let TEXTURE_FILTER_ANISOTROPIC_8X: i32 = 4
|
||||
export let TEXTURE_FILTER_ANISOTROPIC_16X: i32 = 5
|
||||
|
||||
// export enum TextureFilter
|
||||
// {
|
||||
// POINT = 0
|
||||
// BILINEAR
|
||||
// TRILINEAR
|
||||
// ANISOTROPIC_4X
|
||||
// ANISOTROPIC_8X
|
||||
// ANISOTROPIC_16X
|
||||
// }
|
||||
export let TEXTURE_WRAP_REPEAT: i32 = 0
|
||||
export let TEXTURE_WRAP_CLAMP: i32 = 1
|
||||
export let TEXTURE_WRAP_MIRROR_REPEAT: i32 = 2
|
||||
export let TEXTURE_WRAP_MIRROR_CLAMP: i32 = 3
|
||||
|
||||
// export enum TextureWrap
|
||||
// {
|
||||
// REPEAT = 0
|
||||
// CLAMP
|
||||
// MIRROR_REPEAT
|
||||
// MIRROR_CLAMP
|
||||
// }
|
||||
export let CUBEMAP_LAYOUT_AUTO_DETECT: i32 = 0
|
||||
export let CUBEMAP_LAYOUT_LINE_VERTICAL: i32 = 1
|
||||
export let CUBEMAP_LAYOUT_LINE_HORIZONTAL: i32 = 2
|
||||
export let CUBEMAP_LAYOUT_CROSS_THREE_BY_FOUR: i32 = 3
|
||||
export let CUBEMAP_LAYOUT_CROSS_FOUR_BY_THREE: i32 = 4
|
||||
|
||||
// export enum CubemapLayout
|
||||
// {
|
||||
// AUTO_DETECT = 0
|
||||
// LINE_VERTICAL
|
||||
// LINE_HORIZONTAL
|
||||
// CROSS_THREE_BY_FOUR
|
||||
// CROSS_FOUR_BY_THREE
|
||||
// }
|
||||
export let FONT_DEFAULT: i32 = 0
|
||||
export let FONT_BITMAP: i32 = 1
|
||||
export let FONT_SDF: i32 = 2
|
||||
|
||||
// export enum FontType
|
||||
// {
|
||||
// FONT_DEFAULT = 0
|
||||
// FONT_BITMAP
|
||||
// FONT_SDF
|
||||
// }
|
||||
export let BLEND_ALPHA: i32 = 0
|
||||
export let BLEND_ADDITIVE: i32 = 1
|
||||
export let BLEND_MULTIPLIED: i32 = 2
|
||||
export let BLEND_ADD_COLORS: i32 = 3
|
||||
export let BLEND_SUBTRACT_COLORS: i32 = 4
|
||||
export let BLEND_ALPHA_PREMULTIPLY: i32 = 5
|
||||
export let BLEND_CUSTOM: i32 = 6
|
||||
export let BLEND_CUSTOM_SEPARATE: i32 = 7
|
||||
|
||||
// export enum BlendMode
|
||||
// {
|
||||
// BLEND_ALPHA = 0,
|
||||
// BLEND_ADDITIVE,
|
||||
// BLEND_MULTIPLIED,
|
||||
// BLEND_ADD_COLORS,
|
||||
// BLEND_SUBTRACT_COLORS,
|
||||
// BLEND_ALPHA_PREMULTIPLY,
|
||||
// BLEND_CUSTOM,
|
||||
// BLEND_CUSTOM_SEPARATE
|
||||
// }
|
||||
export let GESTURE_NONE: i32 = 0
|
||||
export let GESTURE_TAP: i32 = 1
|
||||
export let GESTURE_DOUBLETAP: i32 = 2
|
||||
export let GESTURE_HOLD: i32 = 4
|
||||
export let GESTURE_DRAG: i32 = 8
|
||||
export let GESTURE_SWIPE_RIGHT: i32 = 16
|
||||
export let GESTURE_SWIPE_LEFT: i32 = 32
|
||||
export let GESTURE_SWIPE_UP: i32 = 64
|
||||
export let GESTURE_SWIPE_DOWN: i32 = 128
|
||||
export let GESTURE_PINCH_IN: i32 = 256
|
||||
export let GESTURE_PINCH_OUT: i32 = 512
|
||||
|
||||
// export enum Gesture
|
||||
// {
|
||||
// GESTURE_NONE = 0
|
||||
// GESTURE_TAP = 1
|
||||
// GESTURE_DOUBLETAP = 2
|
||||
// GESTURE_HOLD = 4
|
||||
// GESTURE_DRAG = 8
|
||||
// GESTURE_SWIPE_RIGHT = 16
|
||||
// GESTURE_SWIPE_LEFT = 32
|
||||
// GESTURE_SWIPE_UP = 64
|
||||
// GESTURE_SWIPE_DOWN = 128
|
||||
// GESTURE_PINCH_IN = 256
|
||||
// GESTURE_PINCH_OUT = 512
|
||||
// }
|
||||
export let CAMERA_CUSTOM: i32 = 0
|
||||
export let CAMERA_FREE: i32 = 1
|
||||
export let CAMERA_ORBITAL: i32 = 2
|
||||
export let CAMERA_FIRST_PERSON: i32 = 3
|
||||
export let CAMERA_THIRD_PERSON: i32 = 4
|
||||
|
||||
// export enum CameraMode
|
||||
// {
|
||||
// CAMERA_CUSTOM = 0
|
||||
// CAMERA_FREE
|
||||
// CAMERA_ORBITAL
|
||||
// CAMERA_FIRST_PERSON
|
||||
// CAMERA_THIRD_PERSON
|
||||
// }
|
||||
export let CAMERA_PERSPECTIVE = 0
|
||||
export let CAMERA_ORTHOGRAPHIC = 1
|
||||
|
||||
// export enum CameraProjection
|
||||
// {
|
||||
// CAMERA_PERSPECTIVE = 0
|
||||
// CAMERA_ORTHOGRAPHIC
|
||||
// }
|
||||
|
||||
// export enum NPatchLayout
|
||||
// {
|
||||
// NPATCH_NINE_PATCH = 0
|
||||
// NPATCH_THREE_PATCH_VERTICAL
|
||||
// NPATCH_THREE_PATCH_HORIZONTAL
|
||||
// }
|
||||
export let NPATCH_NINE_PATCH = 0
|
||||
export let NPATCH_THREE_PATCH_VERTICAL = 1
|
||||
export let NPATCH_THREE_PATCH_HORIZONTAL = 2
|
||||
|
||||
export extern "InitWindow" func InitWindow(width: i32, height: i32, title: cstring)
|
||||
export extern "CloseWindow" func CloseWindow()
|
||||
|
||||
Reference in New Issue
Block a user