Re-design of submodules used in blender.git

This commit implements described in the #104573.

The goal is to fix the confusion of the submodule hashes change, which are not
ideal for any of the supported git-module configuration (they are either always
visible causing confusion, or silently staged and committed, also causing
confusion).

This commit replaces submodules with a checkout of addons and addons_contrib,
covered by the .gitignore, and locale and developer tools are moved to the
main repository.

This also changes the paths:
- /release/scripts are moved to the /scripts
- /source/tools are moved to the /tools
- /release/datafiles/locale is moved to /locale

This is done to avoid conflicts when using bisect, and also allow buildbot to
automatically "recover" wgen building older or newer branches/patches.

Running `make update` will initialize the local checkout to the changed
repository configuration.

Another aspect of the change is that the make update will support Github style
of remote organization (origin remote pointing to thy fork, upstream remote
pointing to the upstream blender/blender.git).

Pull Request #104755
This commit is contained in:
2023-02-21 16:39:58 +01:00
committed by Sergey Sharybin
parent 3e721195b0
commit 03806d0b67
570 changed files with 2039093 additions and 211 deletions

View File

@@ -0,0 +1,118 @@
# SPDX-License-Identifier: GPL-2.0-or-later
from __future__ import annotations
from bpy.types import (
Operator,
)
from bpy.props import (
IntProperty,
)
class CONSTRAINT_OT_add_target(Operator):
"""Add a target to the constraint"""
bl_idname = "constraint.add_target"
bl_label = "Add Target"
bl_options = {'UNDO', 'INTERNAL'}
@classmethod
def poll(cls, context):
constraint = getattr(context, "constraint", None)
return constraint
def execute(self, context):
context.constraint.targets.new()
return {'FINISHED'}
class CONSTRAINT_OT_remove_target(Operator):
"""Remove the target from the constraint"""
bl_idname = "constraint.remove_target"
bl_label = "Remove Target"
bl_options = {'UNDO', 'INTERNAL'}
index: IntProperty()
@classmethod
def poll(cls, context):
constraint = getattr(context, "constraint", None)
return constraint
def execute(self, context):
tgts = context.constraint.targets
tgts.remove(tgts[self.index])
return {'FINISHED'}
class CONSTRAINT_OT_normalize_target_weights(Operator):
"""Normalize weights of all target bones"""
bl_idname = "constraint.normalize_target_weights"
bl_label = "Normalize Weights"
bl_options = {'UNDO', 'INTERNAL'}
@classmethod
def poll(cls, context):
constraint = getattr(context, "constraint", None)
return constraint
def execute(self, context):
tgts = context.constraint.targets
total = sum(t.weight for t in tgts)
if total > 0:
for t in tgts:
t.weight = t.weight / total
return {'FINISHED'}
class CONSTRAINT_OT_disable_keep_transform(Operator):
"""Set the influence of this constraint to zero while """ \
"""trying to maintain the object's transformation. Other active """ \
"""constraints can still influence the final transformation"""
bl_idname = "constraint.disable_keep_transform"
bl_label = "Disable and Keep Transform"
bl_options = {'UNDO', 'INTERNAL'}
@classmethod
def poll(cls, context):
constraint = getattr(context, "constraint", None)
return constraint and constraint.influence > 0.0
def execute(self, context):
"""Disable constraint while maintaining the visual transform."""
# This works most of the time, but when there are multiple constraints active
# there could still be one that overrides the visual transform.
#
# Note that executing this operator and then increasing the constraint
# influence may move the object; this happens when the constraint is
# additive rather than replacing the transform entirely.
# Get the matrix in world space.
is_bone_constraint = context.space_data.context == 'BONE_CONSTRAINT'
ob = context.object
if is_bone_constraint:
bone = context.pose_bone
mat = ob.matrix_world @ bone.matrix
else:
mat = ob.matrix_world
context.constraint.influence = 0.0
# Set the matrix.
if is_bone_constraint:
bone.matrix = ob.matrix_world.inverted() @ mat
else:
ob.matrix_world = mat
return {'FINISHED'}
classes = (
CONSTRAINT_OT_add_target,
CONSTRAINT_OT_remove_target,
CONSTRAINT_OT_normalize_target_weights,
CONSTRAINT_OT_disable_keep_transform,
)