33
44LUAU_FASTFLAGVARIABLE(LuauVectorDefinitionsExtra)
55LUAU_FASTFLAG(LuauBufferBitMethods)
6+ LUAU_FASTFLAG(LuauVector2Constructor)
67
78namespace Luau
89{
@@ -265,7 +266,7 @@ declare buffer: {
265266
266267)BUILTIN_SRC";
267268
268- static const std::string kBuiltinDefinitionVectorSrc_DEPRECATED = R"BUILTIN_SRC(
269+ static const std::string kBuiltinDefinitionVectorSrc_NoExtra_NoVector2Ctor_DEPRECATED = R"BUILTIN_SRC(
269270
270271-- TODO: this will be replaced with a built-in primitive type
271272declare class vector end
@@ -291,7 +292,33 @@ declare vector: {
291292
292293)BUILTIN_SRC";
293294
294- static const std::string kBuiltinDefinitionVectorSrc = R"BUILTIN_SRC(
295+ static const std::string kBuiltinDefinitionVectorSrc_NoExtra_DEPRECATED = R"BUILTIN_SRC(
296+
297+ -- TODO: this will be replaced with a built-in primitive type
298+ declare class vector end
299+
300+ declare vector: {
301+ create: @checked (x: number, y: number, z: number?) -> vector,
302+ magnitude: @checked (vec: vector) -> number,
303+ normalize: @checked (vec: vector) -> vector,
304+ cross: @checked (vec1: vector, vec2: vector) -> vector,
305+ dot: @checked (vec1: vector, vec2: vector) -> number,
306+ angle: @checked (vec1: vector, vec2: vector, axis: vector?) -> number,
307+ floor: @checked (vec: vector) -> vector,
308+ ceil: @checked (vec: vector) -> vector,
309+ abs: @checked (vec: vector) -> vector,
310+ sign: @checked (vec: vector) -> vector,
311+ clamp: @checked (vec: vector, min: vector, max: vector) -> vector,
312+ max: @checked (vector, ...vector) -> vector,
313+ min: @checked (vector, ...vector) -> vector,
314+
315+ zero: vector,
316+ one: vector,
317+ }
318+
319+ )BUILTIN_SRC";
320+
321+ static const std::string kBuiltinDefinitionVectorSrc_NoVector2Ctor_DEPRECATED = R"BUILTIN_SRC(
295322
296323-- While vector would have been better represented as a built-in primitive type, type solver class handling covers most of the properties
297324declare class vector
@@ -321,16 +348,56 @@ declare vector: {
321348
322349)BUILTIN_SRC";
323350
351+ static const std::string kBuiltinDefinitionVectorSrc = R"BUILTIN_SRC(
352+
353+ -- While vector would have been better represented as a built-in primitive type, type solver class handling covers most of the properties
354+ declare class vector
355+ x: number
356+ y: number
357+ z: number
358+ end
359+
360+ declare vector: {
361+ create: @checked (x: number, y: number, z: number?) -> vector,
362+ magnitude: @checked (vec: vector) -> number,
363+ normalize: @checked (vec: vector) -> vector,
364+ cross: @checked (vec1: vector, vec2: vector) -> vector,
365+ dot: @checked (vec1: vector, vec2: vector) -> number,
366+ angle: @checked (vec1: vector, vec2: vector, axis: vector?) -> number,
367+ floor: @checked (vec: vector) -> vector,
368+ ceil: @checked (vec: vector) -> vector,
369+ abs: @checked (vec: vector) -> vector,
370+ sign: @checked (vec: vector) -> vector,
371+ clamp: @checked (vec: vector, min: vector, max: vector) -> vector,
372+ max: @checked (vector, ...vector) -> vector,
373+ min: @checked (vector, ...vector) -> vector,
374+
375+ zero: vector,
376+ one: vector,
377+ }
378+
379+ )BUILTIN_SRC";
380+
324381std::string getBuiltinDefinitionSource()
325382{
326383 std::string result = kBuiltinDefinitionLuaSrcChecked;
327384
328385 result += FFlag::LuauBufferBitMethods ? kBuiltinDefinitionBufferSrc : kBuiltinDefinitionBufferSrc_DEPRECATED;
329386
330387 if (FFlag::LuauVectorDefinitionsExtra)
331- result += kBuiltinDefinitionVectorSrc;
388+ {
389+ if (FFlag::LuauVector2Constructor)
390+ result += kBuiltinDefinitionVectorSrc;
391+ else
392+ result += kBuiltinDefinitionVectorSrc_NoVector2Ctor_DEPRECATED;
393+ }
332394 else
333- result += kBuiltinDefinitionVectorSrc_DEPRECATED;
395+ {
396+ if (FFlag::LuauVector2Constructor)
397+ result += kBuiltinDefinitionVectorSrc_NoExtra_DEPRECATED;
398+ else
399+ result += kBuiltinDefinitionVectorSrc_NoExtra_NoVector2Ctor_DEPRECATED;
400+ }
334401
335402 return result;
336403}
0 commit comments