@@ -4513,6 +4513,297 @@ Variant ShaderLanguage::constant_value_to_variant(const Vector<Scalar> &p_value,
45134513	return  Variant ();
45144514}
45154515
4516+ Variant ShaderLanguage::get_default_datatype_value (DataType p_type, int  p_array_size, ShaderLanguage::ShaderNode::Uniform::Hint p_hint) {
4517+ 	int  array_size = p_array_size;
4518+ 
4519+ 	Variant value;
4520+ 	switch  (p_type) {
4521+ 		case  ShaderLanguage::TYPE_BOOL:
4522+ 			if  (array_size > 0 ) {
4523+ 				PackedInt32Array array;
4524+ 				for  (int  i = 0 ; i < array_size; i++) {
4525+ 					array.push_back (false );
4526+ 				}
4527+ 				value = Variant (array);
4528+ 			} else  {
4529+ 				VariantInitializer<bool >::init (&value);
4530+ 				VariantDefaultInitializer<bool >::init (&value);
4531+ 			}
4532+ 			break ;
4533+ 		case  ShaderLanguage::TYPE_BVEC2:
4534+ 			array_size *= 2 ;
4535+ 
4536+ 			if  (array_size > 0 ) {
4537+ 				PackedInt32Array array;
4538+ 				for  (int  i = 0 ; i < array_size; i++) {
4539+ 					array.push_back (false );
4540+ 				}
4541+ 				value = Variant (array);
4542+ 			} else  {
4543+ 				VariantInitializer<int64_t >::init (&value);
4544+ 				VariantDefaultInitializer<int64_t >::init (&value);
4545+ 			}
4546+ 			break ;
4547+ 		case  ShaderLanguage::TYPE_BVEC3:
4548+ 			array_size *= 3 ;
4549+ 
4550+ 			if  (array_size > 0 ) {
4551+ 				PackedInt32Array array;
4552+ 				for  (int  i = 0 ; i < array_size; i++) {
4553+ 					array.push_back (false );
4554+ 				}
4555+ 				value = Variant (array);
4556+ 			} else  {
4557+ 				VariantInitializer<int64_t >::init (&value);
4558+ 				VariantDefaultInitializer<int64_t >::init (&value);
4559+ 			}
4560+ 			break ;
4561+ 		case  ShaderLanguage::TYPE_BVEC4:
4562+ 			array_size *= 4 ;
4563+ 
4564+ 			if  (array_size > 0 ) {
4565+ 				PackedInt32Array array;
4566+ 				for  (int  i = 0 ; i < array_size; i++) {
4567+ 					array.push_back (false );
4568+ 				}
4569+ 				value = Variant (array);
4570+ 			} else  {
4571+ 				VariantInitializer<int64_t >::init (&value);
4572+ 				VariantDefaultInitializer<int64_t >::init (&value);
4573+ 			}
4574+ 			break ;
4575+ 		case  ShaderLanguage::TYPE_INT:
4576+ 			if  (array_size > 0 ) {
4577+ 				PackedInt32Array array;
4578+ 				for  (int  i = 0 ; i < array_size; i++) {
4579+ 					array.push_back (0 );
4580+ 				}
4581+ 				value = Variant (array);
4582+ 			} else  {
4583+ 				VariantInitializer<int64_t >::init (&value);
4584+ 				VariantDefaultInitializer<int64_t >::init (&value);
4585+ 			}
4586+ 			break ;
4587+ 		case  ShaderLanguage::TYPE_IVEC2:
4588+ 			if  (array_size > 0 ) {
4589+ 				array_size *= 2 ;
4590+ 
4591+ 				PackedInt32Array array;
4592+ 				for  (int  i = 0 ; i < array_size; i++) {
4593+ 					array.push_back (0 );
4594+ 				}
4595+ 				value = Variant (array);
4596+ 			} else  {
4597+ 				VariantInitializer<Vector2i>::init (&value);
4598+ 				VariantDefaultInitializer<Vector2i>::init (&value);
4599+ 			}
4600+ 			break ;
4601+ 		case  ShaderLanguage::TYPE_IVEC3:
4602+ 			if  (array_size > 0 ) {
4603+ 				array_size *= 3 ;
4604+ 
4605+ 				PackedInt32Array array;
4606+ 				for  (int  i = 0 ; i < array_size; i++) {
4607+ 					array.push_back (0 );
4608+ 				}
4609+ 				value = Variant (array);
4610+ 			} else  {
4611+ 				VariantInitializer<Vector3i>::init (&value);
4612+ 				VariantDefaultInitializer<Vector3i>::init (&value);
4613+ 			}
4614+ 			break ;
4615+ 		case  ShaderLanguage::TYPE_IVEC4:
4616+ 			if  (array_size > 0 ) {
4617+ 				array_size *= 4 ;
4618+ 
4619+ 				PackedInt32Array array;
4620+ 				for  (int  i = 0 ; i < array_size; i++) {
4621+ 					array.push_back (0 );
4622+ 				}
4623+ 				value = Variant (array);
4624+ 			} else  {
4625+ 				VariantInitializer<Vector4i>::init (&value);
4626+ 				VariantDefaultInitializer<Vector4i>::init (&value);
4627+ 			}
4628+ 			break ;
4629+ 		case  ShaderLanguage::TYPE_UINT:
4630+ 			if  (array_size > 0 ) {
4631+ 				PackedInt32Array array;
4632+ 				for  (int  i = 0 ; i < array_size; i++) {
4633+ 					array.push_back (0U );
4634+ 				}
4635+ 				value = Variant (array);
4636+ 			} else  {
4637+ 				VariantInitializer<int64_t >::init (&value);
4638+ 				VariantDefaultInitializer<int64_t >::init (&value);
4639+ 			}
4640+ 			break ;
4641+ 		case  ShaderLanguage::TYPE_UVEC2:
4642+ 			if  (array_size > 0 ) {
4643+ 				array_size *= 2 ;
4644+ 
4645+ 				PackedInt32Array array;
4646+ 				for  (int  i = 0 ; i < array_size; i++) {
4647+ 					array.push_back (0U );
4648+ 				}
4649+ 				value = Variant (array);
4650+ 			} else  {
4651+ 				VariantInitializer<Vector2i>::init (&value);
4652+ 				VariantDefaultInitializer<Vector2i>::init (&value);
4653+ 			}
4654+ 			break ;
4655+ 		case  ShaderLanguage::TYPE_UVEC3:
4656+ 			if  (array_size > 0 ) {
4657+ 				array_size *= 3 ;
4658+ 
4659+ 				PackedInt32Array array;
4660+ 				for  (int  i = 0 ; i < array_size; i++) {
4661+ 					array.push_back (0U );
4662+ 				}
4663+ 				value = Variant (array);
4664+ 			} else  {
4665+ 				VariantInitializer<Vector3i>::init (&value);
4666+ 				VariantDefaultInitializer<Vector3i>::init (&value);
4667+ 			}
4668+ 			break ;
4669+ 		case  ShaderLanguage::TYPE_UVEC4:
4670+ 			if  (array_size > 0 ) {
4671+ 				array_size *= 4 ;
4672+ 
4673+ 				PackedInt32Array array;
4674+ 				for  (int  i = 0 ; i < array_size; i++) {
4675+ 					array.push_back (0U );
4676+ 				}
4677+ 				value = Variant (array);
4678+ 			} else  {
4679+ 				VariantInitializer<Vector4i>::init (&value);
4680+ 				VariantDefaultInitializer<Vector4i>::init (&value);
4681+ 			}
4682+ 			break ;
4683+ 		case  ShaderLanguage::TYPE_FLOAT:
4684+ 			if  (array_size > 0 ) {
4685+ 				PackedFloat32Array array;
4686+ 				for  (int  i = 0 ; i < array_size; i++) {
4687+ 					array.push_back (0 .0f );
4688+ 				}
4689+ 				value = Variant (array);
4690+ 			} else  {
4691+ 				VariantInitializer<float >::init (&value);
4692+ 				VariantDefaultInitializer<float >::init (&value);
4693+ 			}
4694+ 			break ;
4695+ 		case  ShaderLanguage::TYPE_VEC2:
4696+ 			if  (array_size > 0 ) {
4697+ 				PackedVector2Array array;
4698+ 				for  (int  i = 0 ; i < array_size; i++) {
4699+ 					array.push_back (Vector2 (0 .0f , 0 .0f ));
4700+ 				}
4701+ 				value = Variant (array);
4702+ 			} else  {
4703+ 				VariantInitializer<Vector2>::init (&value);
4704+ 				VariantDefaultInitializer<Vector2>::init (&value);
4705+ 			}
4706+ 			break ;
4707+ 		case  ShaderLanguage::TYPE_VEC3:
4708+ 			if  (array_size > 0 ) {
4709+ 				if  (p_hint == ShaderLanguage::ShaderNode::Uniform::HINT_SOURCE_COLOR) {
4710+ 					PackedColorArray array;
4711+ 					for  (int  i = 0 ; i < array_size; i++) {
4712+ 						array.push_back (Color (0 .0f , 0 .0f , 0 .0f ));
4713+ 					}
4714+ 					value = Variant (array);
4715+ 				} else  {
4716+ 					PackedVector3Array array;
4717+ 					for  (int  i = 0 ; i < array_size; i++) {
4718+ 						array.push_back (Vector3 (0 .0f , 0 .0f , 0 .0f ));
4719+ 					}
4720+ 					value = Variant (array);
4721+ 				}
4722+ 			} else  {
4723+ 				if  (p_hint == ShaderLanguage::ShaderNode::Uniform::HINT_SOURCE_COLOR) {
4724+ 					VariantInitializer<Color>::init (&value);
4725+ 					VariantDefaultInitializer<Color>::init (&value);
4726+ 				} else  {
4727+ 					VariantInitializer<Vector3>::init (&value);
4728+ 					VariantDefaultInitializer<Vector3>::init (&value);
4729+ 				}
4730+ 			}
4731+ 			break ;
4732+ 		case  ShaderLanguage::TYPE_VEC4:
4733+ 			if  (array_size > 0 ) {
4734+ 				if  (p_hint == ShaderLanguage::ShaderNode::Uniform::HINT_SOURCE_COLOR) {
4735+ 					PackedColorArray array;
4736+ 					for  (int  i = 0 ; i < array_size; i++) {
4737+ 						array.push_back (Color (0 .0f , 0 .0f , 0 .0f , 0 .0f ));
4738+ 					}
4739+ 					value = Variant (array);
4740+ 				} else  {
4741+ 					PackedVector4Array array;
4742+ 					for  (int  i = 0 ; i < array_size; i++) {
4743+ 						array.push_back (Vector4 (0 .0f , 0 .0f , 0 .0f , 0 .0f ));
4744+ 					}
4745+ 					value = Variant (array);
4746+ 				}
4747+ 			} else  {
4748+ 				if  (p_hint == ShaderLanguage::ShaderNode::Uniform::HINT_SOURCE_COLOR) {
4749+ 					VariantInitializer<Color>::init (&value);
4750+ 					VariantDefaultInitializer<Color>::init (&value);
4751+ 				} else  {
4752+ 					VariantInitializer<Vector4>::init (&value);
4753+ 					VariantDefaultInitializer<Vector4>::init (&value);
4754+ 				}
4755+ 			}
4756+ 			break ;
4757+ 		case  ShaderLanguage::TYPE_MAT2:
4758+ 			if  (array_size > 0 ) {
4759+ 				PackedFloat32Array array;
4760+ 				for  (int  i = 0 ; i < array_size; i++) {
4761+ 					for  (int  j = 0 ; j < 4 ; j++) {
4762+ 						array.push_back (0 .0f );
4763+ 					}
4764+ 				}
4765+ 				value = Variant (array);
4766+ 			} else  {
4767+ 				VariantInitializer<Transform2D>::init (&value);
4768+ 				VariantDefaultInitializer<Transform2D>::init (&value);
4769+ 			}
4770+ 			break ;
4771+ 		case  ShaderLanguage::TYPE_MAT3: {
4772+ 			if  (array_size > 0 ) {
4773+ 				PackedFloat32Array array;
4774+ 				for  (int  i = 0 ; i < array_size; i++) {
4775+ 					for  (int  j = 0 ; j < 9 ; j++) {
4776+ 						array.push_back (0 .0f );
4777+ 					}
4778+ 				}
4779+ 				value = Variant (array);
4780+ 			} else  {
4781+ 				VariantInitializer<Basis>::init (&value);
4782+ 				VariantDefaultInitializer<Basis>::init (&value);
4783+ 			}
4784+ 			break ;
4785+ 		}
4786+ 		case  ShaderLanguage::TYPE_MAT4: {
4787+ 			if  (array_size > 0 ) {
4788+ 				PackedFloat32Array array;
4789+ 				for  (int  i = 0 ; i < array_size; i++) {
4790+ 					for  (int  j = 0 ; j < 16 ; j++) {
4791+ 						array.push_back (0 .0f );
4792+ 					}
4793+ 				}
4794+ 				value = Variant (array);
4795+ 			} else  {
4796+ 				VariantInitializer<Projection>::init (&value);
4797+ 				VariantDefaultInitializer<Projection>::init (&value);
4798+ 			}
4799+ 			break ;
4800+ 		}
4801+ 		default : {
4802+ 		} break ;
4803+ 	}
4804+ 	return  value;
4805+ }
4806+ 
45164807PropertyInfo ShaderLanguage::uniform_to_property_info (const  ShaderNode::Uniform &p_uniform) {
45174808	PropertyInfo pi;
45184809	switch  (p_uniform.type ) {
0 commit comments